@teipublisher/pb-components 2.26.1-next.3 → 3.0.0-next-4.2

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 (262) hide show
  1. package/.github/workflows/docker-cypress.yml +53 -0
  2. package/.github/workflows/node.js.yml +70 -21
  3. package/.releaserc.json +7 -2
  4. package/CHANGELOG.md +363 -11
  5. package/Dockerfile +78 -70
  6. package/README.md +112 -4
  7. package/css/components.css +5 -5
  8. package/css/gridjs/mermaid.min.css +1 -1
  9. package/css/leaflet/Control.Geocoder.css +1 -126
  10. package/css/leaflet/images/layers.png +0 -0
  11. package/css/tify/tify.css +6 -5
  12. package/css/tom-select/tom-select.bootstrap4.min.css +1 -1
  13. package/css/tom-select/tom-select.bootstrap5.min.css +1 -1
  14. package/css/tom-select/tom-select.default.min.css +1 -1
  15. package/css/tom-select/tom-select.default.min.css.map +1 -0
  16. package/css/tom-select/tom-select.min.css +1 -1
  17. package/cypress.config.js +84 -0
  18. package/dist/api.html +1 -1
  19. package/dist/css/design-system.css +607 -0
  20. package/dist/demo/bundle-test.html +4 -3
  21. package/dist/demo/components.css +46 -1
  22. package/dist/demo/design-system.html +710 -0
  23. package/dist/demo/dts-client.html +2 -2
  24. package/dist/demo/pb-autocomplete.html +23 -11
  25. package/dist/demo/pb-autocomplete2.html +66 -55
  26. package/dist/demo/pb-autocomplete3.html +17 -8
  27. package/dist/demo/pb-blacklab-highlight.html +28 -11
  28. package/dist/demo/pb-blacklab-results.html +3 -2
  29. package/dist/demo/pb-browse-docs.html +24 -24
  30. package/dist/demo/pb-browse-docs2.html +3 -3
  31. package/dist/demo/pb-clipboard.html +32 -28
  32. package/dist/demo/pb-code-editor.html +6 -6
  33. package/dist/demo/pb-code-highlight.html +63 -63
  34. package/dist/demo/pb-codepen.html +1 -1
  35. package/dist/demo/pb-collapse.html +1 -1
  36. package/dist/demo/pb-collapse2.html +2 -2
  37. package/dist/demo/pb-combo-box.html +135 -130
  38. package/dist/demo/pb-custom-form.html +64 -55
  39. package/dist/demo/pb-dialog.html +12 -6
  40. package/dist/demo/pb-document.html +1 -1
  41. package/dist/demo/pb-download.html +68 -59
  42. package/dist/demo/pb-drawer.html +67 -46
  43. package/dist/demo/pb-drawer2.html +65 -58
  44. package/dist/demo/pb-edit-app.html +2 -2
  45. package/dist/demo/pb-edit-xml.html +1 -1
  46. package/dist/demo/pb-facsimile-2.html +26 -11
  47. package/dist/demo/pb-facsimile-3.html +25 -10
  48. package/dist/demo/pb-facsimile-dedup-test-2.html +48 -0
  49. package/dist/demo/pb-facsimile-dedup-test.html +48 -0
  50. package/dist/demo/pb-facsimile.html +4 -4
  51. package/dist/demo/pb-formula.html +1 -1
  52. package/dist/demo/pb-grid.html +22 -8
  53. package/dist/demo/pb-highlight.html +2 -2
  54. package/dist/demo/pb-i18n-simple.html +1 -0
  55. package/dist/demo/pb-i18n.html +15 -5
  56. package/dist/demo/pb-image-strip-standalone.html +2 -2
  57. package/dist/demo/pb-image-strip-view.html +2 -2
  58. package/dist/demo/pb-leaflet-map.html +3 -3
  59. package/dist/demo/pb-leaflet-map2.html +2 -2
  60. package/dist/demo/pb-leaflet-map3.html +3 -3
  61. package/dist/demo/pb-link.html +1 -1
  62. package/dist/demo/pb-load.html +2 -6
  63. package/dist/demo/pb-login.html +1 -3
  64. package/dist/demo/pb-manage-odds.html +9 -4
  65. package/dist/demo/pb-markdown.html +1 -1
  66. package/dist/demo/pb-media-query.html +2 -2
  67. package/dist/demo/pb-mei.html +2 -2
  68. package/dist/demo/pb-mei2.html +2 -2
  69. package/dist/demo/pb-message.html +2 -3
  70. package/dist/demo/pb-odd-editor.html +54 -52
  71. package/dist/demo/pb-page-header.html +27 -0
  72. package/dist/demo/pb-popover.html +1 -1
  73. package/dist/demo/pb-print-preview.html +2 -2
  74. package/dist/demo/pb-progress.html +4 -4
  75. package/dist/demo/pb-repeat.html +32 -36
  76. package/dist/demo/pb-search.html +16 -5
  77. package/dist/demo/pb-search2.html +4 -4
  78. package/dist/demo/pb-search3.html +3 -3
  79. package/dist/demo/pb-search4.html +3 -3
  80. package/dist/demo/pb-select-feature.html +4 -4
  81. package/dist/demo/pb-select-feature2.html +4 -4
  82. package/dist/demo/pb-select-feature3.html +2 -2
  83. package/dist/demo/pb-select-i18n.html +58 -53
  84. package/dist/demo/pb-select-odd.html +1 -1
  85. package/dist/demo/pb-select.html +190 -75
  86. package/dist/demo/pb-select2.html +91 -37
  87. package/dist/demo/pb-select3.html +109 -41
  88. package/dist/demo/pb-svg.html +1 -1
  89. package/dist/demo/pb-table-grid.html +26 -15
  90. package/dist/demo/pb-tabs.html +15 -7
  91. package/dist/demo/pb-tify.html +7 -7
  92. package/dist/demo/pb-timeline.html +1 -1
  93. package/dist/demo/pb-timeline2.html +1 -1
  94. package/dist/demo/pb-toggle-feature.html +26 -23
  95. package/dist/demo/pb-toggle-feature2.html +4 -4
  96. package/dist/demo/pb-toggle-feature3.html +2 -2
  97. package/dist/demo/pb-toggle-feature4.html +56 -54
  98. package/dist/demo/pb-version.html +2 -2
  99. package/dist/demo/pb-view.html +78 -40
  100. package/dist/demo/pb-view2.html +69 -46
  101. package/dist/demo/pb-view3.html +53 -48
  102. package/dist/demo/pb-view4.html +70 -49
  103. package/dist/demo/pb-zoom.html +2 -2
  104. package/dist/{es-global-bridge-d8ce175d.js → es-global-bridge-D8ZcUcx_.js} +0 -4
  105. package/dist/focus-mixin-VCsFap6b.js +768 -0
  106. package/dist/images/icons.svg +217 -0
  107. package/dist/jinn-codemirror-DETLdm08.js +1 -0
  108. package/dist/lib/openseadragon.min.js +80 -0
  109. package/dist/lib/openseadragon.min.js.map +1 -0
  110. package/dist/pb-code-editor.js +25 -20
  111. package/dist/pb-component-docs.js +414 -3225
  112. package/dist/pb-components-bundle.js +3046 -4402
  113. package/dist/pb-dialog-tklYGWfc.js +121 -0
  114. package/dist/pb-edit-app.js +208 -107
  115. package/dist/pb-elements.json +716 -249
  116. package/dist/pb-facsimile.js +46 -0
  117. package/dist/pb-i18n-C0NDma4h.js +1 -0
  118. package/dist/pb-leaflet-map.js +23 -23
  119. package/dist/pb-mei.js +152 -134
  120. package/dist/pb-mixin-DHoWQheB.js +1 -0
  121. package/dist/pb-odd-editor.js +1671 -1231
  122. package/dist/pb-tify.js +1 -27
  123. package/dist/unsafe-html-D5VGo9Oq.js +1 -0
  124. package/dist/urls-BEONu_g4.js +1 -0
  125. package/eslint.config.mjs +92 -0
  126. package/gh-pages.js +5 -3
  127. package/i18n/common/en.json +6 -0
  128. package/i18n/common/pl.json +2 -2
  129. package/images/icons.svg +217 -0
  130. package/index.html +0 -5
  131. package/lib/leaflet-src.js.map +1 -0
  132. package/lib/leaflet.markercluster-src.js.map +1 -0
  133. package/lib/openseadragon.min.js +6 -6
  134. package/package.json +56 -81
  135. package/pb-elements.json +716 -249
  136. package/rollup.config.mjs +312 -0
  137. package/src/assets/components.css +5 -5
  138. package/src/assets/design-system.css +607 -0
  139. package/src/authority/airtable.js +20 -21
  140. package/src/authority/anton.js +129 -129
  141. package/src/authority/custom.js +70 -27
  142. package/src/authority/geonames.js +38 -32
  143. package/src/authority/gnd.js +50 -42
  144. package/src/authority/kbga.js +136 -134
  145. package/src/authority/metagrid.js +44 -46
  146. package/src/authority/reconciliation.js +66 -68
  147. package/src/authority/registry.js +4 -4
  148. package/src/docs/demo-utils.js +91 -0
  149. package/src/docs/pb-component-docs.js +287 -147
  150. package/src/docs/pb-component-view.js +380 -273
  151. package/src/docs/pb-components-list.js +115 -51
  152. package/src/docs/pb-demo-snippet.js +199 -174
  153. package/src/dts-client.js +306 -303
  154. package/src/dts-select-endpoint.js +125 -85
  155. package/src/parse-date-service.js +184 -135
  156. package/src/pb-ajax.js +175 -173
  157. package/src/pb-authority-lookup.js +198 -158
  158. package/src/pb-autocomplete.js +731 -313
  159. package/src/pb-blacklab-highlight.js +266 -260
  160. package/src/pb-blacklab-results.js +230 -225
  161. package/src/pb-browse-docs.js +601 -484
  162. package/src/pb-browse.js +68 -65
  163. package/src/pb-clipboard.js +97 -76
  164. package/src/pb-code-editor.js +111 -103
  165. package/src/pb-code-highlight.js +234 -204
  166. package/src/pb-codepen.js +81 -73
  167. package/src/pb-collapse.js +265 -152
  168. package/src/pb-combo-box.js +191 -191
  169. package/src/pb-components-bundle.js +1 -7
  170. package/src/pb-components.js +2 -6
  171. package/src/pb-custom-form.js +230 -141
  172. package/src/pb-dialog.js +99 -63
  173. package/src/pb-document.js +118 -91
  174. package/src/pb-download.js +214 -198
  175. package/src/pb-drawer.js +146 -149
  176. package/src/pb-edit-app.js +471 -240
  177. package/src/pb-edit-xml.js +101 -98
  178. package/src/pb-events.js +126 -107
  179. package/src/pb-facs-link.js +130 -101
  180. package/src/pb-facsimile.js +494 -410
  181. package/src/pb-fetch.js +389 -0
  182. package/src/pb-formula.js +152 -154
  183. package/src/pb-geolocation.js +130 -132
  184. package/src/pb-grid-action.js +59 -56
  185. package/src/pb-grid.js +388 -228
  186. package/src/pb-highlight.js +142 -142
  187. package/src/pb-hotkeys.js +40 -42
  188. package/src/pb-i18n.js +115 -127
  189. package/src/pb-icon-button.js +108 -0
  190. package/src/pb-icon.js +283 -0
  191. package/src/pb-image-strip.js +85 -79
  192. package/src/pb-lang.js +142 -57
  193. package/src/pb-leaflet-map.js +551 -483
  194. package/src/pb-link.js +132 -126
  195. package/src/pb-load.js +495 -428
  196. package/src/pb-login.js +303 -248
  197. package/src/pb-manage-odds.js +384 -338
  198. package/src/pb-map-icon.js +90 -90
  199. package/src/pb-map-layer.js +86 -86
  200. package/src/pb-markdown.js +107 -110
  201. package/src/pb-media-query.js +75 -73
  202. package/src/pb-mei.js +523 -303
  203. package/src/pb-message.js +144 -98
  204. package/src/pb-mixin.js +268 -265
  205. package/src/pb-navigation.js +83 -96
  206. package/src/pb-observable.js +39 -39
  207. package/src/pb-odd-editor.js +1209 -948
  208. package/src/pb-odd-elementspec-editor.js +375 -310
  209. package/src/pb-odd-model-editor.js +1189 -941
  210. package/src/pb-odd-parameter-editor.js +269 -170
  211. package/src/pb-odd-rendition-editor.js +184 -131
  212. package/src/pb-page.js +451 -422
  213. package/src/pb-paginate.js +260 -178
  214. package/src/pb-panel.js +217 -183
  215. package/src/pb-popover-themes.js +16 -9
  216. package/src/pb-popover.js +297 -288
  217. package/src/pb-print-preview.js +128 -128
  218. package/src/pb-progress.js +52 -52
  219. package/src/pb-repeat.js +141 -108
  220. package/src/pb-restricted.js +85 -78
  221. package/src/pb-search.js +258 -230
  222. package/src/pb-select-feature.js +210 -126
  223. package/src/pb-select-odd.js +184 -118
  224. package/src/pb-select-template.js +113 -78
  225. package/src/pb-select.js +330 -229
  226. package/src/pb-split-list.js +181 -176
  227. package/src/pb-svg.js +81 -80
  228. package/src/pb-table-column.js +55 -55
  229. package/src/pb-table-grid.js +334 -205
  230. package/src/pb-tabs.js +238 -61
  231. package/src/pb-tify.js +3331 -126
  232. package/src/pb-timeline.js +394 -255
  233. package/src/pb-toggle-feature.js +196 -188
  234. package/src/pb-upload.js +201 -176
  235. package/src/pb-version.js +22 -34
  236. package/src/pb-view-annotate.js +138 -102
  237. package/src/pb-view.js +1722 -1272
  238. package/src/pb-zoom.js +144 -46
  239. package/src/search-result-service.js +256 -223
  240. package/src/seed-element.js +14 -22
  241. package/src/settings.js +4 -4
  242. package/src/theming.js +98 -91
  243. package/src/urls.js +403 -289
  244. package/src/utils.js +53 -51
  245. package/vite.config.js +86 -0
  246. package/.github/workflows/main.yml +0 -24
  247. package/.github/workflows/release.js.yml +0 -34
  248. package/css/pb-styles.css +0 -51
  249. package/dist/iron-form-3b8dcaa7.js +0 -210
  250. package/dist/jinn-codemirror-da0e2d1f.js +0 -1
  251. package/dist/paper-checkbox-515a5284.js +0 -1597
  252. package/dist/paper-icon-button-b1d31571.js +0 -398
  253. package/dist/paper-listbox-a3b7175c.js +0 -1265
  254. package/dist/pb-i18n-0611135a.js +0 -1
  255. package/dist/pb-mixin-b1caa22e.js +0 -158
  256. package/dist/polymer-hack.js +0 -1
  257. package/dist/vaadin-element-mixin-fe4a4883.js +0 -527
  258. package/lib/Control.Geocoder.min.js +0 -2
  259. package/lib/Control.Geocoder.min.js.map +0 -1
  260. package/src/assets/pb-styles.css +0 -51
  261. package/src/pb-light-dom.js +0 -41
  262. package/src/polymer-hack.js +0 -6
