@teipublisher/pb-components 2.26.1-next.3 → 3.0.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.
Files changed (154) hide show
  1. package/.github/workflows/main.yml +3 -3
  2. package/.github/workflows/node.js.yml +3 -3
  3. package/.github/workflows/release.js.yml +4 -4
  4. package/.releaserc.json +2 -2
  5. package/CHANGELOG.md +262 -11
  6. package/Dockerfile +78 -70
  7. package/css/components.css +5 -5
  8. package/css/leaflet/images/layers.png +0 -0
  9. package/dist/demo/components.css +46 -1
  10. package/dist/demo/pb-browse-docs2.html +1 -1
  11. package/dist/demo/pb-dialog.html +3 -5
  12. package/dist/demo/pb-drawer2.html +1 -1
  13. package/dist/demo/pb-facsimile.html +2 -2
  14. package/dist/demo/pb-grid.html +19 -6
  15. package/dist/demo/pb-leaflet-map.html +1 -1
  16. package/dist/demo/pb-login.html +0 -2
  17. package/dist/demo/pb-message.html +1 -2
  18. package/dist/demo/pb-progress.html +2 -2
  19. package/dist/demo/pb-repeat.html +1 -3
  20. package/dist/demo/pb-search.html +7 -4
  21. package/dist/demo/pb-search3.html +1 -1
  22. package/dist/demo/pb-search4.html +2 -2
  23. package/dist/demo/pb-view3.html +1 -1
  24. package/dist/{iron-form-3b8dcaa7.js → iron-form-dfb3e3b1.js} +95 -95
  25. package/dist/paper-checkbox-645e1077.js +200 -0
  26. package/dist/{paper-icon-button-b1d31571.js → paper-icon-button-984162bd.js} +1 -1
  27. package/dist/{paper-checkbox-515a5284.js → paper-inky-focus-behavior-fa16796b.js} +58 -247
  28. package/dist/{paper-listbox-a3b7175c.js → paper-listbox-5f5d1cec.js} +152 -162
  29. package/dist/pb-code-editor.js +25 -20
  30. package/dist/pb-component-docs.js +68 -64
  31. package/dist/pb-components-bundle.js +1983 -2293
  32. package/dist/pb-edit-app.js +167 -107
  33. package/dist/pb-elements.json +176 -120
  34. package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
  35. package/dist/pb-leaflet-map.js +23 -23
  36. package/dist/pb-mei.js +56 -41
  37. package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
  38. package/dist/pb-odd-editor.js +1023 -782
  39. package/dist/pb-tify.js +2 -2
  40. package/dist/vaadin-element-mixin-beb74ffd.js +545 -0
  41. package/gh-pages.js +5 -3
  42. package/i18n/common/en.json +6 -0
  43. package/i18n/common/pl.json +2 -2
  44. package/lib/openseadragon.min.js +6 -6
  45. package/package.json +3 -3
  46. package/pb-elements.json +176 -120
  47. package/src/assets/components.css +5 -5
  48. package/src/authority/airtable.js +20 -21
  49. package/src/authority/anton.js +129 -129
  50. package/src/authority/custom.js +23 -21
  51. package/src/authority/geonames.js +38 -32
  52. package/src/authority/gnd.js +50 -42
  53. package/src/authority/kbga.js +137 -134
  54. package/src/authority/metagrid.js +44 -46
  55. package/src/authority/reconciliation.js +66 -67
  56. package/src/authority/registry.js +4 -4
  57. package/src/docs/pb-component-docs.js +2 -2
  58. package/src/docs/pb-component-view.js +5 -5
  59. package/src/docs/pb-components-list.js +2 -2
  60. package/src/docs/pb-demo-snippet.js +2 -2
  61. package/src/dts-client.js +299 -297
  62. package/src/dts-select-endpoint.js +90 -82
  63. package/src/parse-date-service.js +184 -135
  64. package/src/pb-ajax.js +158 -171
  65. package/src/pb-authority-lookup.js +191 -156
  66. package/src/pb-autocomplete.js +292 -280
  67. package/src/pb-blacklab-highlight.js +264 -259
  68. package/src/pb-blacklab-results.js +236 -221
  69. package/src/pb-browse-docs.js +540 -475
  70. package/src/pb-browse.js +68 -65
  71. package/src/pb-clipboard.js +79 -76
  72. package/src/pb-code-editor.js +110 -102
  73. package/src/pb-code-highlight.js +209 -204
  74. package/src/pb-codepen.js +79 -72
  75. package/src/pb-collapse.js +211 -151
  76. package/src/pb-combo-box.js +190 -190
  77. package/src/pb-components-bundle.js +1 -1
  78. package/src/pb-components.js +1 -0
  79. package/src/pb-custom-form.js +173 -153
  80. package/src/pb-dialog.js +98 -62
  81. package/src/pb-document.js +89 -90
  82. package/src/pb-download.js +212 -196
  83. package/src/pb-drawer.js +145 -148
  84. package/src/pb-edit-app.js +301 -229
  85. package/src/pb-edit-xml.js +100 -97
  86. package/src/pb-events.js +114 -107
  87. package/src/pb-facs-link.js +104 -102
  88. package/src/pb-facsimile.js +474 -410
  89. package/src/pb-formula.js +151 -153
  90. package/src/pb-geolocation.js +129 -131
  91. package/src/pb-grid-action.js +53 -56
  92. package/src/pb-grid.js +231 -228
  93. package/src/pb-highlight.js +140 -140
  94. package/src/pb-hotkeys.js +40 -42
  95. package/src/pb-i18n.js +101 -104
  96. package/src/pb-image-strip.js +84 -78
  97. package/src/pb-lang.js +142 -57
  98. package/src/pb-leaflet-map.js +488 -485
  99. package/src/pb-link.js +126 -124
  100. package/src/pb-load.js +431 -429
  101. package/src/pb-login.js +299 -244
  102. package/src/pb-manage-odds.js +352 -336
  103. package/src/pb-map-icon.js +89 -89
  104. package/src/pb-map-layer.js +85 -85
  105. package/src/pb-markdown.js +90 -99
  106. package/src/pb-media-query.js +74 -72
  107. package/src/pb-mei.js +306 -295
  108. package/src/pb-message.js +139 -97
  109. package/src/pb-mixin.js +269 -264
  110. package/src/pb-navigation.js +80 -95
  111. package/src/pb-observable.js +38 -38
  112. package/src/pb-odd-editor.js +1054 -958
  113. package/src/pb-odd-elementspec-editor.js +349 -298
  114. package/src/pb-odd-model-editor.js +1075 -909
  115. package/src/pb-odd-parameter-editor.js +200 -178
  116. package/src/pb-odd-rendition-editor.js +136 -124
  117. package/src/pb-page.js +431 -422
  118. package/src/pb-paginate.js +228 -179
  119. package/src/pb-panel.js +198 -182
  120. package/src/pb-popover-themes.js +15 -8
  121. package/src/pb-popover.js +296 -287
  122. package/src/pb-print-preview.js +127 -127
  123. package/src/pb-progress.js +51 -51
  124. package/src/pb-repeat.js +105 -104
  125. package/src/pb-restricted.js +84 -77
  126. package/src/pb-search.js +256 -228
  127. package/src/pb-select-feature.js +127 -120
  128. package/src/pb-select-odd.js +132 -124
  129. package/src/pb-select-template.js +89 -78
  130. package/src/pb-select.js +251 -227
  131. package/src/pb-split-list.js +179 -174
  132. package/src/pb-svg.js +80 -79
  133. package/src/pb-table-column.js +54 -54
  134. package/src/pb-table-grid.js +221 -203
  135. package/src/pb-tabs.js +61 -63
  136. package/src/pb-tify.js +154 -154
  137. package/src/pb-timeline.js +382 -249
  138. package/src/pb-toggle-feature.js +195 -187
  139. package/src/pb-upload.js +184 -174
  140. package/src/pb-version.js +30 -30
  141. package/src/pb-view-annotate.js +135 -98
  142. package/src/pb-view.js +1282 -1270
  143. package/src/pb-zoom.js +127 -45
  144. package/src/polymer-hack.js +1 -1
  145. package/src/search-result-service.js +256 -223
  146. package/src/seed-element.js +13 -20
  147. package/src/settings.js +4 -4
  148. package/src/theming.js +98 -91
  149. package/src/urls.js +289 -289
  150. package/src/utils.js +53 -51
  151. package/css/pb-styles.css +0 -51
  152. package/dist/vaadin-element-mixin-fe4a4883.js +0 -527
  153. package/src/assets/pb-styles.css +0 -51
  154. package/src/pb-light-dom.js +0 -41
