@volverjs/ui-vue 0.0.10-beta.74 → 0.0.10-beta.76
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 +8 -8
- package/bin/icons.cjs +1 -1
- package/bin/icons.js +3 -3
- package/dist/components/VvAccordion/VvAccordion.es.js +9 -9
- package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +14 -15
- package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
- package/dist/components/VvAction/VvAction.es.js +10 -13
- package/dist/components/VvAction/VvAction.umd.js +1 -1
- package/dist/components/VvAlert/VvAlert.es.js +19 -19
- package/dist/components/VvAlert/VvAlert.umd.js +1 -1
- package/dist/components/VvAlertGroup/VvAlertGroup.es.js +19 -19
- package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
- package/dist/components/VvAvatar/VvAvatar.es.js +1 -1
- package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
- package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +7 -8
- package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
- package/dist/components/VvBadge/VvBadge.es.js +1 -1
- package/dist/components/VvBadge/VvBadge.umd.js +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +12 -18
- package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
- package/dist/components/VvButton/VvButton.es.js +32 -38
- package/dist/components/VvButton/VvButton.umd.js +1 -1
- package/dist/components/VvButtonGroup/VvButtonGroup.es.js +1 -1
- package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
- package/dist/components/VvCard/VvCard.es.js +1 -1
- package/dist/components/VvCard/VvCard.umd.js +1 -1
- package/dist/components/VvCheckbox/VvCheckbox.es.js +10 -12
- package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +18 -22
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.es.js +266 -285
- package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.vue.d.ts +22 -14
- package/dist/components/VvCombobox/index.d.ts +22 -0
- package/dist/components/VvDialog/VvDialog.es.js +5 -7
- package/dist/components/VvDialog/VvDialog.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.es.js +10 -15
- package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.vue.d.ts +2 -2
- package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +2 -2
- package/dist/components/VvDropdownAction/VvDropdownAction.es.js +11 -14
- package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
- package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
- package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
- package/dist/components/VvDropdownOption/VvDropdownOption.es.js +1 -1
- package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
- package/dist/components/VvIcon/VvIcon.es.js +5 -5
- package/dist/components/VvIcon/VvIcon.umd.js +1 -1
- package/dist/components/VvInputFile/VvInputFile.es.js +6829 -72
- package/dist/components/VvInputFile/VvInputFile.umd.js +7 -1
- package/dist/components/VvInputFile/VvInputFile.vue.d.ts +1 -1
- package/dist/components/VvInputText/VvInputText.es.js +54 -66
- package/dist/components/VvInputText/VvInputText.umd.js +1 -1
- package/dist/components/VvInputText/VvInputText.vue.d.ts +1 -1
- package/dist/components/VvNav/VvNav.es.js +16 -21
- package/dist/components/VvNav/VvNav.umd.js +1 -1
- package/dist/components/VvNavItem/VvNavItem.es.js +10 -13
- package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
- package/dist/components/VvNavSeparator/VvNavSeparator.umd.js +1 -1
- package/dist/components/VvProgress/VvProgress.es.js +1 -1
- package/dist/components/VvProgress/VvProgress.umd.js +1 -1
- package/dist/components/VvRadio/VvRadio.es.js +10 -12
- package/dist/components/VvRadio/VvRadio.umd.js +1 -1
- package/dist/components/VvRadioGroup/VvRadioGroup.es.js +18 -22
- package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
- package/dist/components/VvSelect/VvSelect.es.js +27 -30
- package/dist/components/VvSelect/VvSelect.umd.js +1 -1
- package/dist/components/VvSelect/VvSelect.vue.d.ts +3 -3
- package/dist/components/VvTab/VvTab.es.js +18 -25
- package/dist/components/VvTab/VvTab.umd.js +1 -1
- package/dist/components/VvTextarea/VvTextarea.es.js +47 -57
- package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
- package/dist/components/VvTextarea/VvTextarea.vue.d.ts +1 -1
- package/dist/components/VvTooltip/VvTooltip.es.js +1 -1
- package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
- package/dist/components/index.es.js +7352 -629
- package/dist/components/index.umd.js +7 -1
- package/dist/composables/index.es.js +1787 -16
- package/dist/composables/index.umd.js +7 -1
- package/dist/directives/index.es.js +1782 -15
- package/dist/directives/index.umd.js +7 -1
- package/dist/directives/v-contextmenu.es.js +1781 -14
- package/dist/directives/v-contextmenu.umd.js +7 -1
- package/dist/directives/v-tooltip.es.js +1 -1
- package/dist/directives/v-tooltip.umd.js +1 -1
- package/dist/icons.es.js +3 -3
- package/dist/icons.umd.js +1 -1
- package/dist/index.es.js +9 -12
- package/dist/index.umd.js +1 -1
- package/dist/resolvers/unplugin.es.js +1 -1
- package/dist/resolvers/unplugin.umd.js +1 -1
- package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +2 -2
- package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
- package/package.json +35 -32
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { reactive, computed, unref, getCurrentInstance, onMounted, onUnmounted, ref, defineComponent, toRefs, createElementBlock, openBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString, h, render } from "vue";
|
|
2
2
|
import { wrap } from "comlink";
|
|
3
|
-
import "pica";
|
|
4
3
|
var StorageType = /* @__PURE__ */ ((StorageType2) => {
|
|
5
4
|
StorageType2["local"] = "local";
|
|
6
5
|
StorageType2["session"] = "session";
|
|
@@ -48,12 +47,10 @@ function useDropdownContextmenu(dropdownEl, targetEl) {
|
|
|
48
47
|
const target = computed(() => unref(targetEl));
|
|
49
48
|
if (target && getCurrentInstance()) {
|
|
50
49
|
onMounted(() => {
|
|
51
|
-
|
|
52
|
-
(_a = target.value) == null ? void 0 : _a.addEventListener("contextmenu", onContextmenu, false);
|
|
50
|
+
target.value?.addEventListener("contextmenu", onContextmenu, false);
|
|
53
51
|
});
|
|
54
52
|
onUnmounted(() => {
|
|
55
|
-
|
|
56
|
-
(_a = target.value) == null ? void 0 : _a.removeEventListener("contextmenu", onContextmenu);
|
|
53
|
+
target.value?.removeEventListener("contextmenu", onContextmenu);
|
|
57
54
|
});
|
|
58
55
|
}
|
|
59
56
|
return { x, y, getBoundingClientRect, onContextmenu, onScroll };
|
|
@@ -119,15 +116,1788 @@ function useDropdownVirtualElement(dropdownEl) {
|
|
|
119
116
|
}
|
|
120
117
|
return { x, y, getBoundingClientRect, onScroll };
|
|
121
118
|
}
|
|
122
|
-
|
|
123
|
-
|
|
119
|
+
function commonjsRequire(path) {
|
|
120
|
+
throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
|
|
121
|
+
}
|
|
122
|
+
var pica = { exports: {} };
|
|
123
|
+
/*!
|
|
124
|
+
|
|
125
|
+
pica
|
|
126
|
+
https://github.com/nodeca/pica
|
|
127
|
+
|
|
128
|
+
*/
|
|
129
|
+
var hasRequiredPica;
|
|
130
|
+
function requirePica() {
|
|
131
|
+
if (hasRequiredPica) return pica.exports;
|
|
132
|
+
hasRequiredPica = 1;
|
|
133
|
+
(function(module, exports) {
|
|
134
|
+
(function(f) {
|
|
135
|
+
{
|
|
136
|
+
module.exports = f();
|
|
137
|
+
}
|
|
138
|
+
})(function() {
|
|
139
|
+
return (/* @__PURE__ */ function() {
|
|
140
|
+
function r(e, n, t) {
|
|
141
|
+
function o(i2, f) {
|
|
142
|
+
if (!n[i2]) {
|
|
143
|
+
if (!e[i2]) {
|
|
144
|
+
var c = "function" == typeof commonjsRequire && commonjsRequire;
|
|
145
|
+
if (!f && c) return c(i2, true);
|
|
146
|
+
if (u) return u(i2, true);
|
|
147
|
+
var a = new Error("Cannot find module '" + i2 + "'");
|
|
148
|
+
throw a.code = "MODULE_NOT_FOUND", a;
|
|
149
|
+
}
|
|
150
|
+
var p = n[i2] = { exports: {} };
|
|
151
|
+
e[i2][0].call(p.exports, function(r2) {
|
|
152
|
+
var n2 = e[i2][1][r2];
|
|
153
|
+
return o(n2 || r2);
|
|
154
|
+
}, p, p.exports, r, e, n, t);
|
|
155
|
+
}
|
|
156
|
+
return n[i2].exports;
|
|
157
|
+
}
|
|
158
|
+
for (var u = "function" == typeof commonjsRequire && commonjsRequire, i = 0; i < t.length; i++) o(t[i]);
|
|
159
|
+
return o;
|
|
160
|
+
}
|
|
161
|
+
return r;
|
|
162
|
+
}())({ 1: [function(_dereq_, module2, exports2) {
|
|
163
|
+
var Multimath = _dereq_("multimath");
|
|
164
|
+
var mm_unsharp_mask = _dereq_("./mm_unsharp_mask");
|
|
165
|
+
var mm_resize = _dereq_("./mm_resize");
|
|
166
|
+
function MathLib(requested_features) {
|
|
167
|
+
var __requested_features = requested_features || [];
|
|
168
|
+
var features = {
|
|
169
|
+
js: __requested_features.indexOf("js") >= 0,
|
|
170
|
+
wasm: __requested_features.indexOf("wasm") >= 0
|
|
171
|
+
};
|
|
172
|
+
Multimath.call(this, features);
|
|
173
|
+
this.features = {
|
|
174
|
+
js: features.js,
|
|
175
|
+
wasm: features.wasm && this.has_wasm()
|
|
176
|
+
};
|
|
177
|
+
this.use(mm_unsharp_mask);
|
|
178
|
+
this.use(mm_resize);
|
|
179
|
+
}
|
|
180
|
+
MathLib.prototype = Object.create(Multimath.prototype);
|
|
181
|
+
MathLib.prototype.constructor = MathLib;
|
|
182
|
+
MathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {
|
|
183
|
+
var result = this.resize(options, cache);
|
|
184
|
+
if (options.unsharpAmount) {
|
|
185
|
+
this.unsharp_mask(result, options.toWidth, options.toHeight, options.unsharpAmount, options.unsharpRadius, options.unsharpThreshold);
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
};
|
|
189
|
+
module2.exports = MathLib;
|
|
190
|
+
}, { "./mm_resize": 4, "./mm_unsharp_mask": 9, "multimath": 19 }], 2: [function(_dereq_, module2, exports2) {
|
|
191
|
+
function clampTo8(i) {
|
|
192
|
+
return i < 0 ? 0 : i > 255 ? 255 : i;
|
|
193
|
+
}
|
|
194
|
+
function clampNegative(i) {
|
|
195
|
+
return i >= 0 ? i : 0;
|
|
196
|
+
}
|
|
197
|
+
function convolveHor(src, dest, srcW, srcH, destW, filters) {
|
|
198
|
+
var r, g, b, a;
|
|
199
|
+
var filterPtr, filterShift, filterSize;
|
|
200
|
+
var srcPtr, srcY, destX, filterVal;
|
|
201
|
+
var srcOffset = 0, destOffset = 0;
|
|
202
|
+
for (srcY = 0; srcY < srcH; srcY++) {
|
|
203
|
+
filterPtr = 0;
|
|
204
|
+
for (destX = 0; destX < destW; destX++) {
|
|
205
|
+
filterShift = filters[filterPtr++];
|
|
206
|
+
filterSize = filters[filterPtr++];
|
|
207
|
+
srcPtr = srcOffset + filterShift * 4 | 0;
|
|
208
|
+
r = g = b = a = 0;
|
|
209
|
+
for (; filterSize > 0; filterSize--) {
|
|
210
|
+
filterVal = filters[filterPtr++];
|
|
211
|
+
a = a + filterVal * src[srcPtr + 3] | 0;
|
|
212
|
+
b = b + filterVal * src[srcPtr + 2] | 0;
|
|
213
|
+
g = g + filterVal * src[srcPtr + 1] | 0;
|
|
214
|
+
r = r + filterVal * src[srcPtr] | 0;
|
|
215
|
+
srcPtr = srcPtr + 4 | 0;
|
|
216
|
+
}
|
|
217
|
+
dest[destOffset + 3] = clampNegative(a >> 7);
|
|
218
|
+
dest[destOffset + 2] = clampNegative(b >> 7);
|
|
219
|
+
dest[destOffset + 1] = clampNegative(g >> 7);
|
|
220
|
+
dest[destOffset] = clampNegative(r >> 7);
|
|
221
|
+
destOffset = destOffset + srcH * 4 | 0;
|
|
222
|
+
}
|
|
223
|
+
destOffset = (srcY + 1) * 4 | 0;
|
|
224
|
+
srcOffset = (srcY + 1) * srcW * 4 | 0;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function convolveVert(src, dest, srcW, srcH, destW, filters) {
|
|
228
|
+
var r, g, b, a;
|
|
229
|
+
var filterPtr, filterShift, filterSize;
|
|
230
|
+
var srcPtr, srcY, destX, filterVal;
|
|
231
|
+
var srcOffset = 0, destOffset = 0;
|
|
232
|
+
for (srcY = 0; srcY < srcH; srcY++) {
|
|
233
|
+
filterPtr = 0;
|
|
234
|
+
for (destX = 0; destX < destW; destX++) {
|
|
235
|
+
filterShift = filters[filterPtr++];
|
|
236
|
+
filterSize = filters[filterPtr++];
|
|
237
|
+
srcPtr = srcOffset + filterShift * 4 | 0;
|
|
238
|
+
r = g = b = a = 0;
|
|
239
|
+
for (; filterSize > 0; filterSize--) {
|
|
240
|
+
filterVal = filters[filterPtr++];
|
|
241
|
+
a = a + filterVal * src[srcPtr + 3] | 0;
|
|
242
|
+
b = b + filterVal * src[srcPtr + 2] | 0;
|
|
243
|
+
g = g + filterVal * src[srcPtr + 1] | 0;
|
|
244
|
+
r = r + filterVal * src[srcPtr] | 0;
|
|
245
|
+
srcPtr = srcPtr + 4 | 0;
|
|
246
|
+
}
|
|
247
|
+
r >>= 7;
|
|
248
|
+
g >>= 7;
|
|
249
|
+
b >>= 7;
|
|
250
|
+
a >>= 7;
|
|
251
|
+
dest[destOffset + 3] = clampTo8(a + (1 << 13) >> 14);
|
|
252
|
+
dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);
|
|
253
|
+
dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);
|
|
254
|
+
dest[destOffset] = clampTo8(r + (1 << 13) >> 14);
|
|
255
|
+
destOffset = destOffset + srcH * 4 | 0;
|
|
256
|
+
}
|
|
257
|
+
destOffset = (srcY + 1) * 4 | 0;
|
|
258
|
+
srcOffset = (srcY + 1) * srcW * 4 | 0;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function convolveHorWithPre(src, dest, srcW, srcH, destW, filters) {
|
|
262
|
+
var r, g, b, a, alpha;
|
|
263
|
+
var filterPtr, filterShift, filterSize;
|
|
264
|
+
var srcPtr, srcY, destX, filterVal;
|
|
265
|
+
var srcOffset = 0, destOffset = 0;
|
|
266
|
+
for (srcY = 0; srcY < srcH; srcY++) {
|
|
267
|
+
filterPtr = 0;
|
|
268
|
+
for (destX = 0; destX < destW; destX++) {
|
|
269
|
+
filterShift = filters[filterPtr++];
|
|
270
|
+
filterSize = filters[filterPtr++];
|
|
271
|
+
srcPtr = srcOffset + filterShift * 4 | 0;
|
|
272
|
+
r = g = b = a = 0;
|
|
273
|
+
for (; filterSize > 0; filterSize--) {
|
|
274
|
+
filterVal = filters[filterPtr++];
|
|
275
|
+
alpha = src[srcPtr + 3];
|
|
276
|
+
a = a + filterVal * alpha | 0;
|
|
277
|
+
b = b + filterVal * src[srcPtr + 2] * alpha | 0;
|
|
278
|
+
g = g + filterVal * src[srcPtr + 1] * alpha | 0;
|
|
279
|
+
r = r + filterVal * src[srcPtr] * alpha | 0;
|
|
280
|
+
srcPtr = srcPtr + 4 | 0;
|
|
281
|
+
}
|
|
282
|
+
b = b / 255 | 0;
|
|
283
|
+
g = g / 255 | 0;
|
|
284
|
+
r = r / 255 | 0;
|
|
285
|
+
dest[destOffset + 3] = clampNegative(a >> 7);
|
|
286
|
+
dest[destOffset + 2] = clampNegative(b >> 7);
|
|
287
|
+
dest[destOffset + 1] = clampNegative(g >> 7);
|
|
288
|
+
dest[destOffset] = clampNegative(r >> 7);
|
|
289
|
+
destOffset = destOffset + srcH * 4 | 0;
|
|
290
|
+
}
|
|
291
|
+
destOffset = (srcY + 1) * 4 | 0;
|
|
292
|
+
srcOffset = (srcY + 1) * srcW * 4 | 0;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function convolveVertWithPre(src, dest, srcW, srcH, destW, filters) {
|
|
296
|
+
var r, g, b, a;
|
|
297
|
+
var filterPtr, filterShift, filterSize;
|
|
298
|
+
var srcPtr, srcY, destX, filterVal;
|
|
299
|
+
var srcOffset = 0, destOffset = 0;
|
|
300
|
+
for (srcY = 0; srcY < srcH; srcY++) {
|
|
301
|
+
filterPtr = 0;
|
|
302
|
+
for (destX = 0; destX < destW; destX++) {
|
|
303
|
+
filterShift = filters[filterPtr++];
|
|
304
|
+
filterSize = filters[filterPtr++];
|
|
305
|
+
srcPtr = srcOffset + filterShift * 4 | 0;
|
|
306
|
+
r = g = b = a = 0;
|
|
307
|
+
for (; filterSize > 0; filterSize--) {
|
|
308
|
+
filterVal = filters[filterPtr++];
|
|
309
|
+
a = a + filterVal * src[srcPtr + 3] | 0;
|
|
310
|
+
b = b + filterVal * src[srcPtr + 2] | 0;
|
|
311
|
+
g = g + filterVal * src[srcPtr + 1] | 0;
|
|
312
|
+
r = r + filterVal * src[srcPtr] | 0;
|
|
313
|
+
srcPtr = srcPtr + 4 | 0;
|
|
314
|
+
}
|
|
315
|
+
r >>= 7;
|
|
316
|
+
g >>= 7;
|
|
317
|
+
b >>= 7;
|
|
318
|
+
a >>= 7;
|
|
319
|
+
a = clampTo8(a + (1 << 13) >> 14);
|
|
320
|
+
if (a > 0) {
|
|
321
|
+
r = r * 255 / a | 0;
|
|
322
|
+
g = g * 255 / a | 0;
|
|
323
|
+
b = b * 255 / a | 0;
|
|
324
|
+
}
|
|
325
|
+
dest[destOffset + 3] = a;
|
|
326
|
+
dest[destOffset + 2] = clampTo8(b + (1 << 13) >> 14);
|
|
327
|
+
dest[destOffset + 1] = clampTo8(g + (1 << 13) >> 14);
|
|
328
|
+
dest[destOffset] = clampTo8(r + (1 << 13) >> 14);
|
|
329
|
+
destOffset = destOffset + srcH * 4 | 0;
|
|
330
|
+
}
|
|
331
|
+
destOffset = (srcY + 1) * 4 | 0;
|
|
332
|
+
srcOffset = (srcY + 1) * srcW * 4 | 0;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
module2.exports = {
|
|
336
|
+
convolveHor,
|
|
337
|
+
convolveVert,
|
|
338
|
+
convolveHorWithPre,
|
|
339
|
+
convolveVertWithPre
|
|
340
|
+
};
|
|
341
|
+
}, {}], 3: [function(_dereq_, module2, exports2) {
|
|
342
|
+
module2.exports = "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";
|
|
343
|
+
}, {}], 4: [function(_dereq_, module2, exports2) {
|
|
344
|
+
module2.exports = {
|
|
345
|
+
name: "resize",
|
|
346
|
+
fn: _dereq_("./resize"),
|
|
347
|
+
wasm_fn: _dereq_("./resize_wasm"),
|
|
348
|
+
wasm_src: _dereq_("./convolve_wasm_base64")
|
|
349
|
+
};
|
|
350
|
+
}, { "./convolve_wasm_base64": 3, "./resize": 5, "./resize_wasm": 8 }], 5: [function(_dereq_, module2, exports2) {
|
|
351
|
+
var createFilters = _dereq_("./resize_filter_gen");
|
|
352
|
+
var _require = _dereq_("./convolve"), convolveHor = _require.convolveHor, convolveVert = _require.convolveVert, convolveHorWithPre = _require.convolveHorWithPre, convolveVertWithPre = _require.convolveVertWithPre;
|
|
353
|
+
function hasAlpha(src, width, height) {
|
|
354
|
+
var ptr = 3, len = width * height * 4 | 0;
|
|
355
|
+
while (ptr < len) {
|
|
356
|
+
if (src[ptr] !== 255) return true;
|
|
357
|
+
ptr = ptr + 4 | 0;
|
|
358
|
+
}
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
function resetAlpha(dst, width, height) {
|
|
362
|
+
var ptr = 3, len = width * height * 4 | 0;
|
|
363
|
+
while (ptr < len) {
|
|
364
|
+
dst[ptr] = 255;
|
|
365
|
+
ptr = ptr + 4 | 0;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
module2.exports = function resize(options) {
|
|
369
|
+
var src = options.src;
|
|
370
|
+
var srcW = options.width;
|
|
371
|
+
var srcH = options.height;
|
|
372
|
+
var destW = options.toWidth;
|
|
373
|
+
var destH = options.toHeight;
|
|
374
|
+
var scaleX = options.scaleX || options.toWidth / options.width;
|
|
375
|
+
var scaleY = options.scaleY || options.toHeight / options.height;
|
|
376
|
+
var offsetX = options.offsetX || 0;
|
|
377
|
+
var offsetY = options.offsetY || 0;
|
|
378
|
+
var dest = options.dest || new Uint8Array(destW * destH * 4);
|
|
379
|
+
var filter = typeof options.filter === "undefined" ? "mks2013" : options.filter;
|
|
380
|
+
var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX), filtersY = createFilters(filter, srcH, destH, scaleY, offsetY);
|
|
381
|
+
var tmp = new Uint16Array(destW * srcH * 4);
|
|
382
|
+
if (hasAlpha(src, srcW, srcH)) {
|
|
383
|
+
convolveHorWithPre(src, tmp, srcW, srcH, destW, filtersX);
|
|
384
|
+
convolveVertWithPre(tmp, dest, srcH, destW, destH, filtersY);
|
|
385
|
+
} else {
|
|
386
|
+
convolveHor(src, tmp, srcW, srcH, destW, filtersX);
|
|
387
|
+
convolveVert(tmp, dest, srcH, destW, destH, filtersY);
|
|
388
|
+
resetAlpha(dest, destW, destH);
|
|
389
|
+
}
|
|
390
|
+
return dest;
|
|
391
|
+
};
|
|
392
|
+
}, { "./convolve": 2, "./resize_filter_gen": 6 }], 6: [function(_dereq_, module2, exports2) {
|
|
393
|
+
var FILTER_INFO = _dereq_("./resize_filter_info");
|
|
394
|
+
var FIXED_FRAC_BITS = 14;
|
|
395
|
+
function toFixedPoint(num) {
|
|
396
|
+
return Math.round(num * ((1 << FIXED_FRAC_BITS) - 1));
|
|
397
|
+
}
|
|
398
|
+
module2.exports = function resizeFilterGen(filter, srcSize, destSize, scale, offset) {
|
|
399
|
+
var filterFunction = FILTER_INFO.filter[filter].fn;
|
|
400
|
+
var scaleInverted = 1 / scale;
|
|
401
|
+
var scaleClamped = Math.min(1, scale);
|
|
402
|
+
var srcWindow = FILTER_INFO.filter[filter].win / scaleClamped;
|
|
403
|
+
var destPixel, srcPixel, srcFirst, srcLast, filterElementSize, floatFilter, fxpFilter, total, pxl, idx, floatVal, filterTotal, filterVal;
|
|
404
|
+
var leftNotEmpty, rightNotEmpty, filterShift, filterSize;
|
|
405
|
+
var maxFilterElementSize = Math.floor((srcWindow + 1) * 2);
|
|
406
|
+
var packedFilter = new Int16Array((maxFilterElementSize + 2) * destSize);
|
|
407
|
+
var packedFilterPtr = 0;
|
|
408
|
+
var slowCopy = !packedFilter.subarray || !packedFilter.set;
|
|
409
|
+
for (destPixel = 0; destPixel < destSize; destPixel++) {
|
|
410
|
+
srcPixel = (destPixel + 0.5) * scaleInverted + offset;
|
|
411
|
+
srcFirst = Math.max(0, Math.floor(srcPixel - srcWindow));
|
|
412
|
+
srcLast = Math.min(srcSize - 1, Math.ceil(srcPixel + srcWindow));
|
|
413
|
+
filterElementSize = srcLast - srcFirst + 1;
|
|
414
|
+
floatFilter = new Float32Array(filterElementSize);
|
|
415
|
+
fxpFilter = new Int16Array(filterElementSize);
|
|
416
|
+
total = 0;
|
|
417
|
+
for (pxl = srcFirst, idx = 0; pxl <= srcLast; pxl++, idx++) {
|
|
418
|
+
floatVal = filterFunction((pxl + 0.5 - srcPixel) * scaleClamped);
|
|
419
|
+
total += floatVal;
|
|
420
|
+
floatFilter[idx] = floatVal;
|
|
421
|
+
}
|
|
422
|
+
filterTotal = 0;
|
|
423
|
+
for (idx = 0; idx < floatFilter.length; idx++) {
|
|
424
|
+
filterVal = floatFilter[idx] / total;
|
|
425
|
+
filterTotal += filterVal;
|
|
426
|
+
fxpFilter[idx] = toFixedPoint(filterVal);
|
|
427
|
+
}
|
|
428
|
+
fxpFilter[destSize >> 1] += toFixedPoint(1 - filterTotal);
|
|
429
|
+
leftNotEmpty = 0;
|
|
430
|
+
while (leftNotEmpty < fxpFilter.length && fxpFilter[leftNotEmpty] === 0) {
|
|
431
|
+
leftNotEmpty++;
|
|
432
|
+
}
|
|
433
|
+
if (leftNotEmpty < fxpFilter.length) {
|
|
434
|
+
rightNotEmpty = fxpFilter.length - 1;
|
|
435
|
+
while (rightNotEmpty > 0 && fxpFilter[rightNotEmpty] === 0) {
|
|
436
|
+
rightNotEmpty--;
|
|
437
|
+
}
|
|
438
|
+
filterShift = srcFirst + leftNotEmpty;
|
|
439
|
+
filterSize = rightNotEmpty - leftNotEmpty + 1;
|
|
440
|
+
packedFilter[packedFilterPtr++] = filterShift;
|
|
441
|
+
packedFilter[packedFilterPtr++] = filterSize;
|
|
442
|
+
if (!slowCopy) {
|
|
443
|
+
packedFilter.set(fxpFilter.subarray(leftNotEmpty, rightNotEmpty + 1), packedFilterPtr);
|
|
444
|
+
packedFilterPtr += filterSize;
|
|
445
|
+
} else {
|
|
446
|
+
for (idx = leftNotEmpty; idx <= rightNotEmpty; idx++) {
|
|
447
|
+
packedFilter[packedFilterPtr++] = fxpFilter[idx];
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
} else {
|
|
451
|
+
packedFilter[packedFilterPtr++] = 0;
|
|
452
|
+
packedFilter[packedFilterPtr++] = 0;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
return packedFilter;
|
|
456
|
+
};
|
|
457
|
+
}, { "./resize_filter_info": 7 }], 7: [function(_dereq_, module2, exports2) {
|
|
458
|
+
var filter = {
|
|
459
|
+
// Nearest neibor
|
|
460
|
+
box: {
|
|
461
|
+
win: 0.5,
|
|
462
|
+
fn: function fn(x) {
|
|
463
|
+
if (x < 0) x = -x;
|
|
464
|
+
return x < 0.5 ? 1 : 0;
|
|
465
|
+
}
|
|
466
|
+
},
|
|
467
|
+
// // Hamming
|
|
468
|
+
hamming: {
|
|
469
|
+
win: 1,
|
|
470
|
+
fn: function fn(x) {
|
|
471
|
+
if (x < 0) x = -x;
|
|
472
|
+
if (x >= 1) {
|
|
473
|
+
return 0;
|
|
474
|
+
}
|
|
475
|
+
if (x < 11920929e-14) {
|
|
476
|
+
return 1;
|
|
477
|
+
}
|
|
478
|
+
var xpi = x * Math.PI;
|
|
479
|
+
return Math.sin(xpi) / xpi * (0.54 + 0.46 * Math.cos(xpi / 1));
|
|
480
|
+
}
|
|
481
|
+
},
|
|
482
|
+
// Lanczos, win = 2
|
|
483
|
+
lanczos2: {
|
|
484
|
+
win: 2,
|
|
485
|
+
fn: function fn(x) {
|
|
486
|
+
if (x < 0) x = -x;
|
|
487
|
+
if (x >= 2) {
|
|
488
|
+
return 0;
|
|
489
|
+
}
|
|
490
|
+
if (x < 11920929e-14) {
|
|
491
|
+
return 1;
|
|
492
|
+
}
|
|
493
|
+
var xpi = x * Math.PI;
|
|
494
|
+
return Math.sin(xpi) / xpi * Math.sin(xpi / 2) / (xpi / 2);
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
// Lanczos, win = 3
|
|
498
|
+
lanczos3: {
|
|
499
|
+
win: 3,
|
|
500
|
+
fn: function fn(x) {
|
|
501
|
+
if (x < 0) x = -x;
|
|
502
|
+
if (x >= 3) {
|
|
503
|
+
return 0;
|
|
504
|
+
}
|
|
505
|
+
if (x < 11920929e-14) {
|
|
506
|
+
return 1;
|
|
507
|
+
}
|
|
508
|
+
var xpi = x * Math.PI;
|
|
509
|
+
return Math.sin(xpi) / xpi * Math.sin(xpi / 3) / (xpi / 3);
|
|
510
|
+
}
|
|
511
|
+
},
|
|
512
|
+
// Magic Kernel Sharp 2013, win = 2.5
|
|
513
|
+
// http://johncostella.com/magic/
|
|
514
|
+
mks2013: {
|
|
515
|
+
win: 2.5,
|
|
516
|
+
fn: function fn(x) {
|
|
517
|
+
if (x < 0) x = -x;
|
|
518
|
+
if (x >= 2.5) {
|
|
519
|
+
return 0;
|
|
520
|
+
}
|
|
521
|
+
if (x >= 1.5) {
|
|
522
|
+
return -0.125 * (x - 2.5) * (x - 2.5);
|
|
523
|
+
}
|
|
524
|
+
if (x >= 0.5) {
|
|
525
|
+
return 0.25 * (4 * x * x - 11 * x + 7);
|
|
526
|
+
}
|
|
527
|
+
return 1.0625 - 1.75 * x * x;
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
};
|
|
531
|
+
module2.exports = {
|
|
532
|
+
filter,
|
|
533
|
+
// Legacy mapping
|
|
534
|
+
f2q: {
|
|
535
|
+
box: 0,
|
|
536
|
+
hamming: 1,
|
|
537
|
+
lanczos2: 2,
|
|
538
|
+
lanczos3: 3
|
|
539
|
+
},
|
|
540
|
+
q2f: ["box", "hamming", "lanczos2", "lanczos3"]
|
|
541
|
+
};
|
|
542
|
+
}, {}], 8: [function(_dereq_, module2, exports2) {
|
|
543
|
+
var createFilters = _dereq_("./resize_filter_gen");
|
|
544
|
+
function hasAlpha(src, width, height) {
|
|
545
|
+
var ptr = 3, len = width * height * 4 | 0;
|
|
546
|
+
while (ptr < len) {
|
|
547
|
+
if (src[ptr] !== 255) return true;
|
|
548
|
+
ptr = ptr + 4 | 0;
|
|
549
|
+
}
|
|
550
|
+
return false;
|
|
551
|
+
}
|
|
552
|
+
function resetAlpha(dst, width, height) {
|
|
553
|
+
var ptr = 3, len = width * height * 4 | 0;
|
|
554
|
+
while (ptr < len) {
|
|
555
|
+
dst[ptr] = 255;
|
|
556
|
+
ptr = ptr + 4 | 0;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
function asUint8Array(src) {
|
|
560
|
+
return new Uint8Array(src.buffer, 0, src.byteLength);
|
|
561
|
+
}
|
|
562
|
+
var IS_LE = true;
|
|
563
|
+
try {
|
|
564
|
+
IS_LE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;
|
|
565
|
+
} catch (__) {
|
|
566
|
+
}
|
|
567
|
+
function copyInt16asLE(src, target, target_offset) {
|
|
568
|
+
if (IS_LE) {
|
|
569
|
+
target.set(asUint8Array(src), target_offset);
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
for (var ptr = target_offset, i = 0; i < src.length; i++) {
|
|
573
|
+
var data = src[i];
|
|
574
|
+
target[ptr++] = data & 255;
|
|
575
|
+
target[ptr++] = data >> 8 & 255;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
module2.exports = function resize_wasm(options) {
|
|
579
|
+
var src = options.src;
|
|
580
|
+
var srcW = options.width;
|
|
581
|
+
var srcH = options.height;
|
|
582
|
+
var destW = options.toWidth;
|
|
583
|
+
var destH = options.toHeight;
|
|
584
|
+
var scaleX = options.scaleX || options.toWidth / options.width;
|
|
585
|
+
var scaleY = options.scaleY || options.toHeight / options.height;
|
|
586
|
+
var offsetX = options.offsetX || 0;
|
|
587
|
+
var offsetY = options.offsetY || 0;
|
|
588
|
+
var dest = options.dest || new Uint8Array(destW * destH * 4);
|
|
589
|
+
var filter = typeof options.filter === "undefined" ? "mks2013" : options.filter;
|
|
590
|
+
var filtersX = createFilters(filter, srcW, destW, scaleX, offsetX), filtersY = createFilters(filter, srcH, destH, scaleY, offsetY);
|
|
591
|
+
var src_offset = 0;
|
|
592
|
+
var src_size = Math.max(src.byteLength, dest.byteLength);
|
|
593
|
+
var tmp_offset = this.__align(src_offset + src_size);
|
|
594
|
+
var tmp_size = srcH * destW * 4 * 2;
|
|
595
|
+
var filtersX_offset = this.__align(tmp_offset + tmp_size);
|
|
596
|
+
var filtersY_offset = this.__align(filtersX_offset + filtersX.byteLength);
|
|
597
|
+
var alloc_bytes = filtersY_offset + filtersY.byteLength;
|
|
598
|
+
var instance = this.__instance("resize", alloc_bytes);
|
|
599
|
+
var mem = new Uint8Array(this.__memory.buffer);
|
|
600
|
+
var mem32 = new Uint32Array(this.__memory.buffer);
|
|
601
|
+
var src32 = new Uint32Array(src.buffer);
|
|
602
|
+
mem32.set(src32);
|
|
603
|
+
copyInt16asLE(filtersX, mem, filtersX_offset);
|
|
604
|
+
copyInt16asLE(filtersY, mem, filtersY_offset);
|
|
605
|
+
var fn = instance.exports.convolveHV || instance.exports._convolveHV;
|
|
606
|
+
if (hasAlpha(src, srcW, srcH)) {
|
|
607
|
+
fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 1);
|
|
608
|
+
} else {
|
|
609
|
+
fn(filtersX_offset, filtersY_offset, tmp_offset, srcW, srcH, destW, destH, 0);
|
|
610
|
+
resetAlpha(dest, destW, destH);
|
|
611
|
+
}
|
|
612
|
+
var dest32 = new Uint32Array(dest.buffer);
|
|
613
|
+
dest32.set(new Uint32Array(this.__memory.buffer, 0, destH * destW));
|
|
614
|
+
return dest;
|
|
615
|
+
};
|
|
616
|
+
}, { "./resize_filter_gen": 6 }], 9: [function(_dereq_, module2, exports2) {
|
|
617
|
+
module2.exports = {
|
|
618
|
+
name: "unsharp_mask",
|
|
619
|
+
fn: _dereq_("./unsharp_mask"),
|
|
620
|
+
wasm_fn: _dereq_("./unsharp_mask_wasm"),
|
|
621
|
+
wasm_src: _dereq_("./unsharp_mask_wasm_base64")
|
|
622
|
+
};
|
|
623
|
+
}, { "./unsharp_mask": 10, "./unsharp_mask_wasm": 11, "./unsharp_mask_wasm_base64": 12 }], 10: [function(_dereq_, module2, exports2) {
|
|
624
|
+
var glur_mono16 = _dereq_("glur/mono16");
|
|
625
|
+
function hsv_v16(img, width, height) {
|
|
626
|
+
var size = width * height;
|
|
627
|
+
var out = new Uint16Array(size);
|
|
628
|
+
var r, g, b, max;
|
|
629
|
+
for (var i = 0; i < size; i++) {
|
|
630
|
+
r = img[4 * i];
|
|
631
|
+
g = img[4 * i + 1];
|
|
632
|
+
b = img[4 * i + 2];
|
|
633
|
+
max = r >= g && r >= b ? r : g >= b && g >= r ? g : b;
|
|
634
|
+
out[i] = max << 8;
|
|
635
|
+
}
|
|
636
|
+
return out;
|
|
637
|
+
}
|
|
638
|
+
module2.exports = function unsharp(img, width, height, amount, radius, threshold) {
|
|
639
|
+
var v1, v2, vmul;
|
|
640
|
+
var diff, iTimes4;
|
|
641
|
+
if (amount === 0 || radius < 0.5) {
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
if (radius > 2) {
|
|
645
|
+
radius = 2;
|
|
646
|
+
}
|
|
647
|
+
var brightness = hsv_v16(img, width, height);
|
|
648
|
+
var blured = new Uint16Array(brightness);
|
|
649
|
+
glur_mono16(blured, width, height, radius);
|
|
650
|
+
var amountFp = amount / 100 * 4096 + 0.5 | 0;
|
|
651
|
+
var thresholdFp = threshold << 8;
|
|
652
|
+
var size = width * height;
|
|
653
|
+
for (var i = 0; i < size; i++) {
|
|
654
|
+
v1 = brightness[i];
|
|
655
|
+
diff = v1 - blured[i];
|
|
656
|
+
if (Math.abs(diff) >= thresholdFp) {
|
|
657
|
+
v2 = v1 + (amountFp * diff + 2048 >> 12);
|
|
658
|
+
v2 = v2 > 65280 ? 65280 : v2;
|
|
659
|
+
v2 = v2 < 0 ? 0 : v2;
|
|
660
|
+
v1 = v1 !== 0 ? v1 : 1;
|
|
661
|
+
vmul = (v2 << 12) / v1 | 0;
|
|
662
|
+
iTimes4 = i * 4;
|
|
663
|
+
img[iTimes4] = img[iTimes4] * vmul + 2048 >> 12;
|
|
664
|
+
img[iTimes4 + 1] = img[iTimes4 + 1] * vmul + 2048 >> 12;
|
|
665
|
+
img[iTimes4 + 2] = img[iTimes4 + 2] * vmul + 2048 >> 12;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
};
|
|
669
|
+
}, { "glur/mono16": 18 }], 11: [function(_dereq_, module2, exports2) {
|
|
670
|
+
module2.exports = function unsharp(img, width, height, amount, radius, threshold) {
|
|
671
|
+
if (amount === 0 || radius < 0.5) {
|
|
672
|
+
return;
|
|
673
|
+
}
|
|
674
|
+
if (radius > 2) {
|
|
675
|
+
radius = 2;
|
|
676
|
+
}
|
|
677
|
+
var pixels = width * height;
|
|
678
|
+
var img_bytes_cnt = pixels * 4;
|
|
679
|
+
var hsv_bytes_cnt = pixels * 2;
|
|
680
|
+
var blur_bytes_cnt = pixels * 2;
|
|
681
|
+
var blur_line_byte_cnt = Math.max(width, height) * 4;
|
|
682
|
+
var blur_coeffs_byte_cnt = 8 * 4;
|
|
683
|
+
var img_offset = 0;
|
|
684
|
+
var hsv_offset = img_bytes_cnt;
|
|
685
|
+
var blur_offset = hsv_offset + hsv_bytes_cnt;
|
|
686
|
+
var blur_tmp_offset = blur_offset + blur_bytes_cnt;
|
|
687
|
+
var blur_line_offset = blur_tmp_offset + blur_bytes_cnt;
|
|
688
|
+
var blur_coeffs_offset = blur_line_offset + blur_line_byte_cnt;
|
|
689
|
+
var instance = this.__instance("unsharp_mask", img_bytes_cnt + hsv_bytes_cnt + blur_bytes_cnt * 2 + blur_line_byte_cnt + blur_coeffs_byte_cnt, {
|
|
690
|
+
exp: Math.exp
|
|
691
|
+
});
|
|
692
|
+
var img32 = new Uint32Array(img.buffer);
|
|
693
|
+
var mem32 = new Uint32Array(this.__memory.buffer);
|
|
694
|
+
mem32.set(img32);
|
|
695
|
+
var fn = instance.exports.hsv_v16 || instance.exports._hsv_v16;
|
|
696
|
+
fn(img_offset, hsv_offset, width, height);
|
|
697
|
+
fn = instance.exports.blurMono16 || instance.exports._blurMono16;
|
|
698
|
+
fn(hsv_offset, blur_offset, blur_tmp_offset, blur_line_offset, blur_coeffs_offset, width, height, radius);
|
|
699
|
+
fn = instance.exports.unsharp || instance.exports._unsharp;
|
|
700
|
+
fn(img_offset, img_offset, hsv_offset, blur_offset, width, height, amount, threshold);
|
|
701
|
+
img32.set(new Uint32Array(this.__memory.buffer, 0, pixels));
|
|
702
|
+
};
|
|
703
|
+
}, {}], 12: [function(_dereq_, module2, exports2) {
|
|
704
|
+
module2.exports = "AGFzbQEAAAAADAZkeWxpbmsAAAAAAAE0B2AAAGAEf39/fwBgBn9/f39/fwBgCH9/f39/f39/AGAIf39/f39/f30AYAJ9fwBgAXwBfAIZAgNlbnYDZXhwAAYDZW52Bm1lbW9yeQIAAAMHBgAFAgQBAwYGAX8AQQALB4oBCBFfX3dhc21fY2FsbF9jdG9ycwABFl9fYnVpbGRfZ2F1c3NpYW5fY29lZnMAAg5fX2dhdXNzMTZfbGluZQADCmJsdXJNb25vMTYABAdoc3ZfdjE2AAUHdW5zaGFycAAGDF9fZHNvX2hhbmRsZQMAGF9fd2FzbV9hcHBseV9kYXRhX3JlbG9jcwABCsUMBgMAAQvWAQEHfCABRNuGukOCGvs/IAC7oyICRAAAAAAAAADAohAAIgW2jDgCFCABIAKaEAAiAyADoCIGtjgCECABRAAAAAAAAPA/IAOhIgQgBKIgAyACIAKgokQAAAAAAADwP6AgBaGjIgS2OAIAIAEgBSAEmqIiB7Y4AgwgASADIAJEAAAAAAAA8D+gIASioiIItjgCCCABIAMgAkQAAAAAAADwv6AgBKKiIgK2OAIEIAEgByAIoCAFRAAAAAAAAPA/IAahoCIDo7Y4AhwgASAEIAKgIAOjtjgCGAuGBQMGfwl8An0gAyoCDCEVIAMqAgghFiADKgIUuyERIAMqAhC7IRACQCAEQQFrIghBAEgiCQRAIAIhByAAIQYMAQsgAiAALwEAuCIPIAMqAhi7oiIMIBGiIg0gDCAQoiAPIAMqAgS7IhOiIhQgAyoCALsiEiAPoqCgoCIOtjgCACACQQRqIQcgAEECaiEGIAhFDQAgCEEBIAhBAUgbIgpBf3MhCwJ/IAQgCmtBAXFFBEAgDiENIAgMAQsgAiANIA4gEKIgFCASIAAvAQK4Ig+ioKCgIg22OAIEIAJBCGohByAAQQRqIQYgDiEMIARBAmsLIQIgC0EAIARrRg0AA0AgByAMIBGiIA0gEKIgDyAToiASIAYvAQC4Ig6ioKCgIgy2OAIAIAcgDSARoiAMIBCiIA4gE6IgEiAGLwECuCIPoqCgoCINtjgCBCAHQQhqIQcgBkEEaiEGIAJBAkohACACQQJrIQIgAA0ACwsCQCAJDQAgASAFIAhsQQF0aiIAAn8gBkECay8BACICuCINIBW7IhKiIA0gFrsiE6KgIA0gAyoCHLuiIgwgEKKgIAwgEaKgIg8gB0EEayIHKgIAu6AiDkQAAAAAAADwQWMgDkQAAAAAAAAAAGZxBEAgDqsMAQtBAAs7AQAgCEUNACAGQQRrIQZBACAFa0EBdCEBA0ACfyANIBKiIAJB//8DcbgiDSAToqAgDyIOIBCioCAMIBGioCIPIAdBBGsiByoCALugIgxEAAAAAAAA8EFjIAxEAAAAAAAAAABmcQRAIAyrDAELQQALIQMgBi8BACECIAAgAWoiACADOwEAIAZBAmshBiAIQQFKIQMgDiEMIAhBAWshCCADDQALCwvRAgIBfwd8AkAgB0MAAAAAWw0AIARE24a6Q4Ia+z8gB0MAAAA/l7ujIglEAAAAAAAAAMCiEAAiDLaMOAIUIAQgCZoQACIKIAqgIg22OAIQIAREAAAAAAAA8D8gCqEiCyALoiAKIAkgCaCiRAAAAAAAAPA/oCAMoaMiC7Y4AgAgBCAMIAuaoiIOtjgCDCAEIAogCUQAAAAAAADwP6AgC6KiIg+2OAIIIAQgCiAJRAAAAAAAAPC/oCALoqIiCbY4AgQgBCAOIA+gIAxEAAAAAAAA8D8gDaGgIgqjtjgCHCAEIAsgCaAgCqO2OAIYIAYEQANAIAAgBSAIbEEBdGogAiAIQQF0aiADIAQgBSAGEAMgCEEBaiIIIAZHDQALCyAFRQ0AQQAhCANAIAIgBiAIbEEBdGogASAIQQF0aiADIAQgBiAFEAMgCEEBaiIIIAVHDQALCwtxAQN/IAIgA2wiBQRAA0AgASAAKAIAIgRBEHZB/wFxIgIgAiAEQQh2Qf8BcSIDIAMgBEH/AXEiBEkbIAIgA0sbIgYgBiAEIAIgBEsbIAMgBEsbQQh0OwEAIAFBAmohASAAQQRqIQAgBUEBayIFDQALCwuZAgIDfwF8IAQgBWwhBAJ/IAazQwAAgEWUQwAAyEKVu0QAAAAAAADgP6AiC5lEAAAAAAAA4EFjBEAgC6oMAQtBgICAgHgLIQUgBARAIAdBCHQhCUEAIQYDQCAJIAIgBkEBdCIHai8BACIBIAMgB2ovAQBrIgcgB0EfdSIIaiAIc00EQCAAIAZBAnQiCGoiCiAFIAdsQYAQakEMdSABaiIHQYD+AyAHQYD+A0gbIgdBACAHQQBKG0EMdCABQQEgARtuIgEgCi0AAGxBgBBqQQx2OgAAIAAgCEEBcmoiByABIActAABsQYAQakEMdjoAACAAIAhBAnJqIgcgASAHLQAAbEGAEGpBDHY6AAALIAZBAWoiBiAERw0ACwsL";
|
|
705
|
+
}, {}], 13: [function(_dereq_, module2, exports2) {
|
|
706
|
+
var GC_INTERVAL = 100;
|
|
707
|
+
function Pool(create, idle) {
|
|
708
|
+
this.create = create;
|
|
709
|
+
this.available = [];
|
|
710
|
+
this.acquired = {};
|
|
711
|
+
this.lastId = 1;
|
|
712
|
+
this.timeoutId = 0;
|
|
713
|
+
this.idle = idle || 2e3;
|
|
714
|
+
}
|
|
715
|
+
Pool.prototype.acquire = function() {
|
|
716
|
+
var _this = this;
|
|
717
|
+
var resource;
|
|
718
|
+
if (this.available.length !== 0) {
|
|
719
|
+
resource = this.available.pop();
|
|
720
|
+
} else {
|
|
721
|
+
resource = this.create();
|
|
722
|
+
resource.id = this.lastId++;
|
|
723
|
+
resource.release = function() {
|
|
724
|
+
return _this.release(resource);
|
|
725
|
+
};
|
|
726
|
+
}
|
|
727
|
+
this.acquired[resource.id] = resource;
|
|
728
|
+
return resource;
|
|
729
|
+
};
|
|
730
|
+
Pool.prototype.release = function(resource) {
|
|
731
|
+
var _this2 = this;
|
|
732
|
+
delete this.acquired[resource.id];
|
|
733
|
+
resource.lastUsed = Date.now();
|
|
734
|
+
this.available.push(resource);
|
|
735
|
+
if (this.timeoutId === 0) {
|
|
736
|
+
this.timeoutId = setTimeout(function() {
|
|
737
|
+
return _this2.gc();
|
|
738
|
+
}, GC_INTERVAL);
|
|
739
|
+
}
|
|
740
|
+
};
|
|
741
|
+
Pool.prototype.gc = function() {
|
|
742
|
+
var _this3 = this;
|
|
743
|
+
var now = Date.now();
|
|
744
|
+
this.available = this.available.filter(function(resource) {
|
|
745
|
+
if (now - resource.lastUsed > _this3.idle) {
|
|
746
|
+
resource.destroy();
|
|
747
|
+
return false;
|
|
748
|
+
}
|
|
749
|
+
return true;
|
|
750
|
+
});
|
|
751
|
+
if (this.available.length !== 0) {
|
|
752
|
+
this.timeoutId = setTimeout(function() {
|
|
753
|
+
return _this3.gc();
|
|
754
|
+
}, GC_INTERVAL);
|
|
755
|
+
} else {
|
|
756
|
+
this.timeoutId = 0;
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
module2.exports = Pool;
|
|
760
|
+
}, {}], 14: [function(_dereq_, module2, exports2) {
|
|
761
|
+
var MIN_INNER_TILE_SIZE = 2;
|
|
762
|
+
module2.exports = function createStages(fromWidth, fromHeight, toWidth, toHeight, srcTileSize, destTileBorder) {
|
|
763
|
+
var scaleX = toWidth / fromWidth;
|
|
764
|
+
var scaleY = toHeight / fromHeight;
|
|
765
|
+
var minScale = (2 * destTileBorder + MIN_INNER_TILE_SIZE + 1) / srcTileSize;
|
|
766
|
+
if (minScale > 0.5) return [[toWidth, toHeight]];
|
|
767
|
+
var stageCount = Math.ceil(Math.log(Math.min(scaleX, scaleY)) / Math.log(minScale));
|
|
768
|
+
if (stageCount <= 1) return [[toWidth, toHeight]];
|
|
769
|
+
var result = [];
|
|
770
|
+
for (var i = 0; i < stageCount; i++) {
|
|
771
|
+
var width = Math.round(Math.pow(Math.pow(fromWidth, stageCount - i - 1) * Math.pow(toWidth, i + 1), 1 / stageCount));
|
|
772
|
+
var height = Math.round(Math.pow(Math.pow(fromHeight, stageCount - i - 1) * Math.pow(toHeight, i + 1), 1 / stageCount));
|
|
773
|
+
result.push([width, height]);
|
|
774
|
+
}
|
|
775
|
+
return result;
|
|
776
|
+
};
|
|
777
|
+
}, {}], 15: [function(_dereq_, module2, exports2) {
|
|
778
|
+
var PIXEL_EPSILON = 1e-5;
|
|
779
|
+
function pixelFloor(x) {
|
|
780
|
+
var nearest = Math.round(x);
|
|
781
|
+
if (Math.abs(x - nearest) < PIXEL_EPSILON) {
|
|
782
|
+
return nearest;
|
|
783
|
+
}
|
|
784
|
+
return Math.floor(x);
|
|
785
|
+
}
|
|
786
|
+
function pixelCeil(x) {
|
|
787
|
+
var nearest = Math.round(x);
|
|
788
|
+
if (Math.abs(x - nearest) < PIXEL_EPSILON) {
|
|
789
|
+
return nearest;
|
|
790
|
+
}
|
|
791
|
+
return Math.ceil(x);
|
|
792
|
+
}
|
|
793
|
+
module2.exports = function createRegions(options) {
|
|
794
|
+
var scaleX = options.toWidth / options.width;
|
|
795
|
+
var scaleY = options.toHeight / options.height;
|
|
796
|
+
var innerTileWidth = pixelFloor(options.srcTileSize * scaleX) - 2 * options.destTileBorder;
|
|
797
|
+
var innerTileHeight = pixelFloor(options.srcTileSize * scaleY) - 2 * options.destTileBorder;
|
|
798
|
+
if (innerTileWidth < 1 || innerTileHeight < 1) {
|
|
799
|
+
throw new Error("Internal error in pica: target tile width/height is too small.");
|
|
800
|
+
}
|
|
801
|
+
var x, y;
|
|
802
|
+
var innerX, innerY, toTileWidth, toTileHeight;
|
|
803
|
+
var tiles = [];
|
|
804
|
+
var tile;
|
|
805
|
+
for (innerY = 0; innerY < options.toHeight; innerY += innerTileHeight) {
|
|
806
|
+
for (innerX = 0; innerX < options.toWidth; innerX += innerTileWidth) {
|
|
807
|
+
x = innerX - options.destTileBorder;
|
|
808
|
+
if (x < 0) {
|
|
809
|
+
x = 0;
|
|
810
|
+
}
|
|
811
|
+
toTileWidth = innerX + innerTileWidth + options.destTileBorder - x;
|
|
812
|
+
if (x + toTileWidth >= options.toWidth) {
|
|
813
|
+
toTileWidth = options.toWidth - x;
|
|
814
|
+
}
|
|
815
|
+
y = innerY - options.destTileBorder;
|
|
816
|
+
if (y < 0) {
|
|
817
|
+
y = 0;
|
|
818
|
+
}
|
|
819
|
+
toTileHeight = innerY + innerTileHeight + options.destTileBorder - y;
|
|
820
|
+
if (y + toTileHeight >= options.toHeight) {
|
|
821
|
+
toTileHeight = options.toHeight - y;
|
|
822
|
+
}
|
|
823
|
+
tile = {
|
|
824
|
+
toX: x,
|
|
825
|
+
toY: y,
|
|
826
|
+
toWidth: toTileWidth,
|
|
827
|
+
toHeight: toTileHeight,
|
|
828
|
+
toInnerX: innerX,
|
|
829
|
+
toInnerY: innerY,
|
|
830
|
+
toInnerWidth: innerTileWidth,
|
|
831
|
+
toInnerHeight: innerTileHeight,
|
|
832
|
+
offsetX: x / scaleX - pixelFloor(x / scaleX),
|
|
833
|
+
offsetY: y / scaleY - pixelFloor(y / scaleY),
|
|
834
|
+
scaleX,
|
|
835
|
+
scaleY,
|
|
836
|
+
x: pixelFloor(x / scaleX),
|
|
837
|
+
y: pixelFloor(y / scaleY),
|
|
838
|
+
width: pixelCeil(toTileWidth / scaleX),
|
|
839
|
+
height: pixelCeil(toTileHeight / scaleY)
|
|
840
|
+
};
|
|
841
|
+
tiles.push(tile);
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
return tiles;
|
|
845
|
+
};
|
|
846
|
+
}, {}], 16: [function(_dereq_, module2, exports2) {
|
|
847
|
+
function objClass(obj) {
|
|
848
|
+
return Object.prototype.toString.call(obj);
|
|
849
|
+
}
|
|
850
|
+
module2.exports.isCanvas = function isCanvas(element) {
|
|
851
|
+
var cname = objClass(element);
|
|
852
|
+
return cname === "[object HTMLCanvasElement]" || cname === "[object OffscreenCanvas]" || cname === "[object Canvas]";
|
|
853
|
+
};
|
|
854
|
+
module2.exports.isImage = function isImage(element) {
|
|
855
|
+
return objClass(element) === "[object HTMLImageElement]";
|
|
856
|
+
};
|
|
857
|
+
module2.exports.isImageBitmap = function isImageBitmap(element) {
|
|
858
|
+
return objClass(element) === "[object ImageBitmap]";
|
|
859
|
+
};
|
|
860
|
+
module2.exports.limiter = function limiter(concurrency) {
|
|
861
|
+
var active = 0, queue = [];
|
|
862
|
+
function roll() {
|
|
863
|
+
if (active < concurrency && queue.length) {
|
|
864
|
+
active++;
|
|
865
|
+
queue.shift()();
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
return function limit(fn) {
|
|
869
|
+
return new Promise(function(resolve, reject) {
|
|
870
|
+
queue.push(function() {
|
|
871
|
+
fn().then(function(result) {
|
|
872
|
+
resolve(result);
|
|
873
|
+
active--;
|
|
874
|
+
roll();
|
|
875
|
+
}, function(err) {
|
|
876
|
+
reject(err);
|
|
877
|
+
active--;
|
|
878
|
+
roll();
|
|
879
|
+
});
|
|
880
|
+
});
|
|
881
|
+
roll();
|
|
882
|
+
});
|
|
883
|
+
};
|
|
884
|
+
};
|
|
885
|
+
module2.exports.cib_quality_name = function cib_quality_name(num) {
|
|
886
|
+
switch (num) {
|
|
887
|
+
case 0:
|
|
888
|
+
return "pixelated";
|
|
889
|
+
case 1:
|
|
890
|
+
return "low";
|
|
891
|
+
case 2:
|
|
892
|
+
return "medium";
|
|
893
|
+
}
|
|
894
|
+
return "high";
|
|
895
|
+
};
|
|
896
|
+
module2.exports.cib_support = function cib_support(createCanvas) {
|
|
897
|
+
return Promise.resolve().then(function() {
|
|
898
|
+
if (typeof createImageBitmap === "undefined") {
|
|
899
|
+
return false;
|
|
900
|
+
}
|
|
901
|
+
var c = createCanvas(100, 100);
|
|
902
|
+
return createImageBitmap(c, 0, 0, 100, 100, {
|
|
903
|
+
resizeWidth: 10,
|
|
904
|
+
resizeHeight: 10,
|
|
905
|
+
resizeQuality: "high"
|
|
906
|
+
}).then(function(bitmap) {
|
|
907
|
+
var status = bitmap.width === 10;
|
|
908
|
+
bitmap.close();
|
|
909
|
+
c = null;
|
|
910
|
+
return status;
|
|
911
|
+
});
|
|
912
|
+
})["catch"](function() {
|
|
913
|
+
return false;
|
|
914
|
+
});
|
|
915
|
+
};
|
|
916
|
+
module2.exports.worker_offscreen_canvas_support = function worker_offscreen_canvas_support() {
|
|
917
|
+
return new Promise(function(resolve, reject) {
|
|
918
|
+
if (typeof OffscreenCanvas === "undefined") {
|
|
919
|
+
resolve(false);
|
|
920
|
+
return;
|
|
921
|
+
}
|
|
922
|
+
function workerPayload(self2) {
|
|
923
|
+
if (typeof createImageBitmap === "undefined") {
|
|
924
|
+
self2.postMessage(false);
|
|
925
|
+
return;
|
|
926
|
+
}
|
|
927
|
+
Promise.resolve().then(function() {
|
|
928
|
+
var canvas = new OffscreenCanvas(10, 10);
|
|
929
|
+
var ctx = canvas.getContext("2d");
|
|
930
|
+
ctx.rect(0, 0, 1, 1);
|
|
931
|
+
return createImageBitmap(canvas, 0, 0, 1, 1);
|
|
932
|
+
}).then(function() {
|
|
933
|
+
return self2.postMessage(true);
|
|
934
|
+
}, function() {
|
|
935
|
+
return self2.postMessage(false);
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
var code = btoa("(".concat(workerPayload.toString(), ")(self);"));
|
|
939
|
+
var w = new Worker("data:text/javascript;base64,".concat(code));
|
|
940
|
+
w.onmessage = function(ev) {
|
|
941
|
+
return resolve(ev.data);
|
|
942
|
+
};
|
|
943
|
+
w.onerror = reject;
|
|
944
|
+
}).then(function(result) {
|
|
945
|
+
return result;
|
|
946
|
+
}, function() {
|
|
947
|
+
return false;
|
|
948
|
+
});
|
|
949
|
+
};
|
|
950
|
+
module2.exports.can_use_canvas = function can_use_canvas(createCanvas) {
|
|
951
|
+
var usable = false;
|
|
952
|
+
try {
|
|
953
|
+
var canvas = createCanvas(2, 1);
|
|
954
|
+
var ctx = canvas.getContext("2d");
|
|
955
|
+
var d = ctx.createImageData(2, 1);
|
|
956
|
+
d.data[0] = 12;
|
|
957
|
+
d.data[1] = 23;
|
|
958
|
+
d.data[2] = 34;
|
|
959
|
+
d.data[3] = 255;
|
|
960
|
+
d.data[4] = 45;
|
|
961
|
+
d.data[5] = 56;
|
|
962
|
+
d.data[6] = 67;
|
|
963
|
+
d.data[7] = 255;
|
|
964
|
+
ctx.putImageData(d, 0, 0);
|
|
965
|
+
d = null;
|
|
966
|
+
d = ctx.getImageData(0, 0, 2, 1);
|
|
967
|
+
if (d.data[0] === 12 && d.data[1] === 23 && d.data[2] === 34 && d.data[3] === 255 && d.data[4] === 45 && d.data[5] === 56 && d.data[6] === 67 && d.data[7] === 255) {
|
|
968
|
+
usable = true;
|
|
969
|
+
}
|
|
970
|
+
} catch (err) {
|
|
971
|
+
}
|
|
972
|
+
return usable;
|
|
973
|
+
};
|
|
974
|
+
module2.exports.cib_can_use_region = function cib_can_use_region() {
|
|
975
|
+
return new Promise(function(resolve) {
|
|
976
|
+
if (typeof Image === "undefined" || typeof createImageBitmap === "undefined") {
|
|
977
|
+
resolve(false);
|
|
978
|
+
return;
|
|
979
|
+
}
|
|
980
|
+
var image = new Image();
|
|
981
|
+
image.src = "data:image/jpeg;base64,/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRcZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRAf/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z";
|
|
982
|
+
image.onload = function() {
|
|
983
|
+
createImageBitmap(image, 0, 0, image.width, image.height).then(function(bitmap) {
|
|
984
|
+
if (bitmap.width === image.width && bitmap.height === image.height) {
|
|
985
|
+
resolve(true);
|
|
986
|
+
} else {
|
|
987
|
+
resolve(false);
|
|
988
|
+
}
|
|
989
|
+
}, function() {
|
|
990
|
+
return resolve(false);
|
|
991
|
+
});
|
|
992
|
+
};
|
|
993
|
+
image.onerror = function() {
|
|
994
|
+
return resolve(false);
|
|
995
|
+
};
|
|
996
|
+
});
|
|
997
|
+
};
|
|
998
|
+
}, {}], 17: [function(_dereq_, module2, exports2) {
|
|
999
|
+
module2.exports = function() {
|
|
1000
|
+
var MathLib = _dereq_("./mathlib");
|
|
1001
|
+
var mathLib;
|
|
1002
|
+
onmessage = function onmessage2(ev) {
|
|
1003
|
+
var tileOpts = ev.data.opts;
|
|
1004
|
+
if (!tileOpts.src && tileOpts.srcBitmap) {
|
|
1005
|
+
var canvas = new OffscreenCanvas(tileOpts.width, tileOpts.height);
|
|
1006
|
+
var ctx = canvas.getContext("2d");
|
|
1007
|
+
ctx.drawImage(tileOpts.srcBitmap, 0, 0);
|
|
1008
|
+
tileOpts.src = ctx.getImageData(0, 0, tileOpts.width, tileOpts.height).data;
|
|
1009
|
+
canvas.width = canvas.height = 0;
|
|
1010
|
+
canvas = null;
|
|
1011
|
+
tileOpts.srcBitmap.close();
|
|
1012
|
+
tileOpts.srcBitmap = null;
|
|
1013
|
+
}
|
|
1014
|
+
if (!mathLib) mathLib = new MathLib(ev.data.features);
|
|
1015
|
+
var data = mathLib.resizeAndUnsharp(tileOpts);
|
|
1016
|
+
{
|
|
1017
|
+
postMessage({
|
|
1018
|
+
data
|
|
1019
|
+
}, [data.buffer]);
|
|
1020
|
+
}
|
|
1021
|
+
};
|
|
1022
|
+
};
|
|
1023
|
+
}, { "./mathlib": 1 }], 18: [function(_dereq_, module2, exports2) {
|
|
1024
|
+
var a0, a1, a2, a3, b1, b2, left_corner, right_corner;
|
|
1025
|
+
function gaussCoef(sigma) {
|
|
1026
|
+
if (sigma < 0.5) {
|
|
1027
|
+
sigma = 0.5;
|
|
1028
|
+
}
|
|
1029
|
+
var a = Math.exp(0.726 * 0.726) / sigma, g1 = Math.exp(-a), g2 = Math.exp(-2 * a), k = (1 - g1) * (1 - g1) / (1 + 2 * a * g1 - g2);
|
|
1030
|
+
a0 = k;
|
|
1031
|
+
a1 = k * (a - 1) * g1;
|
|
1032
|
+
a2 = k * (a + 1) * g1;
|
|
1033
|
+
a3 = -k * g2;
|
|
1034
|
+
b1 = 2 * g1;
|
|
1035
|
+
b2 = -g2;
|
|
1036
|
+
left_corner = (a0 + a1) / (1 - b1 - b2);
|
|
1037
|
+
right_corner = (a2 + a3) / (1 - b1 - b2);
|
|
1038
|
+
return new Float32Array([a0, a1, a2, a3, b1, b2, left_corner, right_corner]);
|
|
1039
|
+
}
|
|
1040
|
+
function convolveMono16(src, out, line, coeff, width, height) {
|
|
1041
|
+
var prev_src, curr_src, curr_out, prev_out, prev_prev_out;
|
|
1042
|
+
var src_index, out_index, line_index;
|
|
1043
|
+
var i, j;
|
|
1044
|
+
var coeff_a0, coeff_a1, coeff_b1, coeff_b2;
|
|
1045
|
+
for (i = 0; i < height; i++) {
|
|
1046
|
+
src_index = i * width;
|
|
1047
|
+
out_index = i;
|
|
1048
|
+
line_index = 0;
|
|
1049
|
+
prev_src = src[src_index];
|
|
1050
|
+
prev_prev_out = prev_src * coeff[6];
|
|
1051
|
+
prev_out = prev_prev_out;
|
|
1052
|
+
coeff_a0 = coeff[0];
|
|
1053
|
+
coeff_a1 = coeff[1];
|
|
1054
|
+
coeff_b1 = coeff[4];
|
|
1055
|
+
coeff_b2 = coeff[5];
|
|
1056
|
+
for (j = 0; j < width; j++) {
|
|
1057
|
+
curr_src = src[src_index];
|
|
1058
|
+
curr_out = curr_src * coeff_a0 + prev_src * coeff_a1 + prev_out * coeff_b1 + prev_prev_out * coeff_b2;
|
|
1059
|
+
prev_prev_out = prev_out;
|
|
1060
|
+
prev_out = curr_out;
|
|
1061
|
+
prev_src = curr_src;
|
|
1062
|
+
line[line_index] = prev_out;
|
|
1063
|
+
line_index++;
|
|
1064
|
+
src_index++;
|
|
1065
|
+
}
|
|
1066
|
+
src_index--;
|
|
1067
|
+
line_index--;
|
|
1068
|
+
out_index += height * (width - 1);
|
|
1069
|
+
prev_src = src[src_index];
|
|
1070
|
+
prev_prev_out = prev_src * coeff[7];
|
|
1071
|
+
prev_out = prev_prev_out;
|
|
1072
|
+
curr_src = prev_src;
|
|
1073
|
+
coeff_a0 = coeff[2];
|
|
1074
|
+
coeff_a1 = coeff[3];
|
|
1075
|
+
for (j = width - 1; j >= 0; j--) {
|
|
1076
|
+
curr_out = curr_src * coeff_a0 + prev_src * coeff_a1 + prev_out * coeff_b1 + prev_prev_out * coeff_b2;
|
|
1077
|
+
prev_prev_out = prev_out;
|
|
1078
|
+
prev_out = curr_out;
|
|
1079
|
+
prev_src = curr_src;
|
|
1080
|
+
curr_src = src[src_index];
|
|
1081
|
+
out[out_index] = line[line_index] + prev_out;
|
|
1082
|
+
src_index--;
|
|
1083
|
+
line_index--;
|
|
1084
|
+
out_index -= height;
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
function blurMono16(src, width, height, radius) {
|
|
1089
|
+
if (!radius) {
|
|
1090
|
+
return;
|
|
1091
|
+
}
|
|
1092
|
+
var out = new Uint16Array(src.length), tmp_line = new Float32Array(Math.max(width, height));
|
|
1093
|
+
var coeff = gaussCoef(radius);
|
|
1094
|
+
convolveMono16(src, out, tmp_line, coeff, width, height);
|
|
1095
|
+
convolveMono16(out, src, tmp_line, coeff, height, width);
|
|
1096
|
+
}
|
|
1097
|
+
module2.exports = blurMono16;
|
|
1098
|
+
}, {}], 19: [function(_dereq_, module2, exports2) {
|
|
1099
|
+
var assign = _dereq_("object-assign");
|
|
1100
|
+
var base64decode = _dereq_("./lib/base64decode");
|
|
1101
|
+
var hasWebAssembly = _dereq_("./lib/wa_detect");
|
|
1102
|
+
var DEFAULT_OPTIONS = {
|
|
1103
|
+
js: true,
|
|
1104
|
+
wasm: true
|
|
1105
|
+
};
|
|
1106
|
+
function MultiMath(options) {
|
|
1107
|
+
if (!(this instanceof MultiMath)) return new MultiMath(options);
|
|
1108
|
+
var opts = assign({}, DEFAULT_OPTIONS, options || {});
|
|
1109
|
+
this.options = opts;
|
|
1110
|
+
this.__cache = {};
|
|
1111
|
+
this.__init_promise = null;
|
|
1112
|
+
this.__modules = opts.modules || {};
|
|
1113
|
+
this.__memory = null;
|
|
1114
|
+
this.__wasm = {};
|
|
1115
|
+
this.__isLE = new Uint32Array(new Uint8Array([1, 0, 0, 0]).buffer)[0] === 1;
|
|
1116
|
+
if (!this.options.js && !this.options.wasm) {
|
|
1117
|
+
throw new Error('mathlib: at least "js" or "wasm" should be enabled');
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
MultiMath.prototype.has_wasm = hasWebAssembly;
|
|
1121
|
+
MultiMath.prototype.use = function(module3) {
|
|
1122
|
+
this.__modules[module3.name] = module3;
|
|
1123
|
+
if (this.options.wasm && this.has_wasm() && module3.wasm_fn) {
|
|
1124
|
+
this[module3.name] = module3.wasm_fn;
|
|
1125
|
+
} else {
|
|
1126
|
+
this[module3.name] = module3.fn;
|
|
1127
|
+
}
|
|
1128
|
+
return this;
|
|
1129
|
+
};
|
|
1130
|
+
MultiMath.prototype.init = function() {
|
|
1131
|
+
if (this.__init_promise) return this.__init_promise;
|
|
1132
|
+
if (!this.options.js && this.options.wasm && !this.has_wasm()) {
|
|
1133
|
+
return Promise.reject(new Error(`mathlib: only "wasm" was enabled, but it's not supported`));
|
|
1134
|
+
}
|
|
1135
|
+
var self2 = this;
|
|
1136
|
+
this.__init_promise = Promise.all(Object.keys(self2.__modules).map(function(name) {
|
|
1137
|
+
var module3 = self2.__modules[name];
|
|
1138
|
+
if (!self2.options.wasm || !self2.has_wasm() || !module3.wasm_fn) return null;
|
|
1139
|
+
if (self2.__wasm[name]) return null;
|
|
1140
|
+
return WebAssembly.compile(self2.__base64decode(module3.wasm_src)).then(function(m) {
|
|
1141
|
+
self2.__wasm[name] = m;
|
|
1142
|
+
});
|
|
1143
|
+
})).then(function() {
|
|
1144
|
+
return self2;
|
|
1145
|
+
});
|
|
1146
|
+
return this.__init_promise;
|
|
1147
|
+
};
|
|
1148
|
+
MultiMath.prototype.__base64decode = base64decode;
|
|
1149
|
+
MultiMath.prototype.__reallocate = function mem_grow_to(bytes) {
|
|
1150
|
+
if (!this.__memory) {
|
|
1151
|
+
this.__memory = new WebAssembly.Memory({
|
|
1152
|
+
initial: Math.ceil(bytes / (64 * 1024))
|
|
1153
|
+
});
|
|
1154
|
+
return this.__memory;
|
|
1155
|
+
}
|
|
1156
|
+
var mem_size = this.__memory.buffer.byteLength;
|
|
1157
|
+
if (mem_size < bytes) {
|
|
1158
|
+
this.__memory.grow(Math.ceil((bytes - mem_size) / (64 * 1024)));
|
|
1159
|
+
}
|
|
1160
|
+
return this.__memory;
|
|
1161
|
+
};
|
|
1162
|
+
MultiMath.prototype.__instance = function instance(name, memsize, env_extra) {
|
|
1163
|
+
if (memsize) this.__reallocate(memsize);
|
|
1164
|
+
if (!this.__wasm[name]) {
|
|
1165
|
+
var module3 = this.__modules[name];
|
|
1166
|
+
this.__wasm[name] = new WebAssembly.Module(this.__base64decode(module3.wasm_src));
|
|
1167
|
+
}
|
|
1168
|
+
if (!this.__cache[name]) {
|
|
1169
|
+
var env_base = {
|
|
1170
|
+
memoryBase: 0,
|
|
1171
|
+
memory: this.__memory,
|
|
1172
|
+
tableBase: 0,
|
|
1173
|
+
table: new WebAssembly.Table({ initial: 0, element: "anyfunc" })
|
|
1174
|
+
};
|
|
1175
|
+
this.__cache[name] = new WebAssembly.Instance(this.__wasm[name], {
|
|
1176
|
+
env: assign(env_base, env_extra || {})
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
return this.__cache[name];
|
|
1180
|
+
};
|
|
1181
|
+
MultiMath.prototype.__align = function align(number, base) {
|
|
1182
|
+
base = base || 8;
|
|
1183
|
+
var reminder = number % base;
|
|
1184
|
+
return number + (reminder ? base - reminder : 0);
|
|
1185
|
+
};
|
|
1186
|
+
module2.exports = MultiMath;
|
|
1187
|
+
}, { "./lib/base64decode": 20, "./lib/wa_detect": 21, "object-assign": 22 }], 20: [function(_dereq_, module2, exports2) {
|
|
1188
|
+
var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
1189
|
+
module2.exports = function base64decode(str) {
|
|
1190
|
+
var input = str.replace(/[\r\n=]/g, ""), max = input.length;
|
|
1191
|
+
var out = new Uint8Array(max * 3 >> 2);
|
|
1192
|
+
var bits = 0;
|
|
1193
|
+
var ptr = 0;
|
|
1194
|
+
for (var idx = 0; idx < max; idx++) {
|
|
1195
|
+
if (idx % 4 === 0 && idx) {
|
|
1196
|
+
out[ptr++] = bits >> 16 & 255;
|
|
1197
|
+
out[ptr++] = bits >> 8 & 255;
|
|
1198
|
+
out[ptr++] = bits & 255;
|
|
1199
|
+
}
|
|
1200
|
+
bits = bits << 6 | BASE64_MAP.indexOf(input.charAt(idx));
|
|
1201
|
+
}
|
|
1202
|
+
var tailbits = max % 4 * 6;
|
|
1203
|
+
if (tailbits === 0) {
|
|
1204
|
+
out[ptr++] = bits >> 16 & 255;
|
|
1205
|
+
out[ptr++] = bits >> 8 & 255;
|
|
1206
|
+
out[ptr++] = bits & 255;
|
|
1207
|
+
} else if (tailbits === 18) {
|
|
1208
|
+
out[ptr++] = bits >> 10 & 255;
|
|
1209
|
+
out[ptr++] = bits >> 2 & 255;
|
|
1210
|
+
} else if (tailbits === 12) {
|
|
1211
|
+
out[ptr++] = bits >> 4 & 255;
|
|
1212
|
+
}
|
|
1213
|
+
return out;
|
|
1214
|
+
};
|
|
1215
|
+
}, {}], 21: [function(_dereq_, module2, exports2) {
|
|
1216
|
+
var wa;
|
|
1217
|
+
module2.exports = function hasWebAssembly() {
|
|
1218
|
+
if (typeof wa !== "undefined") return wa;
|
|
1219
|
+
wa = false;
|
|
1220
|
+
if (typeof WebAssembly === "undefined") return wa;
|
|
1221
|
+
try {
|
|
1222
|
+
var bin = new Uint8Array([0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 1, 127, 1, 127, 3, 2, 1, 0, 5, 3, 1, 0, 1, 7, 8, 1, 4, 116, 101, 115, 116, 0, 0, 10, 16, 1, 14, 0, 32, 0, 65, 1, 54, 2, 0, 32, 0, 40, 2, 0, 11]);
|
|
1223
|
+
var module3 = new WebAssembly.Module(bin);
|
|
1224
|
+
var instance = new WebAssembly.Instance(module3, {});
|
|
1225
|
+
if (instance.exports.test(4) !== 0) wa = true;
|
|
1226
|
+
return wa;
|
|
1227
|
+
} catch (__) {
|
|
1228
|
+
}
|
|
1229
|
+
return wa;
|
|
1230
|
+
};
|
|
1231
|
+
}, {}], 22: [function(_dereq_, module2, exports2) {
|
|
1232
|
+
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
|
|
1233
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
1234
|
+
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
|
1235
|
+
function toObject(val) {
|
|
1236
|
+
if (val === null || val === void 0) {
|
|
1237
|
+
throw new TypeError("Object.assign cannot be called with null or undefined");
|
|
1238
|
+
}
|
|
1239
|
+
return Object(val);
|
|
1240
|
+
}
|
|
1241
|
+
function shouldUseNative() {
|
|
1242
|
+
try {
|
|
1243
|
+
if (!Object.assign) {
|
|
1244
|
+
return false;
|
|
1245
|
+
}
|
|
1246
|
+
var test1 = new String("abc");
|
|
1247
|
+
test1[5] = "de";
|
|
1248
|
+
if (Object.getOwnPropertyNames(test1)[0] === "5") {
|
|
1249
|
+
return false;
|
|
1250
|
+
}
|
|
1251
|
+
var test2 = {};
|
|
1252
|
+
for (var i = 0; i < 10; i++) {
|
|
1253
|
+
test2["_" + String.fromCharCode(i)] = i;
|
|
1254
|
+
}
|
|
1255
|
+
var order2 = Object.getOwnPropertyNames(test2).map(function(n) {
|
|
1256
|
+
return test2[n];
|
|
1257
|
+
});
|
|
1258
|
+
if (order2.join("") !== "0123456789") {
|
|
1259
|
+
return false;
|
|
1260
|
+
}
|
|
1261
|
+
var test3 = {};
|
|
1262
|
+
"abcdefghijklmnopqrst".split("").forEach(function(letter) {
|
|
1263
|
+
test3[letter] = letter;
|
|
1264
|
+
});
|
|
1265
|
+
if (Object.keys(Object.assign({}, test3)).join("") !== "abcdefghijklmnopqrst") {
|
|
1266
|
+
return false;
|
|
1267
|
+
}
|
|
1268
|
+
return true;
|
|
1269
|
+
} catch (err) {
|
|
1270
|
+
return false;
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
module2.exports = shouldUseNative() ? Object.assign : function(target, source) {
|
|
1274
|
+
var from;
|
|
1275
|
+
var to = toObject(target);
|
|
1276
|
+
var symbols;
|
|
1277
|
+
for (var s = 1; s < arguments.length; s++) {
|
|
1278
|
+
from = Object(arguments[s]);
|
|
1279
|
+
for (var key in from) {
|
|
1280
|
+
if (hasOwnProperty.call(from, key)) {
|
|
1281
|
+
to[key] = from[key];
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
if (getOwnPropertySymbols) {
|
|
1285
|
+
symbols = getOwnPropertySymbols(from);
|
|
1286
|
+
for (var i = 0; i < symbols.length; i++) {
|
|
1287
|
+
if (propIsEnumerable.call(from, symbols[i])) {
|
|
1288
|
+
to[symbols[i]] = from[symbols[i]];
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
}
|
|
1292
|
+
}
|
|
1293
|
+
return to;
|
|
1294
|
+
};
|
|
1295
|
+
}, {}], 23: [function(_dereq_, module2, exports2) {
|
|
1296
|
+
var bundleFn = arguments[3];
|
|
1297
|
+
var sources = arguments[4];
|
|
1298
|
+
var cache = arguments[5];
|
|
1299
|
+
var stringify = JSON.stringify;
|
|
1300
|
+
module2.exports = function(fn, options) {
|
|
1301
|
+
var wkey;
|
|
1302
|
+
var cacheKeys = Object.keys(cache);
|
|
1303
|
+
for (var i = 0, l = cacheKeys.length; i < l; i++) {
|
|
1304
|
+
var key = cacheKeys[i];
|
|
1305
|
+
var exp = cache[key].exports;
|
|
1306
|
+
if (exp === fn || exp && exp.default === fn) {
|
|
1307
|
+
wkey = key;
|
|
1308
|
+
break;
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
if (!wkey) {
|
|
1312
|
+
wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);
|
|
1313
|
+
var wcache = {};
|
|
1314
|
+
for (var i = 0, l = cacheKeys.length; i < l; i++) {
|
|
1315
|
+
var key = cacheKeys[i];
|
|
1316
|
+
wcache[key] = key;
|
|
1317
|
+
}
|
|
1318
|
+
sources[wkey] = [
|
|
1319
|
+
"function(require,module,exports){" + fn + "(self); }",
|
|
1320
|
+
wcache
|
|
1321
|
+
];
|
|
1322
|
+
}
|
|
1323
|
+
var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);
|
|
1324
|
+
var scache = {};
|
|
1325
|
+
scache[wkey] = wkey;
|
|
1326
|
+
sources[skey] = [
|
|
1327
|
+
"function(require,module,exports){var f = require(" + stringify(wkey) + ");(f.default ? f.default : f)(self);}",
|
|
1328
|
+
scache
|
|
1329
|
+
];
|
|
1330
|
+
var workerSources = {};
|
|
1331
|
+
resolveSources(skey);
|
|
1332
|
+
function resolveSources(key2) {
|
|
1333
|
+
workerSources[key2] = true;
|
|
1334
|
+
for (var depPath in sources[key2][1]) {
|
|
1335
|
+
var depKey = sources[key2][1][depPath];
|
|
1336
|
+
if (!workerSources[depKey]) {
|
|
1337
|
+
resolveSources(depKey);
|
|
1338
|
+
}
|
|
1339
|
+
}
|
|
1340
|
+
}
|
|
1341
|
+
var src = "(" + bundleFn + ")({" + Object.keys(workerSources).map(function(key2) {
|
|
1342
|
+
return stringify(key2) + ":[" + sources[key2][0] + "," + stringify(sources[key2][1]) + "]";
|
|
1343
|
+
}).join(",") + "},{},[" + stringify(skey) + "])";
|
|
1344
|
+
var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
|
|
1345
|
+
var blob2 = new Blob([src], { type: "text/javascript" });
|
|
1346
|
+
if (options && options.bare) {
|
|
1347
|
+
return blob2;
|
|
1348
|
+
}
|
|
1349
|
+
var workerUrl = URL.createObjectURL(blob2);
|
|
1350
|
+
var worker = new Worker(workerUrl);
|
|
1351
|
+
worker.objectURL = workerUrl;
|
|
1352
|
+
return worker;
|
|
1353
|
+
};
|
|
1354
|
+
}, {}], "/index.js": [function(_dereq_, module2, exports2) {
|
|
1355
|
+
function _slicedToArray(arr, i) {
|
|
1356
|
+
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
|
|
1357
|
+
}
|
|
1358
|
+
function _nonIterableRest() {
|
|
1359
|
+
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
1360
|
+
}
|
|
1361
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
1362
|
+
if (!o) return;
|
|
1363
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
1364
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
1365
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
1366
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
1367
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
1368
|
+
}
|
|
1369
|
+
function _arrayLikeToArray(arr, len) {
|
|
1370
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
1371
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
1372
|
+
arr2[i] = arr[i];
|
|
1373
|
+
}
|
|
1374
|
+
return arr2;
|
|
1375
|
+
}
|
|
1376
|
+
function _iterableToArrayLimit(arr, i) {
|
|
1377
|
+
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
1378
|
+
if (_i == null) return;
|
|
1379
|
+
var _arr = [];
|
|
1380
|
+
var _n = true;
|
|
1381
|
+
var _d = false;
|
|
1382
|
+
var _s, _e;
|
|
1383
|
+
try {
|
|
1384
|
+
for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
|
|
1385
|
+
_arr.push(_s.value);
|
|
1386
|
+
if (i && _arr.length === i) break;
|
|
1387
|
+
}
|
|
1388
|
+
} catch (err) {
|
|
1389
|
+
_d = true;
|
|
1390
|
+
_e = err;
|
|
1391
|
+
} finally {
|
|
1392
|
+
try {
|
|
1393
|
+
if (!_n && _i["return"] != null) _i["return"]();
|
|
1394
|
+
} finally {
|
|
1395
|
+
if (_d) throw _e;
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
return _arr;
|
|
1399
|
+
}
|
|
1400
|
+
function _arrayWithHoles(arr) {
|
|
1401
|
+
if (Array.isArray(arr)) return arr;
|
|
1402
|
+
}
|
|
1403
|
+
var assign = _dereq_("object-assign");
|
|
1404
|
+
var webworkify = _dereq_("webworkify");
|
|
1405
|
+
var MathLib = _dereq_("./lib/mathlib");
|
|
1406
|
+
var Pool = _dereq_("./lib/pool");
|
|
1407
|
+
var utils = _dereq_("./lib/utils");
|
|
1408
|
+
var worker = _dereq_("./lib/worker");
|
|
1409
|
+
var createStages = _dereq_("./lib/stepper");
|
|
1410
|
+
var createRegions = _dereq_("./lib/tiler");
|
|
1411
|
+
var filter_info = _dereq_("./lib/mm_resize/resize_filter_info");
|
|
1412
|
+
var singletones = {};
|
|
1413
|
+
var NEED_SAFARI_FIX = false;
|
|
1414
|
+
try {
|
|
1415
|
+
if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
1416
|
+
NEED_SAFARI_FIX = navigator.userAgent.indexOf("Safari") >= 0;
|
|
1417
|
+
}
|
|
1418
|
+
} catch (e) {
|
|
1419
|
+
}
|
|
1420
|
+
var concurrency = 1;
|
|
1421
|
+
if (typeof navigator !== "undefined") {
|
|
1422
|
+
concurrency = Math.min(navigator.hardwareConcurrency || 1, 4);
|
|
1423
|
+
}
|
|
1424
|
+
var DEFAULT_PICA_OPTS = {
|
|
1425
|
+
tile: 1024,
|
|
1426
|
+
concurrency,
|
|
1427
|
+
features: ["js", "wasm", "ww"],
|
|
1428
|
+
idle: 2e3,
|
|
1429
|
+
createCanvas: function createCanvas(width, height) {
|
|
1430
|
+
var tmpCanvas = document.createElement("canvas");
|
|
1431
|
+
tmpCanvas.width = width;
|
|
1432
|
+
tmpCanvas.height = height;
|
|
1433
|
+
return tmpCanvas;
|
|
1434
|
+
}
|
|
1435
|
+
};
|
|
1436
|
+
var DEFAULT_RESIZE_OPTS = {
|
|
1437
|
+
filter: "mks2013",
|
|
1438
|
+
unsharpAmount: 0,
|
|
1439
|
+
unsharpRadius: 0,
|
|
1440
|
+
unsharpThreshold: 0
|
|
1441
|
+
};
|
|
1442
|
+
var CAN_NEW_IMAGE_DATA = false;
|
|
1443
|
+
var CAN_CREATE_IMAGE_BITMAP = false;
|
|
1444
|
+
var CAN_USE_CANVAS_GET_IMAGE_DATA = false;
|
|
1445
|
+
var CAN_USE_OFFSCREEN_CANVAS = false;
|
|
1446
|
+
var CAN_USE_CIB_REGION_FOR_IMAGE = false;
|
|
1447
|
+
function workerFabric() {
|
|
1448
|
+
return {
|
|
1449
|
+
value: webworkify(worker),
|
|
1450
|
+
destroy: function destroy() {
|
|
1451
|
+
this.value.terminate();
|
|
1452
|
+
if (typeof window !== "undefined") {
|
|
1453
|
+
var url = window.URL || window.webkitURL || window.mozURL || window.msURL;
|
|
1454
|
+
if (url && url.revokeObjectURL && this.value.objectURL) {
|
|
1455
|
+
url.revokeObjectURL(this.value.objectURL);
|
|
1456
|
+
}
|
|
1457
|
+
}
|
|
1458
|
+
}
|
|
1459
|
+
};
|
|
1460
|
+
}
|
|
1461
|
+
function Pica(options) {
|
|
1462
|
+
if (!(this instanceof Pica)) return new Pica(options);
|
|
1463
|
+
this.options = assign({}, DEFAULT_PICA_OPTS, options || {});
|
|
1464
|
+
var limiter_key = "lk_".concat(this.options.concurrency);
|
|
1465
|
+
this.__limit = singletones[limiter_key] || utils.limiter(this.options.concurrency);
|
|
1466
|
+
if (!singletones[limiter_key]) singletones[limiter_key] = this.__limit;
|
|
1467
|
+
this.features = {
|
|
1468
|
+
js: false,
|
|
1469
|
+
// pure JS implementation, can be disabled for testing
|
|
1470
|
+
wasm: false,
|
|
1471
|
+
// webassembly implementation for heavy functions
|
|
1472
|
+
cib: false,
|
|
1473
|
+
// resize via createImageBitmap (only FF at this moment)
|
|
1474
|
+
ww: false
|
|
1475
|
+
// webworkers
|
|
1476
|
+
};
|
|
1477
|
+
this.__workersPool = null;
|
|
1478
|
+
this.__requested_features = [];
|
|
1479
|
+
this.__mathlib = null;
|
|
1480
|
+
}
|
|
1481
|
+
Pica.prototype.init = function() {
|
|
1482
|
+
var _this = this;
|
|
1483
|
+
if (this.__initPromise) return this.__initPromise;
|
|
1484
|
+
if (typeof ImageData !== "undefined" && typeof Uint8ClampedArray !== "undefined") {
|
|
1485
|
+
try {
|
|
1486
|
+
new ImageData(new Uint8ClampedArray(400), 10, 10);
|
|
1487
|
+
CAN_NEW_IMAGE_DATA = true;
|
|
1488
|
+
} catch (__) {
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
if (typeof ImageBitmap !== "undefined") {
|
|
1492
|
+
if (ImageBitmap.prototype && ImageBitmap.prototype.close) {
|
|
1493
|
+
CAN_CREATE_IMAGE_BITMAP = true;
|
|
1494
|
+
} else {
|
|
1495
|
+
this.debug("ImageBitmap does not support .close(), disabled");
|
|
1496
|
+
}
|
|
1497
|
+
}
|
|
1498
|
+
var features = this.options.features.slice();
|
|
1499
|
+
if (features.indexOf("all") >= 0) {
|
|
1500
|
+
features = ["cib", "wasm", "js", "ww"];
|
|
1501
|
+
}
|
|
1502
|
+
this.__requested_features = features;
|
|
1503
|
+
this.__mathlib = new MathLib(features);
|
|
1504
|
+
if (features.indexOf("ww") >= 0) {
|
|
1505
|
+
if (typeof window !== "undefined" && "Worker" in window) {
|
|
1506
|
+
try {
|
|
1507
|
+
var wkr = _dereq_("webworkify")(function() {
|
|
1508
|
+
});
|
|
1509
|
+
wkr.terminate();
|
|
1510
|
+
this.features.ww = true;
|
|
1511
|
+
var wpool_key = "wp_".concat(JSON.stringify(this.options));
|
|
1512
|
+
if (singletones[wpool_key]) {
|
|
1513
|
+
this.__workersPool = singletones[wpool_key];
|
|
1514
|
+
} else {
|
|
1515
|
+
this.__workersPool = new Pool(workerFabric, this.options.idle);
|
|
1516
|
+
singletones[wpool_key] = this.__workersPool;
|
|
1517
|
+
}
|
|
1518
|
+
} catch (__) {
|
|
1519
|
+
}
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
var initMath = this.__mathlib.init().then(function(mathlib) {
|
|
1523
|
+
assign(_this.features, mathlib.features);
|
|
1524
|
+
});
|
|
1525
|
+
var checkCibResize;
|
|
1526
|
+
if (!CAN_CREATE_IMAGE_BITMAP) {
|
|
1527
|
+
checkCibResize = Promise.resolve(false);
|
|
1528
|
+
} else {
|
|
1529
|
+
checkCibResize = utils.cib_support(this.options.createCanvas).then(function(status) {
|
|
1530
|
+
if (_this.features.cib && features.indexOf("cib") < 0) {
|
|
1531
|
+
_this.debug("createImageBitmap() resize supported, but disabled by config");
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
if (features.indexOf("cib") >= 0) _this.features.cib = status;
|
|
1535
|
+
});
|
|
1536
|
+
}
|
|
1537
|
+
CAN_USE_CANVAS_GET_IMAGE_DATA = utils.can_use_canvas(this.options.createCanvas);
|
|
1538
|
+
var checkOffscreenCanvas;
|
|
1539
|
+
if (CAN_CREATE_IMAGE_BITMAP && CAN_NEW_IMAGE_DATA && features.indexOf("ww") !== -1) {
|
|
1540
|
+
checkOffscreenCanvas = utils.worker_offscreen_canvas_support();
|
|
1541
|
+
} else {
|
|
1542
|
+
checkOffscreenCanvas = Promise.resolve(false);
|
|
1543
|
+
}
|
|
1544
|
+
checkOffscreenCanvas = checkOffscreenCanvas.then(function(result) {
|
|
1545
|
+
CAN_USE_OFFSCREEN_CANVAS = result;
|
|
1546
|
+
});
|
|
1547
|
+
var checkCibRegion = utils.cib_can_use_region().then(function(result) {
|
|
1548
|
+
CAN_USE_CIB_REGION_FOR_IMAGE = result;
|
|
1549
|
+
});
|
|
1550
|
+
this.__initPromise = Promise.all([initMath, checkCibResize, checkOffscreenCanvas, checkCibRegion]).then(function() {
|
|
1551
|
+
return _this;
|
|
1552
|
+
});
|
|
1553
|
+
return this.__initPromise;
|
|
1554
|
+
};
|
|
1555
|
+
Pica.prototype.__invokeResize = function(tileOpts, opts) {
|
|
1556
|
+
var _this2 = this;
|
|
1557
|
+
opts.__mathCache = opts.__mathCache || {};
|
|
1558
|
+
return Promise.resolve().then(function() {
|
|
1559
|
+
if (!_this2.features.ww) {
|
|
1560
|
+
return {
|
|
1561
|
+
data: _this2.__mathlib.resizeAndUnsharp(tileOpts, opts.__mathCache)
|
|
1562
|
+
};
|
|
1563
|
+
}
|
|
1564
|
+
return new Promise(function(resolve, reject) {
|
|
1565
|
+
var w = _this2.__workersPool.acquire();
|
|
1566
|
+
if (opts.cancelToken) opts.cancelToken["catch"](function(err) {
|
|
1567
|
+
return reject(err);
|
|
1568
|
+
});
|
|
1569
|
+
w.value.onmessage = function(ev) {
|
|
1570
|
+
w.release();
|
|
1571
|
+
if (ev.data.err) reject(ev.data.err);
|
|
1572
|
+
else resolve(ev.data);
|
|
1573
|
+
};
|
|
1574
|
+
var transfer = [];
|
|
1575
|
+
if (tileOpts.src) transfer.push(tileOpts.src.buffer);
|
|
1576
|
+
if (tileOpts.srcBitmap) transfer.push(tileOpts.srcBitmap);
|
|
1577
|
+
w.value.postMessage({
|
|
1578
|
+
opts: tileOpts,
|
|
1579
|
+
features: _this2.__requested_features,
|
|
1580
|
+
preload: {
|
|
1581
|
+
wasm_nodule: _this2.__mathlib.__
|
|
1582
|
+
}
|
|
1583
|
+
}, transfer);
|
|
1584
|
+
});
|
|
1585
|
+
});
|
|
1586
|
+
};
|
|
1587
|
+
Pica.prototype.__extractTileData = function(tile, from, opts, stageEnv, extractTo) {
|
|
1588
|
+
if (this.features.ww && CAN_USE_OFFSCREEN_CANVAS && // createImageBitmap doesn't work for images (Image, ImageBitmap) with Exif orientation in Chrome,
|
|
1589
|
+
// can use canvas because canvas doesn't have orientation;
|
|
1590
|
+
// see https://bugs.chromium.org/p/chromium/issues/detail?id=1220671
|
|
1591
|
+
(utils.isCanvas(from) || CAN_USE_CIB_REGION_FOR_IMAGE)) {
|
|
1592
|
+
this.debug("Create tile for OffscreenCanvas");
|
|
1593
|
+
return createImageBitmap(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height).then(function(bitmap) {
|
|
1594
|
+
extractTo.srcBitmap = bitmap;
|
|
1595
|
+
return extractTo;
|
|
1596
|
+
});
|
|
1597
|
+
}
|
|
1598
|
+
if (utils.isCanvas(from)) {
|
|
1599
|
+
if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext("2d");
|
|
1600
|
+
this.debug("Get tile pixel data");
|
|
1601
|
+
extractTo.src = stageEnv.srcCtx.getImageData(tile.x, tile.y, tile.width, tile.height).data;
|
|
1602
|
+
return extractTo;
|
|
1603
|
+
}
|
|
1604
|
+
this.debug("Draw tile imageBitmap/image to temporary canvas");
|
|
1605
|
+
var tmpCanvas = this.options.createCanvas(tile.width, tile.height);
|
|
1606
|
+
var tmpCtx = tmpCanvas.getContext("2d");
|
|
1607
|
+
tmpCtx.globalCompositeOperation = "copy";
|
|
1608
|
+
tmpCtx.drawImage(stageEnv.srcImageBitmap || from, tile.x, tile.y, tile.width, tile.height, 0, 0, tile.width, tile.height);
|
|
1609
|
+
this.debug("Get tile pixel data");
|
|
1610
|
+
extractTo.src = tmpCtx.getImageData(0, 0, tile.width, tile.height).data;
|
|
1611
|
+
tmpCanvas.width = tmpCanvas.height = 0;
|
|
1612
|
+
return extractTo;
|
|
1613
|
+
};
|
|
1614
|
+
Pica.prototype.__landTileData = function(tile, result, stageEnv) {
|
|
1615
|
+
var toImageData;
|
|
1616
|
+
this.debug("Convert raw rgba tile result to ImageData");
|
|
1617
|
+
if (result.bitmap) {
|
|
1618
|
+
stageEnv.toCtx.drawImage(result.bitmap, tile.toX, tile.toY);
|
|
1619
|
+
return null;
|
|
1620
|
+
}
|
|
1621
|
+
if (CAN_NEW_IMAGE_DATA) {
|
|
1622
|
+
toImageData = new ImageData(new Uint8ClampedArray(result.data), tile.toWidth, tile.toHeight);
|
|
1623
|
+
} else {
|
|
1624
|
+
toImageData = stageEnv.toCtx.createImageData(tile.toWidth, tile.toHeight);
|
|
1625
|
+
if (toImageData.data.set) {
|
|
1626
|
+
toImageData.data.set(result.data);
|
|
1627
|
+
} else {
|
|
1628
|
+
for (var i = toImageData.data.length - 1; i >= 0; i--) {
|
|
1629
|
+
toImageData.data[i] = result.data[i];
|
|
1630
|
+
}
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
this.debug("Draw tile");
|
|
1634
|
+
if (NEED_SAFARI_FIX) {
|
|
1635
|
+
stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth + 1e-5, tile.toInnerHeight + 1e-5);
|
|
1636
|
+
} else {
|
|
1637
|
+
stageEnv.toCtx.putImageData(toImageData, tile.toX, tile.toY, tile.toInnerX - tile.toX, tile.toInnerY - tile.toY, tile.toInnerWidth, tile.toInnerHeight);
|
|
1638
|
+
}
|
|
1639
|
+
return null;
|
|
1640
|
+
};
|
|
1641
|
+
Pica.prototype.__tileAndResize = function(from, to, opts) {
|
|
1642
|
+
var _this3 = this;
|
|
1643
|
+
var stageEnv = {
|
|
1644
|
+
srcCtx: null,
|
|
1645
|
+
srcImageBitmap: null,
|
|
1646
|
+
isImageBitmapReused: false,
|
|
1647
|
+
toCtx: null
|
|
1648
|
+
};
|
|
1649
|
+
var processTile = function processTile2(tile) {
|
|
1650
|
+
return _this3.__limit(function() {
|
|
1651
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1652
|
+
var tileOpts = {
|
|
1653
|
+
width: tile.width,
|
|
1654
|
+
height: tile.height,
|
|
1655
|
+
toWidth: tile.toWidth,
|
|
1656
|
+
toHeight: tile.toHeight,
|
|
1657
|
+
scaleX: tile.scaleX,
|
|
1658
|
+
scaleY: tile.scaleY,
|
|
1659
|
+
offsetX: tile.offsetX,
|
|
1660
|
+
offsetY: tile.offsetY,
|
|
1661
|
+
filter: opts.filter,
|
|
1662
|
+
unsharpAmount: opts.unsharpAmount,
|
|
1663
|
+
unsharpRadius: opts.unsharpRadius,
|
|
1664
|
+
unsharpThreshold: opts.unsharpThreshold
|
|
1665
|
+
};
|
|
1666
|
+
_this3.debug("Invoke resize math");
|
|
1667
|
+
return Promise.resolve(tileOpts).then(function(tileOpts2) {
|
|
1668
|
+
return _this3.__extractTileData(tile, from, opts, stageEnv, tileOpts2);
|
|
1669
|
+
}).then(function(tileOpts2) {
|
|
1670
|
+
_this3.debug("Invoke resize math");
|
|
1671
|
+
return _this3.__invokeResize(tileOpts2, opts);
|
|
1672
|
+
}).then(function(result) {
|
|
1673
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1674
|
+
stageEnv.srcImageData = null;
|
|
1675
|
+
return _this3.__landTileData(tile, result, stageEnv);
|
|
1676
|
+
});
|
|
1677
|
+
});
|
|
1678
|
+
};
|
|
1679
|
+
return Promise.resolve().then(function() {
|
|
1680
|
+
stageEnv.toCtx = to.getContext("2d");
|
|
1681
|
+
if (utils.isCanvas(from)) return null;
|
|
1682
|
+
if (utils.isImageBitmap(from)) {
|
|
1683
|
+
stageEnv.srcImageBitmap = from;
|
|
1684
|
+
stageEnv.isImageBitmapReused = true;
|
|
1685
|
+
return null;
|
|
1686
|
+
}
|
|
1687
|
+
if (utils.isImage(from)) {
|
|
1688
|
+
if (!CAN_CREATE_IMAGE_BITMAP) return null;
|
|
1689
|
+
_this3.debug("Decode image via createImageBitmap");
|
|
1690
|
+
return createImageBitmap(from).then(function(imageBitmap) {
|
|
1691
|
+
stageEnv.srcImageBitmap = imageBitmap;
|
|
1692
|
+
})["catch"](function(e) {
|
|
1693
|
+
return null;
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap');
|
|
1697
|
+
}).then(function() {
|
|
1698
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1699
|
+
_this3.debug("Calculate tiles");
|
|
1700
|
+
var regions = createRegions({
|
|
1701
|
+
width: opts.width,
|
|
1702
|
+
height: opts.height,
|
|
1703
|
+
srcTileSize: _this3.options.tile,
|
|
1704
|
+
toWidth: opts.toWidth,
|
|
1705
|
+
toHeight: opts.toHeight,
|
|
1706
|
+
destTileBorder: opts.__destTileBorder
|
|
1707
|
+
});
|
|
1708
|
+
var jobs = regions.map(function(tile) {
|
|
1709
|
+
return processTile(tile);
|
|
1710
|
+
});
|
|
1711
|
+
function cleanup(stageEnv2) {
|
|
1712
|
+
if (stageEnv2.srcImageBitmap) {
|
|
1713
|
+
if (!stageEnv2.isImageBitmapReused) stageEnv2.srcImageBitmap.close();
|
|
1714
|
+
stageEnv2.srcImageBitmap = null;
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
_this3.debug("Process tiles");
|
|
1718
|
+
return Promise.all(jobs).then(function() {
|
|
1719
|
+
_this3.debug("Finished!");
|
|
1720
|
+
cleanup(stageEnv);
|
|
1721
|
+
return to;
|
|
1722
|
+
}, function(err) {
|
|
1723
|
+
cleanup(stageEnv);
|
|
1724
|
+
throw err;
|
|
1725
|
+
});
|
|
1726
|
+
});
|
|
1727
|
+
};
|
|
1728
|
+
Pica.prototype.__processStages = function(stages, from, to, opts) {
|
|
1729
|
+
var _this4 = this;
|
|
1730
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1731
|
+
var _stages$shift = stages.shift(), _stages$shift2 = _slicedToArray(_stages$shift, 2), toWidth = _stages$shift2[0], toHeight = _stages$shift2[1];
|
|
1732
|
+
var isLastStage = stages.length === 0;
|
|
1733
|
+
var filter;
|
|
1734
|
+
if (isLastStage || filter_info.q2f.indexOf(opts.filter) < 0) filter = opts.filter;
|
|
1735
|
+
else if (opts.filter === "box") filter = "box";
|
|
1736
|
+
else filter = "hamming";
|
|
1737
|
+
opts = assign({}, opts, {
|
|
1738
|
+
toWidth,
|
|
1739
|
+
toHeight,
|
|
1740
|
+
filter
|
|
1741
|
+
});
|
|
1742
|
+
var tmpCanvas;
|
|
1743
|
+
if (!isLastStage) {
|
|
1744
|
+
tmpCanvas = this.options.createCanvas(toWidth, toHeight);
|
|
1745
|
+
}
|
|
1746
|
+
return this.__tileAndResize(from, isLastStage ? to : tmpCanvas, opts).then(function() {
|
|
1747
|
+
if (isLastStage) return to;
|
|
1748
|
+
opts.width = toWidth;
|
|
1749
|
+
opts.height = toHeight;
|
|
1750
|
+
return _this4.__processStages(stages, tmpCanvas, to, opts);
|
|
1751
|
+
}).then(function(res) {
|
|
1752
|
+
if (tmpCanvas) {
|
|
1753
|
+
tmpCanvas.width = tmpCanvas.height = 0;
|
|
1754
|
+
}
|
|
1755
|
+
return res;
|
|
1756
|
+
});
|
|
1757
|
+
};
|
|
1758
|
+
Pica.prototype.__resizeViaCreateImageBitmap = function(from, to, opts) {
|
|
1759
|
+
var _this5 = this;
|
|
1760
|
+
var toCtx = to.getContext("2d");
|
|
1761
|
+
this.debug("Resize via createImageBitmap()");
|
|
1762
|
+
return createImageBitmap(from, {
|
|
1763
|
+
resizeWidth: opts.toWidth,
|
|
1764
|
+
resizeHeight: opts.toHeight,
|
|
1765
|
+
resizeQuality: utils.cib_quality_name(filter_info.f2q[opts.filter])
|
|
1766
|
+
}).then(function(imageBitmap) {
|
|
1767
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1768
|
+
if (!opts.unsharpAmount) {
|
|
1769
|
+
toCtx.drawImage(imageBitmap, 0, 0);
|
|
1770
|
+
imageBitmap.close();
|
|
1771
|
+
toCtx = null;
|
|
1772
|
+
_this5.debug("Finished!");
|
|
1773
|
+
return to;
|
|
1774
|
+
}
|
|
1775
|
+
_this5.debug("Unsharp result");
|
|
1776
|
+
var tmpCanvas = _this5.options.createCanvas(opts.toWidth, opts.toHeight);
|
|
1777
|
+
var tmpCtx = tmpCanvas.getContext("2d");
|
|
1778
|
+
tmpCtx.drawImage(imageBitmap, 0, 0);
|
|
1779
|
+
imageBitmap.close();
|
|
1780
|
+
var iData = tmpCtx.getImageData(0, 0, opts.toWidth, opts.toHeight);
|
|
1781
|
+
_this5.__mathlib.unsharp_mask(iData.data, opts.toWidth, opts.toHeight, opts.unsharpAmount, opts.unsharpRadius, opts.unsharpThreshold);
|
|
1782
|
+
toCtx.putImageData(iData, 0, 0);
|
|
1783
|
+
tmpCanvas.width = tmpCanvas.height = 0;
|
|
1784
|
+
iData = tmpCtx = tmpCanvas = toCtx = null;
|
|
1785
|
+
_this5.debug("Finished!");
|
|
1786
|
+
return to;
|
|
1787
|
+
});
|
|
1788
|
+
};
|
|
1789
|
+
Pica.prototype.resize = function(from, to, options) {
|
|
1790
|
+
var _this6 = this;
|
|
1791
|
+
this.debug("Start resize...");
|
|
1792
|
+
var opts = assign({}, DEFAULT_RESIZE_OPTS);
|
|
1793
|
+
if (!isNaN(options)) {
|
|
1794
|
+
opts = assign(opts, {
|
|
1795
|
+
quality: options
|
|
1796
|
+
});
|
|
1797
|
+
} else if (options) {
|
|
1798
|
+
opts = assign(opts, options);
|
|
1799
|
+
}
|
|
1800
|
+
opts.toWidth = to.width;
|
|
1801
|
+
opts.toHeight = to.height;
|
|
1802
|
+
opts.width = from.naturalWidth || from.width;
|
|
1803
|
+
opts.height = from.naturalHeight || from.height;
|
|
1804
|
+
if (Object.prototype.hasOwnProperty.call(opts, "quality")) {
|
|
1805
|
+
if (opts.quality < 0 || opts.quality > 3) {
|
|
1806
|
+
throw new Error("Pica: .quality should be [0..3], got ".concat(opts.quality));
|
|
1807
|
+
}
|
|
1808
|
+
opts.filter = filter_info.q2f[opts.quality];
|
|
1809
|
+
}
|
|
1810
|
+
if (to.width === 0 || to.height === 0) {
|
|
1811
|
+
return Promise.reject(new Error("Invalid output size: ".concat(to.width, "x").concat(to.height)));
|
|
1812
|
+
}
|
|
1813
|
+
if (opts.unsharpRadius > 2) opts.unsharpRadius = 2;
|
|
1814
|
+
opts.canceled = false;
|
|
1815
|
+
if (opts.cancelToken) {
|
|
1816
|
+
opts.cancelToken = opts.cancelToken.then(function(data) {
|
|
1817
|
+
opts.canceled = true;
|
|
1818
|
+
throw data;
|
|
1819
|
+
}, function(err) {
|
|
1820
|
+
opts.canceled = true;
|
|
1821
|
+
throw err;
|
|
1822
|
+
});
|
|
1823
|
+
}
|
|
1824
|
+
var DEST_TILE_BORDER = 3;
|
|
1825
|
+
opts.__destTileBorder = Math.ceil(Math.max(DEST_TILE_BORDER, 2.5 * opts.unsharpRadius | 0));
|
|
1826
|
+
return this.init().then(function() {
|
|
1827
|
+
if (opts.canceled) return opts.cancelToken;
|
|
1828
|
+
if (_this6.features.cib) {
|
|
1829
|
+
if (filter_info.q2f.indexOf(opts.filter) >= 0) {
|
|
1830
|
+
return _this6.__resizeViaCreateImageBitmap(from, to, opts);
|
|
1831
|
+
}
|
|
1832
|
+
_this6.debug("cib is enabled, but not supports provided filter, fallback to manual math");
|
|
1833
|
+
}
|
|
1834
|
+
if (!CAN_USE_CANVAS_GET_IMAGE_DATA) {
|
|
1835
|
+
var err = new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");
|
|
1836
|
+
err.code = "ERR_GET_IMAGE_DATA";
|
|
1837
|
+
throw err;
|
|
1838
|
+
}
|
|
1839
|
+
var stages = createStages(opts.width, opts.height, opts.toWidth, opts.toHeight, _this6.options.tile, opts.__destTileBorder);
|
|
1840
|
+
return _this6.__processStages(stages, from, to, opts);
|
|
1841
|
+
});
|
|
1842
|
+
};
|
|
1843
|
+
Pica.prototype.resizeBuffer = function(options) {
|
|
1844
|
+
var _this7 = this;
|
|
1845
|
+
var opts = assign({}, DEFAULT_RESIZE_OPTS, options);
|
|
1846
|
+
if (Object.prototype.hasOwnProperty.call(opts, "quality")) {
|
|
1847
|
+
if (opts.quality < 0 || opts.quality > 3) {
|
|
1848
|
+
throw new Error("Pica: .quality should be [0..3], got ".concat(opts.quality));
|
|
1849
|
+
}
|
|
1850
|
+
opts.filter = filter_info.q2f[opts.quality];
|
|
1851
|
+
}
|
|
1852
|
+
return this.init().then(function() {
|
|
1853
|
+
return _this7.__mathlib.resizeAndUnsharp(opts);
|
|
1854
|
+
});
|
|
1855
|
+
};
|
|
1856
|
+
Pica.prototype.toBlob = function(canvas, mimeType, quality) {
|
|
1857
|
+
mimeType = mimeType || "image/png";
|
|
1858
|
+
return new Promise(function(resolve) {
|
|
1859
|
+
if (canvas.toBlob) {
|
|
1860
|
+
canvas.toBlob(function(blob2) {
|
|
1861
|
+
return resolve(blob2);
|
|
1862
|
+
}, mimeType, quality);
|
|
1863
|
+
return;
|
|
1864
|
+
}
|
|
1865
|
+
if (canvas.convertToBlob) {
|
|
1866
|
+
resolve(canvas.convertToBlob({
|
|
1867
|
+
type: mimeType,
|
|
1868
|
+
quality
|
|
1869
|
+
}));
|
|
1870
|
+
return;
|
|
1871
|
+
}
|
|
1872
|
+
var asString = atob(canvas.toDataURL(mimeType, quality).split(",")[1]);
|
|
1873
|
+
var len = asString.length;
|
|
1874
|
+
var asBuffer = new Uint8Array(len);
|
|
1875
|
+
for (var i = 0; i < len; i++) {
|
|
1876
|
+
asBuffer[i] = asString.charCodeAt(i);
|
|
1877
|
+
}
|
|
1878
|
+
resolve(new Blob([asBuffer], {
|
|
1879
|
+
type: mimeType
|
|
1880
|
+
}));
|
|
1881
|
+
});
|
|
1882
|
+
};
|
|
1883
|
+
Pica.prototype.debug = function() {
|
|
1884
|
+
};
|
|
1885
|
+
module2.exports = Pica;
|
|
1886
|
+
}, { "./lib/mathlib": 1, "./lib/mm_resize/resize_filter_info": 7, "./lib/pool": 13, "./lib/stepper": 14, "./lib/tiler": 15, "./lib/utils": 16, "./lib/worker": 17, "object-assign": 22, "webworkify": 23 }] }, {}, [])("/index.js");
|
|
1887
|
+
});
|
|
1888
|
+
})(pica);
|
|
1889
|
+
return pica.exports;
|
|
1890
|
+
}
|
|
1891
|
+
requirePica();
|
|
1892
|
+
const jsContent = '!function(){"use strict";var t=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","#","$","%","*","+",",","-",".",":",";","=","?","@","[","]","^","_","{","|","}","~"],e=e=>{let n=0;for(let r=0;r<e.length;r++){let a=e[r];n=83*n+t.indexOf(a)}return n},n=(e,n)=>{var r="";for(let a=1;a<=n;a++){let o=Math.floor(e)/Math.pow(83,n-a)%83;r+=t[Math.floor(o)]}return r},r=t=>{let e=t/255;return e<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)},a=t=>{let e=Math.max(0,Math.min(1,t));return e<=.0031308?Math.trunc(12.92*e*255+.5):Math.trunc(255*(1.055*Math.pow(e,.4166666666666667)-.055)+.5)},o=(t,e)=>(t=>t<0?-1:1)(t)*Math.pow(Math.abs(t),e),s=class extends Error{constructor(t){super(t),this.name="ValidationError",this.message=t}},i=t=>{if(!t||t.length<6)throw new s("The blurhash string must be at least 6 characters");let n=e(t[0]),r=Math.floor(n/9)+1,a=n%9+1;if(t.length!==4+2*a*r)throw new s(`blurhash length mismatch: length is ${t.length} but it should be ${4+2*a*r}`)},l=t=>{let e=t>>8&255,n=255&t;return[r(t>>16),r(e),r(n)]},c=(t,e)=>{let n=Math.floor(t/361),r=Math.floor(t/19)%19,a=t%19;return[o((n-9)/9,2)*e,o((r-9)/9,2)*e,o((a-9)/9,2)*e]},h=(t,n,r,o)=>{i(t),o|=1;let s=e(t[0]),h=Math.floor(s/9)+1,u=s%9+1,f=(e(t[1])+1)/166,p=new Array(u*h);for(let a=0;a<p.length;a++)if(0===a){let n=e(t.substring(2,6));p[a]=l(n)}else{let n=e(t.substring(4+2*a,6+2*a));p[a]=c(n,f*o)}let m=4*n,g=new Uint8ClampedArray(m*r);for(let e=0;e<r;e++)for(let t=0;t<n;t++){let o=0,s=0,i=0;for(let a=0;a<h;a++)for(let l=0;l<u;l++){let c=Math.cos(Math.PI*t*l/n)*Math.cos(Math.PI*e*a/r),h=p[l+a*u];o+=h[0]*c,s+=h[1]*c,i+=h[2]*c}let l=a(o),c=a(s),f=a(i);g[4*t+0+e*m]=l,g[4*t+1+e*m]=c,g[4*t+2+e*m]=f,g[4*t+3+e*m]=255}return g},u=(t,e,n,a)=>{let o=0,s=0,i=0,l=4*e;for(let h=0;h<e;h++){let e=4*h;for(let c=0;c<n;c++){let n=e+c*l,u=a(h,c);o+=u*r(t[n]),s+=u*r(t[n+1]),i+=u*r(t[n+2])}}let c=1/(e*n);return[o*c,s*c,i*c]},f=(t,e,r,i,l)=>{if(i<1||i>9||l<1||l>9)throw new s("BlurHash must have between 1 and 9 components");if(e*r*4!==t.length)throw new s("Width and height must match the pixels array");let c=[];for(let n=0;n<l;n++)for(let a=0;a<i;a++){let o=0==a&&0==n?1:2,s=u(t,e,r,(t,s)=>o*Math.cos(Math.PI*a*t/e)*Math.cos(Math.PI*n*s/r));c.push(s)}let h,f=c[0],p=c.slice(1),m="";if(m+=n(i-1+9*(l-1),1),p.length>0){let t=Math.max(...p.map(t=>Math.max(...t))),e=Math.floor(Math.max(0,Math.min(82,Math.floor(166*t-.5))));h=(e+1)/166,m+=n(e,1)}else h=1,m+=n(0,1);return m+=n((t=>(a(t[0])<<16)+(a(t[1])<<8)+a(t[2]))(f),4),p.forEach(t=>{m+=n(((t,e)=>19*Math.floor(Math.max(0,Math.min(18,Math.floor(9*o(t[0]/e,.5)+9.5))))*19+19*Math.floor(Math.max(0,Math.min(18,Math.floor(9*o(t[1]/e,.5)+9.5))))+Math.floor(Math.max(0,Math.min(18,Math.floor(9*o(t[2]/e,.5)+9.5)))))(t,h),2)}),m};\n/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\nconst p=Symbol("Comlink.proxy"),m=Symbol("Comlink.endpoint"),g=Symbol("Comlink.releaseProxy"),M=Symbol("Comlink.finalizer"),d=Symbol("Comlink.thrown"),y=t=>"object"==typeof t&&null!==t||"function"==typeof t,w=new Map([["proxy",{canHandle:t=>y(t)&&t[p],serialize(t){const{port1:e,port2:n}=new MessageChannel;return b(t,e),[n,[n]]},deserialize:t=>(t.start(),function(t,e){const n=new Map;return t.addEventListener("message",function(t){const{data:e}=t;if(!e||!e.id)return;const r=n.get(e.id);if(r)try{r(e)}finally{n.delete(e.id)}}),P(t,n,[],e)}(t))}],["throw",{canHandle:t=>y(t)&&d in t,serialize({value:t}){let e;return e=t instanceof Error?{isError:!0,value:{message:t.message,name:t.name,stack:t.stack}}:{isError:!1,value:t},[e,[]]},deserialize(t){if(t.isError)throw Object.assign(new Error(t.value.message),t.value);throw t.value}}]]);function b(t,e=globalThis,n=["*"]){e.addEventListener("message",function r(a){if(!a||!a.data)return;if(!function(t,e){for(const n of t){if(e===n||"*"===n)return!0;if(n instanceof RegExp&&n.test(e))return!0}return!1}(n,a.origin))return void console.warn(`Invalid origin \'${a.origin}\' for comlink proxy`);const{id:o,type:s,path:i}=Object.assign({path:[]},a.data),l=(a.data.argumentList||[]).map(L);let c;try{const e=i.slice(0,-1).reduce((t,e)=>t[e],t),n=i.reduce((t,e)=>t[e],t);switch(s){case"GET":c=n;break;case"SET":e[i.slice(-1)[0]]=L(a.data.value),c=!0;break;case"APPLY":c=n.apply(e,l);break;case"CONSTRUCT":c=function(t){return Object.assign(t,{[p]:!0})}(new n(...l));break;case"ENDPOINT":{const{port1:e,port2:n}=new MessageChannel;b(t,n),c=function(t,e){return T.set(t,e),t}(e,[e])}break;case"RELEASE":c=void 0;break;default:return}}catch(h){c={value:h,[d]:0}}Promise.resolve(c).catch(t=>({value:t,[d]:0})).then(n=>{const[a,i]=R(n);e.postMessage(Object.assign(Object.assign({},a),{id:o}),i),"RELEASE"===s&&(e.removeEventListener("message",r),E(e),M in t&&"function"==typeof t[M]&&t[M]())}).catch(t=>{const[n,r]=R({value:new TypeError("Unserializable return value"),[d]:0});e.postMessage(Object.assign(Object.assign({},n),{id:o}),r)})}),e.start&&e.start()}function E(t){(function(t){return"MessagePort"===t.constructor.name})(t)&&t.close()}function v(t){if(t)throw new Error("Proxy has been released and is not useable")}function S(t){return O(t,new Map,{type:"RELEASE"}).then(()=>{E(t)})}const x=new WeakMap,k="FinalizationRegistry"in globalThis&&new FinalizationRegistry(t=>{const e=(x.get(t)||0)-1;x.set(t,e),0===e&&S(t)});function P(t,e,n=[],r=function(){}){let a=!1;const o=new Proxy(r,{get(r,s){if(v(a),s===g)return()=>{!function(t){k&&k.unregister(t)}(o),S(t),e.clear(),a=!0};if("then"===s){if(0===n.length)return{then:()=>o};const r=O(t,e,{type:"GET",path:n.map(t=>t.toString())}).then(L);return r.then.bind(r)}return P(t,e,[...n,s])},set(r,o,s){v(a);const[i,l]=R(s);return O(t,e,{type:"SET",path:[...n,o].map(t=>t.toString()),value:i},l).then(L)},apply(r,o,s){v(a);const i=n[n.length-1];if(i===m)return O(t,e,{type:"ENDPOINT"}).then(L);if("bind"===i)return P(t,e,n.slice(0,-1));const[l,c]=A(s);return O(t,e,{type:"APPLY",path:n.map(t=>t.toString()),argumentList:l},c).then(L)},construct(r,o){v(a);const[s,i]=A(o);return O(t,e,{type:"CONSTRUCT",path:n.map(t=>t.toString()),argumentList:s},i).then(L)}});return function(t,e){const n=(x.get(e)||0)+1;x.set(e,n),k&&k.register(t,e,t)}(o,t),o}function A(t){const e=t.map(R);return[e.map(t=>t[0]),(n=e.map(t=>t[1]),Array.prototype.concat.apply([],n))];var n}const T=new WeakMap;function R(t){for(const[e,n]of w)if(n.canHandle(t)){const[r,a]=n.serialize(t);return[{type:"HANDLER",name:e,value:r},a]}return[{type:"RAW",value:t},T.get(t)||[]]}function L(t){switch(t.type){case"HANDLER":return w.get(t.name).deserialize(t.value);case"RAW":return t.value}}function O(t,e,n,r){return new Promise(a=>{const o=new Array(4).fill(0).map(()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16)).join("-");e.set(o,a),t.start&&t.start(),t.postMessage(Object.assign({id:o},n),r)})}b({ValidationError:s,encode:f,decode:h,isBlurhashValid:t=>{try{i(t)}catch(e){return{result:!1,errorReason:e.message}}return{result:!0}}})}();\n';
|
|
1893
|
+
const blob = typeof self !== "undefined" && self.Blob && new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);", jsContent], { type: "text/javascript;charset=utf-8" });
|
|
124
1894
|
function WorkerWrapper(options) {
|
|
125
1895
|
let objURL;
|
|
126
1896
|
try {
|
|
127
1897
|
objURL = blob && (self.URL || self.webkitURL).createObjectURL(blob);
|
|
128
1898
|
if (!objURL) throw "";
|
|
129
1899
|
const worker = new Worker(objURL, {
|
|
130
|
-
name: options
|
|
1900
|
+
name: options?.name
|
|
131
1901
|
});
|
|
132
1902
|
worker.addEventListener("error", () => {
|
|
133
1903
|
(self.URL || self.webkitURL).revokeObjectURL(objURL);
|
|
@@ -137,11 +1907,9 @@ function WorkerWrapper(options) {
|
|
|
137
1907
|
return new Worker(
|
|
138
1908
|
"data:text/javascript;charset=utf-8," + encodeURIComponent(jsContent),
|
|
139
1909
|
{
|
|
140
|
-
name: options
|
|
1910
|
+
name: options?.name
|
|
141
1911
|
}
|
|
142
1912
|
);
|
|
143
|
-
} finally {
|
|
144
|
-
objURL && (self.URL || self.webkitURL).revokeObjectURL(objURL);
|
|
145
1913
|
}
|
|
146
1914
|
}
|
|
147
1915
|
wrap(new WorkerWrapper());
|
|
@@ -163,11 +1931,10 @@ const contextmenu = {
|
|
|
163
1931
|
el.additionalData = { onContextmenu, onScroll, scrollContainerEl };
|
|
164
1932
|
},
|
|
165
1933
|
beforeUnmount(el) {
|
|
166
|
-
|
|
167
|
-
if ((_a = el == null ? void 0 : el.additionalData) == null ? void 0 : _a.onContextmenu) {
|
|
1934
|
+
if (el?.additionalData?.onContextmenu) {
|
|
168
1935
|
el.removeEventListener("contextmenu", el.additionalData.onContextmenu);
|
|
169
1936
|
}
|
|
170
|
-
if (
|
|
1937
|
+
if (el?.additionalData?.onScroll && el?.additionalData?.scrollContainerEl) {
|
|
171
1938
|
el.additionalData.scrollContainerEl.removeEventListener("scroll", el.additionalData.onScroll);
|
|
172
1939
|
}
|
|
173
1940
|
}
|
|
@@ -235,7 +2002,7 @@ function useModifiers(prefix, modifiers, others) {
|
|
|
235
2002
|
const toReturn = {
|
|
236
2003
|
[prefix]: true
|
|
237
2004
|
};
|
|
238
|
-
const modifiersArray = typeof
|
|
2005
|
+
const modifiersArray = typeof modifiers?.value === "string" ? modifiers.value.split(" ") : modifiers?.value;
|
|
239
2006
|
if (modifiersArray) {
|
|
240
2007
|
if (Array.isArray(modifiersArray)) {
|
|
241
2008
|
modifiersArray.forEach((modifier) => {
|