@vope/utils 1.4.3 → 1.4.5

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.
Files changed (58) hide show
  1. package/README.md +0 -20
  2. package/cjs/index.js +583 -56
  3. package/lib/clamp.js +4 -2
  4. package/lib/classnames.js +8 -5
  5. package/lib/compare/version.js +4 -2
  6. package/lib/compare/weak-equal.js +4 -2
  7. package/lib/convert/json.js +4 -2
  8. package/lib/convert/object.js +4 -2
  9. package/lib/convert/strings.js +4 -2
  10. package/lib/encoding.js +4 -2
  11. package/lib/index.js +50 -24
  12. package/lib/input-regex.js +4 -2
  13. package/lib/is/class.js +4 -2
  14. package/lib/is/empty.js +4 -2
  15. package/lib/is/null.js +4 -2
  16. package/lib/memory/basic.js +4 -2
  17. package/lib/memory/list.js +4 -2
  18. package/lib/memory/power.js +4 -2
  19. package/lib/memory/type.d.js +0 -1
  20. package/lib/once.js +4 -2
  21. package/lib/power/decon.js +4 -2
  22. package/lib/rotate/angle.js +4 -2
  23. package/lib/rotate/rad.js +4 -2
  24. package/lib/table/flex.js +101 -0
  25. package/lib/union.js +4 -2
  26. package/lib/url/join.js +4 -2
  27. package/lib/url/params.js +4 -2
  28. package/lib/wait.js +4 -2
  29. package/package.json +24 -30
  30. package/types/classnames.d.ts +1 -1
  31. package/types/index.d.ts +1 -0
  32. package/types/rotate/angle.d.ts +1 -1
  33. package/types/rotate/rad.d.ts +1 -1
  34. package/types/table/flex.d.ts +43 -0
  35. package/cjs/clamp.js +0 -31
  36. package/cjs/classnames.js +0 -36
  37. package/cjs/compare/version.js +0 -38
  38. package/cjs/compare/weak-equal.js +0 -54
  39. package/cjs/convert/json.js +0 -28
  40. package/cjs/convert/object.js +0 -28
  41. package/cjs/convert/strings.js +0 -28
  42. package/cjs/encoding.js +0 -77
  43. package/cjs/input-regex.js +0 -29
  44. package/cjs/is/class.js +0 -49
  45. package/cjs/is/empty.js +0 -36
  46. package/cjs/is/null.js +0 -25
  47. package/cjs/memory/basic.js +0 -168
  48. package/cjs/memory/list.js +0 -42
  49. package/cjs/memory/power.js +0 -43
  50. package/cjs/memory/type.d.js +0 -16
  51. package/cjs/once.js +0 -28
  52. package/cjs/power/decon.js +0 -43
  53. package/cjs/rotate/angle.js +0 -36
  54. package/cjs/rotate/rad.js +0 -32
  55. package/cjs/union.js +0 -44
  56. package/cjs/url/join.js +0 -31
  57. package/cjs/url/params.js +0 -45
  58. package/cjs/wait.js +0 -24
package/lib/classnames.js CHANGED
@@ -1,14 +1,17 @@
1
- "use strict";
1
+ import { isBoolean, isString } from "lodash-es";
2
2
  const add = (a, b) => a ? a + " " + b : b;
