ddd-react 1.6.4 → 1.7.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.
@@ -1,5 +1,5 @@
1
- import { ComponentState, Consumer, Provider, VDOMNode, WithChildrenProps } from './types';
2
- export declare abstract class Component<P = {}, S = ComponentState, C = null> {
1
+ import type { Consumer, Provider, VDOMNode, WithChildrenProps } from './types';
2
+ export declare abstract class Component<P = {}, S = {}, C = null> {
3
3
  isMounted: boolean;
4
4
  vdom: VDOMNode | null;
5
5
  private hostEl;
@@ -23,6 +23,7 @@ export declare abstract class Component<P = {}, S = ComponentState, C = null> {
23
23
  notify(): void;
24
24
  onMount(): void | Promise<void>;
25
25
  onUnmount(): void | Promise<void>;
26
+ onWillUpdate(nextProps: P, nextState: S): void | Promise<void>;
26
27
  onUpdate(prevProps: P, prevState: S): void | Promise<void>;
27
28
  onWillUnmount(): void | Promise<void>;
28
29
  abstract render(): VDOMNode;
package/dist/index.mjs CHANGED
@@ -1,157 +1,157 @@
1
- import { D as c, e as v, a as x, A as y, b as F, h as U, c as I } from "./h-BbaMkkC7.mjs";
2
- import { d as Ot, f as mt } from "./h-BbaMkkC7.mjs";
3
- function g(e, t) {
4
- if (e === null || t === null || e === void 0 || t === void 0)
5
- return e === t;
6
- if (typeof e != typeof t)
1
+ import { D as c, e as v, a as x, A as E, b as U, h as F, c as I } from "./h-BbaMkkC7.mjs";
2
+ import { d as Oe, f as me } from "./h-BbaMkkC7.mjs";
3
+ function g(t, e) {
4
+ if (t === null || e === null || t === void 0 || e === void 0)
5
+ return t === e;
6
+ if (typeof t != typeof e)
7
7
  return !1;
8
- if (Object.is(e, t))
8
+ if (Object.is(t, e))
9
9
  return !0;
10
- if (typeof e == "object") {
11
- if (e.constructor !== t.constructor)
10
+ if (typeof t == "object") {
11
+ if (t.constructor !== e.constructor)
12
12
  return !1;
13
- if (Array.isArray(e)) {
14
- if (e.length !== t.length)
13
+ if (Array.isArray(t)) {
14
+ if (t.length !== e.length)
15
15
  return !1;
16
- for (let r = 0; r < e.length; ++r)
17
- if (!g(e[r], t[r]))
16
+ for (let r = 0; r < t.length; ++r)
17
+ if (!g(t[r], e[r]))
18
18
  return !1;
19
19
  return !0;
20
20
  }
21
- if (e.constructor === RegExp)
22
- return e.source === t.source && e.flags === t.flags;
23
- if (e.valueOf !== Object.prototype.valueOf)
24
- return e.valueOf() === t.valueOf();
25
- if (e.toString !== Object.prototype.toString)
26
- return e.toString() === t.toString();
27
- const n = Object.keys(e);
28
- if (n.length !== Object.keys(t).length)
21
+ if (t.constructor === RegExp)
22
+ return t.source === e.source && t.flags === e.flags;
23
+ if (t.valueOf !== Object.prototype.valueOf)
24
+ return t.valueOf() === e.valueOf();
25
+ if (t.toString !== Object.prototype.toString)
26
+ return t.toString() === e.toString();
27
+ const n = Object.keys(t);
28
+ if (n.length !== Object.keys(e).length)
29
29
  return !1;
30
30
  for (let r = 0; r < n.length; ++r)
31
- if (!Object.prototype.hasOwnProperty.call(t, n[r]))
31
+ if (!Object.prototype.hasOwnProperty.call(e, n[r]))
32
32
  return !1;
33
33
  for (let r = 0; r < n.length; ++r) {
34
34
  const s = n[r];
35
- if (!(s === "_owner" && e.$$typeof) && !g(e[s], t[s]))
35
+ if (!(s === "_owner" && t.$$typeof) && !g(t[s], e[s]))
36
36
  return !1;
37
37
  }
38
38
  return !0;
39
39
  }
40
40
  return !1;
41
41
  }
42
- function S(e, t, n, r = null) {
43
- function s(o) {
44
- const i = o;
45
- r ? t.call(r, i) : t(i);
42
+ function S(t, e, n, r = null) {
43
+ function s(i) {
44
+ const o = i;
45
+ r ? e.call(r, o) : e(o);
46
46
  }
47
- return n.addEventListener(e, s), s;
47
+ return n.addEventListener(t, s), s;
48
48
  }
49
- function $(e = {}, t, n = null) {
49
+ function $(t = {}, e, n = null) {
50
50
  const r = {};
51
- return Object.entries(e).forEach(([s, o]) => {
51
+ return Object.entries(t).forEach(([s, i]) => {
52
52
  r[s] = S(
53
53
  s,
54
- o,
55
- t,
54
+ i,
55
+ e,
56
56
  n
57
57
  );
58
58
  }), r;
59
59
  }
60
- function q(e = {}, t) {
61
- Object.entries(e).forEach(([n, r]) => {
62
- t.removeEventListener(n, r);
60
+ function q(t = {}, e) {
61
+ Object.entries(t).forEach(([n, r]) => {
62
+ e.removeEventListener(n, r);
63
63
  });
64
64
  }
65
- function p(e) {
66
- const { type: t } = e;
67
- switch (t) {
65
+ function h(t) {
66
+ const { type: e } = t;
67
+ switch (e) {
68
68
  case c.TEXT: {
69
- G(e);
69
+ G(t);
70
70
  break;
71
71
  }
72
72
  case c.ELEMENT: {
73
- W(e);
73
+ W(t);
74
74
  break;
75
75
  }
76
76
  case c.FRAGMENT: {
77
- B(e);
77
+ _(t);
78
78
  break;
79
79
  }
80
80
  case c.COMPONENT: {
81
- e.component?.unmount();
81
+ t.component?.unmount();
82
82
  break;
83
83
  }
84
84
  case c.PORTAL: {
85
- X(e);
85
+ B(t);
86
86
  break;
87
87
  }
88
88
  default:
89
- throw new Error(`Can't destroy DOM of type: ${t}`);
89
+ throw new Error(`Can't destroy DOM of type: ${e}`);
90
90
  }
91
- delete e.el;
91
+ delete t.el;
92
92
  }
93
- function G(e) {
94
- const { el: t } = e;
95
- t && t.remove();
93
+ function G(t) {
94
+ const { el: e } = t;
95
+ e && e.remove();
96
96
  }
97
- function W(e) {
98
- const { el: t, children: n, listeners: r, props: s } = e;
99
- s?.ref && typeof s.ref == "object" && "current" in s.ref && (s.ref.current = null), t && t.remove(), n && n.forEach(p), r && t && (q(r, t), delete e.listeners);
97
+ function W(t) {
98
+ const { el: e, children: n, listeners: r, props: s } = t;
99
+ s?.ref && typeof s.ref == "object" && "current" in s.ref && (s.ref.current = null), e && e.remove(), n && n.forEach(h), r && e && (q(r, e), delete t.listeners);
100
100
  }
101
- function B(e) {
102
- const { children: t } = e;
103
- t && t.forEach(p);
101
+ function _(t) {
102
+ const { children: e } = t;
103
+ e && e.forEach(h);
104
104
  }
105
- function X(e) {
106
- const { children: t } = e;
107
- t && t.forEach(p);
105
+ function B(t) {
106
+ const { children: e } = t;
107
+ e && e.forEach(h);
108
108
  }
109
- function C(e, t, n) {
110
- e.style[t] = n.toString();
109
+ function C(t, e, n) {
110
+ t.style[e] = n.toString();
111
111
  }
112
- function _(e, t) {
113
- e.style[t] = null;
112
+ function X(t, e) {
113
+ t.style[e] = null;
114
114
  }
115
- function J(e, t) {
116
- const { class: n, style: r, ...s } = t;
117
- n && K(e, n), r && Object.entries(r).forEach(([o, i]) => {
118
- C(e, o, i);
115
+ function J(t, e) {
116
+ const { class: n, style: r, ...s } = e;
117
+ n && K(t, n), r && Object.entries(r).forEach(([i, o]) => {
118
+ C(t, i, o);
119
119
  });
120
- for (const [o, i] of Object.entries(s))
121
- L(e, o, i);
120
+ for (const [i, o] of Object.entries(s))
121
+ L(t, i, o);
122
122
  }
123
- function K(e, t) {
124
- if (e instanceof SVGElement) {
125
- e.removeAttribute("class"), typeof t == "string" ? e.setAttribute("class", t) : Array.isArray(t) && e.classList.add(...t);
123
+ function K(t, e) {
124
+ if (t instanceof SVGElement) {
125
+ t.removeAttribute("class"), typeof e == "string" ? t.setAttribute("class", e) : Array.isArray(e) && t.classList.add(...e);
126
126
  return;
127
127
  }
128
- e.className = "", typeof t == "string" ? e.className = t : Array.isArray(t) && e.classList.add(...t);
128
+ t.className = "", typeof e == "string" ? t.className = e : Array.isArray(e) && t.classList.add(...e);
129
129
  }
130
- function L(e, t, n) {
131
- n == null ? w(e, t) : e.setAttribute(t, String(n));
130
+ function L(t, e, n) {
131
+ n == null ? w(t, e) : t.setAttribute(e, String(n));
132
132
  }
133
- function w(e, t) {
134
- e[t] = null, e.removeAttribute(t);
133
+ function w(t, e) {
134
+ t[e] = null, t.removeAttribute(e);
135
135
  }
136
136
  let P = !1;
137
137
  const O = [];
138
- function E(e) {
139
- O.push(e), Y();
138
+ function d(t) {
139
+ O.push(t), Y();
140
140
  }
141
141
  function Y() {
142
142
  P || (P = !0, queueMicrotask(H));
143
143
  }
144
144
  function H() {
145
145
  for (; O.length > 0; ) {
146
- const e = O.shift();
147
- let t;
146
+ const t = O.shift();
147
+ let e;
148
148
  try {
149
- t = e();
149
+ e = t();
150
150
  } catch (n) {
151
151
  console.error(`[scheduler]: ${n}`);
152
152
  continue;
153
153
  }
154
- Promise.resolve(t).then(
154
+ Promise.resolve(e).then(
155
155
  () => {
156
156
  },
157
157
  (n) => {
@@ -161,266 +161,279 @@ function H() {
161
161
  }
162
162
  P = !1;
163
163
  }
164
- function A(e) {
165
- const { on: t = {}, ...n } = e.props;
166
- return delete n.key, { props: n, events: t };
164
+ function A(t) {
165
+ const { on: e = {}, ...n } = t.props;
166
+ return delete n.key, { props: n, events: e };
167
167
  }
168
- function h(e, t, n = null, r = null) {
169
- switch (e.type) {
168
+ function p(t, e, n = null, r = null) {
169
+ switch (t.type) {
170
170
  case c.TEXT: {
171
- z(e, t, n);
171
+ z(t, e, n);
172
172
  break;
173
173
  }
174
174
  case c.ELEMENT: {
175
- Z(e, t, n, r);
175
+ Z(t, e, n, r);
176
176
  break;
177
177
  }
178
178
  case c.FRAGMENT: {
179
- Q(e, t, n, r);
179
+ Q(t, e, n, r);
180
180
  break;
181
181
  }
182
182
  case c.COMPONENT: {
183
- tt(e, t, n, r);
184
- const s = e.component;
185
- s && E(() => s.onMount());
183
+ ee(t, e, n, r);
184
+ const s = t.component;
185
+ s && d(() => s.onMount());
186
186
  break;
187
187
  }
188
188
  case c.PORTAL: {
189
- et(e, r);
189
+ te(t, r);
190
190
  break;
191
191
  }
192
192
  default:
193
- throw new Error(`Can't mount DOM of type: ${e.type}`);
193
+ throw new Error(`Can't mount DOM of type: ${t.type}`);
194
194
  }
195
195
  }
196
- function z(e, t, n) {
197
- const { value: r } = e, s = document.createTextNode(r);
198
- e.el = s, j(s, t, n);
196
+ function z(t, e, n) {
197
+ const { value: r } = t, s = document.createTextNode(r);
198
+ t.el = s, j(s, e, n);
199
199
  }
200
- function Q(e, t, n, r) {
201
- const { children: s } = e;
202
- e.el = t, s?.forEach((o, i) => {
203
- h(o, t, n != null ? n + i : null, r);
200
+ function Q(t, e, n, r) {
201
+ const { children: s } = t;
202
+ t.el = e, s?.forEach((i, o) => {
203
+ p(i, e, n != null ? n + o : null, r);
204
204
  });
205
205
  }
206
- function Z(e, t, n, r) {
207
- const { tag: s, children: o } = e, f = s === "svg" || t instanceof SVGElement ? document.createElementNS("http://www.w3.org/2000/svg", s) : document.createElement(s);
208
- V(f, e, r), e.el = f, o?.forEach((l) => {
209
- h(l, f, null, r);
210
- }), j(f, t, n);
206
+ function Z(t, e, n, r) {
207
+ const { tag: s, children: i } = t, u = s === "svg" || e instanceof SVGElement ? document.createElementNS("http://www.w3.org/2000/svg", s) : document.createElement(s);
208
+ V(u, t, r), t.el = u, i?.forEach((l) => {
209
+ p(l, u, null, r);
210
+ }), j(u, e, n);
211
211
  }
212
- function V(e, t, n) {
213
- const { props: r, events: s } = A(t);
214
- r.ref && typeof r.ref == "object" && "current" in r.ref && (r.ref.current = e, delete r.ref), t.listeners = $(s, e, n), J(e, r);
212
+ function V(t, e, n) {
213
+ const { props: r, events: s } = A(e);
214
+ r.ref && typeof r.ref == "object" && "current" in r.ref && (r.ref.current = t, delete r.ref), e.listeners = $(s, t, n), J(t, r);
215
215
  }
216
- function tt(e, t, n, r) {
217
- const s = e.tag, { props: o } = A(e), i = new s(o, r);
218
- i.mount(t, n), e.component = i, e.el = i.firstElement || null;
216
+ function ee(t, e, n, r) {
217
+ const s = t.tag, { props: i } = A(t), o = new s(i, r);
218
+ o.mount(e, n), t.component = o, t.el = o.firstElement || null;
219
219
  }
220
- function j(e, t, n) {
220
+ function j(t, e, n) {
221
221
  if (n == null) {
222
- t.append(e);
222
+ e.append(t);
223
223
  return;
224
224
  }
225
225
  if (n < 0)
226
226
  throw new Error(`Index must be a positive integer, got ${n}`);
227
- const r = t.childNodes;
228
- n >= r.length ? t.append(e) : t.insertBefore(e, r[n]);
227
+ const r = e.childNodes;
228
+ n >= r.length ? e.append(t) : e.insertBefore(t, r[n]);
229
229
  }
230
- function et(e, t) {
231
- const { children: n, container: r } = e;
230
+ function te(t, e) {
231
+ const { children: n, container: r } = t;
232
232
  n?.forEach((s) => {
233
- h(s, r, null, t);
233
+ p(s, r, null, e);
234
234
  });
235
235
  }
236
- function D(e, t) {
237
- if (e.type !== t.type)
236
+ function D(t, e) {
237
+ if (t.type !== e.type)
238
238
  return !1;
239
- if (e.type === c.ELEMENT) {
240
- const n = e, r = t, {
239
+ if (t.type === c.ELEMENT) {
240
+ const n = t, r = e, {
241
241
  tag: s,
242
- props: { key: o }
242
+ props: { key: i }
243
243
  } = n, {
244
- tag: i,
245
- props: { key: f }
244
+ tag: o,
245
+ props: { key: u }
246
246
  } = r;
247
- return s === i && o === f;
247
+ return s === o && i === u;
248
248
  }
249
- if (e.type === c.COMPONENT) {
250
- const n = e, r = t, { tag: s } = n, { tag: o } = r;
251
- return s === o;
249
+ if (t.type === c.COMPONENT) {
250
+ const n = t, r = e, { tag: s } = n, { tag: i } = r;
251
+ return s === i;
252
252
  }
253
- if (e.type === c.PORTAL) {
254
- const n = e, r = t;
253
+ if (t.type === c.PORTAL) {
254
+ const n = t, r = e;
255
255
  return n.container === r.container;
256
256
  }
257
257
  return !0;
258
258
  }
259
- function T(e, t) {
260
- const n = Object.keys(e), r = Object.keys(t), s = [], o = [];
261
- for (const i of r)
262
- i in e ? e[i] !== t[i] && o.push(i) : s.push(i);
259
+ function T(t, e) {
260
+ const n = Object.keys(t), r = Object.keys(e), s = [], i = [];
261
+ for (const o of r)
262
+ o in t ? t[o] !== e[o] && i.push(o) : s.push(o);
263
263
  return {
264
264
  added: s,
265
- removed: n.filter((i) => !(i in t)),
266
- updated: o
265
+ removed: n.filter((o) => !(o in e)),
266
+ updated: i
267
267
  };
268
268
  }
269
- function nt(e) {
270
- return e !== "";
269
+ function ne(t) {
270
+ return t !== "";
271
271
  }
272
- function N(e) {
273
- return nt(e.trim());
272
+ function N(t) {
273
+ return ne(t.trim());
274
274
  }
275
- function m(e, t, n, r = null) {
276
- if (!D(e, t)) {
277
- const s = rt(n, e.el);
278
- return p(e), h(t, n, s, r), t;
275
+ function m(t, e, n, r = null) {
276
+ if (!D(t, e)) {
277
+ const s = re(n, t.el);
278
+ return h(t), p(e, n, s, r), e;
279
279
  }
280
- switch (t.el = e.el, t.type) {
280
+ switch (e.el = t.el, e.type) {
281
281
  case c.TEXT:
282
- return st(e, t), t;
282
+ return se(t, e), e;
283
283
  case c.ELEMENT: {
284
- ot(e, t, r);
284
+ oe(t, e, r);
285
285
  break;
286
286
  }
287
287
  case c.COMPONENT: {
288
- lt(e, t);
288
+ le(t, e);
289
289
  break;
290
290
  }
291
291
  case c.PORTAL: {
292
- at(e, t, r);
292
+ ae(t, e, r);
293
293
  break;
294
294
  }
295
295
  }
296
- return R(e, t, r), t;
296
+ return R(t, e, r), e;
297
297
  }
298
- function rt(e, t) {
299
- if (!t) return null;
300
- const n = Array.from(e.childNodes).indexOf(t);
298
+ function re(t, e) {
299
+ if (!e) return null;
300
+ const n = Array.from(t.childNodes).indexOf(e);
301
301
  return n < 0 ? null : n;
302
302
  }
303
- function st(e, t) {
304
- const n = e.el, { value: r } = e, { value: s } = t;
303
+ function se(t, e) {
304
+ const n = t.el, { value: r } = t, { value: s } = e;
305
305
  r !== s && n && (n.nodeValue = s);
306
306
  }
307
- function ot(e, t, n) {
308
- const r = e.el, {
307
+ function oe(t, e, n) {
308
+ const r = t.el, {
309
309
  class: s,
310
- style: o,
311
- on: i,
312
- ...f
313
- } = e.props ?? {}, {
310
+ style: i,
311
+ on: o,
312
+ ...u
313
+ } = t.props ?? {}, {
314
314
  class: l,
315
- style: u,
315
+ style: f,
316
316
  on: a,
317
- ...d
318
- } = t.props ?? {}, { listeners: b } = e;
319
- it(r, f, d), ct(r, s, l), ut(
317
+ ...y
318
+ } = e.props ?? {}, { listeners: b } = t;
319
+ ie(r, u, y), ce(r, s, l), fe(
320
320
  r,
321
- o,
322
- u
323
- ), t.listeners = ft(
321
+ i,
322
+ f
323
+ ), e.listeners = ue(
324
324
  r,
325
325
  b,
326
- i ?? {},
326
+ o ?? {},
327
327
  a ?? {},
328
328
  n
329
329
  );
330
330
  }
331
- function it(e, t = {}, n = {}) {
332
- const r = t.ref, s = n.ref;
333
- r !== s && (r && typeof r == "object" && "current" in r && (r.current = null), s && typeof s == "object" && "current" in s && (s.current = e));
334
- const o = { ...t }, i = { ...n };
335
- delete o.ref, delete i.ref;
336
- const { added: f, removed: l, updated: u } = T(o, i);
331
+ function ie(t, e = {}, n = {}) {
332
+ const r = e.ref, s = n.ref;
333
+ r !== s && (r && typeof r == "object" && "current" in r && (r.current = null), s && typeof s == "object" && "current" in s && (s.current = t));
334
+ const i = { ...e }, o = { ...n };
335
+ delete i.ref, delete o.ref;
336
+ const { added: u, removed: l, updated: f } = T(i, o);
337
337
  for (const a of l)
338
- w(e, a);
339
- for (const a of f.concat(u))
340
- L(e, a, i[a]);
341
- }
342
- function ct(e, t, n) {
343
- const r = M(t), s = M(n), { added: o, removed: i } = F(r, s);
344
- i.length > 0 && e.classList.remove(...i), o.length > 0 && e.classList.add(...o);
345
- }
346
- function M(e = "") {
347
- return Array.isArray(e) ? e.filter(N) : String(e).split(/(\s+)/).filter(N);
348
- }
349
- function ut(e, t = {}, n = {}) {
350
- const { added: r, removed: s, updated: o } = T(t, n);
351
- for (const i of s)
352
- _(e, i);
353
- for (const i of r.concat(o))
354
- C(e, i, n[i]);
355
- }
356
- function ft(e, t = {}, n = {}, r = {}, s = null) {
357
- const { removed: o, added: i, updated: f } = T(n, r);
358
- for (const u of o.concat(f)) {
359
- const a = t?.[u];
360
- a && e.removeEventListener(u, a);
338
+ w(t, a);
339
+ for (const a of u.concat(f))
340
+ L(t, a, o[a]);
341
+ }
342
+ function ce(t, e, n) {
343
+ const r = M(e), s = M(n), { added: i, removed: o } = U(r, s);
344
+ o.length > 0 && t.classList.remove(...o), i.length > 0 && t.classList.add(...i);
345
+ }
346
+ function M(t = "") {
347
+ return Array.isArray(t) ? t.filter(N) : String(t).split(/(\s+)/).filter(N);
348
+ }
349
+ function fe(t, e = {}, n = {}) {
350
+ const { added: r, removed: s, updated: i } = T(e, n);
351
+ for (const o of s)
352
+ X(t, o);
353
+ for (const o of r.concat(i))
354
+ C(t, o, n[o]);
355
+ }
356
+ function ue(t, e = {}, n = {}, r = {}, s = null) {
357
+ const { removed: i, added: o, updated: u } = T(n, r);
358
+ for (const f of i.concat(u)) {
359
+ const a = e?.[f];
360
+ a && t.removeEventListener(f, a);
361
361
  }
362
362
  const l = {};
363
- for (const u of i.concat(f))
364
- l[u] = S(
365
- u,
366
- r[u],
367
- e,
363
+ for (const f of o.concat(u))
364
+ l[f] = S(
365
+ f,
366
+ r[f],
367
+ t,
368
368
  s
369
369
  );
370
370
  return l;
371
371
  }
372
- function R(e, t, n) {
373
- const r = v(e), s = v(t), o = e.el, i = x(r, s, D), f = n?.offset ?? 0;
374
- for (const l of i)
375
- if (l.op === y.NOOP) {
376
- const { originalIndex: u, index: a } = l;
377
- m(r[u], s[a], o, n);
372
+ function R(t, e, n) {
373
+ const r = v(t), s = v(e), i = t.el, o = x(r, s, D), u = n?.offset ?? 0;
374
+ for (const l of o)
375
+ if (l.op === E.NOOP) {
376
+ const { originalIndex: f, index: a } = l;
377
+ m(r[f], s[a], i, n);
378
378
  }
379
- for (const l of i)
379
+ for (const l of o)
380
380
  switch (l.op) {
381
- case y.MOVE: {
382
- const { from: u, index: a } = l, d = r[u].el, b = o.childNodes[a + f];
383
- d && (o.insertBefore(d, b), m(r[u], s[a], o, n));
381
+ case E.MOVE: {
382
+ const { from: f, index: a } = l, y = r[f].el, b = i.childNodes[a + u];
383
+ y && (i.insertBefore(y, b), m(r[f], s[a], i, n));
384
384
  break;
385
385
  }
386
- case y.REMOVE: {
387
- const { item: u } = l;
388
- p(u);
386
+ case E.REMOVE: {
387
+ const { item: f } = l;
388
+ h(f);
389
389
  break;
390
390
  }
391
- case y.ADD: {
392
- const { index: u, item: a } = l;
393
- h(a, o, u + f, n);
391
+ case E.ADD: {
392
+ const { index: f, item: a } = l;
393
+ p(a, i, f + u, n);
394
394
  break;
395
395
  }
396
396
  }
397
397
  }
398
- function lt(e, t) {
399
- const { component: n } = e, { props: r } = A(t);
400
- n.updateProps(r), t.component = n, t.el = n.firstElement;
398
+ function le(t, e) {
399
+ const { component: n } = t, { props: r } = A(e);
400
+ n.updateProps(r), e.component = n, e.el = n.firstElement;
401
401
  }
402
- function at(e, t, n) {
403
- if (e.container !== t.container) {
404
- p(e), h(t, document.body, null, n);
402
+ function ae(t, e, n) {
403
+ if (t.container !== e.container) {
404
+ h(t), p(e, document.body, null, n);
405
405
  return;
406
406
  }
407
- R(e, t, n);
407
+ R(t, e, n);
408
408
  }
409
- const ht = (e) => e.isProvider, pt = (e) => e.isConsumer;
409
+ const pe = (t) => t.isProvider, he = (t) => t.isConsumer;
410
410
  class k {
411
- constructor(t = {}, n) {
412
- this.isMounted = !1, this.vdom = null, this.hostEl = null, this.parent = null, this.state = {}, this.context = null, this.dependencies = [], this.subscribedProvider = null, this.isProvider = !1, this.isConsumer = !1, this.props = t, this.parent = n;
413
- }
414
- addDependency({ consumer: t }) {
415
- this.dependencies.some((n) => n.consumer === t) || (this.dependencies.push({ consumer: t }), t.subscribedProvider = this);
416
- }
417
- removeDependency({ consumer: t }) {
418
- const n = this.dependencies.findIndex((r) => r.consumer === t);
419
- n !== -1 && (this.dependencies.splice(n, 1), t.subscribedProvider = null);
411
+ isMounted = !1;
412
+ vdom = null;
413
+ hostEl = null;
414
+ parent = null;
415
+ props;
416
+ state = {};
417
+ context = null;
418
+ dependencies = [];
419
+ subscribedProvider = null;
420
+ isProvider = !1;
421
+ isConsumer = !1;
422
+ constructor(e = {}, n) {
423
+ this.props = e, this.parent = n;
424
+ }
425
+ addDependency({ consumer: e }) {
426
+ this.dependencies.some((n) => n.consumer === e) || (this.dependencies.push({ consumer: e }), e.subscribedProvider = this);
427
+ }
428
+ removeDependency({ consumer: e }) {
429
+ const n = this.dependencies.findIndex((r) => r.consumer === e);
430
+ n !== -1 && (this.dependencies.splice(n, 1), e.subscribedProvider = null);
420
431
  }
421
432
  notify() {
422
- this.dependencies.forEach(({ consumer: t }) => {
423
- t.isMounted && t.updateContext() && t.patch(t.props, t.state);
433
+ d(() => {
434
+ this.dependencies.forEach(({ consumer: e }) => {
435
+ e.isMounted && e.updateContext() && e.patch(e.props, e.state);
436
+ });
424
437
  });
425
438
  }
426
439
  onMount() {
@@ -429,14 +442,17 @@ class k {
429
442
  onUnmount() {
430
443
  return Promise.resolve();
431
444
  }
432
- onUpdate(t, n) {
445
+ onWillUpdate(e, n) {
446
+ return Promise.resolve();
447
+ }
448
+ onUpdate(e, n) {
433
449
  return Promise.resolve();
434
450
  }
435
451
  onWillUnmount() {
436
452
  return Promise.resolve();
437
453
  }
438
454
  get elements() {
439
- return this.vdom == null ? [] : this.vdom.type === c.FRAGMENT ? v(this.vdom).flatMap((t) => t.type === c.COMPONENT && t.component ? t.component.elements : t.el ? [t.el] : []) : this.vdom.el ? [this.vdom.el] : [];
455
+ return this.vdom == null ? [] : this.vdom.type === c.FRAGMENT ? v(this.vdom).flatMap((e) => e.type === c.COMPONENT && e.component ? e.component.elements : e.el ? [e.el] : []) : this.vdom.el ? [this.vdom.el] : [];
440
456
  }
441
457
  get firstElement() {
442
458
  return this.elements[0];
@@ -444,55 +460,56 @@ class k {
444
460
  get offset() {
445
461
  return this.vdom?.type === c.FRAGMENT && this.hostEl && this.firstElement ? Array.from(this.hostEl.children).indexOf(this.firstElement) : 0;
446
462
  }
447
- updateProps(t) {
448
- const n = { ...this.props, ...t }, r = this.props;
463
+ updateProps(e) {
464
+ const n = { ...this.props, ...e }, r = this.props;
449
465
  this.props = n;
450
- let s = this.updateContext();
451
- g(r, n) && !s || (ht(this) && this.notify(), this.patch(r, this.state));
466
+ const s = this.updateContext();
467
+ g(r, n) && !s || (pe(this) && this.notify(), this.patch(r, this.state));
452
468
  }
453
- setState(t) {
454
- let n = this.state;
455
- typeof t == "function" ? this.state = {
469
+ setState(e) {
470
+ const n = this.state;
471
+ typeof e == "function" ? this.state = {
456
472
  ...this.state,
457
- ...t(this.state, this.props)
458
- } : this.state = { ...this.state, ...t }, this.patch(this.props, n);
473
+ ...e(this.state, this.props)
474
+ } : this.state = { ...this.state, ...e }, this.patch(this.props, n);
459
475
  }
460
- mount(t, n = null) {
476
+ mount(e, n = null) {
461
477
  if (this.isMounted)
462
478
  throw new Error("Component is already mounted");
463
- pt(this) && !this.subscribedProvider && this.subscribeToProvider(), this.updateContext(), this.vdom = this.render(), h(this.vdom, t, n, this), this.hostEl = t, this.isMounted = !0;
479
+ he(this) && !this.subscribedProvider && this.subscribeToProvider(), this.updateContext(), this.vdom = this.render(), p(this.vdom, e, n, this), this.hostEl = e, this.isMounted = !0;
464
480
  }
465
481
  unmount() {
466
- this.isMounted && (E(() => this.onWillUnmount()), this.subscribedProvider && this.subscribedProvider.removeDependency({ consumer: this }), this.dependencies.forEach(({ consumer: t }) => {
467
- t.subscribedProvider = null;
468
- }), this.dependencies = [], this.vdom && p(this.vdom), E(() => this.onUnmount()), this.vdom = null, this.hostEl = null, this.isMounted = !1);
482
+ this.isMounted && (d(() => this.onWillUnmount()), this.subscribedProvider && this.subscribedProvider.removeDependency({ consumer: this }), this.dependencies.forEach(({ consumer: e }) => {
483
+ e.subscribedProvider = null;
484
+ }), this.dependencies = [], this.vdom && h(this.vdom), d(() => this.onUnmount()), this.vdom = null, this.hostEl = null, this.isMounted = !1);
469
485
  }
470
- patch(t, n) {
486
+ patch(e, n) {
471
487
  if (!this.isMounted || !this.hostEl || !this.vdom)
472
488
  return;
489
+ d(() => this.onWillUpdate(this.props, this.state));
473
490
  const r = this.render();
474
- this.vdom = m(this.vdom, r, this.hostEl, this), E(() => this.onUpdate(t, n));
491
+ this.vdom = m(this.vdom, r, this.hostEl, this), d(() => this.onUpdate(e, n));
475
492
  }
476
493
  updateContext() {
477
- const t = Object.getPrototypeOf(this).constructor.contextType;
494
+ const e = Object.getPrototypeOf(this).constructor.contextType;
478
495
  let n = this.parent;
479
- if (t != null) {
496
+ if (e != null) {
480
497
  for (; n; ) {
481
- if (Object.getPrototypeOf(n).constructor === t.Provider)
498
+ if (Object.getPrototypeOf(n).constructor === e.Provider)
482
499
  return this.context = n.props.value, !0;
483
500
  n = n.parent;
484
501
  }
485
- n == null && (this.context = t.defaultValue);
502
+ n == null && (this.context = e.defaultValue);
486
503
  }
487
504
  return !1;
488
505
  }
489
506
  subscribeToProvider() {
490
- const t = Object.getPrototypeOf(this).constructor.contextType;
491
- if (!t)
507
+ const e = Object.getPrototypeOf(this).constructor.contextType;
508
+ if (!e)
492
509
  return;
493
510
  let n = this.parent;
494
511
  for (; n; ) {
495
- if (Object.getPrototypeOf(n).constructor === t.Provider) {
512
+ if (Object.getPrototypeOf(n).constructor === e.Provider) {
496
513
  n.addDependency({ consumer: this });
497
514
  break;
498
515
  }
@@ -500,66 +517,61 @@ class k {
500
517
  }
501
518
  }
502
519
  }
503
- function yt(e) {
504
- class t extends k {
505
- constructor() {
506
- super(...arguments), this.isProvider = !0;
507
- }
520
+ function ye(t) {
521
+ class e extends k {
522
+ isProvider = !0;
508
523
  render() {
509
- let o = [];
510
- return Array.isArray(this.props.children) ? o = this.props.children : this.props.children ? o = [this.props.children] : o = [], U(o);
524
+ let s = [];
525
+ return Array.isArray(this.props.children) ? s = this.props.children : this.props.children ? s = [this.props.children] : s = [], F(s);
511
526
  }
512
527
  }
513
- const r = class r extends k {
514
- constructor() {
515
- super(...arguments), this.isConsumer = !0;
516
- }
528
+ class n extends k {
529
+ static contextType = {
530
+ Provider: e,
531
+ defaultValue: t
532
+ };
533
+ isConsumer = !0;
517
534
  render() {
518
- let o = this.props.children;
519
- if (Array.isArray(o))
520
- if (o.length === 1 && typeof o[0] == "function")
521
- o = o[0];
535
+ let s = this.props.children;
536
+ if (Array.isArray(s))
537
+ if (s.length === 1 && typeof s[0] == "function")
538
+ s = s[0];
522
539
  else
523
540
  throw new Error(
524
541
  "Consumer: expected single function child, got array"
525
542
  );
526
- if (typeof o != "function")
543
+ if (typeof s != "function")
527
544
  throw new Error("Consumer: children is not a function");
528
- return o(this.context);
545
+ return s(this.context);
529
546
  }
530
- };
531
- r.contextType = {
532
- Provider: t,
533
- defaultValue: e
534
- };
535
- let n = r;
547
+ }
536
548
  return {
537
- Provider: t,
549
+ Provider: e,
538
550
  Consumer: n,
539
- defaultValue: e
551
+ defaultValue: t
540
552
  };
541
553
  }
542
- function Et(e, t) {
543
- if (!t)
554
+ function Ee(t, e) {
555
+ if (!e)
544
556
  throw new Error("Container element is not provided for rendering.");
545
- h(e, t);
557
+ p(t, e);
546
558
  }
547
- function bt(e = null) {
559
+ function be(t = null) {
548
560
  return {
549
- current: e
561
+ current: t
550
562
  };
551
563
  }
552
- function vt(e, t) {
553
- const n = Array.isArray(e) ? e : [e];
554
- return I(n, t);
564
+ function ve(t, e) {
565
+ const n = Array.isArray(t) ? t : [t];
566
+ return I(n, e);
555
567
  }
556
568
  export {
557
569
  k as Component,
558
- yt as createContext,
559
- vt as createPortal,
560
- bt as createRef,
561
- Ot as h,
562
- U as hFragment,
563
- mt as hString,
564
- Et as render
570
+ ye as createContext,
571
+ ve as createPortal,
572
+ be as createRef,
573
+ Oe as h,
574
+ F as hFragment,
575
+ me as hString,
576
+ Ee as render
565
577
  };
@@ -39,9 +39,6 @@ export interface Context<T> {
39
39
  Consumer: Function;
40
40
  defaultValue: T;
41
41
  }
42
- export interface ComponentState {
43
- [key: string]: unknown;
44
- }
45
42
  export interface WithChildrenProps {
46
43
  children?: VDOMNode[] | VDOMNode | string | Function;
47
44
  }
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "ddd-react",
3
- "version": "1.6.4",
3
+ "version": "1.7.0",
4
4
  "scripts": {
5
5
  "test": "echo \"Error: no test specified\" && exit 1",
6
6
  "type-check": "tsc --noEmit",
7
7
  "dev": "npm run type-check && rollup -c -w --serve",
8
8
  "build": "tsc && vite build && npm run build:types",
9
- "build:types": "tsc -p tsconfig.build.json"
9
+ "build:types": "tsc -p tsconfig.build.json",
10
+ "lint": "npx eslint ."
10
11
  },
11
12
  "keywords": [
12
13
  "react",
@@ -52,7 +53,9 @@
52
53
  "semantic-release": "^24.2.9",
53
54
  "tslib": "^2.8.1",
54
55
  "typescript": "^5.9.3",
55
- "vite": "^7.3.0"
56
+ "typescript-eslint": "^8.46.1",
57
+ "vite": "^7.3.0",
58
+ "eslint": "^9.38.0"
56
59
  },
57
60
  "dependencies": {
58
61
  "@guanghechen/fast-deep-equal": "^2.3.7"