veles 0.0.5 → 0.0.6

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.
@@ -64,6 +64,17 @@ function callMountHandlers(component) {
64
64
  function identity(value1, value2) {
65
65
  return value1 === value2;
66
66
  }
67
+ function unique(arr) {
68
+ const map = /* @__PURE__ */ new Map();
69
+ const resultArr = [];
70
+ arr.forEach((element) => {
71
+ if (map.has(element))
72
+ return;
73
+ map.set(element, true);
74
+ resultArr.push(element);
75
+ });
76
+ return resultArr;
77
+ }
67
78
 
68
79
  // src/create-element/parse-children.ts
69
80
  function parseChildren({
@@ -275,6 +286,7 @@ export {
275
286
  getComponentVelesNode,
276
287
  callMountHandlers,
277
288
  identity,
289
+ unique,
278
290
  onMount,
279
291
  onUnmount,
280
292
  createElement,
package/dist/index.cjs CHANGED
@@ -70,6 +70,17 @@ function callMountHandlers(component) {
70
70
  function identity(value1, value2) {
71
71
  return value1 === value2;
72
72
  }
73
+ function unique(arr) {
74
+ const map = /* @__PURE__ */ new Map();
75
+ const resultArr = [];
76
+ arr.forEach((element) => {
77
+ if (map.has(element))
78
+ return;
79
+ map.set(element, true);
80
+ resultArr.push(element);
81
+ });
82
+ return resultArr;
83
+ }
73
84
 
74
85
  // src/create-element/parse-children.ts
75
86
  function parseChildren({
@@ -476,46 +487,49 @@ function createState(initialValue, subscribeCallback) {
476
487
  // TODO: remove it from this object completely
477
488
  // and access it from closure
478
489
  _triggerUpdates: () => {
479
- trackingSelectorElements = trackingSelectorElements.map(
480
- (selectorTrackingElement) => {
481
- const { selectedValue, selector, cb, node, comparator } = selectorTrackingElement;
482
- const newSelectedValue = selector ? selector(value) : value;
483
- if (comparator(selectedValue, newSelectedValue)) {
484
- return selectorTrackingElement;
485
- }
486
- const returnednewNode = cb ? cb(newSelectedValue) : String(newSelectedValue);
487
- const newNode = !returnednewNode || typeof returnednewNode === "string" ? createTextElement(returnednewNode) : returnednewNode;
488
- const { velesElementNode: oldVelesElementNode } = getComponentVelesNode(node);
489
- const { velesElementNode: newVelesElementNode } = getComponentVelesNode(newNode);
490
- const parentVelesElement = oldVelesElementNode.parentVelesElement;
491
- const newTrackingSelectorElement = {
492
- selector,
493
- selectedValue: newSelectedValue,
494
- cb,
495
- node: newNode,
496
- comparator
497
- };
498
- if (parentVelesElement) {
499
- newVelesElementNode.parentVelesElement = parentVelesElement;
500
- parentVelesElement.html.replaceChild(
501
- newVelesElementNode.html,
502
- oldVelesElementNode.html
503
- );
504
- parentVelesElement.childComponents = parentVelesElement.childComponents.map(
505
- (childComponent) => childComponent === node ? newNode : node
490
+ const newTrackingSelectorElements = [];
491
+ trackingSelectorElements.forEach((selectorTrackingElement) => {
492
+ const { selectedValue, selector, cb, node, comparator } = selectorTrackingElement;
493
+ const newSelectedValue = selector ? selector(value) : value;
494
+ if (comparator(selectedValue, newSelectedValue)) {
495
+ newTrackingSelectorElements.push(selectorTrackingElement);
496
+ return;
497
+ }
498
+ const returnednewNode = cb ? cb(newSelectedValue) : String(newSelectedValue);
499
+ const newNode = !returnednewNode || typeof returnednewNode === "string" ? createTextElement(returnednewNode) : returnednewNode;
500
+ const { velesElementNode: oldVelesElementNode } = getComponentVelesNode(node);
501
+ const { velesElementNode: newVelesElementNode } = getComponentVelesNode(newNode);
502
+ const parentVelesElement = oldVelesElementNode.parentVelesElement;
503
+ const newTrackingSelectorElement = {
504
+ selector,
505
+ selectedValue: newSelectedValue,
506
+ cb,
507
+ node: newNode,
508
+ comparator
509
+ };
510
+ if (parentVelesElement) {
511
+ newVelesElementNode.parentVelesElement = parentVelesElement;
512
+ parentVelesElement.html.replaceChild(
513
+ newVelesElementNode.html,
514
+ oldVelesElementNode.html
515
+ );
516
+ parentVelesElement.childComponents = parentVelesElement.childComponents.map(
517
+ (childComponent) => childComponent === node ? newNode : node
518
+ );
519
+ node._privateMethods._callUnmountHandlers();
520
+ callMountHandlers(newNode);
521
+ newNode._privateMethods._addUnmountHandler(() => {
522
+ trackingSelectorElements = trackingSelectorElements.filter(
523
+ (el) => el !== newTrackingSelectorElement
506
524
  );
507
- node._privateMethods._callUnmountHandlers();
508
- callMountHandlers(newNode);
509
- newNode._privateMethods._addUnmountHandler(() => {
510
- trackingSelectorElements = trackingSelectorElements.filter(
511
- (el) => el !== newTrackingSelectorElement
512
- );
513
- });
514
- } else {
515
- console.log("parent node was not found");
516
- }
517
- return newTrackingSelectorElement;
525
+ });
526
+ } else {
527
+ console.log("parent node was not found");
518
528
  }
529
+ newTrackingSelectorElements.push(newTrackingSelectorElement);
530
+ });
531
+ trackingSelectorElements = unique(
532
+ trackingSelectorElements.concat(newTrackingSelectorElements)
519
533
  );
520
534
  trackingAttributes.forEach(({ cb, htmlElement, attributeName }) => {
521
535
  const newAttributeValue = cb ? cb(value) : value;
package/dist/index.js CHANGED
@@ -5,8 +5,9 @@ import {
5
5
  getComponentVelesNode,
6
6
  identity,
7
7
  onMount,
8
- onUnmount
9
- } from "./chunk-V3EV7UG6.js";
8
+ onUnmount,
9
+ unique
10
+ } from "./chunk-IENMGHS4.js";
10
11
 
11
12
  // src/attach-component.ts
12
13
  function attachComponent({
@@ -189,46 +190,49 @@ function createState(initialValue, subscribeCallback) {
189
190
  // TODO: remove it from this object completely
190
191
  // and access it from closure
191
192
  _triggerUpdates: () => {
192
- trackingSelectorElements = trackingSelectorElements.map(
193
- (selectorTrackingElement) => {
194
- const { selectedValue, selector, cb, node, comparator } = selectorTrackingElement;
195
- const newSelectedValue = selector ? selector(value) : value;
196
- if (comparator(selectedValue, newSelectedValue)) {
197
- return selectorTrackingElement;
198
- }
199
- const returnednewNode = cb ? cb(newSelectedValue) : String(newSelectedValue);
200
- const newNode = !returnednewNode || typeof returnednewNode === "string" ? createTextElement(returnednewNode) : returnednewNode;
201
- const { velesElementNode: oldVelesElementNode } = getComponentVelesNode(node);
202
- const { velesElementNode: newVelesElementNode } = getComponentVelesNode(newNode);
203
- const parentVelesElement = oldVelesElementNode.parentVelesElement;
204
- const newTrackingSelectorElement = {
205
- selector,
206
- selectedValue: newSelectedValue,
207
- cb,
208
- node: newNode,
209
- comparator
210
- };
211
- if (parentVelesElement) {
212
- newVelesElementNode.parentVelesElement = parentVelesElement;
213
- parentVelesElement.html.replaceChild(
214
- newVelesElementNode.html,
215
- oldVelesElementNode.html
216
- );
217
- parentVelesElement.childComponents = parentVelesElement.childComponents.map(
218
- (childComponent) => childComponent === node ? newNode : node
193
+ const newTrackingSelectorElements = [];
194
+ trackingSelectorElements.forEach((selectorTrackingElement) => {
195
+ const { selectedValue, selector, cb, node, comparator } = selectorTrackingElement;
196
+ const newSelectedValue = selector ? selector(value) : value;
197
+ if (comparator(selectedValue, newSelectedValue)) {
198
+ newTrackingSelectorElements.push(selectorTrackingElement);
199
+ return;
200
+ }
201
+ const returnednewNode = cb ? cb(newSelectedValue) : String(newSelectedValue);
202
+ const newNode = !returnednewNode || typeof returnednewNode === "string" ? createTextElement(returnednewNode) : returnednewNode;
203
+ const { velesElementNode: oldVelesElementNode } = getComponentVelesNode(node);
204
+ const { velesElementNode: newVelesElementNode } = getComponentVelesNode(newNode);
205
+ const parentVelesElement = oldVelesElementNode.parentVelesElement;
206
+ const newTrackingSelectorElement = {
207
+ selector,
208
+ selectedValue: newSelectedValue,
209
+ cb,
210
+ node: newNode,
211
+ comparator
212
+ };
213
+ if (parentVelesElement) {
214
+ newVelesElementNode.parentVelesElement = parentVelesElement;
215
+ parentVelesElement.html.replaceChild(
216
+ newVelesElementNode.html,
217
+ oldVelesElementNode.html
218
+ );
219
+ parentVelesElement.childComponents = parentVelesElement.childComponents.map(
220
+ (childComponent) => childComponent === node ? newNode : node
221
+ );
222
+ node._privateMethods._callUnmountHandlers();
223
+ callMountHandlers(newNode);
224
+ newNode._privateMethods._addUnmountHandler(() => {
225
+ trackingSelectorElements = trackingSelectorElements.filter(
226
+ (el) => el !== newTrackingSelectorElement
219
227
  );
220
- node._privateMethods._callUnmountHandlers();
221
- callMountHandlers(newNode);
222
- newNode._privateMethods._addUnmountHandler(() => {
223
- trackingSelectorElements = trackingSelectorElements.filter(
224
- (el) => el !== newTrackingSelectorElement
225
- );
226
- });
227
- } else {
228
- console.log("parent node was not found");
229
- }
230
- return newTrackingSelectorElement;
228
+ });
229
+ } else {
230
+ console.log("parent node was not found");
231
231
  }
232
+ newTrackingSelectorElements.push(newTrackingSelectorElement);
233
+ });
234
+ trackingSelectorElements = unique(
235
+ trackingSelectorElements.concat(newTrackingSelectorElements)
232
236
  );
233
237
  trackingAttributes.forEach(({ cb, htmlElement, attributeName }) => {
234
238
  const newAttributeValue = cb ? cb(value) : value;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Fragment,
3
3
  createElement
4
- } from "./chunk-V3EV7UG6.js";
4
+ } from "./chunk-IENMGHS4.js";
5
5
  export {
6
6
  Fragment,
7
7
  createElement as jsx,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veles",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "UI library with main focus on performance",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",