@design.estate/dees-catalog 1.0.173

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 (102) hide show
  1. package/dist_bundle/bundle.js +2704 -0
  2. package/dist_bundle/bundle.js.map +7 -0
  3. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  4. package/dist_ts_web/00_commitinfo_data.js +9 -0
  5. package/dist_ts_web/elements/dees-button-exit.d.ts +7 -0
  6. package/dist_ts_web/elements/dees-button-exit.js +52 -0
  7. package/dist_ts_web/elements/dees-button.d.ts +20 -0
  8. package/dist_ts_web/elements/dees-button.js +215 -0
  9. package/dist_ts_web/elements/dees-chips.d.ts +18 -0
  10. package/dist_ts_web/elements/dees-chips.js +124 -0
  11. package/dist_ts_web/elements/dees-contextmenu.d.ts +18 -0
  12. package/dist_ts_web/elements/dees-contextmenu.js +173 -0
  13. package/dist_ts_web/elements/dees-dataview-codebox.d.ts +15 -0
  14. package/dist_ts_web/elements/dees-dataview-codebox.js +177 -0
  15. package/dist_ts_web/elements/dees-dataview-statusobject.d.ts +14 -0
  16. package/dist_ts_web/elements/dees-dataview-statusobject.js +163 -0
  17. package/dist_ts_web/elements/dees-form-submit.d.ts +17 -0
  18. package/dist_ts_web/elements/dees-form-submit.js +68 -0
  19. package/dist_ts_web/elements/dees-form.d.ts +29 -0
  20. package/dist_ts_web/elements/dees-form.js +173 -0
  21. package/dist_ts_web/elements/dees-icon.d.ts +76 -0
  22. package/dist_ts_web/elements/dees-icon.js +153 -0
  23. package/dist_ts_web/elements/dees-input-checkbox.d.ts +18 -0
  24. package/dist_ts_web/elements/dees-input-checkbox.js +178 -0
  25. package/dist_ts_web/elements/dees-input-dropdown.d.ts +30 -0
  26. package/dist_ts_web/elements/dees-input-dropdown.js +185 -0
  27. package/dist_ts_web/elements/dees-input-fileupload.d.ts +24 -0
  28. package/dist_ts_web/elements/dees-input-fileupload.js +196 -0
  29. package/dist_ts_web/elements/dees-input-quantityselector.d.ts +19 -0
  30. package/dist_ts_web/elements/dees-input-quantityselector.js +122 -0
  31. package/dist_ts_web/elements/dees-input-radio.d.ts +19 -0
  32. package/dist_ts_web/elements/dees-input-radio.js +136 -0
  33. package/dist_ts_web/elements/dees-input-text.d.ts +26 -0
  34. package/dist_ts_web/elements/dees-input-text.js +183 -0
  35. package/dist_ts_web/elements/dees-mobilenavigation.d.ts +27 -0
  36. package/dist_ts_web/elements/dees-mobilenavigation.js +185 -0
  37. package/dist_ts_web/elements/dees-pdf.d.ts +17 -0
  38. package/dist_ts_web/elements/dees-pdf.js +108 -0
  39. package/dist_ts_web/elements/dees-preview.d.ts +1 -0
  40. package/dist_ts_web/elements/dees-preview.js +2 -0
  41. package/dist_ts_web/elements/dees-search.d.ts +1 -0
  42. package/dist_ts_web/elements/dees-search.js +2 -0
  43. package/dist_ts_web/elements/dees-searchbox.d.ts +1 -0
  44. package/dist_ts_web/elements/dees-searchbox.js +2 -0
  45. package/dist_ts_web/elements/dees-speechbubble.d.ts +18 -0
  46. package/dist_ts_web/elements/dees-speechbubble.js +153 -0
  47. package/dist_ts_web/elements/dees-spinner.d.ts +15 -0
  48. package/dist_ts_web/elements/dees-spinner.js +130 -0
  49. package/dist_ts_web/elements/dees-stepper.d.ts +29 -0
  50. package/dist_ts_web/elements/dees-stepper.js +231 -0
  51. package/dist_ts_web/elements/dees-table.d.ts +28 -0
  52. package/dist_ts_web/elements/dees-table.js +348 -0
  53. package/dist_ts_web/elements/dees-toast.d.ts +10 -0
  54. package/dist_ts_web/elements/dees-toast.js +29 -0
  55. package/dist_ts_web/elements/dees-tooltip.d.ts +1 -0
  56. package/dist_ts_web/elements/dees-tooltip.js +2 -0
  57. package/dist_ts_web/elements/dees-updater.d.ts +16 -0
  58. package/dist_ts_web/elements/dees-updater.js +91 -0
  59. package/dist_ts_web/elements/dees-windowlayer.d.ts +17 -0
  60. package/dist_ts_web/elements/dees-windowlayer.js +85 -0
  61. package/dist_ts_web/elements/index.d.ts +24 -0
  62. package/dist_ts_web/elements/index.js +25 -0
  63. package/dist_ts_web/elements/plugins.d.ts +4 -0
  64. package/dist_ts_web/elements/plugins.js +7 -0
  65. package/dist_ts_web/index.d.ts +2 -0
  66. package/dist_ts_web/index.js +3 -0
  67. package/license +22 -0
  68. package/npmextra.json +18 -0
  69. package/package.json +55 -0
  70. package/readme.md +39 -0
  71. package/ts_web/00_commitinfo_data.ts +8 -0
  72. package/ts_web/elements/dees-button-exit.ts +48 -0
  73. package/ts_web/elements/dees-button.ts +218 -0
  74. package/ts_web/elements/dees-chips.ts +124 -0
  75. package/ts_web/elements/dees-contextmenu.ts +181 -0
  76. package/ts_web/elements/dees-dataview-codebox.ts +178 -0
  77. package/ts_web/elements/dees-dataview-statusobject.ts +170 -0
  78. package/ts_web/elements/dees-form-submit.ts +70 -0
  79. package/ts_web/elements/dees-form.ts +191 -0
  80. package/ts_web/elements/dees-icon.ts +204 -0
  81. package/ts_web/elements/dees-input-checkbox.ts +175 -0
  82. package/ts_web/elements/dees-input-dropdown.ts +173 -0
  83. package/ts_web/elements/dees-input-fileupload.ts +195 -0
  84. package/ts_web/elements/dees-input-quantityselector.ts +113 -0
  85. package/ts_web/elements/dees-input-radio.ts +125 -0
  86. package/ts_web/elements/dees-input-text.ts +171 -0
  87. package/ts_web/elements/dees-mobilenavigation.ts +189 -0
  88. package/ts_web/elements/dees-pdf.ts +119 -0
  89. package/ts_web/elements/dees-preview.ts +0 -0
  90. package/ts_web/elements/dees-search.ts +0 -0
  91. package/ts_web/elements/dees-searchbox.ts +0 -0
  92. package/ts_web/elements/dees-speechbubble.ts +157 -0
  93. package/ts_web/elements/dees-spinner.ts +131 -0
  94. package/ts_web/elements/dees-stepper.ts +262 -0
  95. package/ts_web/elements/dees-table.ts +360 -0
  96. package/ts_web/elements/dees-toast.ts +26 -0
  97. package/ts_web/elements/dees-tooltip.ts +1 -0
  98. package/ts_web/elements/dees-updater.ts +90 -0
  99. package/ts_web/elements/dees-windowlayer.ts +85 -0
  100. package/ts_web/elements/index.ts +24 -0
  101. package/ts_web/elements/plugins.ts +13 -0
  102. package/ts_web/index.ts +2 -0