@@ -1,195 +1,262 @@
1
1
  // @ts-nocheck
2
- import { LitElement, html, css } from 'lit-element';
2
+ import { LitElement, html, css } from 'lit';
3
3
 
4
- import '@cwmr/paper-autocomplete/paper-autocomplete.js';
5
- import '@polymer/paper-icon-button/paper-icon-button.js';
6
- import '@polymer/paper-dropdown-menu/paper-dropdown-menu.js';
7
- import '@polymer/paper-listbox/paper-listbox.js';
8
- import '@polymer/paper-item/paper-item.js';
9
- import '@cwmr/paper-autocomplete/paper-autocomplete';
10
- import "@jinntec/jinn-codemirror/dist/src/jinn-codemirror";
4
+ import './pb-autocomplete.js';
5
+ import './pb-icon-button.js';
6
+ import '@jinntec/jinn-codemirror/dist/src/jinn-codemirror';
11
7
 
12
8
  import { cmpVersion } from './utils.js';
13
- import { get as i18n, translate } from "./pb-i18n.js";
9
+ import { get as i18n, translate } from './pb-i18n.js';
14
10
 
15
11
  /**
16
12
  * represents an odd parameter element for editing
17
13
  *
18
14
  * @customElement
19
- *
20
- * @polymer
21
15
  */
