@idraw/util 0.4.0-beta.4 → 0.4.0-beta.41
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/esm/index.d.ts +46 -30
- package/dist/esm/index.js +46 -30
- package/dist/esm/{lib → tool}/color.js +9 -6
- package/dist/esm/{lib → tool}/event.d.ts +4 -2
- package/dist/esm/tool/event.js +70 -0
- package/dist/esm/{lib → tool}/file.d.ts +2 -1
- package/dist/esm/{lib → tool}/file.js +4 -1
- package/dist/esm/tool/flat-object.d.ts +6 -0
- package/dist/esm/tool/flat-object.js +28 -0
- package/dist/esm/tool/get-set-del.d.ts +4 -0
- package/dist/esm/tool/get-set-del.js +65 -0
- package/dist/esm/tool/hash.d.ts +1 -0
- package/dist/esm/tool/hash.js +33 -0
- package/dist/esm/{lib → tool}/html.d.ts +1 -1
- package/dist/esm/{lib → tool}/html.js +6 -2
- package/dist/esm/{lib → tool}/istype.d.ts +1 -0
- package/dist/esm/{lib → tool}/istype.js +3 -0
- package/dist/esm/tool/merge.d.ts +1 -0
- package/dist/esm/tool/merge.js +17 -0
- package/dist/esm/tool/omit.d.ts +1 -0
- package/dist/esm/tool/omit.js +7 -0
- package/dist/esm/tool/store.d.ts +16 -0
- package/dist/esm/tool/store.js +52 -0
- package/dist/esm/{lib → tool}/time.d.ts +1 -0
- package/dist/esm/{lib → tool}/time.js +13 -1
- package/dist/esm/tool/unflat-object.d.ts +3 -0
- package/dist/esm/tool/unflat-object.js +91 -0
- package/dist/esm/tool/uuid.js +13 -0
- package/dist/esm/view/box.d.ts +2 -0
- package/dist/esm/view/box.js +173 -0
- package/dist/esm/{lib → view}/canvas.d.ts +0 -1
- package/dist/esm/view/canvas.js +57 -0
- package/dist/esm/{lib → view}/check.js +14 -14
- package/dist/esm/view/config.d.ts +9 -0
- package/dist/esm/{lib → view}/config.js +9 -9
- package/dist/esm/{lib → view}/context2d.d.ts +4 -0
- package/dist/esm/{lib → view}/context2d.js +20 -0
- package/dist/esm/view/controller.d.ts +12 -0
- package/dist/esm/view/controller.js +321 -0
- package/dist/esm/view/data.d.ts +10 -0
- package/dist/esm/view/data.js +202 -0
- package/dist/esm/{lib → view}/element.d.ts +5 -0
- package/dist/esm/{lib → view}/element.js +65 -4
- package/dist/esm/view/flat.d.ts +2 -0
- package/dist/esm/view/flat.js +133 -0
- package/dist/esm/view/group.d.ts +3 -0
- package/dist/esm/view/group.js +81 -0
- package/dist/esm/{lib → view}/handle-element.d.ts +11 -1
- package/dist/esm/view/handle-element.js +286 -0
- package/dist/esm/view/handle-global.d.ts +4 -0
- package/dist/esm/view/handle-global.js +28 -0
- package/dist/esm/view/handle-layout.d.ts +4 -0
- package/dist/esm/view/handle-layout.js +28 -0
- package/dist/esm/{lib → view}/is.d.ts +3 -1
- package/dist/esm/{lib → view}/is.js +22 -6
- package/dist/esm/view/modify-record.d.ts +4 -0
- package/dist/esm/view/modify-record.js +10 -0
- package/dist/esm/view/point-move-element.d.ts +5 -0
- package/dist/esm/view/point-move-element.js +26 -0
- package/dist/esm/view/position.d.ts +15 -0
- package/dist/esm/view/position.js +79 -0
- package/dist/esm/view/rect.js +11 -0
- package/dist/esm/view/resize-element.d.ts +2 -0
- package/dist/esm/view/resize-element.js +101 -0
- package/dist/esm/{lib → view}/rotate.js +8 -13
- package/dist/esm/view/text.d.ts +1 -0
- package/dist/esm/view/text.js +4 -0
- package/dist/esm/{lib → view}/view-box.js +4 -2
- package/dist/esm/{lib → view}/view-calc.d.ts +16 -3
- package/dist/esm/{lib → view}/view-calc.js +127 -3
- package/dist/esm/view/view-content.d.ts +14 -0
- package/dist/esm/view/view-content.js +88 -0
- package/dist/index.global.js +1977 -326
- package/dist/index.global.min.js +1 -1
- package/package.json +2 -2
- package/dist/esm/lib/canvas.js +0 -81
- package/dist/esm/lib/config.d.ts +0 -14
- package/dist/esm/lib/controller.d.ts +0 -6
- package/dist/esm/lib/controller.js +0 -103
- package/dist/esm/lib/data.d.ts +0 -5
- package/dist/esm/lib/data.js +0 -92
- package/dist/esm/lib/event.js +0 -50
- package/dist/esm/lib/handle-element.js +0 -226
- package/dist/esm/lib/rect.js +0 -11
- package/dist/esm/lib/store.d.ts +0 -12
- package/dist/esm/lib/store.js +0 -22
- package/dist/esm/lib/uuid.js +0 -31
- /package/dist/esm/{lib → tool}/color.d.ts +0 -0
- /package/dist/esm/{lib → tool}/image.d.ts +0 -0
- /package/dist/esm/{lib → tool}/image.js +0 -0
- /package/dist/esm/{lib → tool}/number.d.ts +0 -0
- /package/dist/esm/{lib → tool}/number.js +0 -0
- /package/dist/esm/{lib → tool}/uuid.d.ts +0 -0
- /package/dist/esm/{lib → view}/check.d.ts +0 -0
- /package/dist/esm/{lib → view}/load.d.ts +0 -0
- /package/dist/esm/{lib → view}/load.js +0 -0
- /package/dist/esm/{lib → view}/matrix.d.ts +0 -0
- /package/dist/esm/{lib → view}/matrix.js +0 -0
- /package/dist/esm/{lib → view}/middleware.d.ts +0 -0
- /package/dist/esm/{lib → view}/middleware.js +0 -0
- /package/dist/esm/{lib → view}/parser.d.ts +0 -0
- /package/dist/esm/{lib → view}/parser.js +0 -0
- /package/dist/esm/{lib → view}/point.d.ts +0 -0
- /package/dist/esm/{lib → view}/point.js +0 -0
- /package/dist/esm/{lib → view}/rect.d.ts +0 -0
- /package/dist/esm/{lib → view}/rotate.d.ts +0 -0
- /package/dist/esm/{lib → view}/svg-path.d.ts +0 -0
- /package/dist/esm/{lib → view}/svg-path.js +0 -0
- /package/dist/esm/{lib → view}/vertex.d.ts +0 -0
- /package/dist/esm/{lib → view}/vertex.js +0 -0
- /package/dist/esm/{lib → view}/view-box.d.ts +0 -0
package/dist/esm/lib/event.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export class EventEmitter {
|
|
2
|
-
constructor() {
|
|
3
|
-
this._listeners = new Map();
|
|
4
|
-
}
|
|
5
|
-
on(eventKey, callback) {
|
|
6
|
-
if (this._listeners.has(eventKey)) {
|
|
7
|
-
const callbacks = this._listeners.get(eventKey) || [];
|
|
8
|
-
callbacks === null || callbacks === void 0 ? void 0 : callbacks.push(callback);
|
|
9
|
-
this._listeners.set(eventKey, callbacks);
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
this._listeners.set(eventKey, [callback]);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
off(eventKey, callback) {
|
|
16
|
-
if (this._listeners.has(eventKey)) {
|
|
17
|
-
const callbacks = this._listeners.get(eventKey);
|
|
18
|
-
if (Array.isArray(callbacks)) {
|
|
19
|
-
for (let i = 0; i < (callbacks === null || callbacks === void 0 ? void 0 : callbacks.length); i++) {
|
|
20
|
-
if (callbacks[i] === callback) {
|
|
21
|
-
callbacks.splice(i, 1);
|
|
22
|
-
break;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
this._listeners.set(eventKey, callbacks || []);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
trigger(eventKey, e) {
|
|
30
|
-
const callbacks = this._listeners.get(eventKey);
|
|
31
|
-
if (Array.isArray(callbacks)) {
|
|
32
|
-
callbacks.forEach((cb) => {
|
|
33
|
-
cb(e);
|
|
34
|
-
});
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
has(name) {
|
|
42
|
-
if (this._listeners.has(name)) {
|
|
43
|
-
const list = this._listeners.get(name);
|
|
44
|
-
if (Array.isArray(list) && list.length > 0) {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import { createUUID } from './uuid';
|
|
2
|
-
import { getDefaultElementDetailConfig, getDefaultElementRectDetail, getDefaultElementCircleDetail, getDefaultElementTextDetail, getDefaultElementSVGDetail, getDefaultElementImageDetail, getDefaultElementGroupDetail } from './config';
|
|
3
|
-
import { istype } from './istype';
|
|
4
|
-
import { findElementFromListByPosition, getElementPositionFromList } from './element';
|
|
5
|
-
const defaultViewWidth = 200;
|
|
6
|
-
const defaultViewHeight = 200;
|
|
7
|
-
const defaultDetail = getDefaultElementDetailConfig();
|
|
8
|
-
function createElementSize(type, opts) {
|
|
9
|
-
let x = 0;
|
|
10
|
-
let y = 0;
|
|
11
|
-
let w = defaultViewWidth;
|
|
12
|
-
let h = defaultViewHeight;
|
|
13
|
-
if (opts) {
|
|
14
|
-
const { viewScaleInfo, viewSizeInfo } = opts;
|
|
15
|
-
const { scale, offsetLeft, offsetTop } = viewScaleInfo;
|
|
16
|
-
const { width, height } = viewSizeInfo;
|
|
17
|
-
if (type === 'text') {
|
|
18
|
-
const textDetail = getDefaultElementTextDetail();
|
|
19
|
-
w = defaultDetail.fontSize * scale * textDetail.text.length;
|
|
20
|
-
h = defaultDetail.fontSize * scale * 2;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
const limitViewWidth = width / 4;
|
|
24
|
-
const limitViewHeight = height / 4;
|
|
25
|
-
if (defaultViewWidth >= limitViewWidth) {
|
|
26
|
-
w = limitViewWidth / scale;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
w = defaultViewWidth / scale;
|
|
30
|
-
}
|
|
31
|
-
if (defaultViewHeight >= limitViewHeight) {
|
|
32
|
-
h = limitViewHeight / scale;
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
h = defaultViewHeight / scale;
|
|
36
|
-
}
|
|
37
|
-
if (['circle', 'svg', 'image'].includes(type)) {
|
|
38
|
-
w = h = Math.max(w, h);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
x = (0 - offsetLeft + width / 2 - (w * scale) / 2) / scale;
|
|
42
|
-
y = (0 - offsetTop + height / 2 - (h * scale) / 2) / scale;
|
|
43
|
-
}
|
|
44
|
-
const elemSize = {
|
|
45
|
-
x,
|
|
46
|
-
y,
|
|
47
|
-
w,
|
|
48
|
-
h
|
|
49
|
-
};
|
|
50
|
-
return elemSize;
|
|
51
|
-
}
|
|
52
|
-
export function createElement(type, baseElem, opts) {
|
|
53
|
-
const elemSize = createElementSize(type, opts);
|
|
54
|
-
let detail = {};
|
|
55
|
-
if (type === 'rect') {
|
|
56
|
-
detail = getDefaultElementRectDetail();
|
|
57
|
-
}
|
|
58
|
-
else if (type === 'circle') {
|
|
59
|
-
detail = getDefaultElementCircleDetail({
|
|
60
|
-
radius: elemSize.w
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
else if (type === 'text') {
|
|
64
|
-
detail = getDefaultElementTextDetail(opts);
|
|
65
|
-
}
|
|
66
|
-
else if (type === 'svg') {
|
|
67
|
-
detail = getDefaultElementSVGDetail();
|
|
68
|
-
}
|
|
69
|
-
else if (type === 'image') {
|
|
70
|
-
detail = getDefaultElementImageDetail();
|
|
71
|
-
}
|
|
72
|
-
else if (type === 'group') {
|
|
73
|
-
detail = getDefaultElementGroupDetail();
|
|
74
|
-
}
|
|
75
|
-
const elem = Object.assign(Object.assign(Object.assign({}, elemSize), baseElem), { uuid: createUUID(), type, detail: Object.assign(Object.assign({}, detail), (baseElem.detail || {})) });
|
|
76
|
-
return elem;
|
|
77
|
-
}
|
|
78
|
-
export function insertElementToListByPosition(element, position, list) {
|
|
79
|
-
let result = false;
|
|
80
|
-
if (position.length === 1) {
|
|
81
|
-
const pos = position[0];
|
|
82
|
-
list.splice(pos, 0, element);
|
|
83
|
-
result = true;
|
|
84
|
-
}
|
|
85
|
-
else if (position.length > 1) {
|
|
86
|
-
let tempList = list;
|
|
87
|
-
for (let i = 0; i < position.length; i++) {
|
|
88
|
-
const pos = position[i];
|
|
89
|
-
const item = tempList[pos];
|
|
90
|
-
if (i === position.length - 1) {
|
|
91
|
-
const pos = position[i];
|
|
92
|
-
tempList.splice(pos, 0, element);
|
|
93
|
-
result = true;
|
|
94
|
-
}
|
|
95
|
-
else if (i < position.length - 1 && item.type === 'group') {
|
|
96
|
-
tempList = item.detail.children;
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
break;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return result;
|
|
104
|
-
}
|
|
105
|
-
export function deleteElementInListByPosition(position, list) {
|
|
106
|
-
let result = false;
|
|
107
|
-
if (position.length === 1) {
|
|
108
|
-
const pos = position[0];
|
|
109
|
-
list.splice(pos, 1);
|
|
110
|
-
result = true;
|
|
111
|
-
}
|
|
112
|
-
else if (position.length > 1) {
|
|
113
|
-
let tempList = list;
|
|
114
|
-
for (let i = 0; i < position.length; i++) {
|
|
115
|
-
const pos = position[i];
|
|
116
|
-
const item = tempList[pos];
|
|
117
|
-
if (i === position.length - 1) {
|
|
118
|
-
const pos = position[i];
|
|
119
|
-
tempList.splice(pos, 1);
|
|
120
|
-
result = true;
|
|
121
|
-
}
|
|
122
|
-
else if (i < position.length - 1 && item.type === 'group') {
|
|
123
|
-
tempList = item.detail.children;
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
break;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return result;
|
|
131
|
-
}
|
|
132
|
-
export function deleteElementInList(uuid, list) {
|
|
133
|
-
const position = getElementPositionFromList(uuid, list);
|
|
134
|
-
return deleteElementInListByPosition(position, list);
|
|
135
|
-
}
|
|
136
|
-
export function moveElementPosition(elements, opts) {
|
|
137
|
-
const { from, to } = opts;
|
|
138
|
-
if (from.length === 0 || to.length === 0) {
|
|
139
|
-
return elements;
|
|
140
|
-
}
|
|
141
|
-
if (from.length <= to.length) {
|
|
142
|
-
for (let i = 0; i < from.length; i++) {
|
|
143
|
-
if (to[i] === from[i]) {
|
|
144
|
-
if (i === from.length - 1) {
|
|
145
|
-
return elements;
|
|
146
|
-
}
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
const target = findElementFromListByPosition(from, elements);
|
|
152
|
-
if (target) {
|
|
153
|
-
const insterResult = insertElementToListByPosition(target, to, elements);
|
|
154
|
-
if (!insterResult) {
|
|
155
|
-
return elements;
|
|
156
|
-
}
|
|
157
|
-
let trimDeletePosIndex = -1;
|
|
158
|
-
const trimDeletePosAction = 'down';
|
|
159
|
-
for (let i = 0; i < from.length; i++) {
|
|
160
|
-
if (!(to[i] >= 0)) {
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
if (to[i] === from[i]) {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
if (to[i] < from[i] && i == to.length - 1) {
|
|
167
|
-
trimDeletePosIndex = i;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (trimDeletePosIndex >= 0) {
|
|
171
|
-
if (trimDeletePosAction === 'down') {
|
|
172
|
-
from[trimDeletePosIndex] = from[trimDeletePosIndex] + 1;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
deleteElementInListByPosition(from, elements);
|
|
176
|
-
}
|
|
177
|
-
return elements;
|
|
178
|
-
}
|
|
179
|
-
function mergeElement(originElem, updateContent) {
|
|
180
|
-
var _a;
|
|
181
|
-
const commonKeys = Object.keys(updateContent);
|
|
182
|
-
for (let i = 0; i < commonKeys.length; i++) {
|
|
183
|
-
const commonKey = commonKeys[i];
|
|
184
|
-
if (['x', 'y', 'w', 'h', 'angle', 'name'].includes(commonKey)) {
|
|
185
|
-
originElem[commonKey] = updateContent[commonKey];
|
|
186
|
-
}
|
|
187
|
-
else if (['detail', 'operations'].includes(commonKey)) {
|
|
188
|
-
if (istype.json(updateContent[commonKey])) {
|
|
189
|
-
if (!(originElem === null || originElem === void 0 ? void 0 : originElem.hasOwnProperty(commonKey))) {
|
|
190
|
-
originElem[commonKey] = {};
|
|
191
|
-
}
|
|
192
|
-
if (istype.json(originElem[commonKey])) {
|
|
193
|
-
originElem[commonKey] = Object.assign(Object.assign({}, originElem[commonKey]), updateContent[commonKey]);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
else if (istype.array(updateContent[commonKey])) {
|
|
197
|
-
if (!(originElem === null || originElem === void 0 ? void 0 : originElem.hasOwnProperty(commonKey))) {
|
|
198
|
-
originElem[commonKey] = [];
|
|
199
|
-
}
|
|
200
|
-
if (istype.array(originElem[commonKey])) {
|
|
201
|
-
(_a = updateContent === null || updateContent === void 0 ? void 0 : updateContent[commonKey]) === null || _a === void 0 ? void 0 : _a.forEach((item, i) => {
|
|
202
|
-
originElem[commonKey][i] = item;
|
|
203
|
-
});
|
|
204
|
-
originElem[commonKey] = [...originElem[commonKey], ...updateContent[commonKey]];
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
return originElem;
|
|
210
|
-
}
|
|
211
|
-
export function updateElementInList(uuid, updateContent, elements) {
|
|
212
|
-
var _a;
|
|
213
|
-
let targetElement = null;
|
|
214
|
-
for (let i = 0; i < elements.length; i++) {
|
|
215
|
-
const elem = elements[i];
|
|
216
|
-
if (elem.uuid === uuid) {
|
|
217
|
-
mergeElement(elem, updateContent);
|
|
218
|
-
targetElement = elem;
|
|
219
|
-
break;
|
|
220
|
-
}
|
|
221
|
-
else if (elem.type === 'group') {
|
|
222
|
-
targetElement = updateElementInList(uuid, updateContent, ((_a = elem === null || elem === void 0 ? void 0 : elem.detail) === null || _a === void 0 ? void 0 : _a.children) || []);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return targetElement;
|
|
226
|
-
}
|
package/dist/esm/lib/rect.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function checkRectIntersect(rect1, rect2) {
|
|
2
|
-
const react1MinX = rect1.x;
|
|
3
|
-
const react1MinY = rect1.y;
|
|
4
|
-
const react1MaxX = rect1.x + rect1.w;
|
|
5
|
-
const react1MaxY = rect1.y + rect1.h;
|
|
6
|
-
const react2MinX = rect2.x;
|
|
7
|
-
const react2MinY = rect2.y;
|
|
8
|
-
const react2MaxX = rect2.x + rect2.w;
|
|
9
|
-
const react2MaxY = rect2.y + rect2.h;
|
|
10
|
-
return react1MinX <= react2MaxX && react1MaxX >= react2MinX && react1MinY <= react2MaxY && react1MaxY >= react2MinY;
|
|
11
|
-
}
|
package/dist/esm/lib/store.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export declare class Store<T extends Record<string | symbol, any>> {
|
|
2
|
-
private _temp;
|
|
3
|
-
private _backUpDefaultStorage;
|
|
4
|
-
constructor(opts: {
|
|
5
|
-
defaultStorage: T;
|
|
6
|
-
});
|
|
7
|
-
set<K extends keyof T>(name: K, value: T[K]): void;
|
|
8
|
-
get<K extends keyof T>(name: K): T[K];
|
|
9
|
-
getSnapshot(): T;
|
|
10
|
-
clear(): void;
|
|
11
|
-
private _createTempStorage;
|
|
12
|
-
}
|
package/dist/esm/lib/store.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { deepClone } from './data';
|
|
2
|
-
export class Store {
|
|
3
|
-
constructor(opts) {
|
|
4
|
-
this._backUpDefaultStorage = deepClone(opts.defaultStorage);
|
|
5
|
-
this._temp = this._createTempStorage();
|
|
6
|
-
}
|
|
7
|
-
set(name, value) {
|
|
8
|
-
this._temp[name] = value;
|
|
9
|
-
}
|
|
10
|
-
get(name) {
|
|
11
|
-
return this._temp[name];
|
|
12
|
-
}
|
|
13
|
-
getSnapshot() {
|
|
14
|
-
return deepClone(this._temp);
|
|
15
|
-
}
|
|
16
|
-
clear() {
|
|
17
|
-
this._temp = this._createTempStorage();
|
|
18
|
-
}
|
|
19
|
-
_createTempStorage() {
|
|
20
|
-
return deepClone(this._backUpDefaultStorage);
|
|
21
|
-
}
|
|
22
|
-
}
|
package/dist/esm/lib/uuid.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export function createUUID() {
|
|
2
|
-
function _createStr() {
|
|
3
|
-
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
|
|
4
|
-
}
|
|
5
|
-
return `${_createStr()}${_createStr()}-${_createStr()}-${_createStr()}-${_createStr()}-${_createStr()}${_createStr()}${_createStr()}`;
|
|
6
|
-
}
|
|
7
|
-
function limitHexStr(str) {
|
|
8
|
-
let count = 0;
|
|
9
|
-
for (let i = 0; i < str.length; i++) {
|
|
10
|
-
count += str.charCodeAt(i) * str.charCodeAt(i) * i * i;
|
|
11
|
-
}
|
|
12
|
-
return count.toString(16).substring(0, 4);
|
|
13
|
-
}
|
|
14
|
-
export function createAssetId(assetStr) {
|
|
15
|
-
const len = assetStr.length;
|
|
16
|
-
const mid = Math.floor(len / 2);
|
|
17
|
-
const start4 = assetStr.substring(0, 4).padEnd(4, '0');
|
|
18
|
-
const end4 = assetStr.substring(0, 4).padEnd(4, '0');
|
|
19
|
-
const str1 = limitHexStr(len.toString(16).padEnd(4, start4));
|
|
20
|
-
const str2 = limitHexStr(assetStr.substring(mid - 4, mid).padEnd(4, start4)).padEnd(4, 'f');
|
|
21
|
-
const str3 = limitHexStr(assetStr.substring(mid - 8, mid - 4).padEnd(4, start4)).padEnd(4, 'f');
|
|
22
|
-
const str4 = limitHexStr(assetStr.substring(mid - 12, mid - 8).padEnd(4, start4)).padEnd(4, 'f');
|
|
23
|
-
const str5 = limitHexStr(assetStr.substring(mid - 16, mid - 12).padEnd(4, end4)).padEnd(4, 'f');
|
|
24
|
-
const str6 = limitHexStr(assetStr.substring(mid, mid + 4).padEnd(4, end4)).padEnd(4, 'f');
|
|
25
|
-
const str7 = limitHexStr(assetStr.substring(mid + 4, mid + 8).padEnd(4, end4)).padEnd(4, 'f');
|
|
26
|
-
const str8 = limitHexStr(end4.padEnd(4, start4).padEnd(4, end4));
|
|
27
|
-
return `@assets/${str1}${str2}-${str3}-${str4}-${str5}-${str6}${str7}${str8}`;
|
|
28
|
-
}
|
|
29
|
-
export function isAssetId(id) {
|
|
30
|
-
return /^@assets\/[0-9a-z]{8,8}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{4,4}\-[0-9a-z]{12,12}$/.test(`${id}`);
|
|
31
|
-
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|