ddd-react 1.6.4 → 1.7.1

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;
@@ -21,10 +21,11 @@ export declare abstract class Component<P = {}, S = ComponentState, C = null> {
21
21
  consumer: Consumer<C>;
22
22
  }): void;
23
23
  notify(): void;
24
- onMount(): void | Promise<void>;
25
- onUnmount(): void | Promise<void>;
26
- onUpdate(prevProps: P, prevState: S): void | Promise<void>;
24
+ didMount(): void | Promise<void>;
25
+ onWillUpdate(nextProps: P, nextState: S): void | Promise<void>;
26
+ didUpdate(prevProps: P, prevState: S): void | Promise<void>;
27
27
  onWillUnmount(): void | Promise<void>;
28
+ didUnmount(): void | Promise<void>;
28
29
  abstract render(): VDOMNode;
29
30
  get elements(): HTMLElement[];
30
31
  get firstElement(): HTMLElement | undefined;
package/dist/index.mjs CHANGED
@@ -1,442 +1,458 @@
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 n = 0; n < t.length; ++n)
17
+ if (!g(t[n], e[n]))
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 r = Object.keys(t);
28
+ if (r.length !== Object.keys(e).length)
29
29
  return !1;
30
- for (let r = 0; r < n.length; ++r)
31
- if (!Object.prototype.hasOwnProperty.call(t, n[r]))
30
+ for (let n = 0; n < r.length; ++n)
31
+ if (!Object.prototype.hasOwnProperty.call(e, r[n]))
32
32
  return !1;
