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