@idraw/renderer 0.4.0-alpha.3 → 0.4.0-alpha.4

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.
@@ -7,8 +7,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { loadImage, loadHTML, loadSVG, EventEmitter, deepClone } from '@idraw/util';
10
+ import { loadImage, loadHTML, loadSVG, EventEmitter, createAssetId, isAssetId, createUUID } from '@idraw/util';
11
11
  const supportElementTypes = ['image', 'svg', 'html'];
12
+ const getAssetIdFromElement = (element) => {
13
+ var _a, _b, _c;
14
+ let source = null;
15
+ if (element.type === 'image') {
16
+ source = ((_a = element === null || element === void 0 ? void 0 : element.detail) === null || _a === void 0 ? void 0 : _a.src) || null;
17
+ }
18
+ else if (element.type === 'svg') {
19
+ source = ((_b = element === null || element === void 0 ? void 0 : element.detail) === null || _b === void 0 ? void 0 : _b.svg) || null;
20
+ }
21
+ else if (element.type === 'html') {
22
+ source = ((_c = element === null || element === void 0 ? void 0 : element.detail) === null || _c === void 0 ? void 0 : _c.html) || null;
23
+ }
24
+ if (typeof source === 'string' && source) {
25
+ if (isAssetId(source)) {
26
+ return source;
27
+ }
28
+ return createAssetId(source);
29
+ }
30
+ return createAssetId(`${createUUID()}-${element.uuid}-${createUUID()}-${createUUID()}`);
31
+ };
12
32
  export class Loader extends EventEmitter {
13
33
  constructor() {
14
34
  super();
@@ -78,36 +98,37 @@ export class Loader extends EventEmitter {
78
98
  };
79
99
  }
80
100
  _emitLoad(item) {
81
- const uuid = item.element.uuid;
82
- const storageItem = this._storageLoadItemMap[uuid];
101
+ const assetId = getAssetIdFromElement(item.element);
102
+ const storageItem = this._storageLoadItemMap[assetId];
83
103
  if (storageItem) {
84
104
  if (storageItem.startTime < item.startTime) {
85
- this._storageLoadItemMap[uuid] = item;
105
+ this._storageLoadItemMap[assetId] = item;
86
106
  this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
87
107
  }
88
108
  }
89
109
  else {
90
- this._storageLoadItemMap[uuid] = item;
110
+ this._storageLoadItemMap[assetId] = item;
91
111
  this.trigger('load', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
92
112
  }
93
113
  }
94
114
  _emitError(item) {
95
- const uuid = item.element.uuid;
96
- const storageItem = this._storageLoadItemMap[uuid];
115
+ const assetId = getAssetIdFromElement(item.element);
116
+ const storageItem = this._storageLoadItemMap[assetId];
97
117
  if (storageItem) {
98
118
  if (storageItem.startTime < item.startTime) {
99
- this._storageLoadItemMap[uuid] = item;
119
+ this._storageLoadItemMap[assetId] = item;
100
120
  this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
101
121
  }
102
122
  }
103
123
  else {
104
- this._storageLoadItemMap[uuid] = item;
124
+ this._storageLoadItemMap[assetId] = item;
105
125
  this.trigger('error', Object.assign(Object.assign({}, item), { countTime: item.endTime - item.startTime }));
106
126
  }
107
127
  }
108
128
  _loadResource(element, assets) {
109
129
  const item = this._createLoadItem(element);
110
- this._currentLoadItemMap[element.uuid] = item;
130
+ const assetId = getAssetIdFromElement(element);
131
+ this._currentLoadItemMap[assetId] = item;
111
132
  const loadFunc = this._loadFuncMap[element.type];
112
133
  if (typeof loadFunc === 'function') {
113
134
  item.startTime = Date.now();
@@ -129,7 +150,8 @@ export class Loader extends EventEmitter {
129
150
  }
130
151
  _isExistingErrorStorage(element) {
131
152
  var _a;
132
- const existItem = (_a = this._currentLoadItemMap) === null || _a === void 0 ? void 0 : _a[element === null || element === void 0 ? void 0 : element.uuid];
153
+ const assetId = getAssetIdFromElement(element);
154
+ const existItem = (_a = this._currentLoadItemMap) === null || _a === void 0 ? void 0 : _a[assetId];
133
155
  if (existItem && existItem.status === 'error' && existItem.source && existItem.source === this._getLoadElementSource(element)) {
134
156
  return true;
135
157
  }
@@ -140,12 +162,12 @@ export class Loader extends EventEmitter {
140
162
  return;
141
163
  }
142
164
  if (supportElementTypes.includes(element.type)) {
143
- const elem = deepClone(element);
144
- this._loadResource(elem, assets);
165
+ this._loadResource(element, assets);
145
166
  }
146
167
  }
147
- getContent(uuid) {
168
+ getContent(element) {
148
169
  var _a, _b;
149
- return ((_b = (_a = this._storageLoadItemMap) === null || _a === void 0 ? void 0 : _a[uuid]) === null || _b === void 0 ? void 0 : _b.content) || null;
170
+ const assetId = getAssetIdFromElement(element);
171
+ return ((_b = (_a = this._storageLoadItemMap) === null || _a === void 0 ? void 0 : _a[assetId]) === null || _b === void 0 ? void 0 : _b.content) || null;
150
172
  }
151
173
  }