package/src/pb-tabs.js CHANGED
@@ -2,88 +2,86 @@ import { LitElement, html, css } from 'lit-element';
2
2
  import '@polymer/paper-tabs';
3
3
  import '@polymer/iron-pages';
4
4
  import { pbMixin, waitOnce } from './pb-mixin.js';
5
- import { registry } from "./urls.js";
6
-
5
+ import { registry } from './urls.js';
7
6
 
8
7
  /**
9
8
  * Combines a row of tabs with associated content.
10
- *
9
+ *
11
10
  * @slot tab - tab area
12
11
  * @slot page - page area
13
12
  * @csspart pages - wrapper around the tab pages
14
- * @fires pb-tab - fired if selected tab changes. Details contain number of
13
+ * @fires pb-tab - fired if selected tab changes. Details contain number of
15
14
  * selected tab in propery `selected`.
16
15
  */
17
16
  export class PbTabs extends pbMixin(LitElement) {
18
- static get properties() {
19
- return {
20
- ...super.properties,
21
- selected: {
22
- type: Number,
23
- reflect: true
24
- }
25
- };
26
- }
17
+ static get properties() {
18
+ return {
19
+ ...super.properties,
20
+ selected: {
21
+ type: Number,
22
+ reflect: true,
23
+ },
24
+ };
25
+ }
27
26
 
28
- constructor() {
29
- super();
27
+ constructor() {
28
+ super();
30
29
 
31
- this.selected = 0;
32
- this._initialized = false;
33
- }
34
-
35
- connectedCallback() {
36
- super.connectedCallback();
30
+ this.selected = 0;
31
+ this._initialized = false;
32
+ }
37
33
 
38
- waitOnce('pb-page-ready', () => {
39
- this.selected = registry.state.tab || 0;
34
+ connectedCallback() {
35
+ super.connectedCallback();
40
36
 
41
- registry.subscribe(this, (state) => {
42
- this.selected = state.tab;
43
- });
37
+ waitOnce('pb-page-ready', () => {
38
+ this.selected = registry.state.tab || 0;
44
39
 
45
- });
46
- }
40
+ registry.subscribe(this, state => {
41
+ this.selected = state.tab;
42
+ });
43
+ });
44
+ }
47
45
 
48
- firstUpdated() {
49
- super.firstUpdated();
50
- this.emitTo('pb-tab', { selected: this.selected });
51
- }
46
+ firstUpdated() {
47
+ super.firstUpdated();
48
+ this.emitTo('pb-tab', { selected: this.selected });
49
+ }
52
50
 
53
- _switchTab(ev) {
54
- const current = parseInt(ev.detail.value, 10);
55
- if (this.selected === current) {
56
- return;
57
- }
51
+ _switchTab(ev) {
52
+ const current = parseInt(ev.detail.value, 10);
53
+ if (this.selected === current) {
54
+ return;
55
+ }
58
56
 
59
- this.emitTo('pb-tab', { selected: current });
57
+ this.emitTo('pb-tab', { selected: current });
60
58
 
61
- this.selected = current;
62
- if (this._initialized) {
63
- registry.commit(this, { tab: this.selected });
64
- } else {
65
- registry.replace(this, { tab: this.selected });
66
- }
67
- this._initialized = true;
59
+ this.selected = current;
60
+ if (this._initialized) {
61
+ registry.commit(this, { tab: this.selected });
62
+ } else {
63
+ registry.replace(this, { tab: this.selected });
68
64
  }
65
+ this._initialized = true;
66
+ }
69
67
 
70
- render() {
71
- return html`
72
- <paper-tabs id="tabs" selected="${this.selected || 0 }" @selected-changed="${this._switchTab}">
73
- <slot name="tab"></slot>
74
- </paper-tabs>
75
- <iron-pages part="pages" selected="${this.selected}">
76
- <slot name="page"></slot>
77
- </iron-pages>
78
- `;
79
- }
68
+ render() {
69
+ return html`
70
+ <paper-tabs id="tabs" selected="${this.selected || 0}" @selected-changed="${this._switchTab}">
71
+ <slot name="tab"></slot>
72
+ </paper-tabs>
73
+ <iron-pages part="pages" selected="${this.selected}">
74
+ <slot name="page"></slot>
75
+ </iron-pages>
76
+ `;
77
+ }
80
78
 
81
- static get styles() {
82
- return css`
83
- :host {
84
- display: block;
85
- }
86
- `;
87
- }
79
+ static get styles() {
80
+ return css`
81
+ :host {
82
+ display: block;
83
+ }
84
+ `;
85
+ }
88
86
  }
89
- customElements.define('pb-tabs', PbTabs);
87
+ customElements.define('pb-tabs', PbTabs);
package/src/pb-tify.js CHANGED
@@ -1,18 +1,18 @@
1
1
  import { LitElement } from 'lit-element';
2
- import "tify";
2
+ import 'tify';
3
3
  import { pbMixin, waitOnce } from './pb-mixin.js';
4
4
  import { resolveURL } from './utils.js';
5
5
 
6
6
  function _injectStylesheet(path) {
7
- const style = document.querySelector(`link#pb-tify`);
8
- if (!style) {
9
- const elem = document.createElement('link');
10
- elem.type = 'text/css';
11
- elem.rel = 'stylesheet';
12
- elem.id = `pb-tify`;
13
- elem.href = `${resolveURL(path)}/tify.css`;
14
- document.head.appendChild(elem);
15
- }
7
+ const style = document.querySelector(`link#pb-tify`);
8
+ if (!style) {
9
+ const elem = document.createElement('link');
10
+ elem.type = 'text/css';
11
+ elem.rel = 'stylesheet';
12
+ elem.id = `pb-tify`;
13
+ elem.href = `${resolveURL(path)}/tify.css`;
14
+ document.head.appendChild(elem);
15
+ }
16
16
  }
17
17
 
18
18
  /**
@@ -26,170 +26,170 @@ function _injectStylesheet(path) {
26
26
  * `order` property in the event (see `pb-facs-link`). Page counts start at 1.
27
27
  */
28
28
  export class PbTify extends pbMixin(LitElement) {
29
- static get properties() {
30
- return {
31
- /**
32
- * URL pointing to a IIIF presentation manifest. Relative paths
33
- * are interpreted relative to the API endpoint.
34
- */
35
- manifest: {
36
- type: String
37
- },
38
- ...super.properties
39
- };
29
+ static get properties() {
30
+ return {
31
+ /**
32
+ * URL pointing to a IIIF presentation manifest. Relative paths
33
+ * are interpreted relative to the API endpoint.
34
+ */
35
+ manifest: {
36
+ type: String,
37
+ },
38
+ ...super.properties,
39
+ };
40
+ }
41
+
42
+ constructor() {
43
+ super();
44
+ this.cssPath = '../css/tify';
45
+ this._initialPages = null;
46
+ this._currentPage = null;
47
+ }
48
+
49
+ attributeChangedCallback(name, oldVal, newVal) {
50
+ super.attributeChangedCallback(name, oldVal, newVal);
51
+
52
+ if (name === 'manifest' && newVal) {
53
+ this.manifest = newVal;
54
+ this._initViewer();
40
55
  }
56
+ }
41
57
 
42
- constructor() {
43
- super();
44
- this.cssPath = '../css/tify';
45
- this._initialPages = null;
46
- this._currentPage = null;
47
- }
58
+ async connectedCallback() {
59
+ super.connectedCallback();
60
+
61
+ _injectStylesheet(this.cssPath);
48
62
 
49
- attributeChangedCallback(name, oldVal, newVal) {
50
- super.attributeChangedCallback(name, oldVal, newVal);
51
-
52
- if (name === 'manifest' && newVal) {
53
- this.manifest = newVal;
54
- this._initViewer();
63
+ this._container = document.createElement('div');
64
+ this._container.style.height = '100%';
65
+ this._container.style.width = '100%';
66
+ this.appendChild(this._container);
67
+
68
+ this.subscribeTo('pb-show-annotation', ev => {
69
+ if (ev.detail) {
70
+ this._initialPages = ev.detail.order ? Number(ev.detail.order) : Number.POSITIVE_INFINITY;
71
+ if (this._initialPages === Number.POSITIVE_INFINITY) {
72
+ this._initialPages = 1;
73
+ }
74
+ const url = ev.detail.file || ev.detail.url;
75
+ if (url && url !== this.manifest) {
76
+ this.manifest = ev.detail.file;
77
+ this._initViewer();
78
+ // check if tify is already initialized
79
+ } else if (this._setPage) {
80
+ this._setPage(this._initialPages);
55
81
  }
56
- }
57
82
 
58
- async connectedCallback() {
59
- super.connectedCallback();
60
-
61
- _injectStylesheet(this.cssPath);
62
-
63
- this._container = document.createElement('div');
64
- this._container.style.height = '100%';
65
- this._container.style.width = '100%';
66
- this.appendChild(this._container);
67
-
68
- this.subscribeTo('pb-show-annotation', (ev) => {
69
- if (ev.detail) {
70
- this._initialPages = ev.detail.order ? Number(ev.detail.order) : Number.POSITIVE_INFINITY;
71
- if (this._initialPages === Number.POSITIVE_INFINITY) {
72
- this._initialPages = 1;
73
- }
74
- const url = ev.detail.file || ev.detail.url;
75
- if (url && url !== this.manifest) {
76
- this.manifest = ev.detail.file;
77
- this._initViewer();
78
- // check if tify is already initialized
79
- } else if (this._setPage) {
80
- this._setPage(this._initialPages);
81
- }
82
-
83
- if (ev.detail.coordinates) {
84
- this._addOverlay(ev.detail.coordinates);
85
- }
86
- }
87
- });
88
-
89
- this.signalReady();
90
- }
83
+ if (ev.detail.coordinates) {
84
+ this._addOverlay(ev.detail.coordinates);
85
+ }
86
+ }
87
+ });
91
88
 
92
- firstUpdated() {
93
- super.firstUpdated();
89
+ this.signalReady();
90
+ }
94
91
 
95
- waitOnce('pb-page-ready', () => {
96
- this._initViewer();
97
- });
98
- }
92
+ firstUpdated() {
93
+ super.firstUpdated();
99
94
 
100
- _initViewer() {
101
- if (!this.manifest) {
102
- return;
103
- }
95
+ waitOnce('pb-page-ready', () => {
96
+ this._initViewer();
97
+ });
98
+ }
104
99
 
105
- if (this._tify) {
106
- this._tify.destroy();
107
- }
100
+ _initViewer() {
101
+ if (!this.manifest) {
102
+ return;
103
+ }
108
104
 
109
- this._tify = new Tify({
110
- manifestUrl: this.toAbsoluteURL(this.manifest, this.getEndpoint())
111
- });
112
- this._tify.ready.then(() => {
113
- // open initial page if set earlier via pb-load-facsimile event
114
- if (this._initialPages) {
115
- this._tify.setPage(this._initialPages);
116
- }
117
-
118
- // extend tify's setPage function to allow emitting an event
119
- const {app} = this._tify;
120
- const originalSetPage = app.setPage;
121
-
122
- app.setPage = (pages) => {
123
- const page = Array.isArray(pages) ? pages[0] : pages;
124
- if(this._currentPage === page) {
125
- return;
126
- }
127
-
128
- const canvas = app.$root.canvases[page - 1];
129
-
130
- this._switchPage(canvas);
131
- originalSetPage(pages);
132
- this._currentPage = page;
133
- };
134
-
135
- this._setPage = app.setPage;
136
- });
137
-
138
- this._tify.mount(this._container);
105
+ if (this._tify) {
106
+ this._tify.destroy();
139
107
  }
140
108
 
141
- _switchPage(canvas) {
142
- const rendering = canvas.rendering;
143
- if (rendering && rendering.length > 0) {
144
- const url = new URL(rendering[0]['@id']);
145
- const params = {};
146
- url.searchParams.forEach((value, key) => {
147
- params[key] = value;
148
- })
149
- console.log('<pb-tify> page changed, emitting refresh with params %o', params);
150
- this.emitTo('pb-refresh', params);
109
+ this._tify = new Tify({
110
+ manifestUrl: this.toAbsoluteURL(this.manifest, this.getEndpoint()),
111
+ });
112
+ this._tify.ready.then(() => {
113
+ // open initial page if set earlier via pb-load-facsimile event
114
+ if (this._initialPages) {
115
+ this._tify.setPage(this._initialPages);
116
+ }
117
+
118
+ // extend tify's setPage function to allow emitting an event
119
+ const { app } = this._tify;
120
+ const originalSetPage = app.setPage;
121
+
122
+ app.setPage = pages => {
123
+ const page = Array.isArray(pages) ? pages[0] : pages;
124
+ if (this._currentPage === page) {
125
+ return;
151
126
  }
127
+
128
+ const canvas = app.$root.canvases[page - 1];
129
+
130
+ this._switchPage(canvas);
131
+ originalSetPage(pages);
132
+ this._currentPage = page;
133
+ };
134
+
135
+ this._setPage = app.setPage;
136
+ });
137
+
138
+ this._tify.mount(this._container);
139
+ }
140
+
141
+ _switchPage(canvas) {
142
+ const { rendering } = canvas;
143
+ if (rendering && rendering.length > 0) {
144
+ const url = new URL(rendering[0]['@id']);
145
+ const params = {};
146
+ url.searchParams.forEach((value, key) => {
147
+ params[key] = value;
148
+ });
149
+ console.log('<pb-tify> page changed, emitting refresh with params %o', params);
150
+ this.emitTo('pb-refresh', params);
152
151
  }
152
+ }
153
153
 
154
- _addOverlay(coordinates) {
155
- if (!Array.isArray(coordinates) || coordinates.length !== 4) {
156
- console.error('coords incomplete or missing (array of 4 numbers expected)', coordinates);
157
- return;
158
- }
154
+ _addOverlay(coordinates) {
155
+ if (!Array.isArray(coordinates) || coordinates.length !== 4) {
156
+ console.error('coords incomplete or missing (array of 4 numbers expected)', coordinates);
157
+ return;
158
+ }
159
159
 
160
- const { viewer } = this._tify;
161
- const { viewport } = viewer;
162
- const overlayId = 'runtime-overlay';
163
-
164
- if(this.overlay) {
165
- viewer.removeOverlay(this.overlay);
166
- }
160
+ const { viewer } = this._tify;
161
+ const { viewport } = viewer;
162
+ const overlayId = 'runtime-overlay';
167
163
 
168
- const viewportBounds = viewport.getBounds();
164
+ if (this.overlay) {
165
+ viewer.removeOverlay(this.overlay);
166
+ }
169
167
 
170
- const [x1, y1, w, h] = coordinates;
171
- const rect = viewport.imageToViewportRectangle(x1, y1, w, h);
168
+ const viewportBounds = viewport.getBounds();
172
169
 
173
- // Scroll into view if necessary
174
- if (!viewportBounds.containsPoint(rect.getTopLeft())) {
175
- viewer.viewport.panTo(rect.getCenter());
176
- }
170
+ const [x1, y1, w, h] = coordinates;
171
+ const rect = viewport.imageToViewportRectangle(x1, y1, w, h);
177
172
 
178
- // Add overlay to viewer
179
- const overlay = document.createElement('div');
180
- this.overlay = overlay
181
- overlay.id = overlayId;
182
- overlay.style.border = 'var(--pb-facsimile-border, none)';
183
- overlay.style.outline = 'var(--pb-facsimile-outline, 4px solid rgba(0, 0, 128, 0.5))';
184
- overlay.style.background = 'var(--pb-facsimile-background, rgba(0, 0, 128, 0.05))';
185
- viewer.addOverlay({
186
- element: overlay,
187
- location: rect
188
- });
173
+ // Scroll into view if necessary
174
+ if (!viewportBounds.containsPoint(rect.getTopLeft())) {
175
+ viewer.viewport.panTo(rect.getCenter());
189
176
  }
190
177
 
191
- createRenderRoot() {
192
- return this;
193
- }
178
+ // Add overlay to viewer
179
+ const overlay = document.createElement('div');
180
+ this.overlay = overlay;
181
+ overlay.id = overlayId;
182
+ overlay.style.border = 'var(--pb-facsimile-border, none)';
183
+ overlay.style.outline = 'var(--pb-facsimile-outline, 4px solid rgba(0, 0, 128, 0.5))';
184
+ overlay.style.background = 'var(--pb-facsimile-background, rgba(0, 0, 128, 0.05))';
185
+ viewer.addOverlay({
186
+ element: overlay,
187
+ location: rect,
188
+ });
189
+ }
190
+
191
+ createRenderRoot() {
192
+ return this;
193
+ }
194
194
  }
195
- customElements.define('pb-tify', PbTify);
195
+ customElements.define('pb-tify', PbTify);