@mongez/atom 1.0.1 → 1.0.3

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,6 +1,6 @@
1
1
  import type { Atom, AtomActions, AtomOptions } from './types';
2
2
  export type IndexOrCallback<Value> = number | ((value: Value, index: number, list: Value[]) => boolean);
3
- interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
3
+ export interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
4
4
  /**
5
5
  * Add items to the end of the array
6
6
  */
@@ -55,12 +55,11 @@ interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
55
55
  */
56
56
  length: number;
57
57
  }
58
- export type CollectionOptions<Value> = Omit<AtomOptions<Value[], AtomCollectionActions<Value>>, 'actions' | 'default'> & {
58
+ export type CollectionOptions<Value> = Omit<AtomOptions<Value[], AtomCollectionActions<Value>>, 'default'> & {
59
59
  default?: Value[];
60
60
  };
61
61
  /**
62
62
  * Create an atom collection
63
63
  */
64
64
  export declare function atomCollection<Value = any>(options: CollectionOptions<Value>): Atom<Value[], AtomCollectionActions<Value>>;
65
- export {};
66
65
  //# sourceMappingURL=atom-collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atom-collection.d.ts","sourceRoot":"","sources":["../src/atom-collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atom-collection.d.ts","sourceRoot":"","sources":["../src/atom-collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ 'use strict';var atom=require('./atom.js');/**
2
+ * Create an atom collection
3
+ */
4
+ function atomCollection(options) {
5
+ return atom.createAtom({
6
+ key: options.key,
7
+ default: options.default ?? [],
8
+ actions: {
9
+ ...options.actions,
10
+ push(...items) {
11
+ this.update([...this.currentValue, ...items]);
12
+ },
13
+ pop() {
14
+ this.update(this.currentValue.slice(0, -1));
15
+ },
16
+ shift() {
17
+ this.update(this.currentValue.slice(1));
18
+ },
19
+ unshift(...items) {
20
+ this.update([...items, ...this.currentValue]);
21
+ },
22
+ remove(indexOrCallback) {
23
+ const index = typeof indexOrCallback === 'function'
24
+ ? this.value.findIndex(indexOrCallback)
25
+ : indexOrCallback;
26
+ if (index === -1)
27
+ return;
28
+ this.update(this.value.filter((_, i) => i !== index));
29
+ },
30
+ removeItem(item) {
31
+ const index = this.value.indexOf(item);
32
+ if (index === -1)
33
+ return;
34
+ // using splice
35
+ this.value.splice(index, 1);
36
+ this.update([...this.value]);
37
+ },
38
+ removeAll(item) {
39
+ return this.value.filter((value) => value !== item);
40
+ },
41
+ get(indexOrCallback) {
42
+ const index = typeof indexOrCallback === 'function'
43
+ ? this.value.findIndex(indexOrCallback)
44
+ : indexOrCallback;
45
+ return this.value[index];
46
+ },
47
+ index(callback) {
48
+ return this.value.findIndex(callback);
49
+ },
50
+ map(callback) {
51
+ const value = this.value.map(callback);
52
+ this.update(value);
53
+ return value;
54
+ },
55
+ forEach(callback) {
56
+ this.value.forEach(callback);
57
+ },
58
+ get length() {
59
+ return this.value?.length;
60
+ },
61
+ replace(index, item) {
62
+ this.update(this.value.map((value, i) => {
63
+ if (i === index) {
64
+ return item;
65
+ }
66
+ return value;
67
+ }));
68
+ },
69
+ },
70
+ });
71
+ }exports.atomCollection=atomCollection;//# sourceMappingURL=atom-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom-collection.js","sources":["../src/atom-collection.ts"],"sourcesContent":[null],"names":["createAtom"],"mappings":"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"}
package/cjs/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './atom';
2
+ export * from './helpers';
2
3
  export * from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
package/cjs/index.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var atom=require('./atom.js');exports.atoms=atom.atoms;exports.atomsList=atom.atomsList;exports.atomsObject=atom.atomsObject;exports.createAtom=atom.createAtom;exports.getAtom=atom.getAtom;//# sourceMappingURL=index.js.map
1
+ 'use strict';var atom=require('./atom.js'),atomCollection=require('./atom-collection.js');exports.atoms=atom.atoms;exports.atomsList=atom.atomsList;exports.atomsObject=atom.atomsObject;exports.createAtom=atom.createAtom;exports.getAtom=atom.getAtom;exports.atomCollection=atomCollection.atomCollection;//# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  import type { Atom, AtomActions, AtomOptions } from './types';
2
2
  export type IndexOrCallback<Value> = number | ((value: Value, index: number, list: Value[]) => boolean);
3
- interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
3
+ export interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
4
4
  /**
5
5
  * Add items to the end of the array
6
6
  */
@@ -55,12 +55,11 @@ interface AtomCollectionActions<Value> extends AtomActions<Value[]> {
55
55
  */
56
56
  length: number;
57
57
  }
58
- export type CollectionOptions<Value> = Omit<AtomOptions<Value[], AtomCollectionActions<Value>>, 'actions' | 'default'> & {
58
+ export type CollectionOptions<Value> = Omit<AtomOptions<Value[], AtomCollectionActions<Value>>, 'default'> & {
59
59
  default?: Value[];
60
60
  };
61
61
  /**
62
62
  * Create an atom collection
63
63
  */
64
64
  export declare function atomCollection<Value = any>(options: CollectionOptions<Value>): Atom<Value[], AtomCollectionActions<Value>>;
65
- export {};
66
65
  //# sourceMappingURL=atom-collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"atom-collection.d.ts","sourceRoot":"","sources":["../src/atom-collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"atom-collection.d.ts","sourceRoot":"","sources":["../src/atom-collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import {createAtom}from'./atom.js';/**
2
+ * Create an atom collection
3
+ */
4
+ function atomCollection(options) {
5
+ return createAtom({
6
+ key: options.key,
7
+ default: options.default ?? [],
8
+ actions: {
9
+ ...options.actions,
10
+ push(...items) {
11
+ this.update([...this.currentValue, ...items]);
12
+ },
13
+ pop() {
14
+ this.update(this.currentValue.slice(0, -1));
15
+ },
16
+ shift() {
17
+ this.update(this.currentValue.slice(1));
18
+ },
19
+ unshift(...items) {
20
+ this.update([...items, ...this.currentValue]);
21
+ },
22
+ remove(indexOrCallback) {
23
+ const index = typeof indexOrCallback === 'function'
24
+ ? this.value.findIndex(indexOrCallback)
25
+ : indexOrCallback;
26
+ if (index === -1)
27
+ return;
28
+ this.update(this.value.filter((_, i) => i !== index));
29
+ },
30
+ removeItem(item) {
31
+ const index = this.value.indexOf(item);
32
+ if (index === -1)
33
+ return;
34
+ // using splice
35
+ this.value.splice(index, 1);
36
+ this.update([...this.value]);
37
+ },
38
+ removeAll(item) {
39
+ return this.value.filter((value) => value !== item);
40
+ },
41
+ get(indexOrCallback) {
42
+ const index = typeof indexOrCallback === 'function'
43
+ ? this.value.findIndex(indexOrCallback)
44
+ : indexOrCallback;
45
+ return this.value[index];
46
+ },
47
+ index(callback) {
48
+ return this.value.findIndex(callback);
49
+ },
50
+ map(callback) {
51
+ const value = this.value.map(callback);
52
+ this.update(value);
53
+ return value;
54
+ },
55
+ forEach(callback) {
56
+ this.value.forEach(callback);
57
+ },
58
+ get length() {
59
+ return this.value?.length;
60
+ },
61
+ replace(index, item) {
62
+ this.update(this.value.map((value, i) => {
63
+ if (i === index) {
64
+ return item;
65
+ }
66
+ return value;
67
+ }));
68
+ },
69
+ },
70
+ });
71
+ }export{atomCollection};//# sourceMappingURL=atom-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atom-collection.js","sources":["../src/atom-collection.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/esm/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './atom';
2
+ export * from './helpers';
2
3
  export * from './types';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
package/esm/index.js CHANGED
@@ -1 +1 @@
1
- export{atoms,atomsList,atomsObject,createAtom,getAtom}from'./atom.js';//# sourceMappingURL=index.js.map
1
+ export{atoms,atomsList,atomsObject,createAtom,getAtom}from'./atom.js';export{atomCollection}from'./atom-collection.js';//# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mongez/atom",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "An agnostic state management tool that work with any framework on browser or server",
5
5
  "main": "./cjs/index.js",
6
6
  "author": "hassanzohdy",