@actdim/utico 1.2.5 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +73 -3
  2. package/dist/arrayExtensions.es.js +64 -38
  3. package/dist/arrayExtensions.es.js.map +1 -1
  4. package/dist/asyncLock.es.js +45 -30
  5. package/dist/asyncLock.es.js.map +1 -1
  6. package/dist/cache/cacheContracts.es.js +8 -4
  7. package/dist/cache/cacheContracts.es.js.map +1 -1
  8. package/dist/cache/memoryCache.es.js +28 -13
  9. package/dist/cache/memoryCache.es.js.map +1 -1
  10. package/dist/cache/persistentCache.es.js +174 -97
  11. package/dist/cache/persistentCache.es.js.map +1 -1
  12. package/dist/dataFormats.es.js +4 -4
  13. package/dist/dataFormats.es.js.map +1 -1
  14. package/dist/dateTimeDataFormat.es.js +211 -130
  15. package/dist/dateTimeDataFormat.es.js.map +1 -1
  16. package/dist/decorators.es.js +15 -11
  17. package/dist/decorators.es.js.map +1 -1
  18. package/dist/gfx/canvasUtils.es.js +197 -114
  19. package/dist/gfx/canvasUtils.es.js.map +1 -1
  20. package/dist/gfx/color.es.js +134 -68
  21. package/dist/gfx/color.es.js.map +1 -1
  22. package/dist/i18n/cultures.es.js +8 -8
  23. package/dist/i18n/cultures.es.js.map +1 -1
  24. package/dist/i18n/enUsCulture.es.js +2 -2
  25. package/dist/i18n/enUsCulture.es.js.map +1 -1
  26. package/dist/i18n/euCulture.es.js +2 -2
  27. package/dist/i18n/euCulture.es.js.map +1 -1
  28. package/dist/i18n/invariantCulture.es.js +2 -2
  29. package/dist/i18n/invariantCulture.es.js.map +1 -1
  30. package/dist/index.es.js.map +1 -1
  31. package/dist/math.es.js +14 -8
  32. package/dist/math.es.js.map +1 -1
  33. package/dist/metadata.es.js +53 -25
  34. package/dist/metadata.es.js.map +1 -1
  35. package/dist/patterns.es.js +5 -3
  36. package/dist/patterns.es.js.map +1 -1
  37. package/dist/store/dataStore.es.js +241 -157
  38. package/dist/store/dataStore.es.js.map +1 -1
  39. package/dist/store/persistentStore.es.js +23 -17
  40. package/dist/store/persistentStore.es.js.map +1 -1
  41. package/dist/store/storeContracts.es.js +7 -3
  42. package/dist/store/storeContracts.es.js.map +1 -1
  43. package/dist/store/storeDb.es.js +87 -50
  44. package/dist/store/storeDb.es.js.map +1 -1
  45. package/dist/stringCore.es.js +60 -22
  46. package/dist/stringCore.es.js.map +1 -1
  47. package/dist/structEvent.es.js +30 -17
  48. package/dist/structEvent.es.js.map +1 -1
  49. package/dist/typeCore.es.js +25 -11
  50. package/dist/typeCore.es.js.map +1 -1
  51. package/dist/typeUtils.es.js +292 -182
  52. package/dist/typeUtils.es.js.map +1 -1
  53. package/dist/utils.d.ts +3 -3
  54. package/dist/utils.d.ts.map +1 -1
  55. package/dist/utils.es.js +138 -81
  56. package/dist/utils.es.js.map +1 -1
  57. package/dist/watchable.es.js +50 -27
  58. package/dist/watchable.es.js.map +1 -1
  59. package/package.json +2 -2
