sculp-js 1.13.1 → 1.13.3-beta.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/README.md +10 -11
- package/dist/cjs/_virtual/_commonjsHelpers.js +13 -0
- package/{lib → dist}/cjs/array.js +1 -1
- package/{lib → dist}/cjs/async.js +1 -1
- package/{lib/cjs/we-decode.js → dist/cjs/base64.js} +53 -44
- package/{lib → dist}/cjs/clipboard.js +4 -2
- package/{lib → dist}/cjs/cloneDeep.js +1 -1
- package/{lib → dist}/cjs/cookie.js +1 -1
- package/{lib → dist}/cjs/date.js +1 -1
- package/{lib → dist}/cjs/dom.js +1 -1
- package/{lib → dist}/cjs/download.js +4 -2
- package/dist/cjs/easing.js +75 -0
- package/{lib → dist}/cjs/file.js +7 -3
- package/{lib → dist}/cjs/func.js +1 -1
- package/{lib → dist}/cjs/index.js +11 -8
- package/{lib → dist}/cjs/math.js +1 -1
- package/dist/cjs/node_modules/bezier-easing/src/index.js +123 -0
- package/{lib → dist}/cjs/number.js +1 -1
- package/{lib → dist}/cjs/object.js +1 -1
- package/{lib → dist}/cjs/path.js +1 -1
- package/{lib → dist}/cjs/qs.js +1 -1
- package/{lib → dist}/cjs/random.js +1 -1
- package/{lib → dist}/cjs/string.js +1 -1
- package/{lib → dist}/cjs/tooltip.js +5 -2
- package/{lib → dist}/cjs/tree.js +9 -23
- package/{lib → dist}/cjs/type.js +8 -1
- package/{lib → dist}/cjs/unique.js +1 -1
- package/{lib → dist}/cjs/url.js +1 -1
- package/{lib → dist}/cjs/validator.js +1 -1
- package/{lib → dist}/cjs/variable.js +1 -1
- package/{lib → dist}/cjs/watermark.js +4 -2
- package/{lib/es → dist/esm}/array.js +1 -1
- package/{lib/es → dist/esm}/async.js +1 -1
- package/{lib/es/we-decode.js → dist/esm/base64.js} +52 -45
- package/{lib/es → dist/esm}/clipboard.js +4 -2
- package/{lib/es → dist/esm}/cloneDeep.js +1 -1
- package/{lib/es → dist/esm}/cookie.js +1 -1
- package/{lib/es → dist/esm}/date.js +1 -1
- package/{lib/es → dist/esm}/dom.js +1 -1
- package/{lib/es → dist/esm}/download.js +4 -2
- package/{lib/es → dist/esm}/easing.js +34 -2
- package/{lib/es → dist/esm}/file.js +7 -3
- package/{lib/es → dist/esm}/func.js +1 -1
- package/{lib/es → dist/esm}/index.js +4 -5
- package/{lib/es → dist/esm}/math.js +1 -1
- package/{lib/es → dist/esm}/number.js +1 -1
- package/{lib/es → dist/esm}/object.js +1 -1
- package/{lib/es → dist/esm}/path.js +1 -1
- package/{lib/es → dist/esm}/qs.js +1 -1
- package/{lib/es → dist/esm}/random.js +1 -1
- package/{lib/es → dist/esm}/string.js +1 -1
- package/{lib/es → dist/esm}/tooltip.js +5 -2
- package/{lib/es → dist/esm}/tree.js +10 -24
- package/{lib/es → dist/esm}/type.js +8 -2
- package/{lib/es → dist/esm}/unique.js +1 -1
- package/{lib/es → dist/esm}/url.js +1 -1
- package/{lib/es → dist/esm}/validator.js +1 -1
- package/{lib/es → dist/esm}/variable.js +1 -1
- package/{lib/es → dist/esm}/watermark.js +4 -2
- package/dist/types/array.d.ts +50 -0
- package/dist/types/array.d.ts.map +1 -0
- package/dist/types/async.d.ts +37 -0
- package/dist/types/async.d.ts.map +1 -0
- package/dist/types/base64.d.ts +25 -0
- package/dist/types/base64.d.ts.map +1 -0
- package/dist/types/clipboard.d.ts +20 -0
- package/dist/types/clipboard.d.ts.map +1 -0
- package/dist/types/cloneDeep.d.ts +12 -0
- package/dist/types/cloneDeep.d.ts.map +1 -0
- package/dist/types/cookie.d.ts +19 -0
- package/dist/types/cookie.d.ts.map +1 -0
- package/dist/types/core-index.d.ts +17 -0
- package/dist/types/core-index.d.ts.map +1 -0
- package/dist/types/date.d.ts +74 -0
- package/dist/types/date.d.ts.map +1 -0
- package/dist/types/dom.d.ts +74 -0
- package/dist/types/dom.d.ts.map +1 -0
- package/dist/types/download.d.ts +47 -0
- package/dist/types/download.d.ts.map +1 -0
- package/dist/types/easing.d.ts +32 -0
- package/dist/types/easing.d.ts.map +1 -0
- package/dist/types/file.d.ts +44 -0
- package/dist/types/file.d.ts.map +1 -0
- package/dist/types/func.d.ts +50 -0
- package/dist/types/func.d.ts.map +1 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3278 -0
- package/dist/types/math.d.ts +36 -0
- package/dist/types/math.d.ts.map +1 -0
- package/dist/types/number.d.ts +49 -0
- package/dist/types/number.d.ts.map +1 -0
- package/dist/types/object.d.ts +70 -0
- package/dist/types/object.d.ts.map +1 -0
- package/dist/types/path.d.ts +14 -0
- package/dist/types/path.d.ts.map +1 -0
- package/dist/types/qs.d.ts +22 -0
- package/dist/types/qs.d.ts.map +1 -0
- package/dist/types/random.d.ts +27 -0
- package/dist/types/random.d.ts.map +1 -0
- package/dist/types/string.d.ts +67 -0
- package/dist/types/string.d.ts.map +1 -0
- package/dist/types/tooltip.d.ts +36 -0
- package/dist/types/tooltip.d.ts.map +1 -0
- package/dist/types/tree.d.ts +99 -0
- package/dist/types/tree.d.ts.map +1 -0
- package/dist/types/type.d.ts +128 -0
- package/dist/types/type.d.ts.map +1 -0
- package/dist/types/unique.d.ts +21 -0
- package/dist/types/unique.d.ts.map +1 -0
- package/dist/types/url.d.ts +46 -0
- package/dist/types/url.d.ts.map +1 -0
- package/dist/types/validator.d.ts +67 -0
- package/dist/types/validator.d.ts.map +1 -0
- package/dist/types/variable.d.ts +71 -0
- package/dist/types/variable.d.ts.map +1 -0
- package/dist/types/watermark.d.ts +19 -0
- package/dist/types/watermark.d.ts.map +1 -0
- package/dist/umd/index.min.js +6 -0
- package/package.json +234 -17
- package/lib/cjs/base64.js +0 -62
- package/lib/cjs/easing.js +0 -40
- package/lib/cjs/isEqual.js +0 -133
- package/lib/es/base64.js +0 -59
- package/lib/es/isEqual.js +0 -131
- package/lib/index.d.ts +0 -1214
- package/lib/umd/index.js +0 -6
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[](https://github.com/chandq/sculp-js/actions/workflows/node.js.yml)
|
|
2
|
-
[](https://
|
|
3
|
-
|
|
2
|
+
[](https://www.npmjs.com/package/sculp-js)
|
|
3
|
+
|
|
4
4
|
[](https://github.com/chandq/sculp-js/blob/main/LICENSE.md)
|
|
5
5
|
[](https://npmcharts.com/compare/sculp-js?minimal=true)
|
|
6
6
|
[](https://codecov.io/gh/chandq/sculp-js)
|
|
@@ -45,17 +45,17 @@
|
|
|
45
45
|
|
|
46
46
|
- Array
|
|
47
47
|
|
|
48
|
-
-
|
|
49
|
-
- arrayEachAsync
|
|
48
|
+
- arrayEach
|
|
49
|
+
- arrayEachAsync
|
|
50
50
|
|
|
51
51
|
- Tree
|
|
52
52
|
|
|
53
|
-
- forEachDeep
|
|
54
|
-
- mapDeep
|
|
55
|
-
- searchTreeById
|
|
56
|
-
- formatTree
|
|
57
|
-
- flatTree
|
|
58
|
-
- fuzzySearchTree
|
|
53
|
+
- forEachDeep
|
|
54
|
+
- mapDeep
|
|
55
|
+
- searchTreeById
|
|
56
|
+
- formatTree
|
|
57
|
+
- flatTree
|
|
58
|
+
- fuzzySearchTree
|
|
59
59
|
|
|
60
60
|
- Object
|
|
61
61
|
|
|
@@ -66,7 +66,6 @@
|
|
|
66
66
|
- objectEachAsync
|
|
67
67
|
- objectGet
|
|
68
68
|
- cloneDeep
|
|
69
|
-
- isEqual
|
|
70
69
|
|
|
71
70
|
- Number
|
|
72
71
|
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
|
+
* (c) 2023-present chandq
|
|
4
|
+
* Released under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
function getDefaultExportFromCjs (x) {
|
|
10
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
exports.getDefaultExportFromCjs = getDefaultExportFromCjs;
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
+
var func = require('./func.js');
|
|
10
|
+
var type = require('./type.js');
|
|
11
|
+
|
|
9
12
|
const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
|
10
13
|
// eslint-disable-next-line
|
|
11
14
|
const b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
|
|
@@ -59,49 +62,55 @@ function weAtob(string) {
|
|
|
59
62
|
}
|
|
60
63
|
return result;
|
|
61
64
|
}
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
//
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
//
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
65
|
+
function stringToUint8Array(str) {
|
|
66
|
+
const utf8 = encodeURIComponent(str); // 将字符串转换为 UTF-8 编码
|
|
67
|
+
const uint8Array = new Uint8Array(utf8.length); // 创建 Uint8Array
|
|
68
|
+
for (let i = 0; i < utf8.length; i++) {
|
|
69
|
+
uint8Array[i] = utf8.charCodeAt(i); // 填充 Uint8Array
|
|
70
|
+
}
|
|
71
|
+
return uint8Array;
|
|
72
|
+
}
|
|
73
|
+
function uint8ArrayToString(uint8Array) {
|
|
74
|
+
const utf8 = String.fromCharCode.apply(null, uint8Array); // 将 Uint8Array 转为字符串
|
|
75
|
+
return decodeURIComponent(utf8); // 将 UTF-8 字符串解码回正常字符串
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* 将base64编码的字符串转换为原始字符串,包括对中文内容的处理(高性能,且支持Web、Node、小程序等任意平台)
|
|
79
|
+
* @param base64 base64编码的字符串
|
|
80
|
+
* @returns 原始字符串,包括中文内容
|
|
81
|
+
*/
|
|
82
|
+
function b64decode(base64) {
|
|
83
|
+
const binaryString = !type.isNullOrUnDef(func.getGlobal('atob')) ? func.getGlobal('atob')(base64) : weAtob(base64);
|
|
84
|
+
const len = binaryString.length;
|
|
85
|
+
const bytes = new Uint8Array(len);
|
|
86
|
+
for (let i = 0; i < len; i++) {
|
|
87
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
88
|
+
}
|
|
89
|
+
// 使用TextDecoder将Uint8Array转换为原始字符串,包括中文内容
|
|
90
|
+
return !type.isNullOrUnDef(func.getGlobal('TextDecoder'))
|
|
91
|
+
? new (func.getGlobal('TextDecoder'))('utf-8').decode(bytes)
|
|
92
|
+
: uint8ArrayToString(bytes);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 将原始字符串,包括中文内容,转换为base64编码的字符串(高性能,且支持Web、Node、小程序等任意平台)
|
|
96
|
+
* @param rawStr 原始字符串,包括中文内容
|
|
97
|
+
* @returns base64编码的字符串
|
|
98
|
+
*/
|
|
99
|
+
function b64encode(rawStr) {
|
|
100
|
+
const utf8Array = !type.isNullOrUnDef(func.getGlobal('TextEncoder'))
|
|
101
|
+
? new (func.getGlobal('TextEncoder'))().encode(rawStr)
|
|
102
|
+
: stringToUint8Array(rawStr);
|
|
103
|
+
// 将 Uint8Array 转换为二进制字符串
|
|
104
|
+
let binaryString = '';
|
|
105
|
+
const len = utf8Array.length;
|
|
106
|
+
for (let i = 0; i < len; i++) {
|
|
107
|
+
binaryString += String.fromCharCode(utf8Array[i]);
|
|
108
|
+
}
|
|
109
|
+
// 将二进制字符串转换为base64编码的字符串
|
|
110
|
+
return !type.isNullOrUnDef(func.getGlobal('btoa')) ? func.getGlobal('btoa')(binaryString) : weBtoa(binaryString);
|
|
111
|
+
}
|
|
105
112
|
|
|
113
|
+
exports.b64decode = b64decode;
|
|
114
|
+
exports.b64encode = b64encode;
|
|
106
115
|
exports.weAtob = weAtob;
|
|
107
116
|
exports.weBtoa = weBtoa;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -42,7 +42,7 @@ function copyText(text, options) {
|
|
|
42
42
|
*/
|
|
43
43
|
function fallbackCopyText(text, options) {
|
|
44
44
|
const { successCallback = void 0, failCallback = void 0, container = document.body } = type.isNullOrUnDef(options) ? {} : options;
|
|
45
|
-
|
|
45
|
+
let textEl = createFakeElement(text);
|
|
46
46
|
container.appendChild(textEl);
|
|
47
47
|
dom.select(textEl);
|
|
48
48
|
try {
|
|
@@ -58,6 +58,8 @@ function fallbackCopyText(text, options) {
|
|
|
58
58
|
}
|
|
59
59
|
finally {
|
|
60
60
|
container.removeChild(textEl);
|
|
61
|
+
// @ts-ignore
|
|
62
|
+
textEl = null;
|
|
61
63
|
window.getSelection()?.removeAllRanges(); // 清除选区
|
|
62
64
|
}
|
|
63
65
|
}
|
package/{lib → dist}/cjs/date.js
RENAMED
package/{lib → dist}/cjs/dom.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -24,7 +24,7 @@ function downloadURL(url$1, params) {
|
|
|
24
24
|
* @param {Function} callback
|
|
25
25
|
*/
|
|
26
26
|
function downloadHref(href, filename, callback) {
|
|
27
|
-
|
|
27
|
+
let eleLink = document.createElement('a');
|
|
28
28
|
eleLink.download = filename;
|
|
29
29
|
eleLink.style.display = 'none';
|
|
30
30
|
eleLink.href = href;
|
|
@@ -32,6 +32,8 @@ function downloadHref(href, filename, callback) {
|
|
|
32
32
|
eleLink.click();
|
|
33
33
|
setTimeout(() => {
|
|
34
34
|
document.body.removeChild(eleLink);
|
|
35
|
+
// @ts-ignore
|
|
36
|
+
eleLink = null;
|
|
35
37
|
if (type.isFunction(callback)) {
|
|
36
38
|
callback();
|
|
37
39
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
|
+
* (c) 2023-present chandq
|
|
4
|
+
* Released under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var index = require('./node_modules/bezier-easing/src/index.js');
|
|
10
|
+
var type = require('./type.js');
|
|
11
|
+
|
|
12
|
+
// @ref https://cubic-bezier.com/
|
|
13
|
+
const easingDefines = {
|
|
14
|
+
linear: [0, 0, 1, 1],
|
|
15
|
+
ease: [0.25, 0.1, 0.25, 1],
|
|
16
|
+
'ease-in': [0.42, 0, 1, 1],
|
|
17
|
+
'ease-out': [0, 0, 0.58, 1],
|
|
18
|
+
'ease-in-out': [0.42, 0, 0.58, 1]
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* 设置缓存定义
|
|
22
|
+
* @param {string} name
|
|
23
|
+
* @param {EasingDefine} define
|
|
24
|
+
*/
|
|
25
|
+
function setEasing(name, define) {
|
|
26
|
+
easingDefines[name] = define;
|
|
27
|
+
}
|
|
28
|
+
function getEasing(name) {
|
|
29
|
+
if (name)
|
|
30
|
+
return easingDefines[name];
|
|
31
|
+
return easingDefines;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 缓冲函数化,用于 js 计算缓冲进度
|
|
35
|
+
* @param {EasingNameOrDefine} [name=linear]
|
|
36
|
+
* @returns {EasingFunction}
|
|
37
|
+
*/
|
|
38
|
+
function easingFunctional(name) {
|
|
39
|
+
let fn;
|
|
40
|
+
if (type.isArray(name)) {
|
|
41
|
+
fn = index.default(...name);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
const define = easingDefines[name];
|
|
45
|
+
if (!define) {
|
|
46
|
+
throw new Error(`${name} 缓冲函数未定义`);
|
|
47
|
+
}
|
|
48
|
+
fn = index.default(...define);
|
|
49
|
+
}
|
|
50
|
+
return (input) => fn(Math.max(0, Math.min(input, 1)));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 缓冲字符化,用于 css 设置缓冲属性
|
|
54
|
+
* @param {EasingNameOrDefine} name
|
|
55
|
+
* @returns {string}
|
|
56
|
+
*/
|
|
57
|
+
function easingStringify(name) {
|
|
58
|
+
let bezierDefine;
|
|
59
|
+
if (type.isArray(name)) {
|
|
60
|
+
bezierDefine = name;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const define = easingDefines[name];
|
|
64
|
+
if (!define) {
|
|
65
|
+
throw new Error(`${name} 缓冲函数未定义`);
|
|
66
|
+
}
|
|
67
|
+
bezierDefine = define;
|
|
68
|
+
}
|
|
69
|
+
return `cubic-bezier(${bezierDefine.join(',')})`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.easingFunctional = easingFunctional;
|
|
73
|
+
exports.easingStringify = easingStringify;
|
|
74
|
+
exports.getEasing = getEasing;
|
|
75
|
+
exports.setEasing = setEasing;
|
package/{lib → dist}/cjs/file.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -22,7 +22,7 @@ function supportCanvas() {
|
|
|
22
22
|
* @returns {HTMLInputElement}
|
|
23
23
|
*/
|
|
24
24
|
function chooseLocalFile(accept, changeCb) {
|
|
25
|
-
|
|
25
|
+
let inputObj = document.createElement('input');
|
|
26
26
|
inputObj.setAttribute('id', String(Date.now()));
|
|
27
27
|
inputObj.setAttribute('type', 'file');
|
|
28
28
|
inputObj.setAttribute('style', 'visibility:hidden');
|
|
@@ -32,7 +32,11 @@ function chooseLocalFile(accept, changeCb) {
|
|
|
32
32
|
// @ts-ignore
|
|
33
33
|
inputObj.onchange = (e) => {
|
|
34
34
|
changeCb(e.target.files);
|
|
35
|
-
setTimeout(() =>
|
|
35
|
+
setTimeout(() => {
|
|
36
|
+
document.body.removeChild(inputObj);
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
inputObj = null;
|
|
39
|
+
});
|
|
36
40
|
};
|
|
37
41
|
}
|
|
38
42
|
/**
|
package/{lib → dist}/cjs/func.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -28,12 +28,11 @@ var unique = require('./unique.js');
|
|
|
28
28
|
var tooltip = require('./tooltip.js');
|
|
29
29
|
var tree = require('./tree.js');
|
|
30
30
|
var math = require('./math.js');
|
|
31
|
-
var weDecode = require('./we-decode.js');
|
|
32
31
|
var base64 = require('./base64.js');
|
|
33
32
|
var validator = require('./validator.js');
|
|
34
33
|
var variable = require('./variable.js');
|
|
35
34
|
var cloneDeep = require('./cloneDeep.js');
|
|
36
|
-
var
|
|
35
|
+
var easing = require('./easing.js');
|
|
37
36
|
|
|
38
37
|
|
|
39
38
|
|
|
@@ -101,6 +100,7 @@ exports.isError = type.isError;
|
|
|
101
100
|
exports.isFunction = type.isFunction;
|
|
102
101
|
exports.isJsonString = type.isJsonString;
|
|
103
102
|
exports.isNaN = type.isNaN;
|
|
103
|
+
exports.isNodeList = type.isNodeList;
|
|
104
104
|
exports.isNull = type.isNull;
|
|
105
105
|
exports.isNullOrUnDef = type.isNullOrUnDef;
|
|
106
106
|
exports.isNullish = type.isNullOrUnDef;
|
|
@@ -154,10 +154,10 @@ exports.divide = math.divide;
|
|
|
154
154
|
exports.multiply = math.multiply;
|
|
155
155
|
exports.strip = math.strip;
|
|
156
156
|
exports.subtract = math.subtract;
|
|
157
|
-
exports.
|
|
158
|
-
exports.
|
|
159
|
-
exports.
|
|
160
|
-
exports.
|
|
157
|
+
exports.b64decode = base64.b64decode;
|
|
158
|
+
exports.b64encode = base64.b64encode;
|
|
159
|
+
exports.weAtob = base64.weAtob;
|
|
160
|
+
exports.weBtoa = base64.weBtoa;
|
|
161
161
|
exports.EMAIL_REGEX = validator.EMAIL_REGEX;
|
|
162
162
|
exports.HTTP_URL_REGEX = validator.HTTP_URL_REGEX;
|
|
163
163
|
exports.IPV4_REGEX = validator.IPV4_REGEX;
|
|
@@ -180,4 +180,7 @@ exports.parseVarFromString = variable.parseVarFromString;
|
|
|
180
180
|
exports.replaceVarFromString = variable.replaceVarFromString;
|
|
181
181
|
exports.uniqueSymbol = variable.uniqueSymbol;
|
|
182
182
|
exports.cloneDeep = cloneDeep.cloneDeep;
|
|
183
|
-
exports.
|
|
183
|
+
exports.easingFunctional = easing.easingFunctional;
|
|
184
|
+
exports.easingStringify = easing.easingStringify;
|
|
185
|
+
exports.getEasing = easing.getEasing;
|
|
186
|
+
exports.setEasing = easing.setEasing;
|
package/{lib → dist}/cjs/math.js
RENAMED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
|
+
* (c) 2023-present chandq
|
|
4
|
+
* Released under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
10
|
+
|
|
11
|
+
var _commonjsHelpers = require('../../../_virtual/_commonjsHelpers.js');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* https://github.com/gre/bezier-easing
|
|
15
|
+
* BezierEasing - use bezier curve for transition easing function
|
|
16
|
+
* by Gaëtan Renaudeau 2014 - 2015 – MIT License
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
// These values are established by empiricism with tests (tradeoff: performance VS precision)
|
|
20
|
+
var NEWTON_ITERATIONS = 4;
|
|
21
|
+
var NEWTON_MIN_SLOPE = 0.001;
|
|
22
|
+
var SUBDIVISION_PRECISION = 0.0000001;
|
|
23
|
+
var SUBDIVISION_MAX_ITERATIONS = 10;
|
|
24
|
+
|
|
25
|
+
var kSplineTableSize = 11;
|
|
26
|
+
var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
|
|
27
|
+
|
|
28
|
+
var float32ArraySupported = typeof Float32Array === 'function';
|
|
29
|
+
|
|
30
|
+
function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
|
|
31
|
+
function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
|
|
32
|
+
function C (aA1) { return 3.0 * aA1; }
|
|
33
|
+
|
|
34
|
+
// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
|
|
35
|
+
function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
|
|
36
|
+
|
|
37
|
+
// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
|
|
38
|
+
function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
|
|
39
|
+
|
|
40
|
+
function binarySubdivide (aX, aA, aB, mX1, mX2) {
|
|
41
|
+
var currentX, currentT, i = 0;
|
|
42
|
+
do {
|
|
43
|
+
currentT = aA + (aB - aA) / 2.0;
|
|
44
|
+
currentX = calcBezier(currentT, mX1, mX2) - aX;
|
|
45
|
+
if (currentX > 0.0) {
|
|
46
|
+
aB = currentT;
|
|
47
|
+
} else {
|
|
48
|
+
aA = currentT;
|
|
49
|
+
}
|
|
50
|
+
} while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
|
|
51
|
+
return currentT;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
|
|
55
|
+
for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
|
|
56
|
+
var currentSlope = getSlope(aGuessT, mX1, mX2);
|
|
57
|
+
if (currentSlope === 0.0) {
|
|
58
|
+
return aGuessT;
|
|
59
|
+
}
|
|
60
|
+
var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
|
|
61
|
+
aGuessT -= currentX / currentSlope;
|
|
62
|
+
}
|
|
63
|
+
return aGuessT;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function LinearEasing (x) {
|
|
67
|
+
return x;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
var src = function bezier (mX1, mY1, mX2, mY2) {
|
|
71
|
+
if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
|
|
72
|
+
throw new Error('bezier x values must be in [0, 1] range');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (mX1 === mY1 && mX2 === mY2) {
|
|
76
|
+
return LinearEasing;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Precompute samples table
|
|
80
|
+
var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);
|
|
81
|
+
for (var i = 0; i < kSplineTableSize; ++i) {
|
|
82
|
+
sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function getTForX (aX) {
|
|
86
|
+
var intervalStart = 0.0;
|
|
87
|
+
var currentSample = 1;
|
|
88
|
+
var lastSample = kSplineTableSize - 1;
|
|
89
|
+
|
|
90
|
+
for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
|
|
91
|
+
intervalStart += kSampleStepSize;
|
|
92
|
+
}
|
|
93
|
+
--currentSample;
|
|
94
|
+
|
|
95
|
+
// Interpolate to provide an initial guess for t
|
|
96
|
+
var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
|
|
97
|
+
var guessForT = intervalStart + dist * kSampleStepSize;
|
|
98
|
+
|
|
99
|
+
var initialSlope = getSlope(guessForT, mX1, mX2);
|
|
100
|
+
if (initialSlope >= NEWTON_MIN_SLOPE) {
|
|
101
|
+
return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
|
|
102
|
+
} else if (initialSlope === 0.0) {
|
|
103
|
+
return guessForT;
|
|
104
|
+
} else {
|
|
105
|
+
return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return function BezierEasing (x) {
|
|
110
|
+
// Because JavaScript number are imprecise, we should guarantee the extremes are right.
|
|
111
|
+
if (x === 0) {
|
|
112
|
+
return 0;
|
|
113
|
+
}
|
|
114
|
+
if (x === 1) {
|
|
115
|
+
return 1;
|
|
116
|
+
}
|
|
117
|
+
return calcBezier(getTForX(x), mY1, mY2);
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
var bezier = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(src);
|
|
122
|
+
|
|
123
|
+
exports.default = bezier;
|
package/{lib → dist}/cjs/path.js
RENAMED
package/{lib → dist}/cjs/qs.js
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.13.
|
|
2
|
+
* sculp-js v1.13.3-beta.0
|
|
3
3
|
* (c) 2023-present chandq
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -115,9 +115,12 @@ function mouseenter($customTitle, title, e) {
|
|
|
115
115
|
* @returns {*}
|
|
116
116
|
*/
|
|
117
117
|
function handleMouseLeave(rootContainer = '#root') {
|
|
118
|
-
const rootEl = type.isString(rootContainer) ? document.querySelector(rootContainer) : rootContainer
|
|
118
|
+
const rootEl = type.isString(rootContainer) ? document.querySelector(rootContainer) : rootContainer;
|
|
119
|
+
let titleEl = document.querySelector('#customTitle1494304949567');
|
|
119
120
|
if (rootEl && titleEl) {
|
|
120
121
|
rootEl.removeChild(titleEl);
|
|
122
|
+
// @ts-ignore
|
|
123
|
+
titleEl = null;
|
|
121
124
|
}
|
|
122
125
|
}
|
|
123
126
|
const tooltipEvent = { handleMouseEnter, handleMouseLeave };
|