@oscarpalmer/atoms 0.116.0 → 0.117.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.
- package/dist/array/sort.js +23 -23
- package/dist/array/to-map.js +2 -2
- package/dist/array/to-set.js +2 -2
- package/dist/atoms.full.js +232 -234
- package/dist/{emitter.js → beacon.js} +12 -12
- package/dist/color/misc/get.js +6 -6
- package/dist/color/misc/is.js +15 -15
- package/dist/color/space/rgb.js +8 -8
- package/dist/index.js +3 -3
- package/dist/internal/array/callbacks.js +5 -5
- package/dist/internal/array/find.js +3 -3
- package/dist/internal/array/group.js +2 -2
- package/dist/internal/array/insert.js +4 -4
- package/dist/internal/math/aggregate.js +7 -7
- package/dist/internal/random.js +5 -5
- package/dist/internal/value/compare.js +7 -7
- package/dist/internal/value/equal.js +2 -2
- package/dist/internal/value/set.js +6 -8
- package/dist/math.js +3 -3
- package/dist/query.js +4 -4
- package/dist/string/template.js +2 -2
- package/dist/value/clone.js +9 -9
- package/dist/value/diff.js +4 -4
- package/package.json +5 -5
- package/src/array/sort.ts +28 -29
- package/src/array/to-map.ts +2 -2
- package/src/array/to-set.ts +2 -2
- package/src/{emitter.ts → beacon.ts} +23 -23
- package/src/color/misc/get.ts +7 -7
- package/src/color/misc/is.ts +32 -32
- package/src/color/space/rgb.ts +8 -9
- package/src/index.ts +1 -1
- package/src/internal/array/callbacks.ts +4 -4
- package/src/internal/array/find.ts +3 -3
- package/src/internal/array/group.ts +2 -2
- package/src/internal/array/insert.ts +4 -4
- package/src/internal/math/aggregate.ts +6 -6
- package/src/internal/random.ts +7 -7
- package/src/internal/value/compare.ts +5 -5
- package/src/internal/value/equal.ts +2 -2
- package/src/internal/value/set.ts +5 -7
- package/src/math.ts +3 -3
- package/src/query.ts +4 -4
- package/src/string/template.ts +3 -3
- package/src/value/clone.ts +9 -9
- package/src/value/diff.ts +2 -2
- package/types/{emitter.d.ts → beacon.d.ts} +12 -12
- package/types/index.d.ts +1 -1
- package/types/internal/array/callbacks.d.ts +1 -1
package/dist/array/sort.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { isPlainObject } from "../internal/is.js";
|
|
2
2
|
import { compare } from "../internal/value/compare.js";
|
|
3
3
|
import "../is.js";
|
|
4
|
-
function getCallback(value, key,
|
|
4
|
+
function getCallback(value, key, forObject) {
|
|
5
5
|
if (key != null) return;
|
|
6
|
-
if (
|
|
6
|
+
if (forObject && typeof value.value === "function") return value.value;
|
|
7
7
|
return typeof value === "function" ? value : void 0;
|
|
8
8
|
}
|
|
9
|
-
function getKey(value,
|
|
10
|
-
if (
|
|
9
|
+
function getKey(value, forObject) {
|
|
10
|
+
if (forObject && typeof value.key === "string") return value.key;
|
|
11
11
|
return typeof value === "string" ? value : void 0;
|
|
12
12
|
}
|
|
13
|
-
function getModifier(value, modifier,
|
|
14
|
-
if (!
|
|
13
|
+
function getModifier(value, modifier, forObject) {
|
|
14
|
+
if (!forObject || typeof value.direction !== "string") return modifier;
|
|
15
15
|
if (value.direction === "ascending") return 1;
|
|
16
16
|
return value.direction === "descending" ? -1 : modifier;
|
|
17
17
|
}
|
|
18
18
|
function getSorter(value, modifier) {
|
|
19
|
-
const
|
|
19
|
+
const forObject = isPlainObject(value);
|
|
20
20
|
const sorter = {
|
|
21
21
|
identifier: "",
|
|
22
22
|
modifier
|
|
23
23
|
};
|
|
24
|
-
sorter.compare =
|
|
25
|
-
sorter.key = getKey(value,
|
|
26
|
-
sorter.modifier = getModifier(value, modifier,
|
|
27
|
-
sorter.callback = getCallback(value, sorter.key,
|
|
24
|
+
sorter.compare = forObject && typeof value.compare === "function" ? value.compare : void 0;
|
|
25
|
+
sorter.key = getKey(value, forObject);
|
|
26
|
+
sorter.modifier = getModifier(value, modifier, forObject);
|
|
27
|
+
sorter.callback = getCallback(value, sorter.key, forObject);
|
|
28
28
|
if (sorter.key != null || sorter.callback != null) {
|
|
29
29
|
sorter.identifier = `${sorter.key ?? sorter.callback}`;
|
|
30
30
|
return sorter;
|
|
@@ -34,25 +34,25 @@ function sort(array, first, second) {
|
|
|
34
34
|
if (!Array.isArray(array)) return [];
|
|
35
35
|
if (array.length < 2) return array;
|
|
36
36
|
const modifier = (first === true || second === true ? "desc" : "asc") === "asc" ? 1 : -1;
|
|
37
|
-
const sorters = (Array.isArray(first) ? first : [first]).map((item) => getSorter(item, modifier)).filter((sorter) => sorter != null).filter((current, index,
|
|
37
|
+
const sorters = (Array.isArray(first) ? first : [first]).map((item) => getSorter(item, modifier)).filter((sorter) => sorter != null).filter((current, index, filtered) => filtered.findIndex((next) => next.identifier === current.identifier) === index);
|
|
38
38
|
const { length } = sorters;
|
|
39
|
-
if (length === 0) return array.sort((
|
|
39
|
+
if (length === 0) return array.sort((firstItem, secondItem) => compare(firstItem, secondItem) * modifier);
|
|
40
40
|
if (length === 1) {
|
|
41
41
|
const sorter = sorters[0];
|
|
42
|
-
const { callback, key
|
|
43
|
-
return array.sort((
|
|
44
|
-
const firstValue = key == null ? callback?.(
|
|
45
|
-
const secondValue = key == null ? callback?.(
|
|
46
|
-
return (sorter.compare?.(
|
|
42
|
+
const { callback, key } = sorter;
|
|
43
|
+
return array.sort((firstItem, secondItem) => {
|
|
44
|
+
const firstValue = key == null ? callback?.(firstItem) : firstItem[key];
|
|
45
|
+
const secondValue = key == null ? callback?.(secondItem) : secondItem[key];
|
|
46
|
+
return (sorter.compare?.(firstItem, firstValue, secondItem, secondValue) ?? compare(firstValue, secondValue)) * sorter.modifier;
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
-
return array.sort((
|
|
49
|
+
return array.sort((firstItem, secondItem) => {
|
|
50
50
|
for (let index = 0; index < length; index += 1) {
|
|
51
51
|
const sorter = sorters[index];
|
|
52
|
-
const { callback, key
|
|
53
|
-
const firstValue = key == null ? callback?.(
|
|
54
|
-
const secondValue = key == null ? callback?.(
|
|
55
|
-
const compared = (sorter.compare?.(
|
|
52
|
+
const { callback, key } = sorter;
|
|
53
|
+
const firstValue = key == null ? callback?.(firstItem) : firstItem[key];
|
|
54
|
+
const secondValue = key == null ? callback?.(secondItem) : secondItem[key];
|
|
55
|
+
const compared = (sorter.compare?.(firstItem, firstValue, secondItem, secondValue) ?? compare(firstValue, secondValue)) * sorter.modifier;
|
|
56
56
|
if (compared !== 0) return compared;
|
|
57
57
|
}
|
|
58
58
|
return 0;
|
package/dist/array/to-map.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getArrayCallbacks } from "../internal/array/callbacks.js";
|
|
2
2
|
function getMapValues(array, first, second, arrays) {
|
|
3
3
|
if (!Array.isArray(array)) return /* @__PURE__ */ new Map();
|
|
4
4
|
const { length } = array;
|
|
5
|
-
const callbacks =
|
|
5
|
+
const callbacks = getArrayCallbacks(void 0, first, second);
|
|
6
6
|
const map = /* @__PURE__ */ new Map();
|
|
7
7
|
for (let index = 0; index < length; index += 1) {
|
|
8
8
|
const item = array[index];
|
package/dist/array/to-set.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getArrayCallbacks } from "../internal/array/callbacks.js";
|
|
2
2
|
function toSet(array, value) {
|
|
3
3
|
if (!Array.isArray(array)) return /* @__PURE__ */ new Set();
|
|
4
|
-
const callbacks =
|
|
4
|
+
const callbacks = getArrayCallbacks(void 0, void 0, value);
|
|
5
5
|
if (callbacks?.value == null) return new Set(array);
|
|
6
6
|
const { length } = array;
|
|
7
7
|
const set = /* @__PURE__ */ new Set();
|