3
- export default (...list) => list.reduce((caches, data) => {
4
- if (typeof data === "string") {
3
+ var classnames_default = (...list) => list.reduce((caches, data) => {
4
+ if (isString(data)) {
5
5
  data && (caches = add(caches, data));
6
6
  } else if (Array.isArray(data)) {
7
- data.forEach((value) => value && (caches = add(caches, value)));
8
- } else if (data) {
7
+ data.forEach((value) => value && isString(value) && (caches = add(caches, value)));
8
+ } else if (!isBoolean(data)) {
9
9
  for (const key in data) {
10
10
  key && data[key] && (caches = add(caches, key));
11
11
  }
12
12
  }
13
13
  return caches;
14
14
  }, "");
15
+ export {
16
+ classnames_default as default
17
+ };
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const CHAR = ".";
3
2
  const compareVersion = (from, to) => {
4
3
  const froms = from.split(CHAR);
@@ -13,4 +12,7 @@ const compareVersion = (from, to) => {
13
12
  }
14
13
  return 0;
15
14
  };
16
- export default compareVersion;
15
+ var version_default = compareVersion;
16
+ export {
17
+ version_default as default
18
+ };
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const deepWeakEqual = (from, to) => {
3
2
  if (typeof from !== "object" || from === null || typeof to !== "object" || to === null)
4
3
  return from === to;
@@ -29,4 +28,7 @@ const deepWeakEqual = (from, to) => {
29
28
  }
30
29
  return true;
31
30
  };
32
- export default deepWeakEqual;
31
+ var weak_equal_default = deepWeakEqual;
32
+ export {
33
+ weak_equal_default as default
34
+ };
@@ -1,6 +1,8 @@
1
- "use strict";
2
1
  const hash8json = (list, key) => list.reduce((caches, data) => {
3
2
  caches[data[key]] = data;
4
3
  return caches;
5
4
  }, {});
6
- export default hash8json;
5
+ var json_default = hash8json;
6
+ export {
7
+ json_default as default
8
+ };
@@ -1,6 +1,8 @@
1
- "use strict";
2
1
  const hash8object = (list, key) => list.reduce((caches, data) => {
3
2
  caches.set(data[key], data);
4
3
  return caches;
5
4
  }, /* @__PURE__ */ new Map());
6
- export default hash8object;
5
+ var object_default = hash8object;
6
+ export {
7
+ object_default as default
8
+ };
@@ -1,6 +1,8 @@
1
- "use strict";
2
1
  const hash8strings = (list) => list.reduce((caches, data, index) => {
3
2
  caches[data] = index;
4
3
  return caches;
5
4
  }, {});
6
- export default hash8strings;
5
+ var strings_default = hash8strings;
6
+ export {
7
+ strings_default as default
8
+ };
package/lib/encoding.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const utf8_first_prefix = /^1{2,}/g;
3
2
  const utf8_other_prefix = /^10/;
4
3
  const Encodes = {
@@ -52,4 +51,7 @@ const getEncoding = (uint, limit = 1024) => {
52
51
  }
53
52
  return { encoding, offset };
54
53
  };
55
- export default getEncoding;
54
+ var encoding_default = getEncoding;
55
+ export {
56
+ encoding_default as default
57
+ };
package/lib/index.js CHANGED
@@ -1,24 +1,50 @@
1
- "use strict";
2
- export { default as clamp } from "./clamp";
3
- export { default as classnames } from "./classnames";
4
- export { default as compareVersion } from "./compare/version";
5
- export { default as deepWeakEqual } from "./compare/weak-equal";
6
- export { default as hash8json } from "./convert/json";
7
- export { default as hash8object } from "./convert/object";
8
- export { default as hash8strings } from "./convert/strings";
9
- export { default as getEncoding } from "./encoding";
10
- export { default as inputRegex } from "./input-regex";
11
- export { default as isClass } from "./is/class";
12
- export { default as isEmpty } from "./is/empty";
13
- export { default as isNull } from "./is/null";
14
- export { default as MemoryBasic } from "./memory/basic";
15
- export { default as MemoryList } from "./memory/list";
16
- export { default as MemoryPower } from "./memory/power";
17
- export { default as once } from "./once";
18
- export { default as deconPowersSum } from "./power/decon";
19
- export { default as rotateAngle } from "./rotate/angle";
20
- export { default as rotateRad } from "./rotate/rad";
21
- export { default as Union } from "./union";
22
- export { default as joinPaths } from "./url/join";
23
- export { default as connectURLParams } from "./url/params";
24
- export { default as wait } from "./wait";
1
+ import { default as default2 } from "./clamp";
2
+ import { default as default3 } from "./classnames";
3
+ import { default as default4 } from "./compare/version";
4
+ import { default as default5 } from "./compare/weak-equal";
5
+ import { default as default6 } from "./convert/json";
6
+ import { default as default7 } from "./convert/object";
7
+ import { default as default8 } from "./convert/strings";
8
+ import { default as default9 } from "./encoding";
9
+ import { default as default10 } from "./input-regex";
10
+ import { default as default11 } from "./is/class";
11
+ import { default as default12 } from "./is/empty";
12
+ import { default as default13 } from "./is/null";
13
+ import { default as default14 } from "./memory/basic";
14
+ import { default as default15 } from "./memory/list";
15
+ import { default as default16 } from "./memory/power";
16
+ import { default as default17 } from "./once";
17
+ import { default as default18 } from "./power/decon";
18
+ import { default as default19 } from "./rotate/angle";
19
+ import { default as default20 } from "./rotate/rad";
20
+ import { default as default21 } from "./table/flex";
21
+ import { default as default22 } from "./union";
22
+ import { default as default23 } from "./url/join";
23
+ import { default as default24 } from "./url/params";
24
+ import { default as default25 } from "./wait";
25
+ export {
26
+ default21 as FlexTable,
27
+ default14 as MemoryBasic,
28
+ default15 as MemoryList,
29
+ default16 as MemoryPower,
30
+ default22 as Union,
31
+ default2 as clamp,
32
+ default3 as classnames,
33
+ default4 as compareVersion,
34
+ default24 as connectURLParams,
35
+ default18 as deconPowersSum,
36
+ default5 as deepWeakEqual,
37
+ default9 as getEncoding,
38
+ default6 as hash8json,
39
+ default7 as hash8object,
40
+ default8 as hash8strings,
41
+ default10 as inputRegex,
42
+ default11 as isClass,
43
+ default12 as isEmpty,
44
+ default13 as isNull,
45
+ default23 as joinPaths,
46
+ default17 as once,
47
+ default19 as rotateAngle,
48
+ default20 as rotateRad,
49
+ default25 as wait
50
+ };
@@ -1,7 +1,9 @@
1
- "use strict";
2
1
  const RE_REGEX = /[$()*+.[?\\^{|]/g;
3
2
  const RE_STRING = /[$()*+.[?\\^{|-]/g;
4
3
  function inputRegex(text, flags) {
5
4
  return flags === false ? text.replace(RE_STRING, ($0) => "\\" + $0) : new RegExp(text.replace(RE_REGEX, ($0) => "\\" + $0), flags);
6
5
  }
7
- export default inputRegex;
6
+ var input_regex_default = inputRegex;
7
+ export {
8
+ input_regex_default as default
9
+ };
package/lib/is/class.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const re_anonymous = /^function\s+\(|^function\s+anonymous\(/;
3
2
  const re_function = /^function\s+[A-Z]/;
4
3
  const re_this = /\b\(this\b|\bthis[\.\[]\b/;
@@ -24,4 +23,7 @@ const isClass = (value, strict = true) => {
24
23
  }
25
24
  return false;
26
25
  };
27
- export default isClass;
26
+ var class_default = isClass;
27
+ export {
28
+ class_default as default
29
+ };
package/lib/is/empty.js CHANGED
@@ -1,4 +1,6 @@
1
- "use strict";
2
1
  import isNull from "./null";
3
2
  const isEmpty = (value) => isNull(value) || value === "";
4
- export default isEmpty;
3
+ var empty_default = isEmpty;
4
+ export {
5
+ empty_default as default
6
+ };
package/lib/is/null.js CHANGED
@@ -1,3 +1,5 @@
1
- "use strict";
2
1
  const isNull = (value) => value === void 0 || value === null;
3
- export default isNull;
2
+ var null_default = isNull;
3
+ export {
4
+ null_default as default
5
+ };
@@ -1,6 +1,5 @@
1
- "use strict";
2
1
  import hash8strings from "../convert/strings";
3
- export default class MemoryBasic {
2
+ class MemoryBasic {
4
3
  /**
5
4
  * @param key 用于对数据进行分类的key
6
5
  * @param config
@@ -134,3 +133,6 @@ export default class MemoryBasic {
134
133
  this.memorys.clear();
135
134
  }
136
135
  }
136
+ export {
137
+ MemoryBasic as default
138
+ };
@@ -1,6 +1,5 @@
1
- "use strict";
2
1
  import MemoryBasic from "./basic";
3
- export default class MemoryList extends MemoryBasic {
2
+ class MemoryList extends MemoryBasic {
4
3
  constructor(key) {
5
4
  super(key, {
6
5
  mount: (index, reactor) => reactor ? (reactor.push(index), reactor) : [index],
@@ -8,3 +7,6 @@ export default class MemoryList extends MemoryBasic {
8
7
  });
9
8
  }
10
9
  }
10
+ export {
11
+ MemoryList as default
12
+ };
@@ -1,7 +1,6 @@
1
- "use strict";
2
1
  import deconPowersSum from "../power/decon";
3
2
  import MemoryBasic from "./basic";
4
- export default class MemoryPower extends MemoryBasic {
3
+ class MemoryPower extends MemoryBasic {
5
4
  constructor(key) {
6
5
  super(key, {
7
6
  mount: (index, reactor) => (reactor || 0) + 2 ** index,
@@ -9,3 +8,6 @@ export default class MemoryPower extends MemoryBasic {
9
8
  });
10
9
  }
11
10
  }
11
+ export {
12
+ MemoryPower as default
13
+ };
@@ -1 +0,0 @@
1
- "use strict";
package/lib/once.js CHANGED
@@ -1,6 +1,8 @@
1
- "use strict";
2
- export default (func, thisArg) => {
1
+ var once_default = (func, thisArg) => {
3
2
  let local;
4
3
  let inited = false;
5
4
  return (...list) => inited ? local : (inited = true, local = func.apply(thisArg, list));
6
5
  };
6
+ export {
7
+ once_default as default
8
+ };
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const ERROR_MESSAGE = {
3
2
  INT: "\u53C2\u6570\u5FC5\u987B\u662F\u6574\u6570",
4
3
  MIN: "\u591A\u4E2A2\u7684\u6B63\u6574\u6570\u5E42(\u4E24\u4E24\u4E0D\u76F8\u7B49)\u4E4B\u548C\u5FC5\u5B9A\u5927\u4E8E\u7B49\u4E8E1"
@@ -18,4 +17,7 @@ const deconPowersSum = (sum, sort) => {
18
17
  }
19
18
  return sort === "asc" ? list.reverse() : list;
20
19
  };
21
- export default deconPowersSum;
20
+ var decon_default = deconPowersSum;
21
+ export {
22
+ decon_default as default
23
+ };
@@ -1,4 +1,6 @@
1
- "use strict";
2
1
  import rotateRad from "./rad";
3
2
  const rotateAngle = (from, angle, visit) => rotateRad(from, angle / 180 * Math.PI, visit);
4
- export default rotateAngle;
3
+ var angle_default = rotateAngle;
4
+ export {
5
+ angle_default as default
6
+ };
package/lib/rotate/rad.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const rotateRad = (from, rad, visit = [0, 0]) => {
3
2
  const x = from[0] - visit[0];
4
3
  const y = from[1] - visit[1];
@@ -7,4 +6,7 @@ const rotateRad = (from, rad, visit = [0, 0]) => {
7
6
  y * Math.cos(rad) - x * Math.sin(rad) + visit[1]
8
7
  ];
9
8
  };
10
- export default rotateRad;
9
+ var rad_default = rotateRad;
10
+ export {
11
+ rad_default as default
12
+ };
@@ -0,0 +1,101 @@
1
+ class FlexTable {
2
+ #data = [];
3
+ /**
4
+ * 行数
5
+ */
6
+ get rowspan() {
7
+ return this.#data.length;
8
+ }
9
+ /**
10
+ * 总数据长度
11
+ */
12
+ get length() {
13
+ return this.#data.reduce((length, list) => length + list.length, 0);
14
+ }
15
+ constructor() {
16
+ this.newline();
17
+ }
18
+ /**
19
+ * 创建新行
20
+ */
21
+ newline() {
22
+ this.#data.push([]);
23
+ return this;
24
+ }
25
+ push(value) {
26
+ const rowspan = this.#data.length;
27
+ rowspan || this.newline();
28
+ this.#data[rowspan - 1].push(value);
29
+ return this;
30
+ }
31
+ /**
32
+ * 替换指定位置的数据
33
+ * @description 指定位置必需为有效位置
34
+ */
35
+ replace(rowspan, colspan, value) {
36
+ const list = this.#data[rowspan];
37
+ list && colspan in list && (list[colspan] = value);
38
+ return this;
39
+ }
40
+ /**
41
+ * 从指定位置开始移除或者替换/添加元素
42
+ * @description 指定位置必需为有效位置
43
+ */
44
+ splice(rowspan, colspan, deleteCount, ...values) {
45
+ const list = this.#data[rowspan];
46
+ list && colspan in list && list.splice(colspan, deleteCount, ...values);
47
+ return this;
48
+ }
49
+ pop() {
50
+ const data = this.#data;
51
+ const rowspan = data.length;
52
+ if (!rowspan)
53
+ return null;
54
+ const list = data[rowspan - 1];
55
+ if (list.length) {
56
+ return list.pop();
57
+ } else {
58
+ data.pop();
59
+ return this.pop();
60
+ }
61
+ }
62
+ /**
63
+ * 遍历数据
64
+ */
65
+ each(callback) {
66
+ const data = this.#data;
67
+ outloop:
68
+ for (let i = 0; i < data.length; i++) {
69
+ const list = data[i];
70
+ for (let j = 0; j < list.length; j++) {
71
+ if (callback(list[j], i, j) === false)
72
+ break outloop;
73
+ }
74
+ }
75
+ }
76
+ /**
77
+ * 反序遍历数据
78
+ */
79
+ reverseEach(callback) {
80
+ const data = this.#data;
81
+ outloop:
82
+ for (let i = data.length; i; ) {
83
+ const list = data[--i];
84
+ for (let j = list.length; j; ) {
85
+ if (callback(list[--j], i, j) === false)
86
+ break outloop;
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * 清空数据
92
+ */
93
+ clear() {
94
+ if (this.#data.length) {
95
+ this.#data = [];
96
+ }
97
+ }
98
+ }
99
+ export {
100
+ FlexTable as default
101
+ };
package/lib/union.js CHANGED
@@ -1,5 +1,4 @@
1
- "use strict";
2
- export default class Union {
1
+ class Union {
3
2
  constructor(key, formatter) {
4
3
  this.key = key;
5
4
  this.formatter = formatter;
@@ -20,3 +19,6 @@ export default class Union {
20
19
  return this;
21
20
  }
22
21
  }
22
+ export {
23
+ Union as default
24
+ };
package/lib/url/join.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const re = /([^:])\/{2,}/g;
3
2
  const joinPaths = (...list) => {
4
3
  const { length } = list;
@@ -6,4 +5,7 @@ const joinPaths = (...list) => {
6
5
  return "";
7
6
  return length === 1 ? list[0] : list.join("/").replace(re, ($0, $1) => `${$1}/`);
8
7
  };
9
- export default joinPaths;
8
+ var join_default = joinPaths;
9
+ export {
10
+ join_default as default
11
+ };
package/lib/url/params.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  const connectURLParams = (url, params, isOpenType) => {
3
2
  if (!params)
4
3
  return url;
@@ -20,4 +19,7 @@ const connectURLParams = (url, params, isOpenType) => {
20
19
  const caches = list.join("&");
21
20
  return url.includes("?") ? url + "&" + caches : url + "?" + caches;
22
21
  };
23
- export default connectURLParams;
22
+ var params_default = connectURLParams;
23
+ export {
24
+ params_default as default
25
+ };
package/lib/wait.js CHANGED
@@ -1,2 +1,4 @@
1
- "use strict";
2
- export default (delay = 0) => new Promise((resolve) => setTimeout(resolve, delay));
1
+ var wait_default = (delay = 0) => new Promise((resolve) => setTimeout(resolve, delay));
2
+ export {
3
+ wait_default as default
4
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vope/utils",
3
- "version": "1.4.3",
3
+ "version": "1.4.5",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -11,16 +11,13 @@
11
11
  "module": "./lib/index.js",
12
12
  "main": "./cjs/index.js",
13
13
  "scripts": {
14
- "build": "npm run cjs | npm run esm | npm run types",
15
- "cjs": "rimraf cjs & esbuild ./src/**/*.ts --format=cjs --outdir=cjs",
16
- "esm": "rimraf lib & esbuild ./src/**/*.ts --outdir=lib",
17
- "types": "rimraf types & tsc -p ./tsconfig.types.json & node ./__devs/type.cjs",
18
- "trove": "node ./__devs/trove.cjs",
19
- "trove:build": "npm run devs & npm run trove",
20
- "devs": "rimraf __devs & tsc -p ./tsconfig.devs.json",
21
- "test": "node ./__devs/test.cjs & mocha __tests/**/*.js",
22
- "test:build": "npm run devs & npm run trove & npm run test",
23
- "prepublishOnly": "npm run devs & npm run trove & npm run test & npm run build"
14
+ "start": "esbuild ./pre.ts --outfile=pre.cjs --format=cjs & node ./pre.cjs",
15
+ "prebuild": "npm run start & esbuild ./build.ts --outfile=build.cjs --format=cjs",
16
+ "build": "node ./build.cjs",
17
+ "premocha": "node ./build.cjs --type=test",
18
+ "mocha": "mocha __tests/**/*.js",
19
+ "test": "npm run mocha",
20
+ "prepublishOnly": "npm run build & npm run test"
24
21
  },
25
22
  "exports": {
26
23
  ".": {
@@ -30,32 +27,29 @@
30
27
  },
31
28
  "author": "vope",
32
29
  "license": "ISC",
30
+ "files": [
31
+ "cjs",
32
+ "lib",
33
+ "types"
34
+ ],
33
35
  "devDependencies": {
34
- "@babel/core": "^7.22.9",
35
- "@babel/generator": "^7.22.9",
36
- "@babel/parser": "^7.22.7",
37
- "@babel/traverse": "^7.22.8",
38
- "@babel/types": "^7.22.5",
39
- "@rollup/plugin-alias": "^5.0.0",
40
- "@rollup/plugin-typescript": "^11.1.2",
41
- "@types/babel__generator": "^7.6.4",
42
- "@types/babel__traverse": "^7.20.1",
43
- "@types/mocha": "^10.0.1",
36
+ "@babel/parser": "^7.23.4",
37
+ "@babel/traverse": "^7.23.4",
38
+ "@babel/types": "^7.23.4",
39
+ "@types/babel__traverse": "^7.20.4",
40
+ "@types/mocha": "^10.0.6",
44
41
  "@types/node": "^20.4.5",
45
42
  "esbuild": "^0.19.4",
43
+ "glob": "^10.3.10",
46
44
  "iconv-lite": "^0.6.3",
47
45
  "mocha": "^10.2.0",
48
- "rimraf": "^5.0.1",
49
- "rollup": "^3.28.1",
46
+ "rimraf": "^5.0.5",
50
47
  "tslib": "^2.6.1",
51
- "typescript": "^5.1.6"
48
+ "typescript": "^5.3.2"
52
49
  },
53
- "files": [
54
- "cjs",
55
- "lib",
56
- "types"
57
- ],
58
50
  "dependencies": {
59
- "@vope/types": "^1.0.2"
51
+ "@types/lodash-es": "^4.17.9",
52
+ "@vope/types": "^1.0.2",
53
+ "lodash-es": "^4.17.21"
60
54
  }
61
55
  }
@@ -1,4 +1,4 @@
1
- type Base = string | undefined | null;
1
+ type Base = string | boolean | undefined | null;
2
2
  type Item = Base | Base[] | Record<string, boolean>;
3
3
  /**
4
4
  * 拼接多个class
package/types/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { default as once } from './once';
17
17
  export { default as deconPowersSum } from './power/decon';
18
18
  export { default as rotateAngle } from './rotate/angle';
19
19
  export { default as rotateRad } from './rotate/rad';
20
+ export { default as FlexTable } from './table/flex';
20
21
  export { default as Union } from './union';
21
22
  export { default as joinPaths } from './url/join';
22
23
  export { default as connectURLParams } from './url/params';
@@ -5,5 +5,5 @@ import { _Point } from './rad';
5
5
  * @param angle 旋转角度
6
6
  * @param visit 旋转原点
7
7
  */
8
- declare const rotateAngle: (from: _Point, angle: number, visit?: _Point) => [number, number];
8
+ declare const rotateAngle: (from: _Point, angle: number, visit?: _Point) => _Point;
9
9
  export default rotateAngle;
@@ -5,5 +5,5 @@ export type _Point = [number, number];
5
5
  * @param rad 旋转弧度
6
6
  * @param visit 旋转原点
7
7
  */
8
- declare const rotateRad: (from: _Point, rad: number, visit?: _Point) => [number, number];
8
+ declare const rotateRad: (from: _Point, rad: number, visit?: _Point) => _Point;
9
9
  export default rotateRad;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * 用一维的方式存储二维表
3
+ */
4
+ export default class FlexTable<T> {
5
+ #private;
6
+ /**
7
+ * 行数
8
+ */
9
+ get rowspan(): number;
10
+ /**
11
+ * 总数据长度
12
+ */
13
+ get length(): number;
14
+ constructor();
15
+ /**
16
+ * 创建新行
17
+ */
18
+ newline(): this;
19
+ push(value: T): this;
20
+ /**
21
+ * 替换指定位置的数据
22
+ * @description 指定位置必需为有效位置
23
+ */
24
+ replace(rowspan: number, colspan: number, value: T): this;
25
+ /**
26
+ * 从指定位置开始移除或者替换/添加元素
27
+ * @description 指定位置必需为有效位置
28
+ */
29
+ splice(rowspan: number, colspan: number, deleteCount: number, ...values: T[]): this;
30
+ pop(): T | null;
31
+ /**
32
+ * 遍历数据
33
+ */
34
+ each(callback: (value: T, rowspan: number, colspan: number) => boolean | void): void;
35
+ /**
36
+ * 反序遍历数据
37
+ */
38
+ reverseEach(callback: (value: T, rowspan: number, colspan: number) => boolean | void): void;
39
+ /**
40
+ * 清空数据
41
+ */
42
+ clear(): void;
43
+ }