@@ -0,0 +1,125 @@
1
+ import {customElement, DeesElement, type TemplateResult, property, html, type CSSResult,} from '@design.estate/dees-element';
2
+ import * as domtools from '@design.estate/dees-domtools';
3
+
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'dees-input-radio': DeesInputRadio;
7
+ }
8
+ }
9
+
10
+ @customElement('dees-input-radio')
11
+ export class DeesInputRadio extends DeesElement {
12
+ public static demo = () => html`<dees-input-radio></dees-input-radio>`;
13
+
14
+ // INSTANCE
15
+ public changeSubject = new domtools.rxjs.Subject();
16
+
17
+ @property()
18
+ public key: string;
19
+
20
+ @property()
21
+ public label: string = 'Label';
22
+
23
+ @property()
24
+ public value: boolean = false;
25
+
26
+ @property({
27
+ type: Boolean,
28
+ })
29
+ public required: boolean = false;
30
+
31
+ @property({
32
+ type: Boolean
33
+ })
34
+ public disabled: boolean = false;
35
+
36
+ constructor() {
37
+ super();
38
+ }
39
+
40
+ public render(): TemplateResult {
41
+ return html `
42
+ <style>
43
+ * {
44
+ box-sizing: border-box;
45
+ }
46
+
47
+ :host {
48
+ display: block;
49
+ position: relative;
50
+ margin: 20px 0px;
51
+ cursor: pointer;
52
+ }
53
+
54
+ .maincontainer {
55
+ transition: all 0.3s;
56
+ display: grid;
57
+ grid-template-columns: 25px auto;
58
+ padding: 5px 0px;
59
+ color: #ccc;
60
+ }
61
+
62
+ .maincontainer:hover {
63
+ color: #fff;
64
+ }
65
+
66
+ .label {
67
+ margin-left: 15px;
68
+ line-height: 25px;
69
+ font-size: 14px;
70
+ font-weight: normal;
71
+
72
+ }
73
+
74
+ input:focus {
75
+ outline: none;
76
+ border-bottom: 1px solid #e4002b;
77
+ }
78
+
79
+ .checkbox {
80
+ transition: all 0.3s;
81
+ box-sizing: border-box;
82
+ border-radius: 20px;
83
+ border: 1px solid #999;
84
+ height: 24px;
85
+ width: 24px;
86
+ display: inline-block;
87
+ background: #222;
88
+ }
89
+
90
+ .checkbox.selected {
91
+ background: #039BE5;
92
+ border: 1px solid #039BE5;
93
+ }
94
+
95
+ .maincontainer:hover .checkbox.selected {
96
+ background: #03A9F4;
97
+ }
98
+
99
+ .innercircle {
100
+ transition: all 0.3s;
101
+ margin: 6px 0px 0px 6px;
102
+ background: #222;
103
+ width: 10px;
104
+ height: 10px;
105
+ border-radius: 10px;
106
+ }
107
+ </style>
108
+ <div class="maincontainer" @click="${this.toggleSelected}">
109
+ <div class="checkbox ${this.value ? 'selected' : ''}">
110
+ ${this.value ? html`<div class="innercircle"></div>`: html``}
111
+ </div>
112
+ <div class="label">${this.label}</div>
113
+ </div>
114
+ `;
115
+ }
116
+
117
+ public async toggleSelected () {
118
+ this.value = !this.value;
119
+ this.dispatchEvent(new CustomEvent('newValue', {
120
+ detail: this.value,
121
+ bubbles: true
122
+ }));
123
+ this.changeSubject.next(this);
124
+ }
125
+ }
@@ -0,0 +1,171 @@
1
+ import {customElement, DeesElement, type TemplateResult, property, html, cssManager, type CSSResult,} from '@design.estate/dees-element';
2
+ import * as domtools from '@design.estate/dees-domtools';
3
+
4
+ declare global {
5
+ interface HTMLElementTagNameMap {
6
+ 'dees-input-text': DeesInputText;
7
+ }
8
+ }
9
+
10
+ @customElement('dees-input-text')
11
+ export class DeesInputText extends DeesElement {
12
+ public static demo = () => html`
13
+ <dees-input-text .label=${'this is a label'} .value=${'test'}></dees-input-text>
14
+ <dees-input-text .isPasswordBool=${true}></dees-input-text>
15
+ `;
16
+
17
+ // INSTANCE
18
+ public changeSubject = new domtools.rxjs.Subject<DeesInputText>();
19
+ public valueChangeSubject = new domtools.rxjs.Subject<string>();
20
+
21
+ @property({
22
+ type: String
23
+ })
24
+ public label: string;
25
+
26
+ @property({
27
+ type: String
28
+ })
29
+ public key: string;
30
+
31
+ @property({
32
+ type: String,
33
+ reflect: true,
34
+ })
35
+ public value: string = '';
36
+
37
+ @property({
38
+ type: Boolean
39
+ })
40
+ public required: boolean = false;
41
+
42
+ @property({
43
+ type: Boolean
44
+ })
45
+ public disabled: boolean = false;
46
+
47
+ @property({
48
+ type: Boolean,
49
+ reflect: true,
50
+ })
51
+ public isPasswordBool = false;
52
+
53
+ @property({
54
+ type: Boolean,
55
+ reflect: true,
56
+ })
57
+ public showPasswordBool = false;
58
+
59
+ public render(): TemplateResult {
60
+ return html `
61
+ <style>
62
+ * {
63
+ box-sizing: border-box;
64
+ }
65
+
66
+ :host {
67
+ position: relative;
68
+ display: grid;
69
+ margin: 10px 0px;
70
+ margin-bottom: 24px;
71
+ }
72
+
73
+ .maincontainer {
74
+ color: ${this.goBright ? '#333' : '#ccc'};
75
+ }
76
+
77
+ .label {
78
+ font-size: 14px;
79
+ margin-bottom: 5px;
80
+ }
81
+
82
+ input {
83
+ margin-top: 5px;
84
+ background: ${this.goBright ? '#fafafa' : '#222'};
85
+ border-top: ${this.goBright ? '1px solid #CCC' : '1px solid #444'};
86
+ border-bottom: ${this.goBright ? '1px solid #CCC' : '1px solid #333'};
87
+ border-right: ${this.goBright ? '1px solid #CCC' : 'none'};
88
+ border-left: ${this.goBright ? '1px solid #CCC' : 'none'};
89
+ padding-left:10px;
90
+ padding-right: 10px;
91
+ border-radius: 2px;
92
+ width: 100%;
93
+ line-height: 48px;
94
+ transition: all 0.2s;
95
+ outline: none;
96
+ font-size: 16px;
97
+ font-family: ${this.isPasswordBool ? 'monospace': 'Inter'};
98
+ letter-spacing: ${this.isPasswordBool ? '1px': 'normal'};
99
+ color: ${this.goBright ? '#333' : '#ccc'};
100
+ }
101
+
102
+ input:disabled {
103
+ background: ${cssManager.bdTheme('#ffffff00', '#11111100')};
104
+ border: 1px dashed ${cssManager.bdTheme('#666666', '#666666')};
105
+ color: #9b9b9e;
106
+ cursor: default;
107
+ }
108
+
109
+ input:focus {
110
+ outline: none;
111
+ border-bottom: 1px solid #e4002b;
112
+ }
113
+
114
+ .showPassword {
115
+ position: absolute;
116
+ bottom: 8px;
117
+ right: 10px;
118
+ border: 1px dashed #444;
119
+ border-radius: 7px;
120
+ padding: 8px 0px;
121
+ width: 40px;
122
+ }
123
+
124
+ .showPassword:hover {
125
+ cursor: pointer;
126
+ background: #333;
127
+ }
128
+ </style>
129
+ <div class="maincontainer">
130
+ ${this.label ? html`<div class="label">${this.label}</div>` : html``}
131
+ <input type="${this.isPasswordBool && !this.showPasswordBool ? 'password' : 'text'}" value=${this.value} @input="${this.updateValue}" .disabled=${this.disabled} />
132
+ ${this.isPasswordBool ? html`
133
+ <div class="showPassword" @click=${this.togglePasswordView}>
134
+ <dees-icon .iconFA=${this.showPasswordBool ? 'eye' : 'eyeSlash'}></dees-icon>
135
+ </div>
136
+ ` : html``}
137
+ </div>
138
+ `;
139
+ }
140
+
141
+ public async updateValue(eventArg: Event) {
142
+ const target: any = eventArg.target;
143
+ this.value = target.value;
144
+ this.changeSubject.next(this);
145
+ this.valueChangeSubject.next(this.value);
146
+ }
147
+
148
+ public async freeze() {
149
+ this.disabled = true;
150
+ }
151
+
152
+ public async unfreeze() {
153
+ this.disabled = false;
154
+ }
155
+
156
+ public async togglePasswordView () {
157
+ const domtools = await this.domtoolsPromise;
158
+ this.showPasswordBool = !this.showPasswordBool;
159
+ console.log(`this.showPasswordBool is: ${this.showPasswordBool}`)
160
+ }
161
+
162
+ public async focus() {
163
+ const textInput = this.shadowRoot.querySelector('input');
164
+ textInput.focus();
165
+ }
166
+
167
+ public async blur() {
168
+ const textInput = this.shadowRoot.querySelector('input');
169
+ textInput.blur();
170
+ }
171
+ }
@@ -0,0 +1,189 @@
1
+ import * as plugins from './plugins.js';
2
+ import {
3
+ cssManager,
4
+ css,
5
+ type CSSResult,
6
+ customElement,
7
+ DeesElement,
8
+ domtools,
9
+ html,
10
+ property,
11
+ } from '@design.estate/dees-element';
12
+ import { DeesWindowLayer } from './dees-windowlayer.js';
13
+
14
+ @customElement('dees-mobilenavigation')
15
+ export class DeesMobilenavigation extends DeesElement {
16
+ // STATIC
17
+ public static demo = () => html`
18
+ <dees-mobilenavigation
19
+ .menuItems="${[
20
+ {
21
+ name: 'hello1',
22
+ action: async () => {},
23
+ },
24
+ {
25
+ name: 'hello2',
26
+ action: async () => {},
27
+ },
28
+ {
29
+ name: 'hello3',
30
+ action: async () => {},
31
+ },
32
+ ]}"
33
+ ></dees-mobilenavigation>
34
+ `;
35
+
36
+ private static singletonRef: DeesMobilenavigation;
37
+ public static async createAndInit(menuItemsArg: plugins.tsclass.website.IMenuItem[]) {
38
+ if (!this.singletonRef) {
39
+ this.singletonRef = new DeesMobilenavigation();
40
+ document.body.append(this.singletonRef);
41
+ await this.singletonRef.init();
42
+ }
43
+ this.singletonRef.menuItems = menuItemsArg;
44
+ await this.singletonRef.readyDeferred.promise;
45
+ this.singletonRef.show();
46
+ return this.singletonRef;
47
+ }
48
+
49
+ // INSTANCE
50
+ @property({
51
+ type: Array,
52
+ })
53
+ public heading: string = `MENU`;
54
+
55
+ @property({
56
+ type: Array,
57
+ })
58
+ public menuItems: plugins.tsclass.website.IMenuItem[] = [];
59
+
60
+ readyDeferred: plugins.smartpromise.Deferred<any> = domtools.plugins.smartpromise.defer();
61
+
62
+ constructor() {
63
+ super();
64
+ /* this.init().then(() => {
65
+ this.show();
66
+ }); */
67
+ }
68
+
69
+ /**
70
+ * inits the mobile navigation
71
+ */
72
+ public async init() {
73
+ await this.updateComplete;
74
+ this.readyDeferred.resolve();
75
+ }
76
+
77
+ public static styles = [
78
+ cssManager.defaultStyles,
79
+ css`
80
+ :host {
81
+ }
82
+
83
+ .main {
84
+ transition: all 0.3s cubic-bezier(0.22, 1, 0.36, 1);
85
+ will-change: transform;
86
+ position: fixed;
87
+ height: 100vh;
88
+ min-width: 280px;
89
+ transform: translateX(200px);
90
+ color: ${cssManager.bdTheme('#333', '#fff')};
91
+ z-index: 250;
92
+ opacity: 0;
93
+ padding: 16px 32px;
94
+ right: 0px;
95
+ top: 0px;
96
+ bottom: 0px;
97
+ background: ${cssManager.bdTheme('#eeeeeb', '#000')};;
98
+ border-left: 1px dashed #444;
99
+ pointer-events: none;
100
+ }
101
+
102
+ .main.show {
103
+ pointer-events: all;
104
+ transform: translateX(0px);
105
+ opacity: 1;
106
+ }
107
+
108
+ .menuItem {
109
+ text-align: left;
110
+ padding: 8px;
111
+ margin-left: -8px;
112
+ margin-right: -8px;
113
+ cursor: pointer;
114
+ border-radius: 3px;
115
+ }
116
+ .menuItem:hover {
117
+ background: ${cssManager.bdTheme('#CCC', '#333')};;
118
+ }
119
+
120
+ .heading {
121
+ text-align: left;
122
+ font-size: 24px;
123
+ padding: 8px 0px;
124
+ font-family: 'Mona Sans', 'Inter', sans-serif;
125
+ font-weight: 300;
126
+ border-bottom: 1px dashed #444;
127
+ margin-top: 16px;
128
+ margin-bottom: 16px;
129
+ }
130
+ `,
131
+ ];
132
+
133
+ public render() {
134
+ return html`
135
+ <div class="main">
136
+ <div class="heading">${this.heading}</div>
137
+ ${this.menuItems.map((menuItem) => {
138
+ return html`
139
+ <div
140
+ class="menuItem"
141
+ @click="${() => {
142
+ this.hide();
143
+ menuItem.action();
144
+ }}"
145
+ >
146
+ ${menuItem.name}
147
+ </div>
148
+ `;
149
+ })}
150
+ </div>
151
+ `;
152
+ }
153
+
154
+ private windowLayer: DeesWindowLayer;
155
+
156
+ /**
157
+ * inits the show
158
+ */
159
+ public async show() {
160
+ const domtools = await this.domtoolsPromise;
161
+ const main = this.shadowRoot.querySelector('.main');
162
+ if (!this.windowLayer) {
163
+ this.windowLayer = new DeesWindowLayer();
164
+ this.windowLayer.addEventListener('click', () => {
165
+ this.hide();
166
+ });
167
+ }
168
+ document.body.append(this.windowLayer);
169
+ await domtools.convenience.smartdelay.delayFor(0);
170
+ this.windowLayer.show();
171
+
172
+ await domtools.convenience.smartdelay.delayFor(0);
173
+ main.classList.add('show');
174
+ }
175
+
176
+ /**
177
+ * inits the hide function
178
+ */
179
+ public async hide() {
180
+ const domtools = await this.domtoolsPromise;
181
+ const main = this.shadowRoot.querySelector('.main');
182
+ main.classList.remove('show');
183
+ this.windowLayer.hide();
184
+ }
185
+
186
+ async disconnectedCallback() {
187
+ document.body.removeChild(this.windowLayer);
188
+ }
189
+ }
@@ -0,0 +1,119 @@
1
+ import { DeesElement, property, html, customElement, domtools, type TemplateResult, type CSSResult, } from '@design.estate/dees-element';
2
+
3
+ import { Deferred } from '@push.rocks/smartpromise';
4
+
5
+ import type pdfjsTypes from 'pdfjs-dist';
6
+
7
+ declare global {
8
+ interface HTMLElementTagNameMap {
9
+ 'dees-pdf': DeesPdf;
10
+ }
11
+ }
12
+
13
+ @customElement('dees-pdf')
14
+ export class DeesPdf extends DeesElement {
15
+ // DEMO
16
+ public static demo = () => html` <dees-pdf></dees-pdf> `;
17
+
18
+ // INSTANCE
19
+
20
+ @property()
21
+ public pdfUrl: string =
22
+ 'https://raw.githubusercontent.com/mozilla/pdf.js/ba2edeae/examples/learning/helloworld.pdf';
23
+
24
+ constructor() {
25
+ super();
26
+
27
+ // you have access to all kinds of things through this.
28
+ // this.setAttribute('gotIt','true');
29
+ }
30
+
31
+ public render(): TemplateResult {
32
+ return html`
33
+ <style>
34
+ :host {
35
+ font-family: 'Mona Sans', 'Inter', sans-serif;
36
+ display: block;
37
+ box-sizing: border-box;
38
+ max-width: 800px;
39
+ }
40
+ :host([hidden]) {
41
+ display: none;
42
+ }
43
+
44
+ #pdfcanvas {
45
+ box-shadow: 0px 0px 5px #ccc;
46
+ width: 100%;
47
+ }
48
+ </style>
49
+ <canvas id="pdfcanvas" .height=${0} .width=${0}></canvas>
50
+ `;
51
+ }
52
+
53
+ public static pdfJsReady: Promise<any>;
54
+ public static pdfjsLib: typeof pdfjsTypes;
55
+ public async connectedCallback() {
56
+ super.connectedCallback();
57
+ if (!DeesPdf.pdfJsReady) {
58
+ const pdfJsReadyDeferred = domtools.plugins.smartpromise.defer();
59
+ DeesPdf.pdfJsReady = pdfJsReadyDeferred.promise;
60
+ const loadDeferred = domtools.plugins.smartpromise.defer();
61
+ const script = document.createElement('script');
62
+ script.addEventListener('load', () => {
63
+ console.log('pdf.js loaded!');
64
+ loadDeferred.resolve();
65
+ });
66
+ script.src = 'https:////mozilla.github.io/pdf.js/build/pdf.js';
67
+ document.getElementsByTagName('head')[0].appendChild(script);
68
+ // The workerSrc property shall be specified.
69
+ await loadDeferred.promise;
70
+ DeesPdf.pdfjsLib = window['pdfjs-dist/build/pdf'];
71
+ DeesPdf.pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';
72
+ pdfJsReadyDeferred.resolve();
73
+ }
74
+ await DeesPdf.pdfJsReady;
75
+ this.displayContent();
76
+ }
77
+
78
+ public async displayContent() {
79
+ await DeesPdf.pdfJsReady;
80
+
81
+ // Asynchronous download of PDF
82
+ const loadingTask = DeesPdf.pdfjsLib.getDocument(this.pdfUrl);
83
+ loadingTask.promise.then(
84
+ (pdf) => {
85
+ console.log('PDF loaded');
86
+
87
+ // Fetch the first page
88
+ const pageNumber = 1;
89
+ pdf.getPage(pageNumber).then((page) => {
90
+ console.log('Page loaded');
91
+
92
+ const scale = 10;
93
+ const viewport = page.getViewport({ scale: scale });
94
+
95
+ // Prepare canvas using PDF page dimensions
96
+ const canvas: any = this.shadowRoot.querySelector('#pdfcanvas');
97
+ const context = canvas.getContext('2d');
98
+ canvas.height = viewport.height;
99
+ canvas.width = viewport.width;
100
+
101
+ // Render PDF page into canvas context
102
+ const renderContext = {
103
+ canvasContext: context,
104
+ viewport: viewport,
105
+ };
106
+
107
+ const renderTask = page.render(renderContext);
108
+ renderTask.promise.then(function () {
109
+ console.log('Page rendered');
110
+ });
111
+ });
112
+ },
113
+ (reason) => {
114
+ // PDF loading error
115
+ console.error(reason);
116
+ }
117
+ );
118
+ }
119
+ }
File without changes
File without changes
File without changes