@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.
- package/.github/workflows/main.yml +3 -3
- package/.github/workflows/node.js.yml +3 -3
- package/.github/workflows/release.js.yml +4 -4
- package/.releaserc.json +2 -2
- package/CHANGELOG.md +262 -11
- package/Dockerfile +78 -70
- package/css/components.css +5 -5
- package/css/leaflet/images/layers.png +0 -0
- package/dist/demo/components.css +46 -1
- package/dist/demo/pb-browse-docs2.html +1 -1
- package/dist/demo/pb-dialog.html +3 -5
- package/dist/demo/pb-drawer2.html +1 -1
- package/dist/demo/pb-facsimile.html +2 -2
- package/dist/demo/pb-grid.html +19 -6
- package/dist/demo/pb-leaflet-map.html +1 -1
- package/dist/demo/pb-login.html +0 -2
- package/dist/demo/pb-message.html +1 -2
- package/dist/demo/pb-progress.html +2 -2
- package/dist/demo/pb-repeat.html +1 -3
- package/dist/demo/pb-search.html +7 -4
- package/dist/demo/pb-search3.html +1 -1
- package/dist/demo/pb-search4.html +2 -2
- package/dist/demo/pb-view3.html +1 -1
- package/dist/{iron-form-3b8dcaa7.js → iron-form-dfb3e3b1.js} +95 -95
- package/dist/paper-checkbox-645e1077.js +200 -0
- package/dist/{paper-icon-button-b1d31571.js → paper-icon-button-984162bd.js} +1 -1
- package/dist/{paper-checkbox-515a5284.js → paper-inky-focus-behavior-fa16796b.js} +58 -247
- package/dist/{paper-listbox-a3b7175c.js → paper-listbox-5f5d1cec.js} +152 -162
- package/dist/pb-code-editor.js +25 -20
- package/dist/pb-component-docs.js +68 -64
- package/dist/pb-components-bundle.js +1983 -2293
- package/dist/pb-edit-app.js +167 -107
- package/dist/pb-elements.json +176 -120
- package/dist/{pb-i18n-0611135a.js → pb-i18n-4cc00bfe.js} +1 -1
- package/dist/pb-leaflet-map.js +23 -23
- package/dist/pb-mei.js +56 -41
- package/dist/{pb-mixin-b1caa22e.js → pb-mixin-886ece32.js} +1 -1
- package/dist/pb-odd-editor.js +1023 -782
- package/dist/pb-tify.js +2 -2
- package/dist/vaadin-element-mixin-beb74ffd.js +545 -0
- package/gh-pages.js +5 -3
- package/i18n/common/en.json +6 -0
- package/i18n/common/pl.json +2 -2
- package/lib/openseadragon.min.js +6 -6
- package/package.json +3 -3
- package/pb-elements.json +176 -120
- package/src/assets/components.css +5 -5
- package/src/authority/airtable.js +20 -21
- package/src/authority/anton.js +129 -129
- package/src/authority/custom.js +23 -21
- package/src/authority/geonames.js +38 -32
- package/src/authority/gnd.js +50 -42
- package/src/authority/kbga.js +137 -134
- package/src/authority/metagrid.js +44 -46
- package/src/authority/reconciliation.js +66 -67
- package/src/authority/registry.js +4 -4
- package/src/docs/pb-component-docs.js +2 -2
- package/src/docs/pb-component-view.js +5 -5
- package/src/docs/pb-components-list.js +2 -2
- package/src/docs/pb-demo-snippet.js +2 -2
- package/src/dts-client.js +299 -297
- package/src/dts-select-endpoint.js +90 -82
- package/src/parse-date-service.js +184 -135
- package/src/pb-ajax.js +158 -171
- package/src/pb-authority-lookup.js +191 -156
- package/src/pb-autocomplete.js +292 -280
- package/src/pb-blacklab-highlight.js +264 -259
- package/src/pb-blacklab-results.js +236 -221
- package/src/pb-browse-docs.js +540 -475
- package/src/pb-browse.js +68 -65
- package/src/pb-clipboard.js +79 -76
- package/src/pb-code-editor.js +110 -102
- package/src/pb-code-highlight.js +209 -204
- package/src/pb-codepen.js +79 -72
- package/src/pb-collapse.js +211 -151
- package/src/pb-combo-box.js +190 -190
- package/src/pb-components-bundle.js +1 -1
- package/src/pb-components.js +1 -0
- package/src/pb-custom-form.js +173 -153
- package/src/pb-dialog.js +98 -62
- package/src/pb-document.js +89 -90
- package/src/pb-download.js +212 -196
- package/src/pb-drawer.js +145 -148
- package/src/pb-edit-app.js +301 -229
- package/src/pb-edit-xml.js +100 -97
- package/src/pb-events.js +114 -107
- package/src/pb-facs-link.js +104 -102
- package/src/pb-facsimile.js +474 -410
- package/src/pb-formula.js +151 -153
- package/src/pb-geolocation.js +129 -131
- package/src/pb-grid-action.js +53 -56
- package/src/pb-grid.js +231 -228
- package/src/pb-highlight.js +140 -140
- package/src/pb-hotkeys.js +40 -42
- package/src/pb-i18n.js +101 -104
- package/src/pb-image-strip.js +84 -78
- package/src/pb-lang.js +142 -57
- package/src/pb-leaflet-map.js +488 -485
- package/src/pb-link.js +126 -124
- package/src/pb-load.js +431 -429
- package/src/pb-login.js +299 -244
- package/src/pb-manage-odds.js +352 -336
- package/src/pb-map-icon.js +89 -89
- package/src/pb-map-layer.js +85 -85
- package/src/pb-markdown.js +90 -99
- package/src/pb-media-query.js +74 -72
- package/src/pb-mei.js +306 -295
- package/src/pb-message.js +139 -97
- package/src/pb-mixin.js +269 -264
- package/src/pb-navigation.js +80 -95
- package/src/pb-observable.js +38 -38
- package/src/pb-odd-editor.js +1054 -958
- package/src/pb-odd-elementspec-editor.js +349 -298
- package/src/pb-odd-model-editor.js +1075 -909
- package/src/pb-odd-parameter-editor.js +200 -178
- package/src/pb-odd-rendition-editor.js +136 -124
- package/src/pb-page.js +431 -422
- package/src/pb-paginate.js +228 -179
- package/src/pb-panel.js +198 -182
- package/src/pb-popover-themes.js +15 -8
- package/src/pb-popover.js +296 -287
- package/src/pb-print-preview.js +127 -127
- package/src/pb-progress.js +51 -51
- package/src/pb-repeat.js +105 -104
- package/src/pb-restricted.js +84 -77
- package/src/pb-search.js +256 -228
- package/src/pb-select-feature.js +127 -120
- package/src/pb-select-odd.js +132 -124
- package/src/pb-select-template.js +89 -78
- package/src/pb-select.js +251 -227
- package/src/pb-split-list.js +179 -174
- package/src/pb-svg.js +80 -79
- package/src/pb-table-column.js +54 -54
- package/src/pb-table-grid.js +221 -203
- package/src/pb-tabs.js +61 -63
- package/src/pb-tify.js +154 -154
- package/src/pb-timeline.js +382 -249
- package/src/pb-toggle-feature.js +195 -187
- package/src/pb-upload.js +184 -174
- package/src/pb-version.js +30 -30
- package/src/pb-view-annotate.js +135 -98
- package/src/pb-view.js +1282 -1270
- package/src/pb-zoom.js +127 -45
- package/src/polymer-hack.js +1 -1
- package/src/search-result-service.js +256 -223
- package/src/seed-element.js +13 -20
- package/src/settings.js +4 -4
- package/src/theming.js +98 -91
- package/src/urls.js +289 -289
- package/src/utils.js +53 -51
- package/css/pb-styles.css +0 -51
- package/dist/vaadin-element-mixin-fe4a4883.js +0 -527
- package/src/assets/pb-styles.css +0 -51
- package/src/pb-light-dom.js +0 -41
package/src/pb-browse.js
CHANGED
|
@@ -1,83 +1,86 @@
|
|
|
1
1
|
import { PbLoad } from './pb-load.js';
|
|
2
2
|
import { registry } from './urls.js';
|
|
3
|
-
import { waitOnce } from
|
|
3
|
+
import { waitOnce } from './pb-mixin.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Extends PbLoad to support browsing collections.
|
|
7
|
-
*
|
|
7
|
+
*
|
|
8
8
|
* This is a reduced version of `pb-browse-docs`, which differs
|
|
9
9
|
* from a plain `pb-load` only in that it scans the returned
|
|
10
10
|
* collection listing for links to subcollections and keeps
|
|
11
|
-
* track of the current collection.
|
|
11
|
+
* track of the current collection.
|
|
12
12
|
*
|
|
13
13
|
* All UI elements present in `pb-browse-docs` have been removed.
|
|
14
14
|
*/
|
|
15
15
|
export class PbBrowse extends PbLoad {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
16
|
+
static get properties() {
|
|
17
|
+
return {
|
|
18
|
+
...super.properties,
|
|
19
|
+
/** The collection currently being browsed (if any) */
|
|
20
|
+
collection: {
|
|
21
|
+
type: String,
|
|
22
|
+
},
|
|
23
|
+
/**
|
|
24
|
+
* If set, rewrite URLs to load pages as static HTML files,
|
|
25
|
+
* so no TEI Publisher instance is required
|
|
26
|
+
*/
|
|
27
|
+
static: {
|
|
28
|
+
type: Boolean,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
constructor() {
|
|
34
|
+
super();
|
|
35
|
+
this.collection = null;
|
|
36
|
+
this.static = false;
|
|
37
|
+
}
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
39
|
+
connectedCallback() {
|
|
40
|
+
super.connectedCallback();
|
|
41
|
+
waitOnce('pb-page-ready', () => {
|
|
42
|
+
this.collection = registry.state.collection;
|
|
43
|
+
registry.subscribe(this, state => {
|
|
44
|
+
this.collection = state.collection;
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
47
48
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return this.collection ? `${url}/${this.collection}` : url;
|
|
49
|
+
getURL(params) {
|
|
50
|
+
if (this.static) {
|
|
51
|
+
// use a static URL
|
|
52
|
+
return `collections/${this.collection ? `${this.collection}/` : ''}${
|
|
53
|
+
params.start || '1'
|
|
54
|
+
}.html`;
|
|
55
55
|
}
|
|
56
|
+
const url = super.getURL(params);
|
|
57
|
+
return this.collection ? `${url}/${this.collection}` : url;
|
|
58
|
+
}
|
|
56
59
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
60
|
+
_onLoad(content) {
|
|
61
|
+
window.scrollTo(0, 0);
|
|
62
|
+
const div = content.querySelector('[data-root]');
|
|
63
|
+
const collection = div && div.getAttribute('data-root');
|
|
64
|
+
const writable = div && div.classList.contains('writable');
|
|
65
|
+
this.emitTo('pb-collection', {
|
|
66
|
+
writable,
|
|
67
|
+
collection,
|
|
68
|
+
});
|
|
69
|
+
document.querySelectorAll('[can-write]').forEach(elem => {
|
|
70
|
+
elem.disabled = !writable;
|
|
71
|
+
});
|
|
72
|
+
content.querySelectorAll('[data-collection]').forEach(link => {
|
|
73
|
+
link.addEventListener('click', ev => {
|
|
74
|
+
ev.preventDefault();
|
|
75
|
+
this.collection = link.getAttribute('data-collection');
|
|
76
|
+
this.start = 1;
|
|
77
|
+
if (this.history) {
|
|
78
|
+
registry.commit(this, { collection: this.collection });
|
|
79
|
+
}
|
|
80
|
+
console.log('<pb-browse> loading collection %s', this.collection);
|
|
81
|
+
this.emitTo('pb-search-resubmit');
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
82
85
|
}
|
|
83
|
-
customElements.define('pb-browse', PbBrowse);
|
|
86
|
+
customElements.define('pb-browse', PbBrowse);
|
package/src/pb-clipboard.js
CHANGED
|
@@ -1,76 +1,79 @@
|
|
|
1
|
-
import { LitElement, html, css } from 'lit-element';
|
|
2
|
-
import { pbMixin } from './pb-mixin.js';
|
|
3
|
-
import { translate } from
|
|
4
|
-
import { themableMixin } from
|
|
5
|
-
import '@polymer/paper-icon-button';
|
|
6
|
-
import '@polymer/iron-icons';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* A component with a button which copies the contained content to the clipboard.
|
|
10
|
-
* Use for the typical 'quote this content as' hints on a webpage.
|
|
11
|
-
*
|
|
12
|
-
* @slot content - contains the actual content to copy to the clipboard
|
|
13
|
-
*/
|
|
14
|
-
export class PbClipboard extends themableMixin(pbMixin(LitElement)) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
|
|
1
|
+
import { LitElement, html, css } from 'lit-element';
|
|
2
|
+
import { pbMixin } from './pb-mixin.js';
|
|
3
|
+
import { translate } from './pb-i18n.js';
|
|
4
|
+
import { themableMixin } from './theming.js';
|
|
5
|
+
import '@polymer/paper-icon-button';
|
|
6
|
+
import '@polymer/iron-icons';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A component with a button which copies the contained content to the clipboard.
|
|
10
|
+
* Use for the typical 'quote this content as' hints on a webpage.
|
|
11
|
+
*
|
|
12
|
+
* @slot content - contains the actual content to copy to the clipboard
|
|
13
|
+
*/
|
|
14
|
+
export class PbClipboard extends themableMixin(pbMixin(LitElement)) {
|
|
15
|
+
static get properties() {
|
|
16
|
+
return {
|
|
17
|
+
/**
|
|
18
|
+
* Label to display above the text to be copied
|
|
19
|
+
*/
|
|
20
|
+
label: {
|
|
21
|
+
type: String,
|
|
22
|
+
},
|
|
23
|
+
...super.properties,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
this.label = 'clipboard.label';
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
render() {
|
|
33
|
+
return html`
|
|
34
|
+
<h3>${translate(this.label)}</h3>
|
|
35
|
+
<div>
|
|
36
|
+
<slot></slot>
|
|
37
|
+
<paper-icon-button
|
|
38
|
+
icon="icons:content-copy"
|
|
39
|
+
@click="${this._copy}"
|
|
40
|
+
title="${translate('clipboard.copy')}"
|
|
41
|
+
></paper-icon-button>
|
|
42
|
+
</div>
|
|
43
|
+
`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Copy text content from the <slot> to the clipboard
|
|
48
|
+
*/
|
|
49
|
+
_copy() {
|
|
50
|
+
const slot = this.shadowRoot.querySelector('slot');
|
|
51
|
+
// first import nodes from the slot into a temporary div
|
|
52
|
+
const content = document.createElement('div');
|
|
53
|
+
slot.assignedNodes().forEach(node => {
|
|
54
|
+
content.appendChild(document.importNode(node, true));
|
|
55
|
+
});
|
|
56
|
+
// copy the innerText of the temp div into the clipboard
|
|
57
|
+
navigator.clipboard.writeText(content.innerText);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static get styles() {
|
|
61
|
+
return css`
|
|
62
|
+
:host {
|
|
63
|
+
display: block;
|
|
64
|
+
}
|
|
65
|
+
h3 {
|
|
66
|
+
margin: 0;
|
|
67
|
+
font-size: 0.85em;
|
|
68
|
+
font-weight: normal;
|
|
69
|
+
color: #3a3a3a;
|
|
70
|
+
}
|
|
71
|
+
div {
|
|
72
|
+
display: flex;
|
|
73
|
+
align-items: center;
|
|
74
|
+
padding: 0 16px;
|
|
75
|
+
}
|
|
76
|
+
`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
customElements.define('pb-clipboard', PbClipboard);
|
package/src/pb-code-editor.js
CHANGED
|
@@ -1,127 +1,135 @@
|
|
|
1
1
|
import { LitElement, html, css } from 'lit-element';
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
2
|
+
import '@jinntec/jinn-codemirror/dist/src/jinn-codemirror';
|
|
3
|
+
import '@jinntec/jinn-codemirror/dist/src/xml-editor';
|
|
4
|
+
import '@jinntec/jinn-codemirror/dist/src/epidoc-editor';
|
|
5
5
|
import { translate } from './pb-i18n.js';
|
|
6
|
-
import { pbMixin } from
|
|
7
|
-
|
|
6
|
+
import { pbMixin } from './pb-mixin.js';
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* A code editor based on codemirror 6. Provides a wrapper around
|
|
11
10
|
* [@jinntec/jinn-codemirror](https://github.com/JinnElements/jinn-codemirror),
|
|
12
11
|
* mainly for backwards compatibility.
|
|
13
12
|
*
|
|
14
|
-
* @deprecated directly use `jinn-codemirror`/`jinn-xml-editor`/`jinn-epidoc-editor` instead, which are
|
|
13
|
+
* @deprecated directly use `jinn-codemirror`/`jinn-xml-editor`/`jinn-epidoc-editor` instead, which are
|
|
15
14
|
* included in the `pb-code-editor` bundle.
|
|
16
15
|
*/
|
|
17
16
|
export class PbCodeEditor extends pbMixin(LitElement) {
|
|
17
|
+
static get properties() {
|
|
18
|
+
return {
|
|
19
|
+
...super.properties,
|
|
20
|
+
/**
|
|
21
|
+
* the code as a string
|
|
22
|
+
*/
|
|
23
|
+
code: {
|
|
24
|
+
type: String,
|
|
25
|
+
reflect: true,
|
|
26
|
+
},
|
|
27
|
+
/**
|
|
28
|
+
* the language mode e.g. 'javascript' or 'xquery'.
|
|
29
|
+
*/
|
|
30
|
+
mode: {
|
|
31
|
+
type: String,
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* label for the editor
|
|
35
|
+
*/
|
|
36
|
+
label: {
|
|
37
|
+
type: String,
|
|
38
|
+
},
|
|
39
|
+
/**
|
|
40
|
+
* placeholder if code is empty
|
|
41
|
+
*/
|
|
42
|
+
placeholder: {
|
|
43
|
+
type: String,
|
|
44
|
+
},
|
|
45
|
+
/**
|
|
46
|
+
* tab indent size
|
|
47
|
+
*/
|
|
48
|
+
tabSize: {
|
|
49
|
+
type: Number,
|
|
50
|
+
},
|
|
51
|
+
linter: {
|
|
52
|
+
attribute: true,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
18
56
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
...super.properties,
|
|
22
|
-
/**
|
|
23
|
-
* the code as a string
|
|
24
|
-
*/
|
|
25
|
-
code: {
|
|
26
|
-
type: String,
|
|
27
|
-
reflect: true
|
|
28
|
-
},
|
|
29
|
-
/**
|
|
30
|
-
* the language mode e.g. 'javascript' or 'xquery'.
|
|
31
|
-
*/
|
|
32
|
-
mode: {
|
|
33
|
-
type: String
|
|
34
|
-
},
|
|
35
|
-
/**
|
|
36
|
-
* label for the editor
|
|
37
|
-
*/
|
|
38
|
-
label: {
|
|
39
|
-
type: String
|
|
40
|
-
},
|
|
41
|
-
/**
|
|
42
|
-
* placeholder if code is empty
|
|
43
|
-
*/
|
|
44
|
-
placeholder: {
|
|
45
|
-
type: String
|
|
46
|
-
},
|
|
47
|
-
/**
|
|
48
|
-
* tab indent size
|
|
49
|
-
*/
|
|
50
|
-
tabSize: {
|
|
51
|
-
type: Number
|
|
52
|
-
},
|
|
53
|
-
linter: {
|
|
54
|
-
attribute: true
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
}
|
|
57
|
+
constructor() {
|
|
58
|
+
super();
|
|
58
59
|
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
this.code = '';
|
|
61
|
+
this.mode = 'xml';
|
|
62
|
+
this.placeholder = 'odd.editor.model.empty';
|
|
63
|
+
this.tabSize = 2;
|
|
64
|
+
this.label = '';
|
|
65
|
+
this.linter = '';
|
|
66
|
+
this._editor = null;
|
|
67
|
+
}
|
|
61
68
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.tabSize = 2;
|
|
66
|
-
this.label = '';
|
|
67
|
-
this.linter = '';
|
|
68
|
-
this._editor = null;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
connectedCallback() {
|
|
72
|
-
super.connectedCallback();
|
|
73
|
-
}
|
|
69
|
+
connectedCallback() {
|
|
70
|
+
super.connectedCallback();
|
|
71
|
+
}
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
firstUpdated() {
|
|
74
|
+
super.firstUpdated();
|
|
77
75
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
this._editor = this.shadowRoot.getElementById('editor');
|
|
77
|
+
// this._editor.addEventListener('update', () => {
|
|
78
|
+
// this._setCode(this._editor.content);
|
|
79
|
+
// })
|
|
80
|
+
}
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
render() {
|
|
83
|
+
return html`
|
|
84
|
+
<div class="label">${this.label}</div>
|
|
85
|
+
<jinn-codemirror
|
|
86
|
+
id="editor"
|
|
87
|
+
mode="${this.mode}"
|
|
88
|
+
code="${this.code}"
|
|
89
|
+
placeholder="${translate(this.placeholder)}"
|
|
90
|
+
></jinn-codemirror>
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
90
93
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
return this._editor.value;
|
|
94
|
+
getSource() {
|
|
95
|
+
if (!this._editor) {
|
|
96
|
+
return '';
|
|
96
97
|
}
|
|
98
|
+
return this._editor.value;
|
|
99
|
+
}
|
|
97
100
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
+
_setCode() {
|
|
102
|
+
this.dispatchEvent(
|
|
103
|
+
new CustomEvent('code-changed', {
|
|
104
|
+
composed: true,
|
|
105
|
+
bubbles: true,
|
|
106
|
+
detail: { code: this.getSource() },
|
|
107
|
+
}),
|
|
108
|
+
);
|
|
109
|
+
}
|
|
101
110
|
|
|
102
|
-
|
|
103
|
-
}
|
|
111
|
+
refresh() {}
|
|
104
112
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
113
|
+
static get styles() {
|
|
114
|
+
return css`
|
|
115
|
+
:host {
|
|
116
|
+
display: block;
|
|
117
|
+
width: 100%;
|
|
118
|
+
margin: 0;
|
|
119
|
+
position: relative;
|
|
120
|
+
color: inherit;
|
|
121
|
+
}
|
|
114
122
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
#editor {
|
|
124
|
+
width: 100%;
|
|
125
|
+
height: auto;
|
|
126
|
+
}
|
|
119
127
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
128
|
+
.label {
|
|
129
|
+
color: var(--paper-grey-500);
|
|
130
|
+
margin-bottom: 5px;
|
|
131
|
+
}
|
|
132
|
+
`;
|
|
133
|
+
}
|
|
126
134
|
}
|
|
127
|
-
customElements.define('pb-code-editor', PbCodeEditor);
|
|
135
|
+
customElements.define('pb-code-editor', PbCodeEditor);
|