22
16
  export class PbOddParameterEditor extends LitElement {
17
+ static get styles() {
18
+ return css`
19
+ :host {
20
+ display: block;
21
+ }
22
+ .wrapper {
23
+ display: grid;
24
+ grid-template-columns: 150px auto 50px 50px;
25
+ grid-column-gap: 20px;
26
+ grid-row-gap: 20px;
27
+ margin-bottom: 10px;
28
+ }
29
+ pb-icon-button {
30
+ align-self: center;
31
+ margin-top: 16px;
32
+ }
23
33
 
24
- static get styles() {
25
- return css`
26
- :host {
27
- display: block;
28
- }
29
- .wrapper{
30
- display:grid;
31
- grid-template-columns:150px auto 50px 50px;
32
- grid-column-gap:20px;
33
- grid-row-gap:20px;
34
- margin-bottom:10px;
35
- }
36
- paper-dropdown-menu{
37
- align-self:start;
38
- }
39
- paper-icon-button, paper-checkbox {
40
- align-self: center;
41
- margin-top: 16px;
42
- }
43
-
44
- .editor label {
45
- margin-bottom:5px;
46
- font-size: 12px;
47
- font-weight: 400;
48
- color: var(--paper-grey-500);
49
- }
50
- `;
51
- }
34
+ .pb-checkbox {
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 0.5rem;
38
+ align-self: center;
39
+ margin-top: 16px;
40
+ font-size: 0.95rem;
41
+ color: rgba(0, 0, 0, 0.87);
42
+ }
52
43
 
53
- render() {
54
- return html`
55
- <div class="wrapper">
56
-
57
- <paper-autocomplete id="combo" text="${this.name}" placeholder="${translate('odd.editor.model.param-name-placeholder')}" label="Name"
58
- .source="${this._currentParameters}"></paper-autocomplete>
59
-
60
- <div class="editor">
61
- <label>Parameter</label>
62
- <jinn-codemirror id="editor"
63
- mode="xquery"
64
- code="${this.value}"
65
- linter="${this.endpoint}/${cmpVersion(this.apiVersion, '1.0.0') ? 'modules/editor.xql' : 'api/lint'}"></jinn-codemirror>
66
- </div>
67
- <paper-checkbox id="set" ?checked="${this.setParam}" @change="${this._handleCodeChange}">${translate('odd.editor.model.set-param')}</paper-checkbox>
68
- <paper-icon-button @click="${this._delete}" icon="delete" title="delete this parameter"></paper-icon-button>
69
- </div>
44
+ .pb-checkbox input {
45
+ width: 16px;
46
+ height: 16px;
47
+ }
70
48
 
71
-
72
- `;
73
- }
49
+ .pb-field {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: 0.35rem;
53
+ }
74
54
 
55
+ .pb-field__label {
56
+ font-size: 0.8rem;
57
+ font-weight: 600;
58
+ text-transform: uppercase;
59
+ letter-spacing: 0.05em;
60
+ color: rgba(0, 0, 0, 0.6);
61
+ }
75
62
 
76
- static get properties() {
77
- return {
78
- /**
79
- * the parameter name
80
- */
81
- name: {
82
- type: String,
83
- reflect: true
84
- },
85
- /**
86
- * the parameter value
87
- */
88
- value: {
89
- type: String,
90
- reflect: true
91
- },
92
- behaviour: {
93
- type: String
94
- },
95
- parameters: {
96
- type: Object
97
- },
98
- setParam: {
99
- type: Boolean,
100
- attribute: 'set'
101
- },
102
- _currentParameters: {
103
- type: Array
104
- },
105
- endpoint: {
106
- type: String
107
- },
108
- apiVersion: {
109
- type: String
110
- }
111
-
112
- };
113
- }
63
+ pb-autocomplete {
64
+ width: 100%;
65
+ }
114
66
 
115
- constructor() {
116
- super();
117
- this.name = '';
118
- this.value = '';
119
- this.setParam = false;
120
- this.behaviour = '';
121
- this.currentParameters = [];
122
- this.parameters = {
123
- '': [],
124
- alternate: ["default", "alternate", "persistent"],
125
- anchor: ["content", "id"],
126
- block: ["content"],
127
- body: ["content"],
128
- break: ["content", "type", "label"],
129
- cell: ["content"],
130
- cit: ["content", "source"],
131
- "document": ["content"],
132
- figure: ["content", "title"],
133
- graphic: ["content", "url", "width", "height", "scale", "title"],
134
- heading: ["content", "level"],
135
- inline: ["content"],
136
- link: ["content", "uri", "target"],
137
- list: ["content", "type"],
138
- listItem: ["content", "n"],
139
- metadata: ["content"],
140
- note: ["content", "place", "label"],
141
- omit: [],
142
- paragraph: ["content"],
143
- row: ["content"],
144
- section: ["content"],
145
- table: ["content"],
146
- text: ["content"],
147
- title: ["content"],
148
- webcomponent: ["content", "name"]
149
- };
150
-
151
- this.selected = '';
152
- this.endpoint = '';
67
+ .editor label {
68
+ margin-bottom: 5px;
69
+ font-size: 12px;
70
+ font-weight: 400;
71
+ color: rgba(0, 0, 0, 0.6);
72
+ }
73
+ `;
74
+ }
153
75
 
154
- }
76
+ render() {
77
+ return html`
78
+ <div class="wrapper">
79
+ <div class="pb-field">
80
+ <span class="pb-field__label"
81
+ >${translate('odd.editor.model.param-name-placeholder')}</span
82
+ >
83
+ <pb-autocomplete
84
+ id="combo"
85
+ .suggestions=${this._currentParameters}
86
+ .value=${this.name || ''}
87
+ placeholder="${translate('odd.editor.model.param-name-placeholder')}"
88
+ @pb-autocomplete-input=${this._handleNameInput}
89
+ @pb-autocomplete-selected=${this._handleNameSelected}
90
+ ></pb-autocomplete>
91
+ </div>
155
92
 
156
- connectedCallback() {
157
- super.connectedCallback();
158
- this.value = this.value.trim();
159
- this.dispatchEvent(new CustomEvent('parameter-connected', { composed: true, bubbles: true, detail: { target: this } }));
160
- }
93
+ <div class="editor">
94
+ <label>Parameter</label>
95
+ <jinn-codemirror
96
+ id="editor"
97
+ mode="xquery"
98
+ code="${this.value}"
99
+ linter="${this.endpoint}/${cmpVersion(this.apiVersion, '1.0.0')
100
+ ? 'modules/editor.xql'
101
+ : 'api/lint'}"
102
+ ></jinn-codemirror>
103
+ </div>
104
+ <label class="pb-checkbox">
105
+ <input
106
+ id="set"
107
+ type="checkbox"
108
+ ?checked=${this.setParam}
109
+ @change=${this._handleSetToggle}
110
+ />
111
+ <span>${translate('odd.editor.model.set-param')}</span>
112
+ </label>
113
+ <pb-icon-button
114
+ class="icon-button"
115
+ icon="delete"
116
+ title="delete this parameter"
117
+ @click="${this._delete}"
118
+ ></pb-icon-button>
119
+ </div>
120
+ `;
121
+ }
161
122
 
