@mintplayer/ng-bootstrap 16.1.2 → 16.2.0
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/esm2022/signature-pad/index.mjs +2 -0
- package/esm2022/signature-pad/mintplayer-ng-bootstrap-signature-pad.mjs +5 -0
- package/esm2022/signature-pad/src/component/signature-pad.component.mjs +110 -0
- package/esm2022/signature-pad/src/index.mjs +4 -0
- package/esm2022/signature-pad/src/interfaces/index.mjs +4 -0
- package/esm2022/signature-pad/src/interfaces/point.mjs +2 -0
- package/esm2022/signature-pad/src/interfaces/signature.mjs +2 -0
- package/esm2022/signature-pad/src/interfaces/stroke.mjs +2 -0
- package/esm2022/signature-pad/src/signature-pad.module.mjs +19 -0
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs +131 -0
- package/fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs.map +1 -0
- package/package.json +7 -1
- package/signature-pad/index.d.ts +1 -0
- package/signature-pad/src/component/signature-pad.component.d.ts +25 -0
- package/signature-pad/src/index.d.ts +3 -0
- package/signature-pad/src/interfaces/index.d.ts +3 -0
- package/signature-pad/src/interfaces/point.d.ts +4 -0
- package/signature-pad/src/interfaces/signature.d.ts +4 -0
- package/signature-pad/src/interfaces/stroke.d.ts +4 -0
- package/signature-pad/src/signature-pad.module.d.ts +8 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './src';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NyYyc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWludHBsYXllci1uZy1ib290c3RyYXAtc2lnbmF0dXJlLXBhZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2lnbmF0dXJlLXBhZC9taW50cGxheWVyLW5nLWJvb3RzdHJhcC1zaWduYXR1cmUtcGFkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
class BsSignaturePadComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
//#region Signature
|
|
8
|
+
this.signature$ = new BehaviorSubject({ strokes: [] });
|
|
9
|
+
this.signatureChange = new EventEmitter();
|
|
10
|
+
//#endregion
|
|
11
|
+
this.width = 500;
|
|
12
|
+
this.height = 300;
|
|
13
|
+
this.classes = true;
|
|
14
|
+
this.isDrawing = false;
|
|
15
|
+
this.context = null;
|
|
16
|
+
this.minHeight = 5;
|
|
17
|
+
this.signature$.pipe(takeUntilDestroyed()).subscribe((signature) => {
|
|
18
|
+
this.signatureChange.emit(signature);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
get signature() {
|
|
22
|
+
return this.signature$.value;
|
|
23
|
+
}
|
|
24
|
+
set signature(value) {
|
|
25
|
+
this.signature$.next(value);
|
|
26
|
+
}
|
|
27
|
+
ngAfterViewInit() {
|
|
28
|
+
this.context = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });
|
|
29
|
+
}
|
|
30
|
+
onTouchMove(ev) {
|
|
31
|
+
if (this.isDrawing) {
|
|
32
|
+
ev.preventDefault();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
onPointerStart(ev) {
|
|
36
|
+
ev.preventDefault();
|
|
37
|
+
this.isDrawing = true;
|
|
38
|
+
if (this.context) {
|
|
39
|
+
this.signature.strokes.push({
|
|
40
|
+
points: [{ x: ev.offsetX, y: ev.offsetY }]
|
|
41
|
+
});
|
|
42
|
+
this.signatureChange.emit(this.signature);
|
|
43
|
+
this.context.fillStyle = 'black';
|
|
44
|
+
this.context.beginPath();
|
|
45
|
+
this.context.moveTo(ev.offsetX, ev.offsetY);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
onPointerMove(ev) {
|
|
49
|
+
if (this.isDrawing && this.context) {
|
|
50
|
+
ev.preventDefault();
|
|
51
|
+
// this.context.moveTo(this.points.at(-1)!.x, this.points.at(-1)!.y);
|
|
52
|
+
// // ctx.arc(x, y, width, 0, 2 * Math.PI, false);
|
|
53
|
+
// // this.context.arc(ev.offsetX, ev.offsetY, 2, 0, 2 * Math.PI, false);
|
|
54
|
+
// // this.context.arcTo(ev.offsetX, ev.offsetY,)
|
|
55
|
+
// this.context.closePath();
|
|
56
|
+
// this.context.fill();
|
|
57
|
+
this.signature.strokes.at(-1)?.points.push({ x: ev.offsetX, y: ev.offsetY });
|
|
58
|
+
this.signatureChange.emit(this.signature);
|
|
59
|
+
this.context.lineTo(ev.offsetX, ev.offsetY);
|
|
60
|
+
this.context.stroke();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
onPointerEnd(ev) {
|
|
64
|
+
if (this.isDrawing && this.context) {
|
|
65
|
+
ev.preventDefault();
|
|
66
|
+
this.isDrawing = false;
|
|
67
|
+
this.signatureChange.emit(this.signature);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: BsSignaturePadComponent, selector: "bs-signature-pad", inputs: { signature: "signature", width: "width", height: "height" }, outputs: { signatureChange: "signatureChange" }, host: { listeners: { "touchmove": "onTouchMove($event)", "pointerdown": "onPointerStart($event)", "pointermove": "onPointerMove($event)", "window:pointerup": "onPointerEnd($event)" }, properties: { "class.border": "this.classes", "class.d-inline-block": "this.classes", "style.min-height.rem": "this.minHeight" } }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<canvas [width]=\"width\" [height]=\"height\" class=\"d-block\" #canvas></canvas>", styles: [""] }); }
|
|
72
|
+
}
|
|
73
|
+
export { BsSignaturePadComponent };
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'bs-signature-pad', template: "<canvas [width]=\"width\" [height]=\"height\" class=\"d-block\" #canvas></canvas>" }]
|
|
77
|
+
}], ctorParameters: function () { return []; }, propDecorators: { signatureChange: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}], signature: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], width: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], height: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], classes: [{
|
|
86
|
+
type: HostBinding,
|
|
87
|
+
args: ['class.border']
|
|
88
|
+
}, {
|
|
89
|
+
type: HostBinding,
|
|
90
|
+
args: ['class.d-inline-block']
|
|
91
|
+
}], canvas: [{
|
|
92
|
+
type: ViewChild,
|
|
93
|
+
args: ['canvas']
|
|
94
|
+
}], minHeight: [{
|
|
95
|
+
type: HostBinding,
|
|
96
|
+
args: ['style.min-height.rem']
|
|
97
|
+
}], onTouchMove: [{
|
|
98
|
+
type: HostListener,
|
|
99
|
+
args: ['touchmove', ['$event']]
|
|
100
|
+
}], onPointerStart: [{
|
|
101
|
+
type: HostListener,
|
|
102
|
+
args: ['pointerdown', ['$event']]
|
|
103
|
+
}], onPointerMove: [{
|
|
104
|
+
type: HostListener,
|
|
105
|
+
args: ['pointermove', ['$event']]
|
|
106
|
+
}], onPointerEnd: [{
|
|
107
|
+
type: HostListener,
|
|
108
|
+
args: ['window:pointerup', ['$event']]
|
|
109
|
+
}] } });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLXBhZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvc3JjL2NvbXBvbmVudC9zaWduYXR1cmUtcGFkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbWludHBsYXllci1uZy1ib290c3RyYXAvc2lnbmF0dXJlLXBhZC9zcmMvY29tcG9uZW50L3NpZ25hdHVyZS1wYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhJLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBSWhFLE1BS2EsdUJBQXVCO0lBQ2xDO1FBTUEsbUJBQW1CO1FBQ25CLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBWSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQU8xRCxZQUFZO1FBRUgsVUFBSyxHQUFHLEdBQUcsQ0FBQztRQUNaLFdBQU0sR0FBRyxHQUFHLENBQUM7UUFJdEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsWUFBTyxHQUFvQyxJQUFJLENBQUM7UUFNWCxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBL0JqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFF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OUQsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzBFQWFsQixlQUFlO3NCQUF4QixNQUFNO2dCQUlhLFNBQVM7c0JBQTVCLEtBQUs7Z0JBS0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFJTixPQUFPO3NCQUZOLFdBQVc7dUJBQUMsY0FBYzs7c0JBQzFCLFdBQVc7dUJBQUMsc0JBQXNCO2dCQUlkLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFPa0IsU0FBUztzQkFBN0MsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ0ksV0FBVztzQkFBakQsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBS0ksY0FBYztzQkFBdEQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY0UsYUFBYTtzQkFBckQsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBa0JPLFlBQVk7c0JBQXpELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaWduYXR1cmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NpZ25hdHVyZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFBvaW50IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wb2ludCc7XG5pbXBvcnQgeyBTdHJva2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3N0cm9rZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2JzLXNpZ25hdHVyZS1wYWQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbmF0dXJlLXBhZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NpZ25hdHVyZS1wYWQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQnNTaWduYXR1cmVQYWRDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zaWduYXR1cmUkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoc2lnbmF0dXJlKSA9PiB7XG4gICAgICB0aGlzLnNpZ25hdHVyZUNoYW5nZS5lbWl0KHNpZ25hdHVyZSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyNyZWdpb24gU2lnbmF0dXJlXG4gIHNpZ25hdHVyZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNpZ25hdHVyZT4oeyBzdHJva2VzOiBbXSB9KTtcbiAgQE91dHB1dCgpIHNpZ25hdHVyZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2lnbmF0dXJlPigpO1xuICBwdWJsaWMgZ2V0IHNpZ25hdHVyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaWduYXR1cmUkLnZhbHVlO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2lnbmF0dXJlKHZhbHVlOiBTaWduYXR1cmUpIHtcbiAgICB0aGlzLnNpZ25hdHVyZSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQElucHV0KCkgd2lkdGggPSA1MDA7XG4gIEBJbnB1dCgpIGhlaWdodCA9IDMwMDtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJvcmRlcicpXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZC1pbmxpbmUtYmxvY2snKVxuICBjbGFzc2VzID0gdHJ1ZTtcblxuICBpc0RyYXdpbmcgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gIGNvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGwgPSBudWxsO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmdldENvbnRleHQoJzJkJywgeyB3aWxsUmVhZEZyZXF1ZW50bHk6IHRydWUgfSk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQucmVtJykgbWluSGVpZ2h0ID0gNTtcbiAgQEhvc3RMaXN0ZW5lcigndG91Y2htb3ZlJywgWyckZXZlbnQnXSkgb25Ub3VjaE1vdmUoZXY6IFRvdWNoRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc0RyYXdpbmcpIHtcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG4gIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgWyckZXZlbnQnXSkgb25Qb2ludGVyU3RhcnQoZXY6IFBvaW50ZXJFdmVudCkge1xuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgdGhpcy5pc0RyYXdpbmcgPSB0cnVlO1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuc2lnbmF0dXJlLnN0cm9rZXMucHVzaCh7XG4gICAgICAgIHBvaW50czogW3sgeDogZXYub2Zmc2V0WCwgeTogZXYub2Zmc2V0WSB9XVxuICAgICAgfSk7XG4gICAgICB0aGlzLnNpZ25hdHVyZUNoYW5nZS5lbWl0KHRoaXMuc2lnbmF0dXJlKTtcblxuICAgICAgdGhpcy5jb250ZXh0LmZpbGxTdHlsZSA9ICdibGFjayc7XG4gICAgICB0aGlzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gICAgICB0aGlzLmNvbnRleHQubW92ZVRvKGV2Lm9mZnNldFgsIGV2Lm9mZnNldFkpO1xuICAgIH1cbiAgfVxuICBASG9zdExpc3RlbmVyKCdwb2ludGVybW92ZScsIFsnJGV2ZW50J10pIG9uUG9pbnRlck1vdmUoZXY6IFBvaW50ZXJFdmVudCkge1xuICAgIGlmICh0aGlzLmlzRHJhd2luZyAmJiB0aGlzLmNvbnRleHQpIHtcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBcbiAgICAgIC8vIHRoaXMuY29udGV4dC5tb3ZlVG8odGhpcy5wb2ludHMuYXQoLTEpIS54LCB0aGlzLnBvaW50cy5hdCgtMSkhLnkpO1xuICAgICAgLy8gLy8gY3R4LmFyYyh4LCB5LCB3aWR0aCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcbiAgICAgIC8vIC8vIHRoaXMuY29udGV4dC5hcmMoZXYub2Zmc2V0WCwgZXYub2Zmc2V0WSwgMiwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcbiAgICAgIC8vIC8vIHRoaXMuY29udGV4dC5hcmNUbyhldi5vZmZzZXRYLCBldi5vZmZzZXRZLClcbiAgICAgIC8vIHRoaXMuY29udGV4dC5jbG9zZVBhdGgoKTtcbiAgICAgIC8vIHRoaXMuY29udGV4dC5maWxsKCk7XG5cbiAgICAgIHRoaXMuc2lnbmF0dXJlLnN0cm9rZXMuYXQoLTEpPy5wb2ludHMucHVzaCh7IHg6IGV2Lm9mZnNldFgsIHk6IGV2Lm9mZnNldFkgfSk7XG4gICAgICB0aGlzLnNpZ25hdHVyZUNoYW5nZS5lbWl0KHRoaXMuc2lnbmF0dXJlKTtcblxuICAgICAgdGhpcy5jb250ZXh0LmxpbmVUbyhldi5vZmZzZXRYLCBldi5vZmZzZXRZKTtcbiAgICAgIHRoaXMuY29udGV4dC5zdHJva2UoKTtcbiAgICB9XG4gIH1cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnBvaW50ZXJ1cCcsIFsnJGV2ZW50J10pIG9uUG9pbnRlckVuZChldjogUG9pbnRlckV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNEcmF3aW5nICYmIHRoaXMuY29udGV4dCkge1xuICAgICAgZXYucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuaXNEcmF3aW5nID0gZmFsc2U7XG4gICAgICB0aGlzLnNpZ25hdHVyZUNoYW5nZS5lbWl0KHRoaXMuc2lnbmF0dXJlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxjYW52YXMgW3dpZHRoXT1cIndpZHRoXCIgW2hlaWdodF09XCJoZWlnaHRcIiBjbGFzcz1cImQtYmxvY2tcIiAjY2FudmFzPjwvY2FudmFzPiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './signature-pad.module';
|
|
2
|
+
export * from './component/signature-pad.component';
|
|
3
|
+
export * from './interfaces';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlLXBhZC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQvc2lnbmF0dXJlLXBhZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJzsiXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from './point';
|
|
2
|
+
export * from './stroke';
|
|
3
|
+
export * from './signature';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvaW50JztcbmV4cG9ydCAqIGZyb20gJy4vc3Ryb2tlJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbmF0dXJlJzsiXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvc3JjL2ludGVyZmFjZXMvcG9pbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUG9pbnQge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59Il19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zaWduYXR1cmUtcGFkL3NyYy9pbnRlcmZhY2VzL3NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Ryb2tlIH0gZnJvbSBcIi4vc3Ryb2tlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmF0dXJlIHtcbiAgICBzdHJva2VzOiBTdHJva2VbXTtcbn0iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Ryb2tlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9taW50cGxheWVyLW5nLWJvb3RzdHJhcC9zaWduYXR1cmUtcGFkL3NyYy9pbnRlcmZhY2VzL3N0cm9rZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUG9pbnQgfSBmcm9tIFwiLi9wb2ludFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0cm9rZSB7XG4gICAgcG9pbnRzOiBQb2ludFtdO1xufSJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BsSignaturePadComponent } from './component/signature-pad.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
class BsSignaturePadModule {
|
|
6
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, declarations: [BsSignaturePadComponent], imports: [CommonModule], exports: [BsSignaturePadComponent] }); }
|
|
8
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, imports: [CommonModule] }); }
|
|
9
|
+
}
|
|
10
|
+
export { BsSignaturePadModule };
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [BsSignaturePadComponent],
|
|
15
|
+
imports: [CommonModule],
|
|
16
|
+
exports: [BsSignaturePadComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmF0dXJlLXBhZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21pbnRwbGF5ZXItbmctYm9vdHN0cmFwL3NpZ25hdHVyZS1wYWQvc3JjL3NpZ25hdHVyZS1wYWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUU5RSxNQUthLG9CQUFvQjs4R0FBcEIsb0JBQW9COytHQUFwQixvQkFBb0IsaUJBSmhCLHVCQUF1QixhQUM1QixZQUFZLGFBQ1osdUJBQXVCOytHQUV0QixvQkFBb0IsWUFIckIsWUFBWTs7U0FHWCxvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFMaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDdkMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztpQkFDbkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJzU2lnbmF0dXJlUGFkQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQvc2lnbmF0dXJlLXBhZC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtCc1NpZ25hdHVyZVBhZENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBleHBvcnRzOiBbQnNTaWduYXR1cmVQYWRDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBCc1NpZ25hdHVyZVBhZE1vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Component, Output, Input, HostBinding, ViewChild, HostListener, NgModule } from '@angular/core';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
+
|
|
7
|
+
class BsSignaturePadComponent {
|
|
8
|
+
constructor() {
|
|
9
|
+
//#region Signature
|
|
10
|
+
this.signature$ = new BehaviorSubject({ strokes: [] });
|
|
11
|
+
this.signatureChange = new EventEmitter();
|
|
12
|
+
//#endregion
|
|
13
|
+
this.width = 500;
|
|
14
|
+
this.height = 300;
|
|
15
|
+
this.classes = true;
|
|
16
|
+
this.isDrawing = false;
|
|
17
|
+
this.context = null;
|
|
18
|
+
this.minHeight = 5;
|
|
19
|
+
this.signature$.pipe(takeUntilDestroyed()).subscribe((signature) => {
|
|
20
|
+
this.signatureChange.emit(signature);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
get signature() {
|
|
24
|
+
return this.signature$.value;
|
|
25
|
+
}
|
|
26
|
+
set signature(value) {
|
|
27
|
+
this.signature$.next(value);
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
this.context = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });
|
|
31
|
+
}
|
|
32
|
+
onTouchMove(ev) {
|
|
33
|
+
if (this.isDrawing) {
|
|
34
|
+
ev.preventDefault();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
onPointerStart(ev) {
|
|
38
|
+
ev.preventDefault();
|
|
39
|
+
this.isDrawing = true;
|
|
40
|
+
if (this.context) {
|
|
41
|
+
this.signature.strokes.push({
|
|
42
|
+
points: [{ x: ev.offsetX, y: ev.offsetY }]
|
|
43
|
+
});
|
|
44
|
+
this.signatureChange.emit(this.signature);
|
|
45
|
+
this.context.fillStyle = 'black';
|
|
46
|
+
this.context.beginPath();
|
|
47
|
+
this.context.moveTo(ev.offsetX, ev.offsetY);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
onPointerMove(ev) {
|
|
51
|
+
if (this.isDrawing && this.context) {
|
|
52
|
+
ev.preventDefault();
|
|
53
|
+
// this.context.moveTo(this.points.at(-1)!.x, this.points.at(-1)!.y);
|
|
54
|
+
// // ctx.arc(x, y, width, 0, 2 * Math.PI, false);
|
|
55
|
+
// // this.context.arc(ev.offsetX, ev.offsetY, 2, 0, 2 * Math.PI, false);
|
|
56
|
+
// // this.context.arcTo(ev.offsetX, ev.offsetY,)
|
|
57
|
+
// this.context.closePath();
|
|
58
|
+
// this.context.fill();
|
|
59
|
+
this.signature.strokes.at(-1)?.points.push({ x: ev.offsetX, y: ev.offsetY });
|
|
60
|
+
this.signatureChange.emit(this.signature);
|
|
61
|
+
this.context.lineTo(ev.offsetX, ev.offsetY);
|
|
62
|
+
this.context.stroke();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
onPointerEnd(ev) {
|
|
66
|
+
if (this.isDrawing && this.context) {
|
|
67
|
+
ev.preventDefault();
|
|
68
|
+
this.isDrawing = false;
|
|
69
|
+
this.signatureChange.emit(this.signature);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.4", type: BsSignaturePadComponent, selector: "bs-signature-pad", inputs: { signature: "signature", width: "width", height: "height" }, outputs: { signatureChange: "signatureChange" }, host: { listeners: { "touchmove": "onTouchMove($event)", "pointerdown": "onPointerStart($event)", "pointermove": "onPointerMove($event)", "window:pointerup": "onPointerEnd($event)" }, properties: { "class.border": "this.classes", "class.d-inline-block": "this.classes", "style.min-height.rem": "this.minHeight" } }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }], ngImport: i0, template: "<canvas [width]=\"width\" [height]=\"height\" class=\"d-block\" #canvas></canvas>", styles: [""] }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'bs-signature-pad', template: "<canvas [width]=\"width\" [height]=\"height\" class=\"d-block\" #canvas></canvas>" }]
|
|
78
|
+
}], ctorParameters: function () { return []; }, propDecorators: { signatureChange: [{
|
|
79
|
+
type: Output
|
|
80
|
+
}], signature: [{
|
|
81
|
+
type: Input
|
|
82
|
+
}], width: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], height: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], classes: [{
|
|
87
|
+
type: HostBinding,
|
|
88
|
+
args: ['class.border']
|
|
89
|
+
}, {
|
|
90
|
+
type: HostBinding,
|
|
91
|
+
args: ['class.d-inline-block']
|
|
92
|
+
}], canvas: [{
|
|
93
|
+
type: ViewChild,
|
|
94
|
+
args: ['canvas']
|
|
95
|
+
}], minHeight: [{
|
|
96
|
+
type: HostBinding,
|
|
97
|
+
args: ['style.min-height.rem']
|
|
98
|
+
}], onTouchMove: [{
|
|
99
|
+
type: HostListener,
|
|
100
|
+
args: ['touchmove', ['$event']]
|
|
101
|
+
}], onPointerStart: [{
|
|
102
|
+
type: HostListener,
|
|
103
|
+
args: ['pointerdown', ['$event']]
|
|
104
|
+
}], onPointerMove: [{
|
|
105
|
+
type: HostListener,
|
|
106
|
+
args: ['pointermove', ['$event']]
|
|
107
|
+
}], onPointerEnd: [{
|
|
108
|
+
type: HostListener,
|
|
109
|
+
args: ['window:pointerup', ['$event']]
|
|
110
|
+
}] } });
|
|
111
|
+
|
|
112
|
+
class BsSignaturePadModule {
|
|
113
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
114
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, declarations: [BsSignaturePadComponent], imports: [CommonModule], exports: [BsSignaturePadComponent] }); }
|
|
115
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, imports: [CommonModule] }); }
|
|
116
|
+
}
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: BsSignaturePadModule, decorators: [{
|
|
118
|
+
type: NgModule,
|
|
119
|
+
args: [{
|
|
120
|
+
declarations: [BsSignaturePadComponent],
|
|
121
|
+
imports: [CommonModule],
|
|
122
|
+
exports: [BsSignaturePadComponent],
|
|
123
|
+
}]
|
|
124
|
+
}] });
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Generated bundle index. Do not edit.
|
|
128
|
+
*/
|
|
129
|
+
|
|
130
|
+
export { BsSignaturePadComponent, BsSignaturePadModule };
|
|
131
|
+
//# sourceMappingURL=mintplayer-ng-bootstrap-signature-pad.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mintplayer-ng-bootstrap-signature-pad.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/signature-pad/src/component/signature-pad.component.ts","../../../../libs/mintplayer-ng-bootstrap/signature-pad/src/component/signature-pad.component.html","../../../../libs/mintplayer-ng-bootstrap/signature-pad/src/signature-pad.module.ts","../../../../libs/mintplayer-ng-bootstrap/signature-pad/mintplayer-ng-bootstrap-signature-pad.ts"],"sourcesContent":["import { AfterViewInit, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, ViewChild } from '@angular/core';\nimport { Signature } from '../interfaces/signature';\nimport { BehaviorSubject } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Point } from '../interfaces/point';\nimport { Stroke } from '../interfaces/stroke';\n\n@Component({\n selector: 'bs-signature-pad',\n templateUrl: './signature-pad.component.html',\n styleUrls: ['./signature-pad.component.scss'],\n})\nexport class BsSignaturePadComponent implements AfterViewInit {\n constructor() {\n this.signature$.pipe(takeUntilDestroyed()).subscribe((signature) => {\n this.signatureChange.emit(signature);\n });\n }\n\n //#region Signature\n signature$ = new BehaviorSubject<Signature>({ strokes: [] });\n @Output() signatureChange = new EventEmitter<Signature>();\n public get signature() {\n return this.signature$.value;\n }\n @Input() public set signature(value: Signature) {\n this.signature$.next(value);\n }\n //#endregion\n\n @Input() width = 500;\n @Input() height = 300;\n\n @HostBinding('class.border')\n @HostBinding('class.d-inline-block')\n classes = true;\n\n isDrawing = false;\n @ViewChild('canvas') canvas!: ElementRef<HTMLCanvasElement>;\n context: CanvasRenderingContext2D | null = null;\n\n ngAfterViewInit() {\n this.context = this.canvas.nativeElement.getContext('2d', { willReadFrequently: true });\n }\n\n @HostBinding('style.min-height.rem') minHeight = 5;\n @HostListener('touchmove', ['$event']) onTouchMove(ev: TouchEvent) {\n if (this.isDrawing) {\n ev.preventDefault();\n }\n }\n @HostListener('pointerdown', ['$event']) onPointerStart(ev: PointerEvent) {\n ev.preventDefault();\n this.isDrawing = true;\n if (this.context) {\n this.signature.strokes.push({\n points: [{ x: ev.offsetX, y: ev.offsetY }]\n });\n this.signatureChange.emit(this.signature);\n\n this.context.fillStyle = 'black';\n this.context.beginPath();\n this.context.moveTo(ev.offsetX, ev.offsetY);\n }\n }\n @HostListener('pointermove', ['$event']) onPointerMove(ev: PointerEvent) {\n if (this.isDrawing && this.context) {\n ev.preventDefault();\n \n // this.context.moveTo(this.points.at(-1)!.x, this.points.at(-1)!.y);\n // // ctx.arc(x, y, width, 0, 2 * Math.PI, false);\n // // this.context.arc(ev.offsetX, ev.offsetY, 2, 0, 2 * Math.PI, false);\n // // this.context.arcTo(ev.offsetX, ev.offsetY,)\n // this.context.closePath();\n // this.context.fill();\n\n this.signature.strokes.at(-1)?.points.push({ x: ev.offsetX, y: ev.offsetY });\n this.signatureChange.emit(this.signature);\n\n this.context.lineTo(ev.offsetX, ev.offsetY);\n this.context.stroke();\n }\n }\n @HostListener('window:pointerup', ['$event']) onPointerEnd(ev: PointerEvent) {\n if (this.isDrawing && this.context) {\n ev.preventDefault();\n this.isDrawing = false;\n this.signatureChange.emit(this.signature);\n }\n }\n}\n","<canvas [width]=\"width\" [height]=\"height\" class=\"d-block\" #canvas></canvas>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BsSignaturePadComponent } from './component/signature-pad.component';\n\n@NgModule({\n declarations: [BsSignaturePadComponent],\n imports: [CommonModule],\n exports: [BsSignaturePadComponent],\n})\nexport class BsSignaturePadModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mintplayer/ng-bootstrap",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "16.
|
|
4
|
+
"version": "16.2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/MintPlayer/mintplayer-ng-bootstrap",
|
|
@@ -336,6 +336,12 @@
|
|
|
336
336
|
"esm": "./esm2022/select2/mintplayer-ng-bootstrap-select2.mjs",
|
|
337
337
|
"default": "./fesm2022/mintplayer-ng-bootstrap-select2.mjs"
|
|
338
338
|
},
|
|
339
|
+
"./signature-pad": {
|
|
340
|
+
"types": "./signature-pad/index.d.ts",
|
|
341
|
+
"esm2022": "./esm2022/signature-pad/mintplayer-ng-bootstrap-signature-pad.mjs",
|
|
342
|
+
"esm": "./esm2022/signature-pad/mintplayer-ng-bootstrap-signature-pad.mjs",
|
|
343
|
+
"default": "./fesm2022/mintplayer-ng-bootstrap-signature-pad.mjs"
|
|
344
|
+
},
|
|
339
345
|
"./spinner": {
|
|
340
346
|
"types": "./spinner/index.d.ts",
|
|
341
347
|
"esm2022": "./esm2022/spinner/mintplayer-ng-bootstrap-spinner.mjs",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AfterViewInit, ElementRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Signature } from '../interfaces/signature';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class BsSignaturePadComponent implements AfterViewInit {
|
|
6
|
+
constructor();
|
|
7
|
+
signature$: BehaviorSubject<Signature>;
|
|
8
|
+
signatureChange: EventEmitter<Signature>;
|
|
9
|
+
get signature(): Signature;
|
|
10
|
+
set signature(value: Signature);
|
|
11
|
+
width: number;
|
|
12
|
+
height: number;
|
|
13
|
+
classes: boolean;
|
|
14
|
+
isDrawing: boolean;
|
|
15
|
+
canvas: ElementRef<HTMLCanvasElement>;
|
|
16
|
+
context: CanvasRenderingContext2D | null;
|
|
17
|
+
ngAfterViewInit(): void;
|
|
18
|
+
minHeight: number;
|
|
19
|
+
onTouchMove(ev: TouchEvent): void;
|
|
20
|
+
onPointerStart(ev: PointerEvent): void;
|
|
21
|
+
onPointerMove(ev: PointerEvent): void;
|
|
22
|
+
onPointerEnd(ev: PointerEvent): void;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsSignaturePadComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BsSignaturePadComponent, "bs-signature-pad", never, { "signature": { "alias": "signature"; "required": false; }; "width": { "alias": "width"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, { "signatureChange": "signatureChange"; }, never, never, false, never>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./component/signature-pad.component";
|
|
3
|
+
import * as i2 from "@angular/common";
|
|
4
|
+
export declare class BsSignaturePadModule {
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BsSignaturePadModule, never>;
|
|
6
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<BsSignaturePadModule, [typeof i1.BsSignaturePadComponent], [typeof i2.CommonModule], [typeof i1.BsSignaturePadComponent]>;
|
|
7
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<BsSignaturePadModule>;
|
|
8
|
+
}
|