@bpd-library/utilities 1.3.2-beta.3 → 1.3.2-beta.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.
- package/dist/geometry/geometry.d.ts +2 -1
- package/dist/geometry/geometry.js +5 -1
- package/dist/geometry/geometry.js.map +1 -1
- package/dist/hooks/use-partition.d.ts +1 -0
- package/dist/hooks/use-partition.js +11 -0
- package/dist/hooks/use-partition.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/partition.d.ts +1 -0
- package/dist/partition.js +11 -0
- package/dist/partition.js.map +1 -0
- package/package.json +3 -3
- package/dist/hooks/use-form-changes.d.ts +0 -12
- package/dist/hooks/use-form-changes.js +0 -27
- package/dist/hooks/use-form-changes.js.map +0 -1
|
@@ -8,4 +8,5 @@ declare const mergeBoundingBoxes: (boundingBoxes: BoundingBox[]) => BoundingBox;
|
|
|
8
8
|
declare const expandBoundingBox: ([minX, minY, maxX, maxY]: BoundingBox, km: number) => BoundingBox;
|
|
9
9
|
declare const withinBoundingBox: (coordinates: Coordinates, boundingBox: BoundingBox, kmPadding?: number) => boolean;
|
|
10
10
|
declare const calculateDistance: (pointA: Coordinate, pointB: Coordinate) => number;
|
|
11
|
-
|
|
11
|
+
declare const calculateDistanceInKm: (pointA: Coordinate, pointB: Coordinate) => number;
|
|
12
|
+
export { calculateBoundingBox, calculateBoundingBoxCenter, calculateCenter, calculateDistance, calculateDistanceInKm, calculateMapDataBoundingBox, calculateMapDataCenter, withinBoundingBox, expandBoundingBox, mergeBoundingBoxes, };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import turfDistance from '@turf/distance';
|
|
1
2
|
const DEGREE_PER_KM = 0.0089;
|
|
2
3
|
const calculateBoundingBox = (coordinates) => {
|
|
3
4
|
let minX, minY, maxX, maxY;
|
|
@@ -60,5 +61,8 @@ const calculateDistance = (pointA, pointB) => {
|
|
|
60
61
|
const distanceY = (pointA[1] - pointB[1]) ** 2;
|
|
61
62
|
return Math.sqrt(distanceX + distanceY);
|
|
62
63
|
};
|
|
63
|
-
|
|
64
|
+
const calculateDistanceInKm = (pointA, pointB) => {
|
|
65
|
+
return turfDistance(pointA, pointB);
|
|
66
|
+
};
|
|
67
|
+
export { calculateBoundingBox, calculateBoundingBoxCenter, calculateCenter, calculateDistance, calculateDistanceInKm, calculateMapDataBoundingBox, calculateMapDataCenter, withinBoundingBox, expandBoundingBox, mergeBoundingBoxes, };
|
|
64
68
|
//# sourceMappingURL=geometry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../src/geometry/geometry.ts"],"names":[],"mappings":"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","sourcesContent":["import { BoundingBox, Coordinate, Coordinates, MapData } from '@bpd-library/types';\nimport turfDistance from '@turf/distance';\n\nconst DEGREE_PER_KM = 0.0089;\n\nconst calculateBoundingBox = (coordinates: Coordinates): [number, number, number, number] => {\n let minX: number | undefined,\n minY: number | undefined,\n maxX: number | undefined,\n maxY: number | undefined;\n\n coordinates.flat(1).forEach(([x, y]) => {\n minX = !minX || x < minX ? x : minX;\n minY = !minY || y < minY ? y : minY;\n maxX = !maxX || x > maxX ? x : maxX;\n maxY = !maxY || y > maxY ? y : maxY;\n });\n\n return [minX || 0, minY || 0, maxX || 0, maxY || 0];\n};\n\nconst concatMapDataCoordinates = (mapData: MapData): Coordinates =>\n mapData.reduce<Coordinates>((coordinates, item) => coordinates.concat(item.coordinates), []);\n\nconst calculateMapDataBoundingBox = (mapData: MapData): BoundingBox => {\n const coordinates = concatMapDataCoordinates(mapData);\n\n return calculateBoundingBox(coordinates);\n};\n\nconst calculateMapDataCenter = (mapData: MapData): Coordinate => {\n const coordinates = concatMapDataCoordinates(mapData);\n\n return calculateCenter(coordinates);\n};\n\nconst calculateBoundingBoxCenter = ([minX, minY, maxX, maxY]: [number, number, number, number]): [\n number,\n number,\n] => {\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n};\n\nconst calculateCenter = (coordinates: Coordinates): Coordinate => {\n return calculateBoundingBoxCenter(calculateBoundingBox(coordinates));\n};\n\nconst mergeBoundingBoxes = (boundingBoxes: BoundingBox[]) => {\n const mergedBoundingBox = boundingBoxes.reduce<BoundingBox>((merged, boundingBox) => {\n merged[0] = merged[0] < boundingBox[0] ? merged[0] : boundingBox[0];\n merged[1] = merged[1] < boundingBox[1] ? merged[1] : boundingBox[1];\n merged[2] = merged[2] > boundingBox[2] ? merged[2] : boundingBox[2];\n merged[3] = merged[3] > boundingBox[3] ? merged[3] : boundingBox[3];\n\n return merged;\n }, boundingBoxes[0]);\n\n return mergedBoundingBox;\n};\n\nconst expandBoundingBox = ([minX, minY, maxX, maxY]: BoundingBox, km: number): BoundingBox => {\n const degreePadding = DEGREE_PER_KM * km;\n\n minX -= degreePadding;\n minY -= degreePadding;\n maxX += degreePadding;\n maxY += degreePadding;\n\n return [minX, minY, maxX, maxY];\n};\n\nconst withinBoundingBox = (\n coordinates: Coordinates,\n boundingBox: BoundingBox,\n kmPadding: number = 0,\n): boolean => {\n if (kmPadding) {\n boundingBox = expandBoundingBox(boundingBox, kmPadding);\n }\n\n const flatCoordinates = coordinates.flat(1);\n const [minX, minY, maxX, maxY] = boundingBox;\n\n for (let i = 0; i < flatCoordinates.length; i++) {\n const [x, y] = flatCoordinates[i];\n\n if (x < maxX && x > minX && y < maxY && y > minY) return true;\n }\n\n return false;\n};\n\nconst calculateDistance = (pointA: Coordinate, pointB: Coordinate): number => {\n const distanceX = (pointA[0] - pointB[0]) ** 2;\n const distanceY = (pointA[1] - pointB[1]) ** 2;\n\n return Math.sqrt(distanceX + distanceY);\n};\n\nconst calculateDistanceInKm = (pointA: Coordinate, pointB: Coordinate): number => {\n return turfDistance(pointA, pointB);\n};\n\nexport {\n calculateBoundingBox,\n calculateBoundingBoxCenter,\n calculateCenter,\n calculateDistance,\n calculateDistanceInKm,\n calculateMapDataBoundingBox,\n calculateMapDataCenter,\n withinBoundingBox,\n expandBoundingBox,\n mergeBoundingBoxes,\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const usePartition: <T>(data: T[], filter: (item: T) => boolean) => [T[], T[]];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const usePartition = (data, filter) => {
|
|
2
|
+
const result = data.reduce((acc, item) => {
|
|
3
|
+
if (filter(item))
|
|
4
|
+
acc[0].push(item);
|
|
5
|
+
else
|
|
6
|
+
acc[1].push(item);
|
|
7
|
+
return acc;
|
|
8
|
+
}, [[], []]);
|
|
9
|
+
return result;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=use-partition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-partition.js","sourceRoot":"","sources":["../../src/hooks/use-partition.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,IAAS,EAAE,MAA4B,EAAc,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACtB,CAAC,GAAe,EAAE,IAAO,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC/B,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAC,CACX,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC","sourcesContent":["export const usePartition = <T>(data: T[], filter: (item: T) => boolean): [T[], T[]] => {\n const result = data.reduce(\n (acc: [T[], T[]], item: T) => {\n if (filter(item)) acc[0].push(item);\n else acc[1].push(item);\n return acc;\n },\n [[], []],\n );\n\n return result;\n};\n"]}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC","sourcesContent":["// Export all utilties\nexport * from './api';\nexport * from './generated';\nexport * from './dom';\nexport * from './hooks';\nexport * from './constants';\nexport * from './debounce';\nexport * from './is-touch';\nexport * from './environment';\nexport * from './raf-throttle';\nexport * from './media-query';\nexport * from './function-is-true';\nexport * from './api-utilities';\nexport * from './geometry';\nexport * from './date';\nexport * from './to-currency';\nexport * from './extended-api-models';\nexport * from './throttle';\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,OAAO,CAAC;AACtB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC","sourcesContent":["// Export all utilties\nexport * from './api';\nexport * from './generated';\nexport * from './dom';\nexport * from './hooks';\nexport * from './constants';\nexport * from './debounce';\nexport * from './is-touch';\nexport * from './environment';\nexport * from './raf-throttle';\nexport * from './media-query';\nexport * from './function-is-true';\nexport * from './api-utilities';\nexport * from './geometry';\nexport * from './date';\nexport * from './to-currency';\nexport * from './extended-api-models';\nexport * from './throttle';\nexport * from './partition';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const partition: <T>(data: T[], filter: (item: T) => boolean) => [T[], T[]];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partition.js","sourceRoot":"","sources":["../src/partition.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,IAAS,EAAE,MAA4B,EAAc,EAAE;IAChF,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACtB,CAAC,GAAe,EAAE,IAAO,EAAE,EAAE;QACzB,IAAI,MAAM,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC/B,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC,EACD,CAAC,EAAE,EAAE,EAAE,CAAC,CACX,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC","sourcesContent":["export const partition = <T>(data: T[], filter: (item: T) => boolean): [T[], T[]] => {\n const result = data.reduce(\n (acc: [T[], T[]], item: T) => {\n if (filter(item)) acc[0].push(item);\n else acc[1].push(item);\n return acc;\n },\n [[], []],\n );\n\n return result;\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bpd-library/utilities",
|
|
3
|
-
"version": "1.3.2-beta.
|
|
3
|
+
"version": "1.3.2-beta.6",
|
|
4
4
|
"description": "Description",
|
|
5
5
|
"url": "https://github.com/{repo name}",
|
|
6
6
|
"license": "MIT",
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "97bcfa752e387006f0f2c91ec64c288563eb5d2c",
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@atomify/core": "2.4.1",
|
|
51
51
|
"@atomify/hooks": "1.1.11",
|
|
52
52
|
"@atomify/jsx": "1.7.1",
|
|
53
53
|
"@atomify/kit": "1.1.11",
|
|
54
|
-
"@bpd-library/types": "^1.3.2-beta.
|
|
54
|
+
"@bpd-library/types": "^1.3.2-beta.6",
|
|
55
55
|
"qs": "^6.9.4",
|
|
56
56
|
"query-string": "5"
|
|
57
57
|
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
declare type FormItem = {
|
|
2
|
-
key: string;
|
|
3
|
-
value: FormDataEntryValue;
|
|
4
|
-
};
|
|
5
|
-
declare type FormChangeCallback = {
|
|
6
|
-
additions: FormItem[];
|
|
7
|
-
deletions: FormItem[];
|
|
8
|
-
};
|
|
9
|
-
export declare function useFormChanges(form: {
|
|
10
|
-
current: HTMLFormElement | null;
|
|
11
|
-
}, callback: ({ additions, deletions }: FormChangeCallback) => void): void;
|
|
12
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { useListen } from '@atomify/hooks';
|
|
2
|
-
let previousState = [];
|
|
3
|
-
function setPreviousState(form) {
|
|
4
|
-
previousState = [];
|
|
5
|
-
if (form.current) {
|
|
6
|
-
const entries = new FormData(form.current).entries();
|
|
7
|
-
for (const [key, value] of entries) {
|
|
8
|
-
previousState.push({ key, value });
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export function useFormChanges(form, callback) {
|
|
13
|
-
useListen(form, 'change', () => {
|
|
14
|
-
if (form.current) {
|
|
15
|
-
const entries = new FormData(form.current).entries();
|
|
16
|
-
const currentState = [];
|
|
17
|
-
for (const [key, value] of entries) {
|
|
18
|
-
currentState.push({ key, value });
|
|
19
|
-
}
|
|
20
|
-
const additions = currentState.filter((itemA) => !previousState.find((itemB) => itemB.key === itemA.key && itemB.value === itemA.value));
|
|
21
|
-
const deletions = previousState.filter((itemA) => !currentState.find((itemB) => itemB.key === itemA.key && itemB.value === itemA.value));
|
|
22
|
-
setPreviousState(form);
|
|
23
|
-
callback({ additions, deletions });
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=use-form-changes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-changes.js","sourceRoot":"","sources":["../../src/hooks/use-form-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAY3C,IAAI,aAAa,GAAe,EAAE,CAAC;AAEnC,SAAS,gBAAgB,CAAC,IAAyC;IAC/D,aAAa,GAAG,EAAE,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,EAAE;QACd,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;SACtC;KACJ;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAC1B,IAAyC,EACzC,QAAgE;IAEhE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;QAC3B,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YACrD,MAAM,YAAY,GAAe,EAAE,CAAC;YAEpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE;gBAChC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;aACrC;YAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,KAAK,EAAE,EAAE,CACN,CAAC,aAAa,CAAC,IAAI,CACf,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CACpE,CACR,CAAC;YAEF,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CACN,CAAC,YAAY,CAAC,IAAI,CACd,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CACpE,CACR,CAAC;YAEF,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAEvB,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;SACtC;IACL,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { useListen } from '@atomify/hooks';\n\ntype FormItem = {\n key: string;\n value: FormDataEntryValue;\n};\n\ntype FormChangeCallback = {\n additions: FormItem[];\n deletions: FormItem[];\n};\n\nlet previousState: FormItem[] = [];\n\nfunction setPreviousState(form: { current: HTMLFormElement | null }) {\n previousState = [];\n if (form.current) {\n const entries = new FormData(form.current).entries();\n for (const [key, value] of entries) {\n previousState.push({ key, value });\n }\n }\n}\n\nexport function useFormChanges(\n form: { current: HTMLFormElement | null },\n callback: ({ additions, deletions }: FormChangeCallback) => void,\n) {\n useListen(form, 'change', () => {\n if (form.current) {\n const entries = new FormData(form.current).entries();\n const currentState: FormItem[] = [];\n\n for (const [key, value] of entries) {\n currentState.push({ key, value });\n }\n\n const additions = currentState.filter(\n (itemA) =>\n !previousState.find(\n (itemB) => itemB.key === itemA.key && itemB.value === itemA.value,\n ),\n );\n\n const deletions = previousState.filter(\n (itemA) =>\n !currentState.find(\n (itemB) => itemB.key === itemA.key && itemB.value === itemA.value,\n ),\n );\n\n setPreviousState(form);\n\n callback({ additions, deletions });\n }\n });\n}\n"]}
|