@@ -1,154 +1,237 @@
1
- const g = window.URL || window.webkitURL;
2
- function L(t, e) {
3
- const n = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas"), i = n.getContext("2d");
4
- return i && (i.imageSmoothingQuality = "high"), n.width = t, n.height = e, { canvas: n, context: i };
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ const DOMURL = window.URL || window.webkitURL;
4
+ function createCanvas(w, h) {
5
+ const canvas = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
6
+ const context = canvas.getContext("2d");
7
+ if (context) {
8
+ context["imageSmoothingQuality"] = "high";
9
+ }
10
+ canvas.width = w;
11
+ canvas.height = h;
12
+ return { canvas, context };
5
13
  }
6
- const b = "actualBoundingBoxRight" in TextMetrics.prototype;
7
- function B(t, e = "", n, i = t.canvas.width, a = "Arial") {
8
- let r = 1;
9
- const s = () => {
10
- t.font = r + "px " + a;
11
- };
12
- s();
13
- let o = c(e);
14
- for (; o && o <= i; )
15
- r++, s(), o = c(e);
16
- for (; o && o > i; )
17
- r -= 0.1, s(), o = c(e);
18
- r += 0.1, s();
19
- const l = t.measureText(e).actualBoundingBoxLeft || 0, [m, h] = n(r);
20
- t.fillText(e, m + l, h);
21
- function c(w) {
22
- const u = t.measureText(w);
23
- return b ? u.actualBoundingBoxLeft + u.actualBoundingBoxRight : u.width;
14
+ __name(createCanvas, "createCanvas");
15
+ const supportExtendedMetrics = "actualBoundingBoxRight" in TextMetrics.prototype;
16
+ function fitText(ctx, text = "", sizeProvider, targetWidth = ctx.canvas.width, fontFamily = "Arial") {
17
+ let fontSize = 1;
18
+ const updateFont = /* @__PURE__ */ __name(() => {
19
+ ctx.font = fontSize + "px " + fontFamily;
20
+ }, "updateFont");
21
+ updateFont();
22
+ let width = getBBOxWidth(text);
23
+ while (width && width <= targetWidth) {
24
+ fontSize++;
25
+ updateFont();
26
+ width = getBBOxWidth(text);
27
+ }
28
+ while (width && width > targetWidth) {
29
+ fontSize -= 0.1;
30
+ updateFont();
31
+ width = getBBOxWidth(text);
32
+ }
33
+ fontSize += 0.1;
34
+ updateFont();
35
+ const offsetLeft = ctx.measureText(text).actualBoundingBoxLeft || 0;
36
+ const [x, y] = sizeProvider(fontSize);
37
+ ctx.fillText(text, x + offsetLeft, y);
38
+ function getBBOxWidth(text2) {
39
+ const measure = ctx.measureText(text2);
40
+ return supportExtendedMetrics ? measure.actualBoundingBoxLeft + measure.actualBoundingBoxRight : measure.width;
24
41
  }
42
+ __name(getBBOxWidth, "getBBOxWidth");
25
43
  }
26
- function f(t) {
27
- return window.encodeURIComponent(t).replace(/%([0-9A-F]{2})/g, (e, n) => String.fromCharCode(parseInt(n, 16)));
44
+ __name(fitText, "fitText");
45
+ function encodeUnicode(str) {
46
+ return window.encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (_, s) => String.fromCharCode(parseInt(s, 16)));
28
47
  }
29
- const R = (() => {
30
- const t = new XMLSerializer();
31
- return async (e, n, i) => {
32
- const a = n[0], r = n[1];
33
- let s = e.map(
34
- (l) => `<foreignObject width="${a}" height="${r}">
48
+ __name(encodeUnicode, "encodeUnicode");
49
+ const html2Svg = (() => {
50
+ const xmlSerializer = new XMLSerializer();
51
+ return async (elements, viewBoxSize, css) => {
52
+ const w = viewBoxSize[0];
53
+ const h = viewBoxSize[1];
54
+ let html = elements.map(
55
+ (el) => `<foreignObject width="${w}" height="${h}">
35
56
  <body xmlns="http://www.w3.org/1999/xhtml">
36
- ${l.outerHTML}
57
+ ${el.outerHTML}
37
58
  </body>
38
59
  </foreignObject>`
39
60
  ).join("");
40
- s = `<style>${i}</style>${s}`;
41
- var o = document.createElementNS("http://www.w3.org/2000/svg", "svg");
42
- return o.setAttributeNS(null, "viewBox", `0 0 ${a} ${r}`), o.setAttributeNS(null, "width", a + ""), o.setAttributeNS(null, "height", r + ""), o.innerHTML = s, t.serializeToString(o);
61
+ html = `<style>${css}</style>${html}`;
62
+ var svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
63
+ svgElement.setAttributeNS(null, "viewBox", `0 0 ${w} ${h}`);
64
+ svgElement.setAttributeNS(null, "width", w + "");
65
+ svgElement.setAttributeNS(null, "height", h + "");
66
+ svgElement.innerHTML = html;
67
+ return xmlSerializer.serializeToString(svgElement);
43
68
  };
44
69
  })();
45
- function v(t) {
46
- const e = new Blob([t], { type: "image/svg+xml;charset=utf-8" });
47
- return g.createObjectURL(e);
70
+ function getSvgImageObjectUrl(svgData) {
71
+ const svgBlob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" });
72
+ return DOMURL.createObjectURL(svgBlob);
48
73
  }
49
- function S(t) {
50
- return "data:image/svg+xml;base64," + window.btoa(f(t));
74
+ __name(getSvgImageObjectUrl, "getSvgImageObjectUrl");
75
+ function getSvgImageDataUrl(svgData) {
76
+ const svgBase64 = window.btoa(encodeUnicode(svgData));
77
+ return "data:image/svg+xml;base64," + svgBase64;
51
78
  }
52
- const U = (() => {
53
- const t = new XMLSerializer();
54
- return (e) => {
55
- const n = document.querySelector(e);
56
- return t.serializeToString(n);
79
+ __name(getSvgImageDataUrl, "getSvgImageDataUrl");
80
+ const querySvgData = (() => {
81
+ const xmlSerializer = new XMLSerializer();
82
+ return (selector) => {
83
+ const svg = document.querySelector(selector);
84
+ const svgData = xmlSerializer.serializeToString(svg);
85
+ return svgData;
57
86
  };
58
87
  })();
59
- function p(t, e = "image/png", n) {
60
- return new Promise((i, a) => {
88
+ function toObjectUrl(canvas, mimeType = "image/png", quality) {
89
+ return new Promise((res, rej) => {
61
90
  try {
62
- t.toBlob(
63
- (r) => {
64
- i(URL.createObjectURL(r));
91
+ canvas.toBlob(
92
+ (blob) => {
93
+ res(URL.createObjectURL(blob));
65
94
  },
66
- e,
67
- n
95
+ mimeType,
96
+ quality
68
97
  );
69
- } catch (r) {
70
- a(r);
98
+ } catch (err) {
99
+ rej(err);
71
100
  }
72
101
  });
73
102
  }
74
- function T(t, e) {
75
- return new Promise((n, i) => {
103
+ __name(toObjectUrl, "toObjectUrl");
104
+ function drawImage(src, context) {
105
+ return new Promise((res, rej) => {
76
106
  try {
77
- const a = new Image();
78
- a.crossOrigin = "anonymous", a.onload = () => {
79
- e.drawImage(a, 0, 0, a.width, a.height, 0, 0, e.canvas.width, e.canvas.height), n();
80
- }, a.src = t;
81
- } catch (a) {
82
- i(a);
107
+ const image = new Image();
108
+ image.crossOrigin = "anonymous";
109
+ image.onload = () => {
110
+ context.drawImage(image, 0, 0, image.width, image.height, 0, 0, context.canvas.width, context.canvas.height);
111
+ res();
112
+ };
113
+ image.src = src;
114
+ } catch (err) {
115
+ rej(err);
83
116
  }
84
117
  });
85
118
  }
86
- const O = (t, e, n = !1) => {
87
- const i = n ? S(t) : v(t);
88
- return T(i, e).finally(() => g.revokeObjectURL(i));
89
- };
90
- async function y(t, e, n = "image/png", i) {
91
- const a = new Image();
92
- a.crossOrigin = "anonymous", e && (e[0] && (a.width = e[0]), e[1] && (a.height = e[1]));
93
- const r = await p(t, n, i);
94
- return a.onload = () => g.revokeObjectURL(r), a.src = r, a;
119
+ __name(drawImage, "drawImage");
120
+ const drawSvg = /* @__PURE__ */ __name((svgData, context, useDataUrl = false) => {
121
+ const imageSrc = useDataUrl ? getSvgImageDataUrl(svgData) : getSvgImageObjectUrl(svgData);
122
+ return drawImage(imageSrc, context).finally(() => DOMURL.revokeObjectURL(imageSrc));
123
+ }, "drawSvg");
124
+ async function canvasToImage(canvas, size, mimeType = "image/png", quality) {
125
+ const image = new Image();
126
+ image.crossOrigin = "anonymous";
127
+ if (size) {
128
+ if (size[0]) {
129
+ image.width = size[0];
130
+ }
131
+ if (size[1]) {
132
+ image.height = size[1];
133
+ }
134
+ }
135
+ const imageSrc = await toObjectUrl(canvas, mimeType, quality);
136
+ image.onload = () => DOMURL.revokeObjectURL(imageSrc);
137
+ image.src = imageSrc;
138
+ return image;
95
139
  }
96
- async function j(t) {
97
- const n = await (await fetch(t)).blob();
98
- return new Promise((i, a) => {
140
+ __name(canvasToImage, "canvasToImage");
141
+ async function objectUrlToDataURL(objectUrl) {
142
+ const response = await fetch(objectUrl);
143
+ const blob = await response.blob();
144
+ return new Promise((res, rej) => {
99
145
  try {
100
- const r = new FileReader();
101
- r.onloadend = () => i(r.result), r.readAsDataURL(n);
102
- } catch (r) {
103
- a(r);
146
+ const reader = new FileReader();
147
+ reader.onloadend = () => res(reader.result);
148
+ reader.readAsDataURL(blob);
149
+ } catch (err) {
150
+ rej(err);
104
151
  }
105
152
  });
106
153
  }
107
- const M = (() => {
108
- const t = new DOMParser();
109
- return (e) => {
110
- const i = t.parseFromString(e, "text/xml").querySelector("svg");
111
- return d(i);
154
+ __name(objectUrlToDataURL, "objectUrlToDataURL");
155
+ const getSvgSize = (() => {
156
+ const domParser = new DOMParser();
157
+ return (svg) => {
158
+ const svgDom = domParser.parseFromString(svg, "text/xml");
159
+ const svgDoc = svgDom.querySelector("svg");
160
+ return getSvgElementSize(svgDoc);
112
161
  };
113
162
  })();
114
- function d(t) {
115
- let e = 0;
116
- t.width.baseVal.unitType === 5 && (e = t.width.baseVal.value), e || (e = t.width.baseVal.value), e || (e = t.viewBox.baseVal.width);
117
- let n = 0;
118
- return t.height.baseVal.unitType === 5 && (n = t.height.baseVal.value), n || (n = t.height.baseVal.value), n || (n = t.viewBox.baseVal.height), [e, n];
163
+ function getSvgElementSize(svgDoc) {
164
+ let w = 0;
165
+ if (svgDoc.width.baseVal.unitType === 5) {
166
+ w = svgDoc.width.baseVal.value;
167
+ }
168
+ if (!w) {
169
+ w = svgDoc.width.baseVal.value;
170
+ }
171
+ if (!w) {
172
+ w = svgDoc.viewBox.baseVal.width;
173
+ }
174
+ let h = 0;
175
+ if (svgDoc.height.baseVal.unitType === 5) {
176
+ h = svgDoc.height.baseVal.value;
177
+ }
178
+ if (!h) {
179
+ h = svgDoc.height.baseVal.value;
180
+ }
181
+ if (!h) {
182
+ h = svgDoc.viewBox.baseVal.height;
183
+ }
184
+ return [w, h];
119
185
  }
120
- const C = (() => {
121
- const t = new DOMParser();
122
- return (e) => {
123
- const i = t.parseFromString(e, "text/xml").querySelector("svg"), a = d(i);
124
- return i.setAttribute("width", `${a[0]}px`), i.setAttribute("height", `${a[1]}px`), i.outerHTML;
186
+ __name(getSvgElementSize, "getSvgElementSize");
187
+ const refineSvg = (() => {
188
+ const domParser = new DOMParser();
189
+ return (data) => {
190
+ const svgDom = domParser.parseFromString(data, "text/xml");
191
+ const svgDoc = svgDom.querySelector("svg");
192
+ const size = getSvgElementSize(svgDoc);
193
+ svgDoc.setAttribute("width", `${size[0]}px`);
194
+ svgDoc.setAttribute("height", `${size[1]}px`);
195
+ return svgDoc.outerHTML;
125
196
  };
126
197
  })();
127
- function I(t, e, n, i, a, r) {
128
- if (typeof r == "number")
198
+ function drawRoundedRect(context, x, y, w, h, r) {
199
+ if (typeof r === "number") {
129
200
  r = { tl: r, tr: r, br: r, bl: r };
130
- else {
131
- const s = { tl: 0, tr: 0, br: 0, bl: 0 };
132
- for (let o in s)
133
- r[o] = r[o] || s[o];
201
+ } else {
202
+ const defaultRadius = { tl: 0, tr: 0, br: 0, bl: 0 };
203
+ for (let side in defaultRadius) {
204
+ r[side] = r[side] || defaultRadius[side];
205
+ }
134
206
  }
135
- t.beginPath(), t.moveTo(e + r.tl, n), t.lineTo(e + i - r.tr, n), t.quadraticCurveTo(e + i, n, e + i, n + r.tr), t.lineTo(e + i, n + a - r.br), t.quadraticCurveTo(e + i, n + a, e + i - r.br, n + a), t.lineTo(e + r.bl, n + a), t.quadraticCurveTo(e, n + a, e, n + a - r.bl), t.lineTo(e, n + r.tl), t.quadraticCurveTo(e, n, e + r.tl, n), t.closePath();
207
+ context.beginPath();
208
+ context.moveTo(x + r.tl, y);
209
+ context.lineTo(x + w - r.tr, y);
210
+ context.quadraticCurveTo(x + w, y, x + w, y + r.tr);
211
+ context.lineTo(x + w, y + h - r.br);
212
+ context.quadraticCurveTo(x + w, y + h, x + w - r.br, y + h);
213
+ context.lineTo(x + r.bl, y + h);
214
+ context.quadraticCurveTo(x, y + h, x, y + h - r.bl);
215
+ context.lineTo(x, y + r.tl);
216
+ context.quadraticCurveTo(x, y, x + r.tl, y);
217
+ context.closePath();
136
218
  }
219
+ __name(drawRoundedRect, "drawRoundedRect");
137
220
  export {
138
- y as canvasToImage,
139
- L as createCanvas,
140
- T as drawImage,
141
- I as drawRoundedRect,
142
- O as drawSvg,
143
- B as fitText,
144
- d as getSvgElementSize,
145
- S as getSvgImageDataUrl,
146
- v as getSvgImageObjectUrl,
147
- M as getSvgSize,
148
- R as html2Svg,
149
- j as objectUrlToDataURL,
150
- U as querySvgData,
151
- C as refineSvg,
152
- p as toObjectUrl
221
+ canvasToImage,
222
+ createCanvas,
223
+ drawImage,
224
+ drawRoundedRect,
225
+ drawSvg,
226
+ fitText,
227
+ getSvgElementSize,
228
+ getSvgImageDataUrl,
229
+ getSvgImageObjectUrl,
230
+ getSvgSize,
231
+ html2Svg,
232
+ objectUrlToDataURL,
233
+ querySvgData,
234
+ refineSvg,
235
+ toObjectUrl
153
236
  };
154
237
  //# sourceMappingURL=canvasUtils.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasUtils.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/canvasUtils.ts"],"sourcesContent":null,"names":["DOMURL","createCanvas","w","h","canvas","context","supportExtendedMetrics","fitText","ctx","text","sizeProvider","targetWidth","fontFamily","fontSize","updateFont","width","getBBOxWidth","offsetLeft","x","y","measure","encodeUnicode","str","_","s","html2Svg","xmlSerializer","elements","viewBoxSize","css","html","el","svgElement","getSvgImageObjectUrl","svgData","svgBlob","getSvgImageDataUrl","querySvgData","selector","svg","toObjectUrl","mimeType","quality","res","rej","blob","err","drawImage","src","image","drawSvg","useDataUrl","imageSrc","canvasToImage","size","objectUrlToDataURL","objectUrl","reader","getSvgSize","domParser","svgDoc","getSvgElementSize","refineSvg","data","drawRoundedRect","defaultRadius","side"],"mappings":"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"}
1
+ {"version":3,"file":"canvasUtils.es.js","sources":["D:/Src/my/actdim/public/utico/src/gfx/canvasUtils.ts"],"sourcesContent":["const DOMURL = window.URL || window.webkitURL;\r\n\r\nexport function createCanvas(w: number, h: number /*, dpi?: number*/) {\r\n const canvas = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"canvas\") as HTMLCanvasElement;\r\n // if (!dpi) {\r\n // dpi = window.devicePixelRatio;\r\n // }\r\n // context2d\r\n const context = canvas.getContext(\"2d\");\r\n if (context) {\r\n // context.imageSmoothingEnabled = true;\r\n // context.mozImageSmoothingEnabled = true;\r\n // context.oImageSmoothingEnabled = true;\r\n // context.webkitImageSmoothingEnabled = true;\r\n context[\"imageSmoothingQuality\"] = \"high\";\r\n }\r\n canvas.width = w;\r\n // canvas.width = w * dpi;\r\n canvas.height = h;\r\n // canvas.height = h * dpi;\r\n\r\n // canvas.style.width = w + \"px\";\r\n // context.scale(dpi, dpi);\r\n return { canvas, context };\r\n}\r\n\r\nconst supportExtendedMetrics = \"actualBoundingBoxRight\" in TextMetrics.prototype;\r\n\r\nexport type TextSizeProvider = (fontSize: number) => [number, number];\r\n\r\nexport function fitText(\r\n ctx: CanvasRenderingContext2D,\r\n text = \"\",\r\n sizeProvider: TextSizeProvider,\r\n targetWidth = ctx.canvas.width,\r\n fontFamily = \"Arial\"\r\n) {\r\n let fontSize = 1;\r\n const updateFont = () => {\r\n ctx.font = fontSize + \"px \" + fontFamily;\r\n };\r\n updateFont();\r\n let width = getBBOxWidth(text);\r\n // first pass width increment = 1\r\n while (width && width <= targetWidth) {\r\n fontSize++;\r\n updateFont();\r\n width = getBBOxWidth(text);\r\n }\r\n // second pass, the other way around, with increment = -0.1\r\n while (width && width > targetWidth) {\r\n fontSize -= 0.1;\r\n updateFont();\r\n width = getBBOxWidth(text);\r\n }\r\n // revert to last valid step\r\n fontSize += 0.1;\r\n updateFont();\r\n\r\n // we need to measure where our bounding box actually starts\r\n const offsetLeft = ctx.measureText(text).actualBoundingBoxLeft || 0;\r\n const [x, y] = sizeProvider(fontSize);\r\n ctx.fillText(text, x + offsetLeft, y);\r\n\r\n function getBBOxWidth(text) {\r\n const measure = ctx.measureText(text);\r\n\r\n return supportExtendedMetrics ? measure.actualBoundingBoxLeft + measure.actualBoundingBoxRight : measure.width;\r\n }\r\n}\r\n\r\nfunction encodeUnicode(str: any) {\r\n // +(\"0x\" + s)\r\n return window.encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (_, s) => String.fromCharCode(parseInt(s, 16)));\r\n // old way\r\n // return window.unescape(window.encodeURIComponent(str))\r\n}\r\n\r\nexport const html2Svg = (() => {\r\n const xmlSerializer = new XMLSerializer();\r\n return async (elements: HTMLElement[], viewBoxSize: number[], css: string) => {\r\n const w = viewBoxSize[0];\r\n const h = viewBoxSize[1];\r\n\r\n let html = elements\r\n .map(\r\n (el) => `<foreignObject width=\"${w}\" height=\"${h}\">\r\n <body xmlns=\"http://www.w3.org/1999/xhtml\">\r\n ${el.outerHTML}\r\n </body>\r\n </foreignObject>`\r\n )\r\n .join(\"\");\r\n html = `<style>${css}</style>${html}`;\r\n\r\n var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\r\n svgElement.setAttributeNS(null, \"viewBox\", `0 0 ${w} ${h}`);\r\n svgElement.setAttributeNS(null, \"width\", w + \"\");\r\n svgElement.setAttributeNS(null, \"height\", h + \"\");\r\n svgElement.innerHTML = html;\r\n\r\n return xmlSerializer.serializeToString(svgElement); // svg string\r\n };\r\n})();\r\n\r\nexport function getSvgImageObjectUrl(svgData: string) {\r\n const svgBlob = new Blob([svgData], { type: \"image/svg+xml;charset=utf-8\" });\r\n return DOMURL.createObjectURL(svgBlob);\r\n}\r\n\r\nexport function getSvgImageDataUrl(svgData: string) {\r\n const svgBase64 = window.btoa(encodeUnicode(svgData));\r\n return \"data:image/svg+xml;base64,\" + svgBase64;\r\n // without base64 encoding (ok for simple SVGs):\r\n // return \"data:image/svg+xml;charset=utf-8,\" + window.encodeURIComponent(svgData); // \"data:image/svg+xml;utf8,\"; - incorrect!\r\n}\r\n\r\n// querySvgDataUrl\r\nexport const querySvgData = (() => {\r\n const xmlSerializer = new XMLSerializer();\r\n return (selector: string) => {\r\n const svg = document.querySelector(selector);\r\n const svgData = xmlSerializer.serializeToString(svg);\r\n return svgData;\r\n };\r\n})();\r\n\r\nexport function toObjectUrl(canvas: HTMLCanvasElement, mimeType = \"image/png\", quality?: number) {\r\n // 'image/jpeg', 'image/webp'\r\n return new Promise<string>((res, rej) => {\r\n try {\r\n canvas.toBlob(\r\n (blob) => {\r\n res(URL.createObjectURL(blob));\r\n },\r\n mimeType,\r\n quality\r\n );\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport function drawImage(src: string, context: CanvasRenderingContext2D) {\r\n return new Promise<void>((res, rej) => {\r\n try {\r\n const image = new Image();\r\n // const image = document.createElement('img');\r\n image.crossOrigin = \"anonymous\";\r\n image.onload = () => {\r\n // image.naturalWidth, image.naturalHeight\r\n context.drawImage(image, 0, 0, image.width, image.height, 0, 0, context.canvas.width, context.canvas.height);\r\n res();\r\n };\r\n image.src = src;\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport const drawSvg = (svgData: string, context: CanvasRenderingContext2D, useDataUrl = false) => {\r\n const imageSrc = useDataUrl ? getSvgImageDataUrl(svgData) : getSvgImageObjectUrl(svgData);\r\n return drawImage(imageSrc, context).finally(() => DOMURL.revokeObjectURL(imageSrc));\r\n};\r\n\r\n/*\r\nexport function canvasToImage(canvas: HTMLCanvasElement, size?: number[], mimeType = \"image/png\", quality?: number) {\r\n // const image = document.createElement(\"img\")\r\n const image = new Image();\r\n image.crossOrigin = \"anonymous\";\r\n if (size) {\r\n if (size[0]) {\r\n image.width = size[0];\r\n }\r\n if (size[1]) {\r\n image.height = size[1];\r\n }\r\n }\r\n const imageSrc = canvas.toDataURL(mimeType, quality);\r\n image.src = imageSrc;\r\n return image;\r\n}\r\n*/\r\n\r\nexport async function canvasToImage(canvas: HTMLCanvasElement, size?: number[], mimeType = \"image/png\", quality?: number) {\r\n // document.createElement(\"img\")\r\n const image = new Image();\r\n image.crossOrigin = \"anonymous\";\r\n if (size) {\r\n if (size[0]) {\r\n image.width = size[0];\r\n }\r\n if (size[1]) {\r\n image.height = size[1];\r\n }\r\n }\r\n const imageSrc = await toObjectUrl(canvas, mimeType, quality);\r\n image.onload = () => DOMURL.revokeObjectURL(imageSrc);\r\n image.src = imageSrc;\r\n return image;\r\n}\r\n\r\nexport async function objectUrlToDataURL(objectUrl: string): Promise<string> {\r\n const response = await fetch(objectUrl);\r\n const blob = await response.blob();\r\n\r\n return new Promise((res, rej) => {\r\n try {\r\n const reader = new FileReader();\r\n reader.onloadend = () => res(reader.result as string);\r\n reader.readAsDataURL(blob);\r\n } catch (err) {\r\n rej(err);\r\n }\r\n });\r\n}\r\n\r\nexport const getSvgSize = (() => {\r\n const domParser = new DOMParser();\r\n return (svg: string) => {\r\n const svgDom = domParser.parseFromString(svg, \"text/xml\");\r\n // svgElement/svgNode\r\n // const svgDoc = svgDom.documentElement;\r\n const svgDoc = svgDom.querySelector(\"svg\");\r\n return getSvgElementSize(svgDoc);\r\n };\r\n})();\r\n\r\nexport function getSvgElementSize(svgDoc: SVGSVGElement): [number, number] {\r\n let w = 0;\r\n if (svgDoc.width.baseVal.unitType === 5) {\r\n // units - pixels\r\n w = svgDoc.width.baseVal.value;\r\n }\r\n if (!w) {\r\n w = svgDoc.width.baseVal.value;\r\n }\r\n if (!w) {\r\n w = svgDoc.viewBox.baseVal.width;\r\n }\r\n\r\n let h = 0;\r\n if (svgDoc.height.baseVal.unitType === 5) {\r\n // units - pixels\r\n h = svgDoc.height.baseVal.value;\r\n }\r\n if (!h) {\r\n h = svgDoc.height.baseVal.value;\r\n }\r\n if (!h) {\r\n h = svgDoc.viewBox.baseVal.height;\r\n }\r\n\r\n // const attributes = svgDoc.attributes;\r\n // see also:\r\n // attributes.getNamedItem(\"viewBox\").value\r\n // attributes.getNamedItem('width').value - with units\r\n // attributes.getNamedItem('height').value - with units\r\n\r\n return [w, h];\r\n}\r\n\r\nexport const refineSvg = (() => {\r\n const domParser = new DOMParser();\r\n return (data: string) => {\r\n const svgDom = domParser.parseFromString(data, \"text/xml\");\r\n // const svgDoc = svgDom.documentElement;\r\n const svgDoc = svgDom.querySelector(\"svg\");\r\n const size = getSvgElementSize(svgDoc);\r\n // workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=700533#c39\r\n svgDoc.setAttribute(\"width\", `${size[0]}px`);\r\n svgDoc.setAttribute(\"height\", `${size[1]}px`);\r\n return svgDoc.outerHTML;\r\n };\r\n})();\r\n\r\nexport function drawRoundedRect(\r\n context: CanvasRenderingContext2D,\r\n x: number,\r\n y: number,\r\n w: number,\r\n h: number,\r\n r:\r\n | number\r\n | {\r\n tl: number;\r\n tr: number;\r\n br: number;\r\n bl: number;\r\n }\r\n) {\r\n if (typeof r === \"number\") {\r\n r = { tl: r, tr: r, br: r, bl: r };\r\n } else {\r\n const defaultRadius = { tl: 0, tr: 0, br: 0, bl: 0 };\r\n for (let side in defaultRadius) {\r\n r[side] = r[side] || defaultRadius[side];\r\n }\r\n }\r\n context.beginPath();\r\n context.moveTo(x + r.tl, y);\r\n context.lineTo(x + w - r.tr, y);\r\n context.quadraticCurveTo(x + w, y, x + w, y + r.tr);\r\n context.lineTo(x + w, y + h - r.br);\r\n context.quadraticCurveTo(x + w, y + h, x + w - r.br, y + h);\r\n context.lineTo(x + r.bl, y + h);\r\n context.quadraticCurveTo(x, y + h, x, y + h - r.bl);\r\n context.lineTo(x, y + r.tl);\r\n context.quadraticCurveTo(x, y, x + r.tl, y);\r\n context.closePath();\r\n\r\n // context.fill();\r\n // context.stroke();\r\n\r\n // simple but less accurate\r\n // if (w < 2 * r) {\r\n // r = w / 2;\r\n // }\r\n // if (h < 2 * r) {\r\n // r = h / 2;\r\n // }\r\n // context.beginPath();\r\n // context.moveTo(x + r, y);\r\n // context.arcTo(x + w, y, x + w, y + h, r);\r\n // context.arcTo(x + w, y + h, x, y + h, r);\r\n // context.arcTo(x, y + h, x, y, r);\r\n // context.arcTo(x, y, x + w, y, r);\r\n // context.closePath();\r\n\r\n // https://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas\r\n // + other: https://newfivefour.com/javascript-canvas-rounded-rectangle.html\r\n}\r\n"],"names":["text"],"mappings":"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"}
@@ -1,70 +1,128 @@
1
- function r(t) {
2
- const n = 255 - t;
3
- return 0 | Math.random() * n + t;
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ function getRandomColorChannelNumber(brightness) {
4
+ const r = 255 - brightness;
5
+ return 0 | Math.random() * r + brightness;
4
6
  }
5
- function C(t) {
6
- let u = r(t).toString(16);
7
- return u.length == 1 && (u = "0" + u), u;
7
+ __name(getRandomColorChannelNumber, "getRandomColorChannelNumber");
8
+ function getRandomColorChannelString(brightness) {
9
+ const n = getRandomColorChannelNumber(brightness);
10
+ let result = n.toString(16);
11
+ if (result.length == 1) {
12
+ result = "0" + result;
13
+ }
14
+ return result;
8
15
  }
9
- function N(t = null, n = null) {
10
- n == null && (n = Math.floor(Math.random() * 255));
11
- const u = r(n), e = r(n), i = r(n), o = t ?? r(n);
12
- return a(u, e, i, o);
16
+ __name(getRandomColorChannelString, "getRandomColorChannelString");
17
+ function getRandom32BitColorNumber(alpha = null, brightness = null) {
18
+ if (brightness == void 0) {
19
+ brightness = Math.floor(Math.random() * 255);
20
+ }
21
+ const r = getRandomColorChannelNumber(brightness);
22
+ const g = getRandomColorChannelNumber(brightness);
23
+ const b = getRandomColorChannelNumber(brightness);
24
+ const a = alpha == void 0 ? getRandomColorChannelNumber(brightness) : alpha;
25
+ return getColorNumberFromRgba(r, g, b, a);
13
26
  }
14
- function d(t = null) {
15
- t == null && (t = Math.floor(Math.random() * 255));
16
- const n = r(t), u = r(t), e = r(t);
17
- return a(n, u, e);
27
+ __name(getRandom32BitColorNumber, "getRandom32BitColorNumber");
28
+ function getRandom24BitColorNumber(brightness = null) {
29
+ if (brightness == void 0) {
30
+ brightness = Math.floor(Math.random() * 255);
31
+ }
32
+ const r = getRandomColorChannelNumber(brightness);
33
+ const g = getRandomColorChannelNumber(brightness);
34
+ const b = getRandomColorChannelNumber(brightness);
35
+ return getColorNumberFromRgba(r, g, b);
18
36
  }
19
- function f(t) {
20
- t = t.trim().toUpperCase();
21
- let n = !1;
22
- return t.startsWith("-") && (n = !0, t = t.slice(1).trimStart()), t.startsWith("0X") && (t = t.slice(2)), t.startsWith("#") && (t = t.slice(1)), n && (t = "-" + t), t;
37
+ __name(getRandom24BitColorNumber, "getRandom24BitColorNumber");
38
+ function refineColorHexString(colorHexString) {
39
+ colorHexString = colorHexString.trim().toUpperCase();
40
+ let isNegative = false;
41
+ if (colorHexString.startsWith("-")) {
42
+ isNegative = true;
43
+ colorHexString = colorHexString.slice(1).trimStart();
44
+ }
45
+ if (colorHexString.startsWith("0X")) {
46
+ colorHexString = colorHexString.slice(2);
47
+ }
48
+ if (colorHexString.startsWith("#")) {
49
+ colorHexString = colorHexString.slice(1);
50
+ }
51
+ if (isNegative) {
52
+ colorHexString = "-" + colorHexString;
53
+ }
54
+ return colorHexString;
23
55
  }
24
- function l(t) {
25
- return t ? (t = f(t), // new Number(colorHexString).valueOf();
26
- // parseInt(colorHexString);
27
- parseInt(t, 16)) : 0;
56
+ __name(refineColorHexString, "refineColorHexString");
57
+ function getColorNumberFromHexString(colorHexString) {
58
+ if (!colorHexString) {
59
+ return 0;
60
+ } else {
61
+ colorHexString = refineColorHexString(colorHexString);
62
+ let result = (
63
+ // new Number(colorHexString).valueOf();
64
+ // parseInt(colorHexString);
65
+ parseInt(colorHexString, 16)
66
+ );
67
+ return result;
68
+ }
28
69
  }
29
- function b(t) {
30
- if (t) {
31
- const n = l(t);
32
- return n > 16777215 ? {
33
- r: n >> 24 & 255,
34
- // red
35
- // r: (colorValue & 0xFF000000) >> 24,
36
- g: n >> 16 & 255,
37
- // green
38
- // g: (colorValue & 0xFF0000) >> 16,
39
- b: n >> 8 & 255,
40
- // blue
41
- // b: (colorValue & 0xFF00) >> 8,
42
- a: n & 255
43
- // alpha
44
- } : {
45
- r: n >> 16 & 255,
46
- // r: (colorValue & 0xFF0000) >> 16,
47
- g: n >> 8 & 255,
48
- // g: (colorValue & 0xFF00) >> 8,
49
- b: n & 255,
50
- // b: colorValue & 0xFF,
51
- a: 255
52
- };
53
- } else
70
+ __name(getColorNumberFromHexString, "getColorNumberFromHexString");
71
+ function getColorRgbaFromHexString(colorHexString) {
72
+ if (!colorHexString) {
54
73
  return {
55
74
  r: 0,
56
75
  g: 0,
57
76
  b: 0,
58
77
  a: 255
59
78
  };
79
+ } else {
80
+ const colorValue = getColorNumberFromHexString(colorHexString);
81
+ if (colorValue > 16777215) {
82
+ return {
83
+ r: colorValue >> 24 & 255,
84
+ // red
85
+ // r: (colorValue & 0xFF000000) >> 24,
86
+ g: colorValue >> 16 & 255,
87
+ // green
88
+ // g: (colorValue & 0xFF0000) >> 16,
89
+ b: colorValue >> 8 & 255,
90
+ // blue
91
+ // b: (colorValue & 0xFF00) >> 8,
92
+ a: colorValue & 255
93
+ // alpha
94
+ };
95
+ } else {
96
+ return {
97
+ r: colorValue >> 16 & 255,
98
+ // r: (colorValue & 0xFF0000) >> 16,
99
+ g: colorValue >> 8 & 255,
100
+ // g: (colorValue & 0xFF00) >> 8,
101
+ b: colorValue & 255,
102
+ // b: colorValue & 0xFF,
103
+ a: 255
104
+ };
105
+ }
106
+ }
60
107
  }
61
- function m(t) {
62
- return t == null || Number.isNaN(t) ? "" : (t = Math.floor(t), "#" + ("000000" + t.toString(16)).slice(-6));
108
+ __name(getColorRgbaFromHexString, "getColorRgbaFromHexString");
109
+ function get24bitColorHexStringFromNumber(color) {
110
+ if (color == null || Number.isNaN(color)) {
111
+ return "";
112
+ }
113
+ color = Math.floor(color);
114
+ return "#" + ("000000" + color.toString(16)).slice(-6);
63
115
  }
64
- function v(t) {
65
- return t == null || Number.isNaN(t) ? "" : (t = Math.floor(t), "#" + ("00000000" + t.toString(16)).slice(-8));
116
+ __name(get24bitColorHexStringFromNumber, "get24bitColorHexStringFromNumber");
117
+ function get32BitColorHexStringFromNumber(color) {
118
+ if (color == null || Number.isNaN(color)) {
119
+ return "";
120
+ }
121
+ color = Math.floor(color);
122
+ return "#" + ("00000000" + color.toString(16)).slice(-8);
66
123
  }
67
- const M = {
124
+ __name(get32BitColorHexStringFromNumber, "get32BitColorHexStringFromNumber");
125
+ const ColorDepthMode = {
68
126
  Bit24: "24bit",
69
127
  // always 24-bit, alpha ignored
70
128
  Bit32: "32bit",
@@ -72,24 +130,32 @@ const M = {
72
130
  Auto: "auto"
73
131
  // 24-bit if alpha not provided, 32-bit otherwise
74
132
  };
75
- function a(t, n, u, e = void 0, i = "auto") {
76
- let o;
77
- return i === "24bit" || i === "auto" && e == null ? o = (t << 16) + (n << 8) + u : o = (t << 24) + (n << 16) + (u << 8) + (e ?? 255), o >>> 0;
133
+ function getColorNumberFromRgba(r, g, b, a = void 0, mode = "auto") {
134
+ let result;
135
+ const use24 = mode === "24bit" || mode === "auto" && a == void 0;
136
+ if (use24) {
137
+ result = (r << 16) + (g << 8) + b;
138
+ } else {
139
+ result = (r << 24) + (g << 16) + (b << 8) + (a ?? 255);
140
+ }
141
+ return result >>> 0;
78
142
  }
79
- function R(t, n, u, e = void 0) {
80
- const i = a(t, n, u, e);
81
- return m(i);
143
+ __name(getColorNumberFromRgba, "getColorNumberFromRgba");
144
+ function getColorHexStringFromRgba(r, g, b, a = void 0) {
145
+ const value = getColorNumberFromRgba(r, g, b, a);
146
+ return get24bitColorHexStringFromNumber(value);
82
147
  }
148
+ __name(getColorHexStringFromRgba, "getColorHexStringFromRgba");
83
149
  export {
84
- M as ColorDepthMode,
85
- m as get24bitColorHexStringFromNumber,
86
- v as get32BitColorHexStringFromNumber,
87
- R as getColorHexStringFromRgba,
88
- l as getColorNumberFromHexString,
89
- a as getColorNumberFromRgba,
90
- b as getColorRgbaFromHexString,
91
- d as getRandom24BitColorNumber,
92
- N as getRandom32BitColorNumber,
93
- C as getRandomColorChannelString
150
+ ColorDepthMode,
151
+ get24bitColorHexStringFromNumber,
152
+ get32BitColorHexStringFromNumber,
153
+ getColorHexStringFromRgba,
154
+ getColorNumberFromHexString,
155
+ getColorNumberFromRgba,
156
+ getColorRgbaFromHexString,
157
+ getRandom24BitColorNumber,
158
+ getRandom32BitColorNumber,
159
+ getRandomColorChannelString
94
160
  };
95
161
  //# sourceMappingURL=color.es.js.map