33
- for (let r = 0; r < n.length; ++r) {
34
- const s = n[r];
35
- if (!(s === "_owner" && e.$$typeof) && !g(e[s], t[s]))
33
+ for (let n = 0; n < r.length; ++n) {
34
+ const s = r[n];
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, r, n = null) {
43
+ function s(i) {
44
+ const o = i;
45
+ n ? e.call(n, o) : e(o);
46
46
  }
47
- return n.addEventListener(e, s), s;
47
+ return r.addEventListener(t, s), s;
48
48
  }
49
- function $(e = {}, t, n = null) {
50
- const r = {};
51
- return Object.entries(e).forEach(([s, o]) => {
52
- r[s] = S(
49
+ function $(t = {}, e, r = null) {
50
+ const n = {};
51
+ return Object.entries(t).forEach(([s, i]) => {
52
+ n[s] = S(
53
53
  s,
54
- o,
55
- t,
56
- n
54
+ i,
55
+ e,
56
+ r
57
57
  );
58
- }), r;
58
+ }), n;
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(([r, n]) => {
62
+ e.removeEventListener(r, n);
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: r, listeners: n, props: s } = t;
99
+ s?.ref && typeof s.ref == "object" && "current" in s.ref && (s.ref.current = null), e && e.remove(), r && r.forEach(h), n && e && (q(n, 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, r) {
110
+ t.style[e] = r.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: r, style: n, ...s } = e;
117
+ r && K(t, r), n && Object.entries(n).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, r) {
131
+ r == null ? w(t, e) : t.setAttribute(e, String(r));
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();
150
- } catch (n) {
151
- console.error(`[scheduler]: ${n}`);
149
+ e = t();
150
+ } catch (r) {
151
+ console.error(`[scheduler]: ${r}`);
152
152
  continue;
153
153
  }
154
- Promise.resolve(t).then(
154
+ Promise.resolve(e).then(
155
155
  () => {
156
156
  },
157
- (n) => {
158
- console.error(`[scheduler]: ${n}`);
157
+ (r) => {
158
+ console.error(`[scheduler]: ${r}`);
159
159
  }
160
160
  );
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 = {}, ...r } = t.props;
166
+ return delete r.key, { props: r, events: e };
167
167
  }
168
- function h(e, t, n = null, r = null) {
169
- switch (e.type) {
168
+ function p(t, e, r = null, n = null) {
169
+ switch (t.type) {
170
170
  case c.TEXT: {
171
- z(e, t, n);
171
+ z(t, e, r);
172
172
  break;
173
173
  }
174
174
  case c.ELEMENT: {
175
- Z(e, t, n, r);
175
+ Z(t, e, r, n);
176
176
  break;
177
177
  }
178
178
  case c.FRAGMENT: {
179
- Q(e, t, n, r);
179
+ Q(t, e, r, n);
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, r, n);
184
+ const s = t.component;
185
+ s && d(() => s.didMount());
186
186
  break;
187
187
  }
188
188
  case c.PORTAL: {
189
- et(e, r);
189
+ te(t, n);
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, r) {
197
+ const { value: n } = t, s = document.createTextNode(n);
198
+ t.el = s, j(s, e, r);
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, r, n) {
201
+ const { children: s } = t;
202
+ t.el = e, s?.forEach((i, o) => {
203
+ p(i, e, r != null ? r + o : null, n);
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, r, n) {
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, n), t.el = u, i?.forEach((l) => {
209
+ p(l, u, null, n);
210
+ }), j(u, e, r);
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, r) {
213
+ const { props: n, events: s } = A(e);
214
+ n.ref && typeof n.ref == "object" && "current" in n.ref && (n.ref.current = t, delete n.ref), e.listeners = $(s, t, r), J(t, n);
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, r, n) {
217
+ const s = t.tag, { props: i } = A(t), o = new s(i, n);
218
+ o.mount(e, r), t.component = o, t.el = o.firstElement || null;
219
219
  }
220
- function j(e, t, n) {
221
- if (n == null) {
222
- t.append(e);
220
+ function j(t, e, r) {
221
+ if (r == null) {
222
+ e.append(t);
223
223
  return;
224
224
  }
225
- if (n < 0)
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]);
225
+ if (r < 0)
226
+ throw new Error(`Index must be a positive integer, got ${r}`);
227
+ const n = e.childNodes;
228
+ r >= n.length ? e.append(t) : e.insertBefore(t, n[r]);
229
229
  }
230
- function et(e, t) {
231
- const { children: n, container: r } = e;
232
- n?.forEach((s) => {
233
- h(s, r, null, t);
230
+ function te(t, e) {
231
+ const { children: r, container: n } = t;
232
+ r?.forEach((s) => {
233
+ p(s, n, 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 r = t, n = e, {
241
241
  tag: s,
242
- props: { key: o }
243
- } = n, {
244
- tag: i,
245
- props: { key: f }
246
- } = r;
247
- return s === i && o === f;
242
+ props: { key: i }
243
+ } = r, {
244
+ tag: o,
245
+ props: { key: u }
246
+ } = n;
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 r = t, n = e, { tag: s } = r, { tag: i } = n;
251
+ return s === i;
252
252
  }
253
- if (e.type === c.PORTAL) {
254
- const n = e, r = t;
255
- return n.container === r.container;
253
+ if (t.type === c.PORTAL) {
254
+ const r = t, n = e;
255
+ return r.container === n.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 r = Object.keys(t), n = Object.keys(e), s = [], i = [];
261
+ for (const o of n)
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: r.filter((o) => !(o in e)),
266
+ updated: i
267
267
  };
268
268
  }
269
- function nt(e) {
270
- return e !== "";
269
+ function re(t) {
270
+ return t !== "";
271
271
  }
272
- function N(e) {
273
- return nt(e.trim());
272
+ function N(t) {
273
+ return re(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, r, n = null) {
276
+ if (!D(t, e)) {
277
+ const s = ne(r, t.el);
278
+ return h(t), p(e, r, s, n), 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, n);
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, n);
293
293
  break;
294
294
  }
295
295
  }
296
- return R(e, t, r), t;
296
+ return R(t, e, n), e;
297
297
  }
298
- function rt(e, t) {
299
- if (!t) return null;
300
- const n = Array.from(e.childNodes).indexOf(t);
301
- return n < 0 ? null : n;
298
+ function ne(t, e) {
299
+ if (!e) return null;
300
+ const r = Array.from(t.childNodes).indexOf(e);
301
+ return r < 0 ? null : r;
302
302
  }
303
- function st(e, t) {
304
- const n = e.el, { value: r } = e, { value: s } = t;
305
- r !== s && n && (n.nodeValue = s);
303
+ function se(t, e) {
304
+ const r = t.el, { value: n } = t, { value: s } = e;
305
+ n !== s && r && (r.nodeValue = s);
306
306
  }
307
- function ot(e, t, n) {
308
- const r = e.el, {
307
+ function oe(t, e, r) {
308
+ const n = 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(
320
- r,
321
- o,
322
- u
323
- ), t.listeners = ft(
324
- r,
317
+ ...y
318
+ } = e.props ?? {}, { listeners: b } = t;
319
+ ie(n, u, y), ce(n, s, l), fe(
320
+ n,
321
+ i,
322
+ f
323
+ ), e.listeners = ue(
324
+ n,
325
325
  b,
326
- i ?? {},
326
+ o ?? {},
327
327
  a ?? {},
328
- n
328
+ r
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 = {}, r = {}) {
332
+ const n = e.ref, s = r.ref;
333
+ n !== s && (n && typeof n == "object" && "current" in n && (n.current = null), s && typeof s == "object" && "current" in s && (s.current = t));
334
+ const i = { ...e }, o = { ...r };
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, r) {
343
+ const n = M(e), s = M(r), { added: i, removed: o } = U(n, 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 = {}, r = {}) {
350
+ const { added: n, removed: s, updated: i } = T(e, r);
351
+ for (const o of s)
352
+ X(t, o);
353
+ for (const o of n.concat(i))
354
+ C(t, o, r[o]);
355
+ }
356
+ function ue(t, e = {}, r = {}, n = {}, s = null) {
357
+ const { removed: i, added: o, updated: u } = T(r, n);
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
+ n[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, r) {
373
+ const n = v(t), s = v(e), i = t.el, o = x(n, s, D), u = r?.offset ?? 0;
374
+ for (const l of o)
375
+ if (l.op === E.NOOP) {
376
+ const { originalIndex: f, index: a } = l;
377
+ m(n[f], s[a], i, r);
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 = n[f].el, b = i.childNodes[a + u];
383
+ y && (i.insertBefore(y, b), m(n[f], s[a], i, r));
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, r);
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: r } = t, { props: n } = A(e);
400
+ r.updateProps(n), e.component = r, e.el = r.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, r) {
403
+ if (t.container !== e.container) {
404
+ h(t), p(e, document.body, null, r);
405
405
  return;
406
406
  }
407
- R(e, t, n);
407
+ R(t, e, r);
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 = {}, r) {
423
+ this.props = e, this.parent = r;
424
+ }
425
+ addDependency({ consumer: e }) {
426
+ this.dependencies.some((r) => r.consumer === e) || (this.dependencies.push({ consumer: e }), e.subscribedProvider = this);
427
+ }
428
+ removeDependency({ consumer: e }) {
429
+ const r = this.dependencies.findIndex((n) => n.consumer === e);
430
+ r !== -1 && (this.dependencies.splice(r, 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
- onMount() {
439
+ didMount() {
427
440
  return Promise.resolve();
428
441
  }
429
- onUnmount() {
442
+ onWillUpdate(e, r) {
430
443
  return Promise.resolve();
431
444
  }
432
- onUpdate(t, n) {
445
+ didUpdate(e, r) {
433
446
  return Promise.resolve();
434
447
  }
435
448
  onWillUnmount() {
436
449
  return Promise.resolve();
437
450
  }
451
+ didUnmount() {
452
+ return Promise.resolve();
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,122 +460,118 @@ 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;
449
- this.props = n;
450
- let s = this.updateContext();
451
- g(r, n) && !s || (ht(this) && this.notify(), this.patch(r, this.state));
463
+ updateProps(e) {
464
+ const r = { ...this.props, ...e }, n = this.props;
465
+ this.props = r;
466
+ const s = this.updateContext();
467
+ g(n, r) && !s || (pe(this) && this.notify(), this.patch(n, this.state));
452
468
  }
453
- setState(t) {
454
- let n = this.state;
455
- typeof t == "function" ? this.state = {
469
+ setState(e) {
470
+ const r = 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, r);
459
475
  }
460
- mount(t, n = null) {
476
+ mount(e, r = 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, r, 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.didUnmount()), this.vdom = null, this.hostEl = null, this.isMounted = !1);
469
485
  }
470
- patch(t, n) {
486
+ patch(e, r) {
471
487
  if (!this.isMounted || !this.hostEl || !this.vdom)
472
488
  return;
473
- const r = this.render();
474
- this.vdom = m(this.vdom, r, this.hostEl, this), E(() => this.onUpdate(t, n));
489
+ d(() => this.onWillUpdate(this.props, this.state));
490
+ const n = this.render();
491
+ this.vdom = m(this.vdom, n, this.hostEl, this), d(() => this.didUpdate(e, r));
475
492
  }
476
493
  updateContext() {
477
- const t = Object.getPrototypeOf(this).constructor.contextType;
478
- let n = this.parent;
479
- if (t != null) {
480
- for (; n; ) {
481
- if (Object.getPrototypeOf(n).constructor === t.Provider)
482
- return this.context = n.props.value, !0;
483
- n = n.parent;
494
+ const e = Object.getPrototypeOf(this).constructor.contextType;
495
+ let r = this.parent;
496
+ if (e != null) {
497
+ for (; r; ) {
498
+ if (Object.getPrototypeOf(r).constructor === e.Provider)
499
+ return this.context = r.props.value, !0;
500
+ r = r.parent;
484
501
  }
485
- n == null && (this.context = t.defaultValue);
502
+ r == 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
- let n = this.parent;
494
- for (; n; ) {
495
- if (Object.getPrototypeOf(n).constructor === t.Provider) {
496
- n.addDependency({ consumer: this });
510
+ let r = this.parent;
511
+ for (; r; ) {
512
+ if (Object.getPrototypeOf(r).constructor === e.Provider) {
513
+ r.addDependency({ consumer: this });
497
514
  break;
498
515
  }
499
- n = n.parent;
516
+ r = r.parent;
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 r 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,
538
- Consumer: n,
539
- defaultValue: e
549
+ Provider: e,
550
+ Consumer: r,
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 r = Array.isArray(t) ? t : [t];
566
+ return I(r, 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.1",
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"