@datagrok-libraries/utils 4.2.0 → 4.2.1

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/CHANGELOG.md CHANGED
@@ -1,8 +1,15 @@
1
1
  # utils changelog
2
2
 
3
+ ## 4.2.1 (2024-04-19)
4
+
5
+ ### Features
6
+
7
+ * Added svgToImage
8
+
3
9
  ## 4.2.0 (2024-04-01)
4
10
 
5
11
  ### Features
12
+
6
13
  * Added active files handler
7
14
 
8
15
  ## 4.1.45 (2024-02-20)
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "email": "amuzychyna@datagrok.ai"
9
9
  },
10
10
  "fullName": "Utils",
11
- "version": "4.2.0",
11
+ "version": "4.2.1",
12
12
  "description": "Common utilities",
13
13
  "dependencies": {
14
14
  "cash-dom": "^8.1.1",
@@ -0,0 +1,7 @@
1
+ import * as DG from 'datagrok-api/dg';
2
+ declare global {
3
+ interface CanvasRenderingContext2D {
4
+ drawCross(r: DG.Rect, strokeStyle?: string, lineWidth?: number): void;
5
+ }
6
+ }
7
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGtC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,wBAAwB;QAChC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvE;CACF"}
package/src/render.js ADDED
@@ -0,0 +1,14 @@
1
+ CanvasRenderingContext2D.prototype.drawCross = function drawCross(r, strokeStyle = '#FF0000', lineWidth = 2) {
2
+ const q = r.fitSquare();
3
+ this.clearRect(r.left, r.top, r.width, r.height);
4
+ this.strokeStyle = strokeStyle;
5
+ this.lineWidth = lineWidth;
6
+ this.beginPath();
7
+ this.moveTo(q.left, q.top);
8
+ this.lineTo(q.right, q.bottom);
9
+ this.moveTo(q.right, q.top);
10
+ this.lineTo(q.left, q.bottom);
11
+ this.stroke();
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxTQUFTLENBQy9ELENBQVUsRUFBRSxjQUFzQixTQUFTLEVBQUUsWUFBb0IsQ0FBQztJQUVsRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB7XG4gICAgZHJhd0Nyb3NzKHI6IERHLlJlY3QsIHN0cm9rZVN0eWxlPzogc3RyaW5nLCBsaW5lV2lkdGg/OiBudW1iZXIpOiB2b2lkO1xuICB9XG59XG5cbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5wcm90b3R5cGUuZHJhd0Nyb3NzID0gZnVuY3Rpb24gZHJhd0Nyb3NzKFxuICByOiBERy5SZWN0LCBzdHJva2VTdHlsZTogc3RyaW5nID0gJyNGRjAwMDAnLCBsaW5lV2lkdGg6IG51bWJlciA9IDJcbik6IHZvaWQge1xuICBjb25zdCBxID0gci5maXRTcXVhcmUoKTtcbiAgdGhpcy5jbGVhclJlY3Qoci5sZWZ0LCByLnRvcCwgci53aWR0aCwgci5oZWlnaHQpO1xuXG4gIHRoaXMuc3Ryb2tlU3R5bGUgPSBzdHJva2VTdHlsZTtcbiAgdGhpcy5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gIHRoaXMuYmVnaW5QYXRoKCk7XG4gIHRoaXMubW92ZVRvKHEubGVmdCwgcS50b3ApO1xuICB0aGlzLmxpbmVUbyhxLnJpZ2h0LCBxLmJvdHRvbSk7XG4gIHRoaXMubW92ZVRvKHEucmlnaHQsIHEudG9wKTtcbiAgdGhpcy5saW5lVG8ocS5sZWZ0LCBxLmJvdHRvbSk7XG4gIHRoaXMuc3Ryb2tlKCk7XG59O1xuIl19
package/src/svg.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function svgToImage(svgEl: SVGSVGElement, dpr: number, timeout?: number): Promise<HTMLImageElement>;
2
+ //# sourceMappingURL=svg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg.d.ts","sourceRoot":"","sources":["svg.ts"],"names":[],"mappings":"AAOA,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyB/G"}
package/src/svg.js ADDED
@@ -0,0 +1,23 @@
1
+ import { testEvent } from './test';
2
+ import { Subject } from 'rxjs';
3
+ export function svgToImage(svgEl, dpr, timeout = 1000) {
4
+ const w = svgEl.width.baseVal.value;
5
+ const h = svgEl.height.baseVal.value;
6
+ const svgImg = new Image(dpr * w, dpr * h);
7
+ const svgXml = new XMLSerializer().serializeToString(svgEl);
8
+ const svg64Prefix = 'data:image/svg+xml;base64,';
9
+ const svg64 = window.btoa(svgXml);
10
+ const svgImgOnLoad = new Subject();
11
+ const svgImgOnLoadListener = () => {
12
+ svgImgOnLoad.next();
13
+ };
14
+ svgImg.addEventListener('load', svgImgOnLoadListener);
15
+ return new Promise((resolve, reject) => {
16
+ testEvent(svgImgOnLoad, () => { resolve(svgImg); }, () => { svgImg.src = svg64Prefix + svg64; }, timeout)
17
+ .catch((err) => { reject(err); })
18
+ .finally(() => {
19
+ svgImg.removeEventListener('load', svgImgOnLoadListener);
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3ZnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDakMsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU3QixNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQW9CLEVBQUUsR0FBVyxFQUFFLFVBQWtCLElBQUk7SUFDbEYsTUFBTSxDQUFDLEdBQVcsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzVDLE1BQU0sQ0FBQyxHQUFXLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRTVELE1BQU0sV0FBVyxHQUFXLDRCQUE0QixDQUFDO0lBQ3pELE1BQU0sS0FBSyxHQUFXLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUN6QyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsRUFBRTtRQUNoQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQyxDQUFDO0lBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRXRELE9BQU8sSUFBSSxPQUFPLENBQW1CLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3ZELFNBQVMsQ0FBQyxZQUFZLEVBQ3BCLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUIsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsR0FBRyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUMzQyxPQUFPLENBQUM7YUFDUCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ1osTUFBTSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5pbXBvcnQgKiBhcyB1aSBmcm9tICdkYXRhZ3Jvay1hcGkvdWknO1xuaW1wb3J0ICogYXMgREcgZnJvbSAnZGF0YWdyb2stYXBpL2RnJztcblxuaW1wb3J0IHt0ZXN0RXZlbnR9IGZyb20gJy4vdGVzdCc7XG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3ZnVG9JbWFnZShzdmdFbDogU1ZHU1ZHRWxlbWVudCwgZHByOiBudW1iZXIsIHRpbWVvdXQ6IG51bWJlciA9IDEwMDApOiBQcm9taXNlPEhUTUxJbWFnZUVsZW1lbnQ+IHtcbiAgY29uc3QgdzogbnVtYmVyID0gc3ZnRWwud2lkdGguYmFzZVZhbC52YWx1ZTtcbiAgY29uc3QgaDogbnVtYmVyID0gc3ZnRWwuaGVpZ2h0LmJhc2VWYWwudmFsdWU7XG4gIGNvbnN0IHN2Z0ltZyA9IG5ldyBJbWFnZShkcHIgKiB3LCBkcHIgKiBoKTtcbiAgY29uc3Qgc3ZnWG1sID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmdFbCk7XG5cbiAgY29uc3Qgc3ZnNjRQcmVmaXg6IHN0cmluZyA9ICdkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LCc7XG4gIGNvbnN0IHN2ZzY0OiBzdHJpbmcgPSB3aW5kb3cuYnRvYShzdmdYbWwpO1xuXG4gIGNvbnN0IHN2Z0ltZ09uTG9hZCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGNvbnN0IHN2Z0ltZ09uTG9hZExpc3RlbmVyID0gKCkgPT4ge1xuICAgIHN2Z0ltZ09uTG9hZC5uZXh0KCk7XG4gIH07XG4gIHN2Z0ltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc3ZnSW1nT25Mb2FkTGlzdGVuZXIpO1xuXG4gIHJldHVybiBuZXcgUHJvbWlzZTxIVE1MSW1hZ2VFbGVtZW50PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgdGVzdEV2ZW50KHN2Z0ltZ09uTG9hZCxcbiAgICAgICgpID0+IHsgcmVzb2x2ZShzdmdJbWcpOyB9LFxuICAgICAgKCkgPT4geyBzdmdJbWcuc3JjID0gc3ZnNjRQcmVmaXggKyBzdmc2NDsgfSxcbiAgICAgIHRpbWVvdXQpXG4gICAgICAuY2F0Y2goKGVycikgPT4geyByZWplY3QoZXJyKTsgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgc3ZnSW1nLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdmdJbWdPbkxvYWRMaXN0ZW5lcik7XG4gICAgICB9KTtcbiAgfSk7XG59XG4iXX0=