162
- attributeChangedCallback(name, old, value) {
163
- super.attributeChangedCallback(name, old, value);
164
- if (name === 'behaviour') {
165
- this._currentParameters = this.parameters[value];
166
- }
123
+ static get properties() {
124
+ return {
125
+ /**
126
+ * the parameter name
127
+ */
128
+ name: {
129
+ type: String,
130
+ reflect: true,
131
+ },
132
+ /**
133
+ * the parameter value
134
+ */
135
+ value: {
136
+ type: String,
137
+ reflect: true,
138
+ },
139
+ behaviour: {
140
+ type: String,
141
+ },
142
+ parameters: {
143
+ type: Object,
144
+ },
145
+ setParam: {
146
+ type: Boolean,
147
+ attribute: 'set',
148
+ },
149
+ _currentParameters: {
150
+ type: Array,
151
+ },
152
+ endpoint: {
153
+ type: String,
154
+ },
155
+ apiVersion: {
156
+ type: String,
157
+ },
158
+ };
159
+ }
160
+
161
+ constructor() {
162
+ super();
163
+ this.name = '';
164
+ this.value = '';
165
+ this.setParam = false;
166
+ this.behaviour = '';
167
+ this.currentParameters = [];
168
+ this.parameters = {
169
+ '': [],
170
+ alternate: ['default', 'alternate', 'persistent'],
171
+ anchor: ['content', 'id'],
172
+ block: ['content'],
173
+ body: ['content'],
174
+ break: ['content', 'type', 'label'],
175
+ cell: ['content'],
176
+ cit: ['content', 'source'],
177
+ document: ['content'],
178
+ figure: ['content', 'title'],
179
+ graphic: ['content', 'url', 'width', 'height', 'scale', 'title'],
180
+ heading: ['content', 'level'],
181
+ inline: ['content'],
182
+ link: ['content', 'uri', 'target'],
183
+ list: ['content', 'type'],
184
+ listItem: ['content', 'n'],
185
+ metadata: ['content'],
186
+ note: ['content', 'place', 'label'],
187
+ omit: [],
188
+ paragraph: ['content'],
189
+ row: ['content'],
190
+ section: ['content'],
191
+ table: ['content'],
192
+ text: ['content'],
193
+ title: ['content'],
194
+ webcomponent: ['content', 'name'],
195
+ };
196
+
197
+ this.selected = '';
198
+ this.endpoint = '';
199
+ this._currentParameters = [];
200
+ if (this.behaviour && this.parameters[this.behaviour]) {
201
+ this._currentParameters = this.parameters[this.behaviour];
167
202
  }
203
+ }
168
204
 
169
- firstUpdated(changedProperties) {
170
- // console.log('parameters firstupdated ', changedProperties);
171
- this.selected = this.parameters[this.behaviour] || [];
172
- this.requestUpdate();
205
+ connectedCallback() {
206
+ super.connectedCallback();
207
+ this.value = this.value.trim();
208
+ this.dispatchEvent(
209
+ new CustomEvent('parameter-connected', {
210
+ composed: true,
211
+ bubbles: true,
212
+ detail: { target: this },
213
+ }),
214
+ );
215
+ }
173
216
 
174
- this.shadowRoot.getElementById('combo').addEventListener('focused-changed', this._handleCodeChange.bind(this));
175
- this.shadowRoot.getElementById('editor').addEventListener('update', this._handleCodeChange.bind(this));
217
+ attributeChangedCallback(name, old, value) {
218
+ super.attributeChangedCallback(name, old, value);
219
+ if (name === 'behaviour') {
220
+ this._currentParameters = (this.parameters && this.parameters[value]) || [];
176
221
  }
222
+ }
177
223
 
178
- refreshEditor() {
179
- // console.log('parameters refresh');
180
- const editor = this.shadowRoot.getElementById('editor');
181
- if (!editor) { return; }
182
- // editor.refresh();
224
+ updated(changedProperties) {
225
+ super.updated(changedProperties);
226
+ if (changedProperties.has('parameters') || changedProperties.has('behaviour')) {
227
+ this._currentParameters = (this.parameters && this.parameters[this.behaviour]) || [];
228
+ const combo = this.shadowRoot?.getElementById('combo');
229
+ if (combo) {
230
+ combo.suggestions = this._currentParameters;
231
+ }
183
232
  }
233
+ }
234
+
235
+ firstUpdated(changedProperties) {
236
+ // console.log('parameters firstupdated ', changedProperties);
237
+ this.selected = this.parameters[this.behaviour] || [];
238
+ this.requestUpdate();
184
239
 
240
+ this.shadowRoot
241
+ .getElementById('editor')
242
+ .addEventListener('update', this._handleCodeChange.bind(this));
243
+ }
185
244
 
186
- _delete(ev) {
187
- console.log('parameter delete ', ev);
188
- ev.preventDefault();
189
- this.dispatchEvent(new CustomEvent('parameter-remove', {}));
245
+ refreshEditor() {
246
+ // console.log('parameters refresh');
247
+ const editor = this.shadowRoot.getElementById('editor');
248
+ if (!editor) {
190
249
  }
250
+ // editor.refresh();
251
+ }
191
252
 
192
- /*
253
+ _delete(ev) {
254
+ console.log('parameter delete ', ev);
255
+ ev.preventDefault();
256
+ this.dispatchEvent(new CustomEvent('parameter-remove', {}));
257
+ }
258
+
259
+ /*
193
260
  _handleChange(e) {
194
261
  console.log('_handleChange ', e);
195
262
  this.value = this.shadowRoot.getElementById('editor').getSource();
@@ -198,15 +265,47 @@ export class PbOddParameterEditor extends LitElement {
198
265
  }
199
266
  */
200
267
 
201
- _handleCodeChange(e) {
202
- console.log('_handleCodeChange ', e);
203
- this.value = this.shadowRoot.getElementById('editor').content || '';
204
- console.log('value %s', this.value);
205
- this.name = this.shadowRoot.getElementById('combo').text;
206
- this.setParam = this.shadowRoot.getElementById('set').checked;
207
- this.dispatchEvent(new CustomEvent('parameter-changed', { composed: true, bubbles: true, detail: { name: this.name, value: this.value, set: this.setParam } }));
208
- }
268
+ _handleCodeChange(e) {
269
+ this._emitChange();
270
+ }
209
271
 
272
+ _handleNameInput(ev) {
273
+ const { text, value } = ev.detail || {};
274
+ this.name = value ?? text ?? '';
275
+ this._emitChange();
276
+ }
210
277
 
278
+ _handleNameSelected(ev) {
279
+ const { text, value } = ev.detail || {};
280
+ this.name = value ?? text ?? '';
281
+ this._emitChange();
282
+ }
283
+
284
+ _handleSetToggle(ev) {
285
+ this.setParam = ev.target.checked;
286
+ this._emitChange();
287
+ }
288
+
289
+ _emitChange() {
290
+ const editor = this.shadowRoot.getElementById('editor');
291
+ if (editor) {
292
+ this.value = editor.content || editor.value || '';
293
+ }
294
+ const combo = this.shadowRoot.getElementById('combo');
295
+ if (combo && !this.name) {
296
+ this.name = combo.value || '';
297
+ }
298
+ const checkbox = this.shadowRoot.getElementById('set');
299
+ if (checkbox) {
300
+ this.setParam = checkbox.checked;
301
+ }
302
+ this.dispatchEvent(
303
+ new CustomEvent('parameter-changed', {
304
+ composed: true,
305
+ bubbles: true,
306
+ detail: { name: this.name, value: this.value, set: this.setParam },
307
+ }),
308
+ );
309
+ }
211
310
  }
212
311
  customElements.define('pb-odd-parameter-editor', PbOddParameterEditor);