@ntix/components-scorad 1.0.2 → 1.0.3

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/LICENSE.md CHANGED
@@ -1,4 +1,4 @@
1
- # @ntix/components-scorad
1
+ # License: @ntix/components-scorad
2
2
 
3
3
  Copyright (c) 2025 Antix Software Limited ([antix.co.uk](https://antix.co.uk))
4
4
 
package/README.md CHANGED
@@ -2,12 +2,22 @@
2
2
 
3
3
  A professional-grade component library for calculating and visualizing SCORAD (SCORing Atopic Dermatitis) assessments. Developed by Antix Software Limited.
4
4
 
5
+ <a href="https://antix.co.uk/scorad">
6
+ <img src="https://github-production-user-asset-6210df.s3.amazonaws.com/873305/531299043-0c2a392c-f250-493f-b444-696413df6757.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20260101%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260101T004816Z&X-Amz-Expires=300&X-Amz-Signature=822cca7d3b90525f61745a99c5cc64765128ba7a59b6a3d4f43d433103748ccc&X-Amz-SignedHeaders=host" alt="SCORAD Component Preview" width="320" />
7
+ </a>
8
+
9
+ **View the interactive demo [antix.co.uk/scorad](https://antix.co.uk/scorad)**
10
+
5
11
  ## Features
6
12
 
7
13
  - Interactive Body Maps: High-performance SVG-based surface area selection.
8
14
  - SCORAD Formula: Sections A (Extent), B (Intensity), and C (Subjective).
9
15
  - Custom Elements: Easy integration with any framework or plain HTML.
10
16
 
17
+ ## Validation & Accuracy
18
+ This component has been mathematically validated against the ETFAD SCORAD reference standards.
19
+ See [VALIDATION.md](./VALIDATION.md) for the full report and test coverage details.
20
+
11
21
  ## Installation
12
22
 
13
23
  ```shell
package/VALIDATION.md ADDED
@@ -0,0 +1,39 @@
1
+ # Validation: @ntix/components-scorad
2
+
3
+ ## 1. Overview
4
+ This document outlines the validation procedures and mathematical accuracy of the SCORAD (SCORing Atopic Dermatitis) calculation logic within this package.
5
+
6
+ ## 2. Reference Standard
7
+ The implementation is based on the consensus report of the European Task Force on Atopic Dermatitis (ETFAD).
8
+
9
+ **Formula:** $Score = \frac{A}{5} + \frac{7B}{2} + C$
10
+
11
+ - **A (Extent):** Surface area percentage (0–100). Includes adult/child weighting adjustments for head and limbs.
12
+ - **B (Intensity):** Sum of 6 clinical signs (0–3 each), max 18.
13
+ - **C (Subjective):** Sum of Pruritus and Insomnia (0–10 each), max 20.
14
+
15
+ ## 3. Automated Test Suite
16
+ Validation is performed using `vitest` in a `happy-dom` environment. The following critical paths are verified on every build:
17
+
18
+ ### 3.1. Boundary Testing
19
+ - **Minimum Score:** Confirmed $0.00$ when all inputs are zero.
20
+ - **Maximum Score:** Confirmed $103.00$ when all inputs are at maximum capacity.
21
+
22
+ ### 3.2. Weighting & Precision
23
+ - **Intensity Weighting:** Verifies that Intensity (Section B) contributes to the total with a multiplier of $3.5$ (e.g., an Intensity of 3 results in a sub-score of 10.5).
24
+ - **Rounding:** Results are rounded to 2 decimal places to ensure consistency across clinical documentation.
25
+
26
+ ### 3.3. Age-Based Extent (Adult vs Child)
27
+ - Validates the calculation across both adult and pediatric surface area distributions.
28
+
29
+ ## 4. Error Handling & Safety
30
+ The library implements strict validation via `@ntix/components-core`. Calculations will fail with a descriptive `Failure` object if:
31
+ - Extent values exceed physiological maximums.
32
+ - Intensity values fall outside the 0–3 range.
33
+ - Subjective values fall outside the 0–10 range.
34
+
35
+ ## 5. Summary
36
+ The @ntix/components-scorad calculation logic is deemed mathematically sound and compliant with the ETFAD standard for digital SCORAD assessments.
37
+
38
+ ---
39
+ © 2025 Antix Software Limited ([antix.co.uk](https://antix.co.uk)). Prepared for clinical and commercial review.
@@ -1046,11 +1046,25 @@ const ScoradResources = {
1046
1046
  };
1047
1047
  var tag$6 = "scorad-extent", HTMLScoradExtentElement = class extends HTMLComponentElement {
1048
1048
  connectedCallback() {
1049
- this.render();
1049
+ this.render(), this.addEventListener("focusin", this.handleFocusIn, { once: !0 });
1050
+ }
1051
+ disconnectedCallback() {
1052
+ this.removeEventListener("focusin", this.handleFocusIn);
1050
1053
  }
1054
+ handleFocusIn = () => {
1055
+ this.readonly || (this.committedValue = this.value, this.addEventListener("focusout", this.handleFocusOut, { once: !0 }));
1056
+ };
1057
+ handleFocusOut = () => {
1058
+ this.addEventListener("focusin", this.handleFocusIn, { once: !0 }), !areEqual(this.value, this.committedValue) && this.valueChange(this.value);
1059
+ };
1051
1060
  child = !1;
1061
+ readonly = !1;
1062
+ committedValue = SCORAD_EXTENT_DEFAULT;
1052
1063
  value = SCORAD_EXTENT_DEFAULT;
1053
1064
  score;
1065
+ setValue = (e) => {
1066
+ this.value = e, this.errors = void 0, this.valueInput(this.value);
1067
+ };
1054
1068
  errors;
1055
1069
  afterRender() {
1056
1070
  if (!this.value) {
@@ -1077,10 +1091,10 @@ var tag$6 = "scorad-extent", HTMLScoradExtentElement = class extends HTMLCompone
1077
1091
  let e = (e) => {
1078
1092
  let t = (t) => {
1079
1093
  let n = Math.round(Math.min(100, Math.max(0, t)));
1080
- this.value = {
1094
+ this.setValue({
1081
1095
  ...this.value,
1082
1096
  [e]: n
1083
- }, this.errors = void 0, this.valueInput(this.value);
1097
+ });
1084
1098
  };
1085
1099
  return (n) => {
1086
1100
  if (!n) return;
@@ -1203,6 +1217,9 @@ var tag$6 = "scorad-extent", HTMLScoradExtentElement = class extends HTMLCompone
1203
1217
  valueChange;
1204
1218
  };
1205
1219
  __decorate([Att(AttBoolean)], HTMLScoradExtentElement.prototype, "child", void 0), __decorate([Att({
1220
+ name: "aria-readonly",
1221
+ ...AttTrueFalse
1222
+ })], HTMLScoradExtentElement.prototype, "readonly", void 0), __decorate([Att({
1206
1223
  name: "has-errors",
1207
1224
  write: (e) => e == null ? void 0 : "",
1208
1225
  read: !1
@@ -1213,18 +1230,18 @@ __decorate([Att(AttBoolean)], HTMLScoradExtentElement.prototype, "child", void 0
1213
1230
  })], HTMLScoradExtentElement);
1214
1231
  var component_default$4 = ":host{--host-display:inline-flex;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}", component_default$5 = ":host{--host-display:inline-flex;--host-option-width:var(--scorad-option-width,1.5em);--host-option-height:var(--scorad-option-height,1.5em);--host-option-border:var(--scorad-option-border,solid 1px var(--host-color));--host-option-border-selected:var(--scorad-option-border-selected,solid 2px var(--host-color));--host-option-color:var(--scorad-option-color,var(--host-color));--host-option-background:var(--scorad-option-background,transparent);--host-option-color-selected:var(--scorad-option-color-selected,var(--host-background-color));--host-option-background-selected:var(--scorad-option-background-selected,var(--host-color));gap:var(--host-spacing-unit);margin:var(--host-padding-unit)0;outline:none;width:max-content;position:relative}span{height:var(--host-option-height);width:var(--host-option-width);outline:var(--host-option-border);border-radius:var(--host-border-radius);padding:calc(.5*var(--host-padding-unit))var(--host-padding-unit);color:var(--host-option-color);background:var(--host-option-background);cursor:pointer;touch-action:none}span:before{content:\"​\";touch-action:none;pointer-events:none}span[aria-selected=true]{outline:var(--host-option-border-selected);color:var(--host-option-color-selected);background:var(--host-option-background-selected)}", tag$5 = "scorad-options", HTMLScoradOptionsElement = class extends HTMLComponentElement {
1215
1232
  connectedCallback() {
1216
- this.render(), this.addEventListener("focusin", this._handleFocusIn, { once: !0 }), this.addEventListener("click", this._handleClick);
1233
+ this.render(), this.addEventListener("focusin", this.handleFocusIn, { once: !0 }), this.addEventListener("click", this.handleClick);
1217
1234
  }
1218
1235
  disconnectedCallback() {
1219
- this.addEventListener("click", this._handleClick);
1236
+ this.removeEventListener("focusin", this.handleFocusIn), this.removeEventListener("click", this.handleClick);
1220
1237
  }
1221
- _handleFocusIn = () => {
1222
- this.readonly || (this.committedValue = this.value, this.addEventListener("focusout", this._handleFocusOut, { once: !0 }), this.addEventListener("keydown", this._handleKeydown));
1238
+ handleFocusIn = () => {
1239
+ this.readonly || (this.committedValue = this.value, this.addEventListener("focusout", this.handleFocusOut, { once: !0 }), this.addEventListener("keydown", this.handleKeydown));
1223
1240
  };
1224
- _handleFocusOut = () => {
1225
- this.removeEventListener("keydown", this._handleKeydown), this.addEventListener("focusin", this._handleFocusIn, { once: !0 }), this.setValue(this.value), this.value !== this.committedValue && this.valueChange(this.value);
1241
+ handleFocusOut = () => {
1242
+ this.removeEventListener("keydown", this.handleKeydown), this.addEventListener("focusin", this.handleFocusIn, { once: !0 }), this.setValue(this.value), this.value !== this.committedValue && this.valueChange(this.value);
1226
1243
  };
1227
- _handleClick = (e) => {
1244
+ handleClick = (e) => {
1228
1245
  if (this.readonly) return;
1229
1246
  e.stopPropagation(), e.preventDefault(), this.focus();
1230
1247
  let t = e.composedPath()[0];
@@ -1232,7 +1249,7 @@ var component_default$4 = ":host{--host-display:inline-flex;flex-direction:colum
1232
1249
  let n = Number.parseInt(t.dataset.value);
1233
1250
  this.setValue(n);
1234
1251
  };
1235
- _handleKeydown = (e) => {
1252
+ handleKeydown = (e) => {
1236
1253
  let t = this.value ?? 0;
1237
1254
  switch (e.key) {
1238
1255
  case "ArrowLeft":
@@ -1268,7 +1285,7 @@ var component_default$4 = ":host{--host-display:inline-flex;flex-direction:colum
1268
1285
  afterRender() {
1269
1286
  this.shadowRoot && this.shadowRoot.querySelectorAll("span").forEach((e) => {
1270
1287
  let t = Number.parseInt(e.dataset.value);
1271
- if (e.ariaSelected = t === this.value ? "true" : "false", !this.showHue) return;
1288
+ if (e.setAttribute("aria-selected", t === this.value ? "true" : "false"), !this.showHue) return;
1272
1289
  if (t > this.value) {
1273
1290
  e.style.backgroundColor = "";
1274
1291
  return;
@@ -1297,6 +1314,7 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
1297
1314
  connectedCallback() {
1298
1315
  this.render();
1299
1316
  }
1317
+ readonly = !1;
1300
1318
  value = SCORAD_INTENSITY_DEFAULT;
1301
1319
  score;
1302
1320
  errors;
@@ -1321,12 +1339,17 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
1321
1339
  }
1322
1340
  renderLevel(e) {
1323
1341
  let t = (t) => {
1324
- t && t.addEventListener("value-input", (t) => {
1342
+ t && (t.addEventListener("value-input", (t) => {
1325
1343
  this.value = {
1326
1344
  ...this.value,
1327
1345
  [e]: t.detail
1328
- }, this.valueInput(this.value);
1329
- });
1346
+ }, this.errors = void 0, this.valueInput(this.value);
1347
+ }), t.addEventListener("value-change", (t) => {
1348
+ this.value = {
1349
+ ...this.value,
1350
+ [e]: t.detail
1351
+ }, this.errors = void 0, this.valueChange(this.value);
1352
+ }));
1330
1353
  }, n = ScoradResources.intensity[e];
1331
1354
  return html`
1332
1355
  <scorad-label class="${toKebabCase(e)} row"
@@ -1342,6 +1365,9 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
1342
1365
  valueChange;
1343
1366
  };
1344
1367
  __decorate([Att({
1368
+ name: "aria-readonly",
1369
+ ...AttTrueFalse
1370
+ })], HTMLScoradIntensityElement.prototype, "readonly", void 0), __decorate([Att({
1345
1371
  name: "has-errors",
1346
1372
  write: (e) => e == null ? void 0 : "",
1347
1373
  read: !1
@@ -1511,20 +1537,30 @@ var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentEle
1511
1537
  <h3 slot="text">A</h3>
1512
1538
  <p slot="description">extent - effected surface area</p>
1513
1539
  <scorad-weightings ${(e) => {
1514
- e instanceof HTMLScoradWeightingsElement && e.addEventListener("value-input", (e) => {
1540
+ e instanceof HTMLScoradWeightingsElement && (e.addEventListener("value-input", (e) => {
1515
1541
  this.value = {
1516
1542
  ...this.value,
1517
1543
  child: e.detail
1518
- };
1519
- });
1544
+ }, this.valueInput(this.value);
1545
+ }), e.addEventListener("value-change", (e) => {
1546
+ this.value = {
1547
+ ...this.value,
1548
+ child: e.detail
1549
+ }, this.valueChange(this.value);
1550
+ }));
1520
1551
  }}></scorad-weightings>
1521
1552
  <scorad-extent tabindex="0" ${(e) => {
1522
- e instanceof HTMLScoradExtentElement && e.addEventListener("value-input", (e) => {
1553
+ e instanceof HTMLScoradExtentElement && (e.addEventListener("value-input", (e) => {
1523
1554
  this.value = {
1524
1555
  ...this.value,
1525
1556
  extent: e.detail
1526
- };
1527
- });
1557
+ }, this.valueInput(this.value);
1558
+ }), e.addEventListener("value-change", (e) => {
1559
+ this.value = {
1560
+ ...this.value,
1561
+ extent: e.detail
1562
+ }, this.valueChange(this.value);
1563
+ }));
1528
1564
  }}></scorad-extent>
1529
1565
  </scorad-label>
1530
1566
 
@@ -1532,12 +1568,17 @@ var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentEle
1532
1568
  <h3 slot="text">B</h3>
1533
1569
  <p slot="description">intensity - clinical sign severity</p>
1534
1570
  <scorad-intensity tabindex="0" ${(e) => {
1535
- e instanceof HTMLScoradIntensityElement && e.addEventListener("value-input", (e) => {
1571
+ e instanceof HTMLScoradIntensityElement && (e.addEventListener("value-input", (e) => {
1536
1572
  this.value = {
1537
1573
  ...this.value,
1538
1574
  intensity: e.detail
1539
- };
1540
- });
1575
+ }, this.valueInput(this.value);
1576
+ }), e.addEventListener("value-change", (e) => {
1577
+ this.value = {
1578
+ ...this.value,
1579
+ intensity: e.detail
1580
+ }, this.valueChange(this.value);
1581
+ }));
1541
1582
  }}></scorad-intensity>
1542
1583
  </scorad-label>
1543
1584
 
@@ -1545,12 +1586,17 @@ var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentEle
1545
1586
  <h3 slot="text">C</h3>
1546
1587
  <p slot="description">subjective - patient reported symptoms</p>
1547
1588
  <scorad-subjective tabindex="0" ${(e) => {
1548
- e instanceof HTMLScoradSubjectiveElement && e.addEventListener("value-input", (e) => {
1589
+ e instanceof HTMLScoradSubjectiveElement && (e.addEventListener("value-input", (e) => {
1549
1590
  this.value = {
1550
1591
  ...this.value,
1551
1592
  subjective: e.detail
1552
- };
1553
- });
1593
+ }, this.valueInput(this.value);
1594
+ }), e.addEventListener("value-change", (e) => {
1595
+ this.value = {
1596
+ ...this.value,
1597
+ subjective: e.detail
1598
+ }, this.valueChange(this.value);
1599
+ }));
1554
1600
  }}></scorad-subjective>
1555
1601
  </scorad-label>
1556
1602
 
@@ -1560,7 +1606,7 @@ var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentEle
1560
1606
  ${(e) => {
1561
1607
  e instanceof HTMLScoradLabelElement && e.addEventListener("click", () => {
1562
1608
  if (!this.shadowRoot) return;
1563
- this.showErrors = !0, this.afterRender();
1609
+ this.showErrors = !0;
1564
1610
  let e = this.shadowRoot.querySelector("[has-errors]");
1565
1611
  e && (e.focus({ preventScroll: !0 }), e.scrollIntoView({
1566
1612
  behavior: "smooth",
@@ -1573,8 +1619,10 @@ var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentEle
1573
1619
  </scorad-label>
1574
1620
  `;
1575
1621
  }
1622
+ valueInput;
1623
+ valueChange;
1576
1624
  };
1577
- __decorate([Watch("value")], HTMLScoradElement.prototype, "afterRender", null), HTMLScoradElement = __decorate([Component({
1625
+ __decorate([Watch("value", "showErrors")], HTMLScoradElement.prototype, "afterRender", null), __decorate([Event()], HTMLScoradElement.prototype, "valueInput", void 0), __decorate([Event()], HTMLScoradElement.prototype, "valueChange", void 0), HTMLScoradElement = __decorate([Component({
1578
1626
  tag,
1579
1627
  css: [host_default, component_default],
1580
1628
  delegatesFocus: !0
@@ -1,4 +1,4 @@
1
- (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.AntixComponentsScorad={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=new Map,n=e=>e==null?[]:(Array.isArray(e)||(e=[e]),e.map(e=>{if(t.has(e))return t.get(e);let n=new CSSStyleSheet;return n.replaceSync(e),t.set(e,n),n})),r=e=>{let t=e;return t.__metadata=t.__metadata??{attributes:[],watches:[],events:[]},t};(()=>{let e=`__drag_attached`;return{list:(t,n,r)=>{if(t.dataset[e])return;t.dataset[e]=`true`;let i=(e,n)=>e.find(e=>e instanceof HTMLElement&&t.contains(e)&&n(e)),a=(e,n,r=()=>!0)=>!(e instanceof Node)||!t.contains(e)?null:e==null||e instanceof HTMLElement&&r(e)?e:a(n(e),n,r),o=e=>a(e?.nextSibling,e=>e?.nextSibling),s=(e,t)=>n=>n instanceof HTMLElement&&(e??(e=>e.classList.contains(t)))(n),c=()=>Array.from(t.children).filter(u).reduce((e,t)=>e.set(t,t.getBoundingClientRect()),new Map),l=s(r?.gripSelector,`drag-grip`),u=s(r?.itemSelector,`drag-item`),d,f,p,m=0,h,g,ee=e=>{let n=e.composedPath();d=i(n,l),d&&(e.preventDefault(),e.stopPropagation(),window.getSelection()?.removeAllRanges(),f=c(),p=i(n,u),m=e.clientY,h=p.dataset.id,p.classList.add(`dragging`),p.style.pointerEvents=`none`,p.style.zIndex=`2`,t.style.touchAction=`none`,t.style.userSelect=`none`,document.addEventListener(`pointermove`,te),document.addEventListener(`pointerup`,_))},te=e=>{if(!p||!f)throw Error(`drag item is undefined`);let n=f.get(p),r=null;for(let[t,i]of f.entries()){if(t===p||e.clientY<=i.top||e.clientY>=i.bottom)continue;e.stopPropagation();let a=i.top+(n.bottom-i.top)/2;r=e.clientY>a?o(t):t;break}if(r){g=r instanceof HTMLElement?r.dataset.id:void 0,t.insertBefore(p,r),p.style.transform=``;var i=n.top;f=c(),m+=f.get(p).top-i,d?.focus()}p.style.transform=`translateY(${e.clientY-m}px)`},_=e=>{if(!p)throw Error(`drag item is undefined`);e.stopPropagation(),document.removeEventListener(`pointermove`,te),document.removeEventListener(`pointerup`,_),p.classList.remove(`dragging`),p.style.transform=``,p.style.pointerEvents=``,p.style.zIndex=``,p=void 0,t.style.touchAction=``,t.style.userSelect=``,h&&g&&(n(h,g),h=void 0,g=void 0)},v=e=>{if(!e.altKey)return;let r=(e,r)=>{let i=document.activeElement;t.insertBefore(e,r),i instanceof HTMLElement&&i.focus(),n(e.dataset.id,r?.dataset.id)};switch(e.key){case`ArrowUp`:{let t=a(e.target,e=>e?.parentElement,u);if(t&&u(t.previousElementSibling)){let e=t.previousElementSibling;r(t,e)}break}case`ArrowDown`:{let t=a(e.target,e=>e?.parentElement,u);if(t&&u(t.nextElementSibling)){let e=t.nextElementSibling?.nextElementSibling;r(t,e)}break}}};return t.addEventListener(`pointerdown`,ee),t.addEventListener(`keydown`,v),()=>{t.removeEventListener(`pointerdown`,ee),t.removeEventListener(`keydown`,v)}}}})();var i=`
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.AntixComponentsScorad={}))})(this,function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=new Map,n=e=>e==null?[]:(Array.isArray(e)||(e=[e]),e.map(e=>{if(t.has(e))return t.get(e);let n=new CSSStyleSheet;return n.replaceSync(e),t.set(e,n),n})),r=e=>{let t=e;return t.__metadata=t.__metadata??{attributes:[],watches:[],events:[]},t};(()=>{let e=`__drag_attached`;return{list:(t,n,r)=>{if(t.dataset[e])return;t.dataset[e]=`true`;let i=(e,n)=>e.find(e=>e instanceof HTMLElement&&t.contains(e)&&n(e)),a=(e,n,r=()=>!0)=>!(e instanceof Node)||!t.contains(e)?null:e==null||e instanceof HTMLElement&&r(e)?e:a(n(e),n,r),o=e=>a(e?.nextSibling,e=>e?.nextSibling),s=(e,t)=>n=>n instanceof HTMLElement&&(e??(e=>e.classList.contains(t)))(n),c=()=>Array.from(t.children).filter(u).reduce((e,t)=>e.set(t,t.getBoundingClientRect()),new Map),l=s(r?.gripSelector,`drag-grip`),u=s(r?.itemSelector,`drag-item`),d,f,p,m=0,ee,h,te=e=>{let n=e.composedPath();d=i(n,l),d&&(e.preventDefault(),e.stopPropagation(),window.getSelection()?.removeAllRanges(),f=c(),p=i(n,u),m=e.clientY,ee=p.dataset.id,p.classList.add(`dragging`),p.style.pointerEvents=`none`,p.style.zIndex=`2`,t.style.touchAction=`none`,t.style.userSelect=`none`,document.addEventListener(`pointermove`,ne),document.addEventListener(`pointerup`,g))},ne=e=>{if(!p||!f)throw Error(`drag item is undefined`);let n=f.get(p),r=null;for(let[t,i]of f.entries()){if(t===p||e.clientY<=i.top||e.clientY>=i.bottom)continue;e.stopPropagation();let a=i.top+(n.bottom-i.top)/2;r=e.clientY>a?o(t):t;break}if(r){h=r instanceof HTMLElement?r.dataset.id:void 0,t.insertBefore(p,r),p.style.transform=``;var i=n.top;f=c(),m+=f.get(p).top-i,d?.focus()}p.style.transform=`translateY(${e.clientY-m}px)`},g=e=>{if(!p)throw Error(`drag item is undefined`);e.stopPropagation(),document.removeEventListener(`pointermove`,ne),document.removeEventListener(`pointerup`,g),p.classList.remove(`dragging`),p.style.transform=``,p.style.pointerEvents=``,p.style.zIndex=``,p=void 0,t.style.touchAction=``,t.style.userSelect=``,ee&&h&&(n(ee,h),ee=void 0,h=void 0)},_=e=>{if(!e.altKey)return;let r=(e,r)=>{let i=document.activeElement;t.insertBefore(e,r),i instanceof HTMLElement&&i.focus(),n(e.dataset.id,r?.dataset.id)};switch(e.key){case`ArrowUp`:{let t=a(e.target,e=>e?.parentElement,u);if(t&&u(t.previousElementSibling)){let e=t.previousElementSibling;r(t,e)}break}case`ArrowDown`:{let t=a(e.target,e=>e?.parentElement,u);if(t&&u(t.nextElementSibling)){let e=t.nextElementSibling?.nextElementSibling;r(t,e)}break}}};return t.addEventListener(`pointerdown`,te),t.addEventListener(`keydown`,_),()=>{t.removeEventListener(`pointerdown`,te),t.removeEventListener(`keydown`,_)}}}})();var i=`
2
2
  button:not([disabled]),
3
3
  [href],
4
4
  input:not([disabled]),
@@ -6,9 +6,9 @@
6
6
  textarea:not([disabled]),
7
7
  [tabindex]:not([tabindex="-1"]),
8
8
  [contenteditable]:not([contenteditable="false"])
9
- `,a={trace:0,debug:1,log:2,info:3,warn:4,error:5};function o(e,t,n){let r=()=>{},i={provide:r=>o(`${e}.${r}`,t,n)};for(let o of Object.keys(a)){let s=o,c=a[s],l=n[s];t>c?i[s]=r:i[s]=((t,...n)=>l(`[${e}]`,t,...n))}return i}var s=(()=>{let e=(e,t)=>(t??=s.defaultLevel,o(e,t,s.adapter));return e.adapter=console,e.defaultLevel=a.warn,e})(),c=(e,t)=>{if(e===t||Number.isNaN(e)&&Number.isNaN(t))return!0;if(!(typeof e==`object`&&e)||!(typeof t==`object`&&t))return!1;let n=Array.isArray(e);if(n!==Array.isArray(t))return!1;if(n){let n=e,r=t;if(n.length!==r.length)return!1;for(let e=0;e<n.length;e++)if(!c(n[e],r[e]))return!1;return!0}let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let n of r){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;let r=e[n],i=t[n];if(!c(r,i))return!1}return!0},l=(e,t)=>{let n=e;for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}};function u(e){return e.split(/\.|\[|\]\.?/).filter(e=>e!==``).map(e=>{let t=Number.parseInt(e);return isNaN(t)?e:t})}function d(e,t){let n=u(t);for(let t=0;t<n.length;t++){if(e==null)return;let r=n[t];e=e[r]}return e}var f=e=>Object.keys(e);function p(e,t,n){let r=t.match(/[^.\[\]]+/g);if(!r)return n;let i={...e},a=i;for(let e=0;e<r.length-1;e++){let t=r[e],n=r[e+1],i=!isNaN(Number(n));t in a?Array.isArray(a[t])?a[t]=[...a[t]]:a[t]={...a[t]}:a[t]=i?[]:{},a=a[t]}let o=r[r.length-1];return a[o]=n,i}function m(e){return e!=null&&typeof e.then==`function`}var h=class{constructor(e){this.value=e}value;orThrow(){return this.value}orNull(){return this.value}errors=[]},g=class e{constructor(e){this.errors=e}errors;orThrow(){throw Error(e.formatErrors(this.errors))}orNull(){return null}static formatErrors=e=>e.join(`
10
- `)},ee={Ok:e=>new h(e),Fail:e=>new g(e)},te=(e,t)=>e.toString().padStart(t,`0`).slice(-t),_=e=>e==null?e:e?.replace(/[A-Z]+(?![a-z])|[A-Z]/g,(e,t)=>(t?`-`:``)+e).toLowerCase();function v(e={}){return function(t,n){let i=e?.name??n,a=e?.read??(e=>e),o=e?.write??(e=>e);if(!o&&!a)throw Error(`@Att() should have read or write options`);var s=r(t.constructor);s.__metadata.attributes=[...s.__metadata.attributes,{propertyName:n,name:_(i),read:a,write:o}]}}var ne={read:e=>e===`true`,write:e=>e===!0?`true`:`false`},re={read:e=>e!=null,write:e=>e===!0?``:void 0},ie=s(`@ntix/components-core`,typeof ANTIX_COMPONENTS_CORE_LOG_LEVEL>`u`?a.warn:ANTIX_COMPONENTS_CORE_LOG_LEVEL);function ae(e){return typeof e==`object`&&!!e&&`render`in e&&typeof e.render==`function`&&e.render.length===1}function y(e={tag:void 0}){let t=()=>{},r=ie.provide(`component-decorator`),i={shadowRoot:`open`,delegatesFocus:!1,...e,css:n(e.css)};return function(n){let a=new Map,o=class extends n{constructor(...e){super(...e);let t=n.__metadata;t&&(t.events.forEach(e=>{r.debug(`event`,e.propertyName,e.name),Object.defineProperty(this,e.propertyName,{value:function(t){let n=new CustomEvent(e.name,{detail:t,...e.init});return this.dispatchEvent(n)},writable:!1,configurable:!1,enumerable:!0})}),t.watches.forEach(e=>{let t=e.methodName;r.debug(`${this.tagName}.${t}()`,{propertyNames:e.propertyNames}),e.propertyNames.forEach(e=>{let n=l(this,e);r.debug(`watch`,e,n);let i=n?.value,a=n?.get?.bind(this)??(()=>i),o=n?.set?.bind(this)??(e=>{i=e});Object.defineProperty(this,e,{get:a,set:function(n){let r=a();r!==n&&(o(n),this[t](n,r,e)===!1&&o(r))},enumerable:!0,configurable:!0})})}),t.attributes.forEach(e=>{let t=l(this,e.propertyName),n=t?.value,i=t?.get?.bind(this)??(()=>n),o=t?.set?.bind(this)??(e=>{n=e});if(e.write){let t=o,n=e.write;o=r=>{r!==i()&&t(r);let a=this.getAttribute(e.name),o=n(r);if(o==null)a!=null&&this.removeAttribute(e.name);else{let t=`${o}`;a!==t&&this.setAttribute(e.name,t)}}}r.debug(`${this.tagName}.${e.propertyName}`,{att:e.name,read:!!e.read,write:!!e.write}),Object.defineProperty(this,e.propertyName,{get:i,set:o,enumerable:!0}),e.read&&a.set(e.name,()=>{this.hasAttribute(e.name)||o(i())})}))}__shadowRoot};if(o.__metadata){let e=new Set(o.observedAttributes);o.__metadata.attributes.forEach(t=>{t.read&&e.add(t.name)}),o.observedAttributes=Array.from(e)}let s;o.prototype.resizeCallback&&(s=new ResizeObserver(e=>{o.prototype.resizeCallback?.call(e[0].target)}));let c=o.prototype.attributeChangedCallback??t;o.prototype.attributeChangedCallback=function(e,t,n){if(c(e,t,n),n!==t){var r=o.__metadata?.attributes.find(t=>t.name===e);r?.read&&(this[r.propertyName]=r.read(n))}};let u=o.prototype.connectedCallback??t;o.prototype.connectedCallback=function(){a.forEach(e=>e()),(i.shadowRoot===`open`||i.shadowRoot===`closed`)&&!this.__shadowRoot&&(this.__shadowRoot=this.attachShadow({delegatesFocus:i.delegatesFocus,mode:i.shadowRoot,slotAssignment:`named`}),this.__shadowRoot.adoptedStyleSheets=i.css),u.call(this),s&&s.observe(this)};let d=o.prototype.disconnectedCallback??t;o.prototype.disconnectedCallback=function(){d.call(this),s&&s.unobserve(this)};let f=o.prototype.beforeRender??t,p=o.prototype.render??t,h=o.prototype.afterRender??t;return o.prototype.render=async function(){r.debug(`render`,this.tagName);let e=f.call(this);if(m(e)&&await e,this.__shadowRoot){let e=this.__shadowRoot,t=p.call(this);ae(t)?await t.render(e):e.innerHTML=t}h.call(this)},r.debug(`define`,e.tag),window.customElements.define(e.tag,o),o}}function b(e={}){return function(t,n){var i=r(t.constructor);i.__metadata.events=[...i.__metadata.events,{name:e?.name??_(n),init:e,propertyName:n}]}}var x=class extends HTMLElement{addEventListener(e,t,n){return super.addEventListener(e,t,n),()=>{super.removeEventListener(e,t,n)}}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}};function S(...e){return function(t,n){var i=r(t.constructor);i.__metadata.watches=[...i.__metadata.watches,{methodName:n,propertyNames:e}]}}function oe(e){return typeof e==`function`}var se=class extends Array{render=(e,t=``)=>new Promise(n=>{let r=document.createElement(`template`),i={},a=e=>{let t=`_${Object.keys(i).length}`;return i[t]=e,t},o=e=>Array.isArray(e)?e.map(o).join(``):oe(e)?`_r_=${a(e)}`:`${e}`;r.innerHTML=t+o(this),e.replaceChildren(r.content);let s=async e=>{if(e.nodeType===Node.ELEMENT_NODE&&e.hasAttribute(`_r_`)){let t=e.getAttribute(`_r_`);if(t){e.removeAttribute(`_r_`);let n=i[t];for(n.element=e;!e.isConnected;)await new Promise(e=>requestAnimationFrame(()=>e()));n(e)}}await Promise.all([...e.children].map(s))};s(e).then(n)})},{entries:ce,setPrototypeOf:le,isFrozen:ue,getPrototypeOf:de,getOwnPropertyDescriptor:fe}=Object,{freeze:C,seal:w,create:pe}=Object,{apply:me,construct:T}=typeof Reflect<`u`&&Reflect;C||=function(e){return e},w||=function(e){return e},me||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},T||=function(e){return new e(...[...arguments].slice(1))};var he=O(Array.prototype.forEach),ge=O(Array.prototype.lastIndexOf),_e=O(Array.prototype.pop),ve=O(Array.prototype.push),ye=O(Array.prototype.splice),be=O(String.prototype.toLowerCase),xe=O(String.prototype.toString),Se=O(String.prototype.match),Ce=O(String.prototype.replace),we=O(String.prototype.indexOf),Te=O(String.prototype.trim),E=O(Object.prototype.hasOwnProperty),D=O(RegExp.prototype.test),Ee=k(TypeError);function O(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return me(e,t,n)}}function k(e){return function(){return T(e,[...arguments])}}function A(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:be;le&&le(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ue(t)||(t[r]=e),i=e)}e[i]=!0}return e}function De(e){for(let t=0;t<e.length;t++)E(e,t)||(e[t]=null);return e}function j(e){let t=pe(null);for(let[n,r]of ce(e))E(e,n)&&(Array.isArray(r)?t[n]=De(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=j(r):t[n]=r);return t}function Oe(e,t){for(;e!==null;){let n=fe(e,t);if(n){if(n.get)return O(n.get);if(typeof n.value==`function`)return O(n.value)}e=de(e)}function n(){return null}return n}var ke=C(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ae=C(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),je=C([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Me=C([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Ne=C(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Pe=C([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Fe=C([`#text`]),Ie=C(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),Le=C(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Re=C(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),ze=C([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),M=w(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Be=w(/<%[\w\W]*|[\w\W]*%>/gm),Ve=w(/\$\{[\w\W]*/gm),N=w(/^data-[\-\w.\u00B7-\uFFFF]+$/),He=w(/^aria-[\-\w]+$/),Ue=w(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),We=w(/^(?:\w+script|data):/i),Ge=w(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ke=w(/^html$/i),qe=w(/^[a-z][.\w]*(-[.\w]+)+$/i),Je=Object.freeze({__proto__:null,ARIA_ATTR:He,ATTR_WHITESPACE:Ge,CUSTOM_ELEMENT:qe,DATA_ATTR:N,DOCTYPE_NAME:Ke,ERB_EXPR:Be,IS_ALLOWED_URI:Ue,IS_SCRIPT_OR_DATA:We,MUSTACHE_EXPR:M,TMPLIT_EXPR:Ve}),Ye={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Xe=function(){return typeof window>`u`?null:window},Ze=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Qe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function $e(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Xe(),t=e=>$e(e);if(t.version=`3.3.0`,t.removed=[],!e||!e.document||e.document.nodeType!==Ye.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:f,trustedTypes:p}=e,m=c.prototype,h=Oe(m,`cloneNode`),g=Oe(m,`remove`),ee=Oe(m,`nextSibling`),te=Oe(m,`childNodes`),_=Oe(m,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let v,ne=``,{implementation:re,createNodeIterator:ie,createDocumentFragment:ae,getElementsByTagName:y}=n,{importNode:b}=r,x=Qe();t.isSupported=typeof ce==`function`&&typeof _==`function`&&re&&re.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:S,ERB_EXPR:oe,TMPLIT_EXPR:se,DATA_ATTR:le,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:de,ATTR_WHITESPACE:fe,CUSTOM_ELEMENT:w}=Je,{IS_ALLOWED_URI:me}=Je,T=null,O=A({},[...ke,...Ae,...je,...Ne,...Fe]),k=null,De=A({},[...Ie,...Le,...Re,...ze]),M=Object.seal(pe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Be=null,Ve=null,N=Object.seal(pe(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),He=!0,We=!0,Ge=!1,qe=!0,P=!1,et=!0,F=!1,I=!1,tt=!1,L=!1,R=!1,z=!1,B=!0,nt=!1,rt=!0,V=!1,H={},U=null,W=A({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),it=null,at=A({},[`audio`,`video`,`img`,`source`,`image`,`track`]),G=null,ot=A({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),st=`http://www.w3.org/1998/Math/MathML`,ct=`http://www.w3.org/2000/svg`,K=`http://www.w3.org/1999/xhtml`,q=K,J=!1,lt=null,ut=A({},[st,ct,K],xe),Y=A({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),dt=A({},[`annotation-xml`]),ft=A({},[`title`,`style`,`font`,`a`,`script`]),X=null,pt=[`application/xhtml+xml`,`text/html`],Z=null,mt=null,ht=n.createElement(`form`),gt=function(e){return e instanceof RegExp||e instanceof Function},_t=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(mt&&mt===e)){if((!e||typeof e!=`object`)&&(e={}),e=j(e),X=pt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,Z=X===`application/xhtml+xml`?xe:be,T=E(e,`ALLOWED_TAGS`)?A({},e.ALLOWED_TAGS,Z):O,k=E(e,`ALLOWED_ATTR`)?A({},e.ALLOWED_ATTR,Z):De,lt=E(e,`ALLOWED_NAMESPACES`)?A({},e.ALLOWED_NAMESPACES,xe):ut,G=E(e,`ADD_URI_SAFE_ATTR`)?A(j(ot),e.ADD_URI_SAFE_ATTR,Z):ot,it=E(e,`ADD_DATA_URI_TAGS`)?A(j(at),e.ADD_DATA_URI_TAGS,Z):at,U=E(e,`FORBID_CONTENTS`)?A({},e.FORBID_CONTENTS,Z):W,Be=E(e,`FORBID_TAGS`)?A({},e.FORBID_TAGS,Z):j({}),Ve=E(e,`FORBID_ATTR`)?A({},e.FORBID_ATTR,Z):j({}),H=E(e,`USE_PROFILES`)?e.USE_PROFILES:!1,He=e.ALLOW_ARIA_ATTR!==!1,We=e.ALLOW_DATA_ATTR!==!1,Ge=e.ALLOW_UNKNOWN_PROTOCOLS||!1,qe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,P=e.SAFE_FOR_TEMPLATES||!1,et=e.SAFE_FOR_XML!==!1,F=e.WHOLE_DOCUMENT||!1,L=e.RETURN_DOM||!1,R=e.RETURN_DOM_FRAGMENT||!1,z=e.RETURN_TRUSTED_TYPE||!1,tt=e.FORCE_BODY||!1,B=e.SANITIZE_DOM!==!1,nt=e.SANITIZE_NAMED_PROPS||!1,rt=e.KEEP_CONTENT!==!1,V=e.IN_PLACE||!1,me=e.ALLOWED_URI_REGEXP||Ue,q=e.NAMESPACE||K,Y=e.MATHML_TEXT_INTEGRATION_POINTS||Y,dt=e.HTML_INTEGRATION_POINTS||dt,M=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&gt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(M.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&gt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(M.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(M.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),P&&(We=!1),R&&(L=!0),H&&(T=A({},Fe),k=[],H.html===!0&&(A(T,ke),A(k,Ie)),H.svg===!0&&(A(T,Ae),A(k,Le),A(k,ze)),H.svgFilters===!0&&(A(T,je),A(k,Le),A(k,ze)),H.mathMl===!0&&(A(T,Ne),A(k,Re),A(k,ze))),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?N.tagCheck=e.ADD_TAGS:(T===O&&(T=j(T)),A(T,e.ADD_TAGS,Z))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?N.attributeCheck=e.ADD_ATTR:(k===De&&(k=j(k)),A(k,e.ADD_ATTR,Z))),e.ADD_URI_SAFE_ATTR&&A(G,e.ADD_URI_SAFE_ATTR,Z),e.FORBID_CONTENTS&&(U===W&&(U=j(U)),A(U,e.FORBID_CONTENTS,Z)),rt&&(T[`#text`]=!0),F&&A(T,[`html`,`head`,`body`]),T.table&&(A(T,[`tbody`]),delete Be.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Ee(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Ee(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);v=e.TRUSTED_TYPES_POLICY,ne=v.createHTML(``)}else v===void 0&&(v=Ze(p,i)),v!==null&&typeof ne==`string`&&(ne=v.createHTML(``));C&&C(e),mt=e}},vt=A({},[...Ae,...je,...Me]),yt=A({},[...Ne,...Pe]),bt=function(e){let t=_(e);(!t||!t.tagName)&&(t={namespaceURI:q,tagName:`template`});let n=be(e.tagName),r=be(t.tagName);return lt[e.namespaceURI]?e.namespaceURI===ct?t.namespaceURI===K?n===`svg`:t.namespaceURI===st?n===`svg`&&(r===`annotation-xml`||Y[r]):!!vt[n]:e.namespaceURI===st?t.namespaceURI===K?n===`math`:t.namespaceURI===ct?n===`math`&&dt[r]:!!yt[n]:e.namespaceURI===K?t.namespaceURI===ct&&!dt[r]||t.namespaceURI===st&&!Y[r]?!1:!yt[n]&&(ft[n]||!vt[n]):!!(X===`application/xhtml+xml`&&lt[e.namespaceURI]):!1},xt=function(e){ve(t.removed,{element:e});try{_(e).removeChild(e)}catch{g(e)}},Q=function(e,n){try{ve(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{ve(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(L||R)try{xt(n)}catch{}else try{n.setAttribute(e,``)}catch{}},St=function(e){let t=null,r=null;if(tt)e=`<remove></remove>`+e;else{let t=Se(e,/^[\r\n\t ]+/);r=t&&t[0]}X===`application/xhtml+xml`&&q===K&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=v?v.createHTML(e):e;if(q===K)try{t=new f().parseFromString(i,X)}catch{}if(!t||!t.documentElement){t=re.createDocument(q,`template`,null);try{t.documentElement.innerHTML=J?ne:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),q===K?y.call(t,F?`html`:`body`)[0]:F?t.documentElement:a},Ct=function(e){return ie.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},wt=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},Tt=function(e){return typeof s==`function`&&e instanceof s};function $(e,n,r){he(e,e=>{e.call(t,n,r,mt)})}let Et=function(e){let n=null;if($(x.beforeSanitizeElements,e,null),wt(e))return xt(e),!0;let r=Z(e.nodeName);if($(x.uponSanitizeElement,e,{tagName:r,allowedTags:T}),et&&e.hasChildNodes()&&!Tt(e.firstElementChild)&&D(/<[/\w!]/g,e.innerHTML)&&D(/<[/\w!]/g,e.textContent)||e.nodeType===Ye.progressingInstruction||et&&e.nodeType===Ye.comment&&D(/<[/\w]/g,e.data))return xt(e),!0;if(!(N.tagCheck instanceof Function&&N.tagCheck(r))&&(!T[r]||Be[r])){if(!Be[r]&&Ot(r)&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,r)||M.tagNameCheck instanceof Function&&M.tagNameCheck(r)))return!1;if(rt&&!U[r]){let t=_(e)||e.parentNode,n=te(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=h(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,ee(e))}}}return xt(e),!0}return e instanceof c&&!bt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&D(/<\/no(script|embed|frames)/i,e.innerHTML)?(xt(e),!0):(P&&e.nodeType===Ye.text&&(n=e.textContent,he([S,oe,se],e=>{n=Ce(n,e,` `)}),e.textContent!==n&&(ve(t.removed,{element:e.cloneNode()}),e.textContent=n)),$(x.afterSanitizeElements,e,null),!1)},Dt=function(e,t,r){if(B&&(t===`id`||t===`name`)&&(r in n||r in ht))return!1;if(!(We&&!Ve[t]&&D(le,t))&&!(He&&D(ue,t))&&!(N.attributeCheck instanceof Function&&N.attributeCheck(t,e))){if(!k[t]||Ve[t]){if(!(Ot(e)&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,e)||M.tagNameCheck instanceof Function&&M.tagNameCheck(e))&&(M.attributeNameCheck instanceof RegExp&&D(M.attributeNameCheck,t)||M.attributeNameCheck instanceof Function&&M.attributeNameCheck(t,e))||t===`is`&&M.allowCustomizedBuiltInElements&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,r)||M.tagNameCheck instanceof Function&&M.tagNameCheck(r))))return!1}else if(!G[t]&&!D(me,Ce(r,fe,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&we(r,`data:`)===0&&it[e])&&!(Ge&&!D(de,Ce(r,fe,``)))&&r)return!1}return!0},Ot=function(e){return e!==`annotation-xml`&&Se(e,w)},kt=function(e){$(x.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||wt(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:k,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=Z(a),l=s,u=a===`value`?l:Te(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,$(x.uponSanitizeAttribute,e,r),u=r.attrValue,nt&&(c===`id`||c===`name`)&&(Q(a,e),u=`user-content-`+u),et&&D(/((--!?|])>)|<\/(style|title|textarea)/i,u)){Q(a,e);continue}if(c===`attributename`&&Se(u,`href`)){Q(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Q(a,e);continue}if(!qe&&D(/\/>/i,u)){Q(a,e);continue}P&&he([S,oe,se],e=>{u=Ce(u,e,` `)});let d=Z(e.nodeName);if(!Dt(d,c,u)){Q(a,e);continue}if(v&&typeof p==`object`&&typeof p.getAttributeType==`function`&&!o)switch(p.getAttributeType(d,c)){case`TrustedHTML`:u=v.createHTML(u);break;case`TrustedScriptURL`:u=v.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),wt(e)?xt(e):_e(t.removed)}catch{Q(a,e)}}$(x.afterSanitizeAttributes,e,null)},At=function e(t){let n=null,r=Ct(t);for($(x.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)$(x.uponSanitizeShadowNode,n,null),Et(n),kt(n),n.content instanceof a&&e(n.content);$(x.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(J=!e,J&&(e=`<!-->`),typeof e!=`string`&&!Tt(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw Ee(`dirty is not a string, aborting`)}else throw Ee(`toString is not a function`);if(!t.isSupported)return e;if(I||_t(n),t.removed=[],typeof e==`string`&&(V=!1),V){if(e.nodeName){let t=Z(e.nodeName);if(!T[t]||Be[t])throw Ee(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=St(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===Ye.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!L&&!P&&!F&&e.indexOf(`<`)===-1)return v&&z?v.createHTML(e):e;if(i=St(e),!i)return L?null:z?ne:``}i&&tt&&xt(i.firstChild);let u=Ct(V?e:i);for(;c=u.nextNode();)Et(c),kt(c),c.content instanceof a&&At(c.content);if(V)return e;if(L){if(R)for(l=ae.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(k.shadowroot||k.shadowrootmode)&&(l=b.call(r,l,!0)),l}let d=F?i.outerHTML:i.innerHTML;return F&&T[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&D(Ke,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
11
- `+d),P&&he([S,oe,se],e=>{d=Ce(d,e,` `)}),v&&z?v.createHTML(d):d},t.setConfig=function(){_t(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),I=!0},t.clearConfig=function(){mt=null,I=!1},t.isValidAttribute=function(e,t,n){return mt||_t({}),Dt(Z(e),Z(t),n)},t.addHook=function(e,t){typeof t==`function`&&ve(x[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=ge(x[e],t);return n===-1?void 0:ye(x[e],n,1)[0]}return _e(x[e])},t.removeHooks=function(e){x[e]=[]},t.removeAllHooks=function(){x=Qe()},t}var P=$e(),et={sanitize:e=>P.sanitize(e)},F=(e,...t)=>new se(e.reduce((e,n,r)=>{let i=t[r]??``;return typeof i==`string`?[...e,n,et.sanitize(i)]:i===!1?[...e,n]:Array.isArray(i)?[...e,n,...i]:[...e,n,i]},[]));function I(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var tt=`:host{--host-display:flex;--host-heading-border:var(--scorad-heading-border,solid 1px var(--host-color));--host-score-color:var(--scorad-score-color,var(--host-color));--host-score-background:var(--scorad-score-background,var(--host-background-color));--host-score-border:var(--scorad-score-border,solid 1px var(--host-color));gap:var(--host-spacing-unit);flex-wrap:wrap;width:fit-content}h3{aspect-ratio:1;border:var(--host-heading-border);padding:var(--host-padding-unit);margin:0 0 0 calc(-1*var(--host-padding-unit));border-radius:50%;justify-content:center;align-items:center;line-height:0;display:inline-flex}p{padding:var(--host-padding-unit)0 0;margin:0;font-size:.9em}scorad-label{break-inside:avoid;outline:none;flex:5 19rem}#extent-label{flex-basis:100%}#intensity-label{flex-grow:1}#score-label{background:linear-gradient(to bottom,transparent,var(--background-color)75%);flex-basis:100%;font-size:1.2rem;position:sticky;bottom:0}@media print{#score-label{position:relative}}#score-label>span{padding:var(--host-padding-unit);border-radius:var(--host-border-radius);outline:var(--host-score-border);color:var(--host-score-color);background:var(--host-score-background)}scorad-extent,scorad-intensity,scorad-subjective{margin:.6rem calc(-1*var(--host-padding-unit));flex:100%}`,L=`*{box-sizing:border-box}:host{--host-color-l:var(--color-l,50%);--host-error-color-h:var(--error-color-h,0);--host-color:var(--color,#444);--host-background-color:var(--background-color,#eee);--host-primary-color:var(--primary-color,var(--host-color));--host-error-color:var(--error-color,hsl(var(--host-error-color-h),66.7%,var(--host-color-l)));--host-spacing-unit:var(--scorad-spacing-unit,.25rem);--host-padding-unit:var(--scorad-padding-unit,.333rem);--host-border-radius:var(--scorad-border-radius,3px);--host-border-radius-outer:var(--scorad-border-radius-outer,calc(var(--host-border-radius) + var(--host-padding-unit)));--host-outline-hover:var(--scorad-outline-hover,dashed 2px var(--host-primary-color));--host-outline-focus:var(--scorad-outline-focus,solid 2px var(--host-primary-color));display:var(--host-display,inline-flex);line-height:1.2}@media (prefers-color-scheme:dark){:host{--host-color-l:var(--color-l,70%)}}`;let R={headNeck:null,anteriorTrunk:null,posteriorTrunk:null,upperLimbs:null,lowerLimbs:null,genitals:null},z={erythema:null,oedemaPapulation:null,oozingCrusting:null,excoriations:null,lichenification:null,xerosis:null},B={pruritus:null,sleeplessness:null},nt={child:!1,extent:R,intensity:z,subjective:B},rt={headNeck:.09,anteriorTrunk:.18,posteriorTrunk:.18,upperLimbs:.18,lowerLimbs:.36,genitals:.01},V={headNeck:.18,anteriorTrunk:.18,posteriorTrunk:.18,upperLimbs:.18,lowerLimbs:.28,genitals:0};var H=`:host{--host-display:inline-flex;--host-font-size:1rem;flex-wrap:wrap;justify-content:center;align-items:center;position:relative}label{padding:var(--host-padding-unit)}svg{min-width:14rem;max-width:18rem;margin:var(--host-padding-unit)0;fill:#0000;stroke:var(--host-color);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;flex:16rem;overflow:visible}@media print{svg{flex:0 0 14rem;width:14rem}}path,line{vector-effect:non-scaling-stroke}path{opacity:.333}text,line{opacity:.667}g{outline:none}g[tabindex] path{opacity:1;fill:hsla(var(--scorad-h,0),var(--extent,"0%"),50%,var(--opacity,0));cursor:grab}:has(:active) g[tabindex] path{cursor:ns-resize}:is(:not(:has(:active)) g[tabindex]:hover path,:not(:has(:active)) g[tabindex]:hover line){stroke-width:2px;stroke:var(--host-primary-color);stroke-dasharray:2 3.5;opacity:1}g[tabindex]:focus path,g[tabindex]:active path,g[tabindex].selected path,g[tabindex]:focus line,g[tabindex]:active line,g[tabindex].selected line{stroke-width:2px;stroke:var(--host-primary-color);opacity:1;stroke-dasharray:none!important}g[tabindex] text{fill:var(--host-color);stroke:none;font-size:var(--host-font-size);text-anchor:end}g[tabindex].posterior-trunk text{text-anchor:start}:is(:not(:has(:active)) g[tabindex]:hover text,g[tabindex]:focus text,g[tabindex]:active text,g[tabindex].selected text){fill:var(--host-primary-color);opacity:1}`;let U=e=>e?.child?V:rt,W=e=>{let t=[],n=(e,n,r)=>{for(let[i,a]of Object.entries(e))W.isValid(a,r)||t.push(W.formatError(n,i,r,a))},r={...e?.extent??R},i=U(e);for(let[e,t]of Object.entries(i))t===0&&delete r[e];return n(r,`extent`,100),n(e?.intensity??z,`intensity`,3),n(e?.subjective??B,`subjective`,10),t.length?ee.Fail(t):ee.Ok(e)};W.formatError=(e,t,n,r)=>`${e}.${t}: must be between 0 and ${n}, but received ${r}.`,W.isValid=(e,t)=>typeof e==`number`&&Number.isFinite(e)&&e>=0&&e<=t;let it={child:{text:`child`,description:`use weightings for a child`},extent:{headNeck:{text:`head`,description:`percentage of the head and neck area affected`},anteriorTrunk:{text:`trunk`,description:`percentage of the front torso area affected`},posteriorTrunk:{text:`back`,description:`percentage of the back torso area affected`},genitals:{text:`genitals`,description:`percentage of the genital area affected`},upperLimbs:{text:`arms`,description:`percentage of the arms and shoulders affected`},lowerLimbs:{text:`legs`,description:`percentage of the legs and hips affected`}},intensity:{erythema:{text:`Erythema`,description:`redness of the skin`},oedemaPapulation:{text:`Oedema/Papulation`,description:`swelling and small bumps`},oozingCrusting:{text:`Oozing/Crusting`,description:`fluid leakage and dried scabs`},excoriations:{text:`Excoriations`,description:`scratch marks`},lichenification:{text:`Lichenification`,description:`skin thickening and hardening`},xerosis:{text:`Xerosis`,description:`dryness of the skin`}},subjective:{pruritus:{text:`Pruritus`,description:`itching`},sleeplessness:{text:`Sleeplessness`,description:`difficulty sleeping`}}};var at=`scorad-extent`,G=class extends x{connectedCallback(){this.render()}child=!1;value=R;score;errors;afterRender(){if(!this.value){this.value=R;return}if(this.shadowRoot)for(let e of f(R)){let t=(this.value??{})[e],n=this.shadowRoot.querySelector(`.${_(e)}`);if(!n)return;n.style.setProperty(`--extent`,`${t}%`),n.style.setProperty(`--opacity`,`${(t??0)/100}`);let r=n.querySelector(`text`);if(!r)return;r.textContent=W.isValid(t,100)?`${t}%`:it.extent[e].text,n.querySelectorAll(`path`).forEach(t=>t.style.stroke=this.errors?.[e]==null?``:`var(--host-error-color)`)}}resizeCallback(){if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`svg`);if(!e)return;let t=Math.round(19e3/e.clientWidth)/100;this.style.setProperty(`--host-font-size`,`${t}rem`)}render(){let e=e=>{let t=t=>{let n=Math.round(Math.min(100,Math.max(0,t)));this.value={...this.value,[e]:n},this.errors=void 0,this.valueInput(this.value)};return n=>{if(!n)return;`ontouchstart`in window&&n.addEventListener(`touchstart`,e=>{e.preventDefault()},{passive:!1}),n.style.touchAction=`none`,n.addEventListener(`pointerdown`,r=>{r.stopPropagation(),n.focus();let i=this.value[e],a=r.clientY,o=e=>{e.preventDefault();let n=(a-e.clientY)/2;t(Math.round((i+n)/5)*5)},s=()=>{document.removeEventListener(`pointermove`,o),document.removeEventListener(`pointerup`,s),document.removeEventListener(`pointercancel`,s)};document.addEventListener(`pointermove`,o),document.addEventListener(`pointerup`,s),document.addEventListener(`pointercancel`,s),o(r)});let r,i;n.addEventListener(`focus`,()=>{i=`000`,r=this.value[e]}),n.addEventListener(`keydown`,n=>{let a=W.isValid(this.value[e],100)?this.value[e]:0,o=n.shiftKey?5:1;switch(n.key){case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:t(Number.parseInt(i.substring(1)+n.key)),i=te(this.value[e],3);break;case`ArrowLeft`:case`ArrowDown`:n.preventDefault(),t(a-o);break;case`ArrowUp`:case`ArrowRight`:n.preventDefault(),t(a+o);break;case`Escape`:n.preventDefault(),t(r);break}})}},t=e=>t=>{t&&(t.textContent=`${this.value[e]}%`)};return F`
9
+ `,a={trace:0,debug:1,log:2,info:3,warn:4,error:5};function o(e,t,n){let r=()=>{},i={provide:r=>o(`${e}.${r}`,t,n)};for(let o of Object.keys(a)){let s=o,c=a[s],l=n[s];t>c?i[s]=r:i[s]=((t,...n)=>l(`[${e}]`,t,...n))}return i}var s=(()=>{let e=(e,t)=>(t??=s.defaultLevel,o(e,t,s.adapter));return e.adapter=console,e.defaultLevel=a.warn,e})(),c=(e,t)=>{if(e===t||Number.isNaN(e)&&Number.isNaN(t))return!0;if(!(typeof e==`object`&&e)||!(typeof t==`object`&&t))return!1;let n=Array.isArray(e);if(n!==Array.isArray(t))return!1;if(n){let n=e,r=t;if(n.length!==r.length)return!1;for(let e=0;e<n.length;e++)if(!c(n[e],r[e]))return!1;return!0}let r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(let n of r){if(!Object.prototype.hasOwnProperty.call(t,n))return!1;let r=e[n],i=t[n];if(!c(r,i))return!1}return!0},l=(e,t)=>{let n=e;for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Object.getPrototypeOf(n)}};function u(e){return e.split(/\.|\[|\]\.?/).filter(e=>e!==``).map(e=>{let t=Number.parseInt(e);return isNaN(t)?e:t})}function d(e,t){let n=u(t);for(let t=0;t<n.length;t++){if(e==null)return;let r=n[t];e=e[r]}return e}var f=e=>Object.keys(e);function p(e,t,n){let r=t.match(/[^.\[\]]+/g);if(!r)return n;let i={...e},a=i;for(let e=0;e<r.length-1;e++){let t=r[e],n=r[e+1],i=!isNaN(Number(n));t in a?Array.isArray(a[t])?a[t]=[...a[t]]:a[t]={...a[t]}:a[t]=i?[]:{},a=a[t]}let o=r[r.length-1];return a[o]=n,i}function m(e){return e!=null&&typeof e.then==`function`}var ee=class{constructor(e){this.value=e}value;orThrow(){return this.value}orNull(){return this.value}errors=[]},h=class e{constructor(e){this.errors=e}errors;orThrow(){throw Error(e.formatErrors(this.errors))}orNull(){return null}static formatErrors=e=>e.join(`
10
+ `)},te={Ok:e=>new ee(e),Fail:e=>new h(e)},ne=(e,t)=>e.toString().padStart(t,`0`).slice(-t),g=e=>e==null?e:e?.replace(/[A-Z]+(?![a-z])|[A-Z]/g,(e,t)=>(t?`-`:``)+e).toLowerCase();function _(e={}){return function(t,n){let i=e?.name??n,a=e?.read??(e=>e),o=e?.write??(e=>e);if(!o&&!a)throw Error(`@Att() should have read or write options`);var s=r(t.constructor);s.__metadata.attributes=[...s.__metadata.attributes,{propertyName:n,name:g(i),read:a,write:o}]}}var v={read:e=>e===`true`,write:e=>e===!0?`true`:`false`},re={read:e=>e!=null,write:e=>e===!0?``:void 0},ie=s(`@ntix/components-core`,typeof ANTIX_COMPONENTS_CORE_LOG_LEVEL>`u`?a.warn:ANTIX_COMPONENTS_CORE_LOG_LEVEL);function ae(e){return typeof e==`object`&&!!e&&`render`in e&&typeof e.render==`function`&&e.render.length===1}function y(e={tag:void 0}){let t=()=>{},r=ie.provide(`component-decorator`),i={shadowRoot:`open`,delegatesFocus:!1,...e,css:n(e.css)};return function(n){let a=new Map,o=class extends n{constructor(...e){super(...e);let t=n.__metadata;t&&(t.events.forEach(e=>{r.debug(`event`,e.propertyName,e.name),Object.defineProperty(this,e.propertyName,{value:function(t){let n=new CustomEvent(e.name,{detail:t,...e.init});return this.dispatchEvent(n)},writable:!1,configurable:!1,enumerable:!0})}),t.watches.forEach(e=>{let t=e.methodName;r.debug(`${this.tagName}.${t}()`,{propertyNames:e.propertyNames}),e.propertyNames.forEach(e=>{let n=l(this,e);r.debug(`watch`,e,n);let i=n?.value,a=n?.get?.bind(this)??(()=>i),o=n?.set?.bind(this)??(e=>{i=e});Object.defineProperty(this,e,{get:a,set:function(n){let r=a();r!==n&&(o(n),this[t](n,r,e)===!1&&o(r))},enumerable:!0,configurable:!0})})}),t.attributes.forEach(e=>{let t=l(this,e.propertyName),n=t?.value,i=t?.get?.bind(this)??(()=>n),o=t?.set?.bind(this)??(e=>{n=e});if(e.write){let t=o,n=e.write;o=r=>{r!==i()&&t(r);let a=this.getAttribute(e.name),o=n(r);if(o==null)a!=null&&this.removeAttribute(e.name);else{let t=`${o}`;a!==t&&this.setAttribute(e.name,t)}}}r.debug(`${this.tagName}.${e.propertyName}`,{att:e.name,read:!!e.read,write:!!e.write}),Object.defineProperty(this,e.propertyName,{get:i,set:o,enumerable:!0}),e.read&&a.set(e.name,()=>{this.hasAttribute(e.name)||o(i())})}))}__shadowRoot};if(o.__metadata){let e=new Set(o.observedAttributes);o.__metadata.attributes.forEach(t=>{t.read&&e.add(t.name)}),o.observedAttributes=Array.from(e)}let s;o.prototype.resizeCallback&&(s=new ResizeObserver(e=>{o.prototype.resizeCallback?.call(e[0].target)}));let c=o.prototype.attributeChangedCallback??t;o.prototype.attributeChangedCallback=function(e,t,n){if(c(e,t,n),n!==t){var r=o.__metadata?.attributes.find(t=>t.name===e);r?.read&&(this[r.propertyName]=r.read(n))}};let u=o.prototype.connectedCallback??t;o.prototype.connectedCallback=function(){a.forEach(e=>e()),(i.shadowRoot===`open`||i.shadowRoot===`closed`)&&!this.__shadowRoot&&(this.__shadowRoot=this.attachShadow({delegatesFocus:i.delegatesFocus,mode:i.shadowRoot,slotAssignment:`named`}),this.__shadowRoot.adoptedStyleSheets=i.css),u.call(this),s&&s.observe(this)};let d=o.prototype.disconnectedCallback??t;o.prototype.disconnectedCallback=function(){d.call(this),s&&s.unobserve(this)};let f=o.prototype.beforeRender??t,p=o.prototype.render??t,ee=o.prototype.afterRender??t;return o.prototype.render=async function(){r.debug(`render`,this.tagName);let e=f.call(this);if(m(e)&&await e,this.__shadowRoot){let e=this.__shadowRoot,t=p.call(this);ae(t)?await t.render(e):e.innerHTML=t}ee.call(this)},r.debug(`define`,e.tag),window.customElements.define(e.tag,o),o}}function b(e={}){return function(t,n){var i=r(t.constructor);i.__metadata.events=[...i.__metadata.events,{name:e?.name??g(n),init:e,propertyName:n}]}}var x=class extends HTMLElement{addEventListener(e,t,n){return super.addEventListener(e,t,n),()=>{super.removeEventListener(e,t,n)}}removeEventListener(e,t,n){super.removeEventListener(e,t,n)}};function S(...e){return function(t,n){var i=r(t.constructor);i.__metadata.watches=[...i.__metadata.watches,{methodName:n,propertyNames:e}]}}function oe(e){return typeof e==`function`}var se=class extends Array{render=(e,t=``)=>new Promise(n=>{let r=document.createElement(`template`),i={},a=e=>{let t=`_${Object.keys(i).length}`;return i[t]=e,t},o=e=>Array.isArray(e)?e.map(o).join(``):oe(e)?`_r_=${a(e)}`:`${e}`;r.innerHTML=t+o(this),e.replaceChildren(r.content);let s=async e=>{if(e.nodeType===Node.ELEMENT_NODE&&e.hasAttribute(`_r_`)){let t=e.getAttribute(`_r_`);if(t){e.removeAttribute(`_r_`);let n=i[t];for(n.element=e;!e.isConnected;)await new Promise(e=>requestAnimationFrame(()=>e()));n(e)}}await Promise.all([...e.children].map(s))};s(e).then(n)})},{entries:ce,setPrototypeOf:le,isFrozen:ue,getPrototypeOf:de,getOwnPropertyDescriptor:fe}=Object,{freeze:C,seal:w,create:pe}=Object,{apply:me,construct:T}=typeof Reflect<`u`&&Reflect;C||=function(e){return e},w||=function(e){return e},me||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},T||=function(e){return new e(...[...arguments].slice(1))};var he=O(Array.prototype.forEach),ge=O(Array.prototype.lastIndexOf),_e=O(Array.prototype.pop),ve=O(Array.prototype.push),ye=O(Array.prototype.splice),be=O(String.prototype.toLowerCase),xe=O(String.prototype.toString),Se=O(String.prototype.match),Ce=O(String.prototype.replace),we=O(String.prototype.indexOf),Te=O(String.prototype.trim),E=O(Object.prototype.hasOwnProperty),D=O(RegExp.prototype.test),Ee=k(TypeError);function O(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return me(e,t,n)}}function k(e){return function(){return T(e,[...arguments])}}function A(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:be;le&&le(e,null);let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(ue(t)||(t[r]=e),i=e)}e[i]=!0}return e}function De(e){for(let t=0;t<e.length;t++)E(e,t)||(e[t]=null);return e}function j(e){let t=pe(null);for(let[n,r]of ce(e))E(e,n)&&(Array.isArray(r)?t[n]=De(r):r&&typeof r==`object`&&r.constructor===Object?t[n]=j(r):t[n]=r);return t}function Oe(e,t){for(;e!==null;){let n=fe(e,t);if(n){if(n.get)return O(n.get);if(typeof n.value==`function`)return O(n.value)}e=de(e)}function n(){return null}return n}var ke=C(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Ae=C(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),je=C([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Me=C([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Ne=C(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),Pe=C([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Fe=C([`#text`]),Ie=C(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns.slot`.split(`.`)),Le=C(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Re=C(`accent.accentunder.align.bevelled.close.columnsalign.columnlines.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lspace.lquote.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),ze=C([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),M=w(/\{\{[\w\W]*|[\w\W]*\}\}/gm),Be=w(/<%[\w\W]*|[\w\W]*%>/gm),Ve=w(/\$\{[\w\W]*/gm),N=w(/^data-[\-\w.\u00B7-\uFFFF]+$/),He=w(/^aria-[\-\w]+$/),Ue=w(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),We=w(/^(?:\w+script|data):/i),Ge=w(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ke=w(/^html$/i),qe=w(/^[a-z][.\w]*(-[.\w]+)+$/i),Je=Object.freeze({__proto__:null,ARIA_ATTR:He,ATTR_WHITESPACE:Ge,CUSTOM_ELEMENT:qe,DATA_ATTR:N,DOCTYPE_NAME:Ke,ERB_EXPR:Be,IS_ALLOWED_URI:Ue,IS_SCRIPT_OR_DATA:We,MUSTACHE_EXPR:M,TMPLIT_EXPR:Ve}),Ye={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},Xe=function(){return typeof window>`u`?null:window},Ze=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},Qe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function $e(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Xe(),t=e=>$e(e);if(t.version=`3.3.0`,t.removed=[],!e||!e.document||e.document.nodeType!==Ye.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,r=n,i=r.currentScript,{DocumentFragment:a,HTMLTemplateElement:o,Node:s,Element:c,NodeFilter:l,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:d,DOMParser:f,trustedTypes:p}=e,m=c.prototype,ee=Oe(m,`cloneNode`),h=Oe(m,`remove`),te=Oe(m,`nextSibling`),ne=Oe(m,`childNodes`),g=Oe(m,`parentNode`);if(typeof o==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let _,v=``,{implementation:re,createNodeIterator:ie,createDocumentFragment:ae,getElementsByTagName:y}=n,{importNode:b}=r,x=Qe();t.isSupported=typeof ce==`function`&&typeof g==`function`&&re&&re.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:S,ERB_EXPR:oe,TMPLIT_EXPR:se,DATA_ATTR:le,ARIA_ATTR:ue,IS_SCRIPT_OR_DATA:de,ATTR_WHITESPACE:fe,CUSTOM_ELEMENT:w}=Je,{IS_ALLOWED_URI:me}=Je,T=null,O=A({},[...ke,...Ae,...je,...Ne,...Fe]),k=null,De=A({},[...Ie,...Le,...Re,...ze]),M=Object.seal(pe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Be=null,Ve=null,N=Object.seal(pe(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),He=!0,We=!0,Ge=!1,qe=!0,P=!1,et=!0,F=!1,I=!1,tt=!1,L=!1,R=!1,z=!1,B=!0,nt=!1,rt=!0,V=!1,H={},U=null,W=A({},[`annotation-xml`,`audio`,`colgroup`,`desc`,`foreignobject`,`head`,`iframe`,`math`,`mi`,`mn`,`mo`,`ms`,`mtext`,`noembed`,`noframes`,`noscript`,`plaintext`,`script`,`style`,`svg`,`template`,`thead`,`title`,`video`,`xmp`]),it=null,at=A({},[`audio`,`video`,`img`,`source`,`image`,`track`]),G=null,ot=A({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),st=`http://www.w3.org/1998/Math/MathML`,ct=`http://www.w3.org/2000/svg`,K=`http://www.w3.org/1999/xhtml`,lt=K,q=!1,ut=null,dt=A({},[st,ct,K],xe),J=A({},[`mi`,`mo`,`mn`,`ms`,`mtext`]),ft=A({},[`annotation-xml`]),pt=A({},[`title`,`style`,`font`,`a`,`script`]),Y=null,mt=[`application/xhtml+xml`,`text/html`],X=null,ht=null,gt=n.createElement(`form`),_t=function(e){return e instanceof RegExp||e instanceof Function},Z=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(ht&&ht===e)){if((!e||typeof e!=`object`)&&(e={}),e=j(e),Y=mt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,X=Y===`application/xhtml+xml`?xe:be,T=E(e,`ALLOWED_TAGS`)?A({},e.ALLOWED_TAGS,X):O,k=E(e,`ALLOWED_ATTR`)?A({},e.ALLOWED_ATTR,X):De,ut=E(e,`ALLOWED_NAMESPACES`)?A({},e.ALLOWED_NAMESPACES,xe):dt,G=E(e,`ADD_URI_SAFE_ATTR`)?A(j(ot),e.ADD_URI_SAFE_ATTR,X):ot,it=E(e,`ADD_DATA_URI_TAGS`)?A(j(at),e.ADD_DATA_URI_TAGS,X):at,U=E(e,`FORBID_CONTENTS`)?A({},e.FORBID_CONTENTS,X):W,Be=E(e,`FORBID_TAGS`)?A({},e.FORBID_TAGS,X):j({}),Ve=E(e,`FORBID_ATTR`)?A({},e.FORBID_ATTR,X):j({}),H=E(e,`USE_PROFILES`)?e.USE_PROFILES:!1,He=e.ALLOW_ARIA_ATTR!==!1,We=e.ALLOW_DATA_ATTR!==!1,Ge=e.ALLOW_UNKNOWN_PROTOCOLS||!1,qe=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,P=e.SAFE_FOR_TEMPLATES||!1,et=e.SAFE_FOR_XML!==!1,F=e.WHOLE_DOCUMENT||!1,L=e.RETURN_DOM||!1,R=e.RETURN_DOM_FRAGMENT||!1,z=e.RETURN_TRUSTED_TYPE||!1,tt=e.FORCE_BODY||!1,B=e.SANITIZE_DOM!==!1,nt=e.SANITIZE_NAMED_PROPS||!1,rt=e.KEEP_CONTENT!==!1,V=e.IN_PLACE||!1,me=e.ALLOWED_URI_REGEXP||Ue,lt=e.NAMESPACE||K,J=e.MATHML_TEXT_INTEGRATION_POINTS||J,ft=e.HTML_INTEGRATION_POINTS||ft,M=e.CUSTOM_ELEMENT_HANDLING||{},e.CUSTOM_ELEMENT_HANDLING&&_t(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(M.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&_t(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(M.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements==`boolean`&&(M.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),P&&(We=!1),R&&(L=!0),H&&(T=A({},Fe),k=[],H.html===!0&&(A(T,ke),A(k,Ie)),H.svg===!0&&(A(T,Ae),A(k,Le),A(k,ze)),H.svgFilters===!0&&(A(T,je),A(k,Le),A(k,ze)),H.mathMl===!0&&(A(T,Ne),A(k,Re),A(k,ze))),e.ADD_TAGS&&(typeof e.ADD_TAGS==`function`?N.tagCheck=e.ADD_TAGS:(T===O&&(T=j(T)),A(T,e.ADD_TAGS,X))),e.ADD_ATTR&&(typeof e.ADD_ATTR==`function`?N.attributeCheck=e.ADD_ATTR:(k===De&&(k=j(k)),A(k,e.ADD_ATTR,X))),e.ADD_URI_SAFE_ATTR&&A(G,e.ADD_URI_SAFE_ATTR,X),e.FORBID_CONTENTS&&(U===W&&(U=j(U)),A(U,e.FORBID_CONTENTS,X)),rt&&(T[`#text`]=!0),F&&A(T,[`html`,`head`,`body`]),T.table&&(A(T,[`tbody`]),delete Be.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Ee(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Ee(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);_=e.TRUSTED_TYPES_POLICY,v=_.createHTML(``)}else _===void 0&&(_=Ze(p,i)),_!==null&&typeof v==`string`&&(v=_.createHTML(``));C&&C(e),ht=e}},vt=A({},[...Ae,...je,...Me]),yt=A({},[...Ne,...Pe]),bt=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:lt,tagName:`template`});let n=be(e.tagName),r=be(t.tagName);return ut[e.namespaceURI]?e.namespaceURI===ct?t.namespaceURI===K?n===`svg`:t.namespaceURI===st?n===`svg`&&(r===`annotation-xml`||J[r]):!!vt[n]:e.namespaceURI===st?t.namespaceURI===K?n===`math`:t.namespaceURI===ct?n===`math`&&ft[r]:!!yt[n]:e.namespaceURI===K?t.namespaceURI===ct&&!ft[r]||t.namespaceURI===st&&!J[r]?!1:!yt[n]&&(pt[n]||!vt[n]):!!(Y===`application/xhtml+xml`&&ut[e.namespaceURI]):!1},xt=function(e){ve(t.removed,{element:e});try{g(e).removeChild(e)}catch{h(e)}},Q=function(e,n){try{ve(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{ve(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(L||R)try{xt(n)}catch{}else try{n.setAttribute(e,``)}catch{}},St=function(e){let t=null,r=null;if(tt)e=`<remove></remove>`+e;else{let t=Se(e,/^[\r\n\t ]+/);r=t&&t[0]}Y===`application/xhtml+xml`&&lt===K&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=_?_.createHTML(e):e;if(lt===K)try{t=new f().parseFromString(i,Y)}catch{}if(!t||!t.documentElement){t=re.createDocument(lt,`template`,null);try{t.documentElement.innerHTML=q?v:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),lt===K?y.call(t,F?`html`:`body`)[0]:F?t.documentElement:a},Ct=function(e){return ie.call(e.ownerDocument||e,e,l.SHOW_ELEMENT|l.SHOW_COMMENT|l.SHOW_TEXT|l.SHOW_PROCESSING_INSTRUCTION|l.SHOW_CDATA_SECTION,null)},wt=function(e){return e instanceof d&&(typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||!(e.attributes instanceof u)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`)},Tt=function(e){return typeof s==`function`&&e instanceof s};function $(e,n,r){he(e,e=>{e.call(t,n,r,ht)})}let Et=function(e){let n=null;if($(x.beforeSanitizeElements,e,null),wt(e))return xt(e),!0;let r=X(e.nodeName);if($(x.uponSanitizeElement,e,{tagName:r,allowedTags:T}),et&&e.hasChildNodes()&&!Tt(e.firstElementChild)&&D(/<[/\w!]/g,e.innerHTML)&&D(/<[/\w!]/g,e.textContent)||e.nodeType===Ye.progressingInstruction||et&&e.nodeType===Ye.comment&&D(/<[/\w]/g,e.data))return xt(e),!0;if(!(N.tagCheck instanceof Function&&N.tagCheck(r))&&(!T[r]||Be[r])){if(!Be[r]&&Ot(r)&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,r)||M.tagNameCheck instanceof Function&&M.tagNameCheck(r)))return!1;if(rt&&!U[r]){let t=g(e)||e.parentNode,n=ne(e)||e.childNodes;if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=ee(n[i],!0);r.__removalCount=(e.__removalCount||0)+1,t.insertBefore(r,te(e))}}}return xt(e),!0}return e instanceof c&&!bt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&D(/<\/no(script|embed|frames)/i,e.innerHTML)?(xt(e),!0):(P&&e.nodeType===Ye.text&&(n=e.textContent,he([S,oe,se],e=>{n=Ce(n,e,` `)}),e.textContent!==n&&(ve(t.removed,{element:e.cloneNode()}),e.textContent=n)),$(x.afterSanitizeElements,e,null),!1)},Dt=function(e,t,r){if(B&&(t===`id`||t===`name`)&&(r in n||r in gt))return!1;if(!(We&&!Ve[t]&&D(le,t))&&!(He&&D(ue,t))&&!(N.attributeCheck instanceof Function&&N.attributeCheck(t,e))){if(!k[t]||Ve[t]){if(!(Ot(e)&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,e)||M.tagNameCheck instanceof Function&&M.tagNameCheck(e))&&(M.attributeNameCheck instanceof RegExp&&D(M.attributeNameCheck,t)||M.attributeNameCheck instanceof Function&&M.attributeNameCheck(t,e))||t===`is`&&M.allowCustomizedBuiltInElements&&(M.tagNameCheck instanceof RegExp&&D(M.tagNameCheck,r)||M.tagNameCheck instanceof Function&&M.tagNameCheck(r))))return!1}else if(!G[t]&&!D(me,Ce(r,fe,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&we(r,`data:`)===0&&it[e])&&!(Ge&&!D(de,Ce(r,fe,``)))&&r)return!1}return!0},Ot=function(e){return e!==`annotation-xml`&&Se(e,w)},kt=function(e){$(x.beforeSanitizeAttributes,e,null);let{attributes:n}=e;if(!n||wt(e))return;let r={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:k,forceKeepAttr:void 0},i=n.length;for(;i--;){let{name:a,namespaceURI:o,value:s}=n[i],c=X(a),l=s,u=a===`value`?l:Te(l);if(r.attrName=c,r.attrValue=u,r.keepAttr=!0,r.forceKeepAttr=void 0,$(x.uponSanitizeAttribute,e,r),u=r.attrValue,nt&&(c===`id`||c===`name`)&&(Q(a,e),u=`user-content-`+u),et&&D(/((--!?|])>)|<\/(style|title|textarea)/i,u)){Q(a,e);continue}if(c===`attributename`&&Se(u,`href`)){Q(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Q(a,e);continue}if(!qe&&D(/\/>/i,u)){Q(a,e);continue}P&&he([S,oe,se],e=>{u=Ce(u,e,` `)});let d=X(e.nodeName);if(!Dt(d,c,u)){Q(a,e);continue}if(_&&typeof p==`object`&&typeof p.getAttributeType==`function`&&!o)switch(p.getAttributeType(d,c)){case`TrustedHTML`:u=_.createHTML(u);break;case`TrustedScriptURL`:u=_.createScriptURL(u);break}if(u!==l)try{o?e.setAttributeNS(o,a,u):e.setAttribute(a,u),wt(e)?xt(e):_e(t.removed)}catch{Q(a,e)}}$(x.afterSanitizeAttributes,e,null)},At=function e(t){let n=null,r=Ct(t);for($(x.beforeSanitizeShadowDOM,t,null);n=r.nextNode();)$(x.uponSanitizeShadowNode,n,null),Et(n),kt(n),n.content instanceof a&&e(n.content);$(x.afterSanitizeShadowDOM,t,null)};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,o=null,c=null,l=null;if(q=!e,q&&(e=`<!-->`),typeof e!=`string`&&!Tt(e))if(typeof e.toString==`function`){if(e=e.toString(),typeof e!=`string`)throw Ee(`dirty is not a string, aborting`)}else throw Ee(`toString is not a function`);if(!t.isSupported)return e;if(I||Z(n),t.removed=[],typeof e==`string`&&(V=!1),V){if(e.nodeName){let t=X(e.nodeName);if(!T[t]||Be[t])throw Ee(`root node is forbidden and cannot be sanitized in-place`)}}else if(e instanceof s)i=St(`<!---->`),o=i.ownerDocument.importNode(e,!0),o.nodeType===Ye.element&&o.nodeName===`BODY`||o.nodeName===`HTML`?i=o:i.appendChild(o);else{if(!L&&!P&&!F&&e.indexOf(`<`)===-1)return _&&z?_.createHTML(e):e;if(i=St(e),!i)return L?null:z?v:``}i&&tt&&xt(i.firstChild);let u=Ct(V?e:i);for(;c=u.nextNode();)Et(c),kt(c),c.content instanceof a&&At(c.content);if(V)return e;if(L){if(R)for(l=ae.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(k.shadowroot||k.shadowrootmode)&&(l=b.call(r,l,!0)),l}let d=F?i.outerHTML:i.innerHTML;return F&&T[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&D(Ke,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
11
+ `+d),P&&he([S,oe,se],e=>{d=Ce(d,e,` `)}),_&&z?_.createHTML(d):d},t.setConfig=function(){Z(arguments.length>0&&arguments[0]!==void 0?arguments[0]:{}),I=!0},t.clearConfig=function(){ht=null,I=!1},t.isValidAttribute=function(e,t,n){return ht||Z({}),Dt(X(e),X(t),n)},t.addHook=function(e,t){typeof t==`function`&&ve(x[e],t)},t.removeHook=function(e,t){if(t!==void 0){let n=ge(x[e],t);return n===-1?void 0:ye(x[e],n,1)[0]}return _e(x[e])},t.removeHooks=function(e){x[e]=[]},t.removeAllHooks=function(){x=Qe()},t}var P=$e(),et={sanitize:e=>P.sanitize(e)},F=(e,...t)=>new se(e.reduce((e,n,r)=>{let i=t[r]??``;return typeof i==`string`?[...e,n,et.sanitize(i)]:i===!1?[...e,n]:Array.isArray(i)?[...e,n,...i]:[...e,n,i]},[]));function I(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var tt=`:host{--host-display:flex;--host-heading-border:var(--scorad-heading-border,solid 1px var(--host-color));--host-score-color:var(--scorad-score-color,var(--host-color));--host-score-background:var(--scorad-score-background,var(--host-background-color));--host-score-border:var(--scorad-score-border,solid 1px var(--host-color));gap:var(--host-spacing-unit);flex-wrap:wrap;width:fit-content}h3{aspect-ratio:1;border:var(--host-heading-border);padding:var(--host-padding-unit);margin:0 0 0 calc(-1*var(--host-padding-unit));border-radius:50%;justify-content:center;align-items:center;line-height:0;display:inline-flex}p{padding:var(--host-padding-unit)0 0;margin:0;font-size:.9em}scorad-label{break-inside:avoid;outline:none;flex:5 19rem}#extent-label{flex-basis:100%}#intensity-label{flex-grow:1}#score-label{background:linear-gradient(to bottom,transparent,var(--background-color)75%);flex-basis:100%;font-size:1.2rem;position:sticky;bottom:0}@media print{#score-label{position:relative}}#score-label>span{padding:var(--host-padding-unit);border-radius:var(--host-border-radius);outline:var(--host-score-border);color:var(--host-score-color);background:var(--host-score-background)}scorad-extent,scorad-intensity,scorad-subjective{margin:.6rem calc(-1*var(--host-padding-unit));flex:100%}`,L=`*{box-sizing:border-box}:host{--host-color-l:var(--color-l,50%);--host-error-color-h:var(--error-color-h,0);--host-color:var(--color,#444);--host-background-color:var(--background-color,#eee);--host-primary-color:var(--primary-color,var(--host-color));--host-error-color:var(--error-color,hsl(var(--host-error-color-h),66.7%,var(--host-color-l)));--host-spacing-unit:var(--scorad-spacing-unit,.25rem);--host-padding-unit:var(--scorad-padding-unit,.333rem);--host-border-radius:var(--scorad-border-radius,3px);--host-border-radius-outer:var(--scorad-border-radius-outer,calc(var(--host-border-radius) + var(--host-padding-unit)));--host-outline-hover:var(--scorad-outline-hover,dashed 2px var(--host-primary-color));--host-outline-focus:var(--scorad-outline-focus,solid 2px var(--host-primary-color));display:var(--host-display,inline-flex);line-height:1.2}@media (prefers-color-scheme:dark){:host{--host-color-l:var(--color-l,70%)}}`;let R={headNeck:null,anteriorTrunk:null,posteriorTrunk:null,upperLimbs:null,lowerLimbs:null,genitals:null},z={erythema:null,oedemaPapulation:null,oozingCrusting:null,excoriations:null,lichenification:null,xerosis:null},B={pruritus:null,sleeplessness:null},nt={child:!1,extent:R,intensity:z,subjective:B},rt={headNeck:.09,anteriorTrunk:.18,posteriorTrunk:.18,upperLimbs:.18,lowerLimbs:.36,genitals:.01},V={headNeck:.18,anteriorTrunk:.18,posteriorTrunk:.18,upperLimbs:.18,lowerLimbs:.28,genitals:0};var H=`:host{--host-display:inline-flex;--host-font-size:1rem;flex-wrap:wrap;justify-content:center;align-items:center;position:relative}label{padding:var(--host-padding-unit)}svg{min-width:14rem;max-width:18rem;margin:var(--host-padding-unit)0;fill:#0000;stroke:var(--host-color);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;flex:16rem;overflow:visible}@media print{svg{flex:0 0 14rem;width:14rem}}path,line{vector-effect:non-scaling-stroke}path{opacity:.333}text,line{opacity:.667}g{outline:none}g[tabindex] path{opacity:1;fill:hsla(var(--scorad-h,0),var(--extent,"0%"),50%,var(--opacity,0));cursor:grab}:has(:active) g[tabindex] path{cursor:ns-resize}:is(:not(:has(:active)) g[tabindex]:hover path,:not(:has(:active)) g[tabindex]:hover line){stroke-width:2px;stroke:var(--host-primary-color);stroke-dasharray:2 3.5;opacity:1}g[tabindex]:focus path,g[tabindex]:active path,g[tabindex].selected path,g[tabindex]:focus line,g[tabindex]:active line,g[tabindex].selected line{stroke-width:2px;stroke:var(--host-primary-color);opacity:1;stroke-dasharray:none!important}g[tabindex] text{fill:var(--host-color);stroke:none;font-size:var(--host-font-size);text-anchor:end}g[tabindex].posterior-trunk text{text-anchor:start}:is(:not(:has(:active)) g[tabindex]:hover text,g[tabindex]:focus text,g[tabindex]:active text,g[tabindex].selected text){fill:var(--host-primary-color);opacity:1}`;let U=e=>e?.child?V:rt,W=e=>{let t=[],n=(e,n,r)=>{for(let[i,a]of Object.entries(e))W.isValid(a,r)||t.push(W.formatError(n,i,r,a))},r={...e?.extent??R},i=U(e);for(let[e,t]of Object.entries(i))t===0&&delete r[e];return n(r,`extent`,100),n(e?.intensity??z,`intensity`,3),n(e?.subjective??B,`subjective`,10),t.length?te.Fail(t):te.Ok(e)};W.formatError=(e,t,n,r)=>`${e}.${t}: must be between 0 and ${n}, but received ${r}.`,W.isValid=(e,t)=>typeof e==`number`&&Number.isFinite(e)&&e>=0&&e<=t;let it={child:{text:`child`,description:`use weightings for a child`},extent:{headNeck:{text:`head`,description:`percentage of the head and neck area affected`},anteriorTrunk:{text:`trunk`,description:`percentage of the front torso area affected`},posteriorTrunk:{text:`back`,description:`percentage of the back torso area affected`},genitals:{text:`genitals`,description:`percentage of the genital area affected`},upperLimbs:{text:`arms`,description:`percentage of the arms and shoulders affected`},lowerLimbs:{text:`legs`,description:`percentage of the legs and hips affected`}},intensity:{erythema:{text:`Erythema`,description:`redness of the skin`},oedemaPapulation:{text:`Oedema/Papulation`,description:`swelling and small bumps`},oozingCrusting:{text:`Oozing/Crusting`,description:`fluid leakage and dried scabs`},excoriations:{text:`Excoriations`,description:`scratch marks`},lichenification:{text:`Lichenification`,description:`skin thickening and hardening`},xerosis:{text:`Xerosis`,description:`dryness of the skin`}},subjective:{pruritus:{text:`Pruritus`,description:`itching`},sleeplessness:{text:`Sleeplessness`,description:`difficulty sleeping`}}};var at=`scorad-extent`,G=class extends x{connectedCallback(){this.render(),this.addEventListener(`focusin`,this.handleFocusIn,{once:!0})}disconnectedCallback(){this.removeEventListener(`focusin`,this.handleFocusIn)}handleFocusIn=()=>{this.readonly||(this.committedValue=this.value,this.addEventListener(`focusout`,this.handleFocusOut,{once:!0}))};handleFocusOut=()=>{this.addEventListener(`focusin`,this.handleFocusIn,{once:!0}),!c(this.value,this.committedValue)&&this.valueChange(this.value)};child=!1;readonly=!1;committedValue=R;value=R;score;setValue=e=>{this.value=e,this.errors=void 0,this.valueInput(this.value)};errors;afterRender(){if(!this.value){this.value=R;return}if(this.shadowRoot)for(let e of f(R)){let t=(this.value??{})[e],n=this.shadowRoot.querySelector(`.${g(e)}`);if(!n)return;n.style.setProperty(`--extent`,`${t}%`),n.style.setProperty(`--opacity`,`${(t??0)/100}`);let r=n.querySelector(`text`);if(!r)return;r.textContent=W.isValid(t,100)?`${t}%`:it.extent[e].text,n.querySelectorAll(`path`).forEach(t=>t.style.stroke=this.errors?.[e]==null?``:`var(--host-error-color)`)}}resizeCallback(){if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`svg`);if(!e)return;let t=Math.round(19e3/e.clientWidth)/100;this.style.setProperty(`--host-font-size`,`${t}rem`)}render(){let e=e=>{let t=t=>{let n=Math.round(Math.min(100,Math.max(0,t)));this.setValue({...this.value,[e]:n})};return n=>{if(!n)return;`ontouchstart`in window&&n.addEventListener(`touchstart`,e=>{e.preventDefault()},{passive:!1}),n.style.touchAction=`none`,n.addEventListener(`pointerdown`,r=>{r.stopPropagation(),n.focus();let i=this.value[e],a=r.clientY,o=e=>{e.preventDefault();let n=(a-e.clientY)/2;t(Math.round((i+n)/5)*5)},s=()=>{document.removeEventListener(`pointermove`,o),document.removeEventListener(`pointerup`,s),document.removeEventListener(`pointercancel`,s)};document.addEventListener(`pointermove`,o),document.addEventListener(`pointerup`,s),document.addEventListener(`pointercancel`,s),o(r)});let r,i;n.addEventListener(`focus`,()=>{i=`000`,r=this.value[e]}),n.addEventListener(`keydown`,n=>{let a=W.isValid(this.value[e],100)?this.value[e]:0,o=n.shiftKey?5:1;switch(n.key){case`0`:case`1`:case`2`:case`3`:case`4`:case`5`:case`6`:case`7`:case`8`:case`9`:t(Number.parseInt(i.substring(1)+n.key)),i=ne(this.value[e],3);break;case`ArrowLeft`:case`ArrowDown`:n.preventDefault(),t(a-o);break;case`ArrowUp`:case`ArrowRight`:n.preventDefault(),t(a+o);break;case`Escape`:n.preventDefault(),t(r);break}})}},t=e=>t=>{t&&(t.textContent=`${this.value[e]}%`)};return F`
12
12
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 190 240">
13
13
  <g ${e(`headNeck`)}
14
14
  class="head-neck" tabindex="0">
@@ -73,64 +73,64 @@
73
73
  <path d="M120,142 Q110,155 100,151 L100,230 A1,1 0,0,0 120,230Z"></path>
74
74
  </g>
75
75
  </svg>
76
- `}valueInput;valueChange};I([v(re)],G.prototype,`child`,void 0),I([v({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],G.prototype,`errors`,void 0),I([S(`value`,`errors`)],G.prototype,`afterRender`,null),I([S(`child`)],G.prototype,`render`,null),I([b()],G.prototype,`valueInput`,void 0),I([b()],G.prototype,`valueChange`,void 0),G=I([y({tag:at,css:[L,H],delegatesFocus:!0})],G);var ot=`:host{--host-display:inline-flex;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}`,st=`:host{--host-display:inline-flex;--host-option-width:var(--scorad-option-width,1.5em);--host-option-height:var(--scorad-option-height,1.5em);--host-option-border:var(--scorad-option-border,solid 1px var(--host-color));--host-option-border-selected:var(--scorad-option-border-selected,solid 2px var(--host-color));--host-option-color:var(--scorad-option-color,var(--host-color));--host-option-background:var(--scorad-option-background,transparent);--host-option-color-selected:var(--scorad-option-color-selected,var(--host-background-color));--host-option-background-selected:var(--scorad-option-background-selected,var(--host-color));gap:var(--host-spacing-unit);margin:var(--host-padding-unit)0;outline:none;width:max-content;position:relative}span{height:var(--host-option-height);width:var(--host-option-width);outline:var(--host-option-border);border-radius:var(--host-border-radius);padding:calc(.5*var(--host-padding-unit))var(--host-padding-unit);color:var(--host-option-color);background:var(--host-option-background);cursor:pointer;touch-action:none}span:before{content:"​";touch-action:none;pointer-events:none}span[aria-selected=true]{outline:var(--host-option-border-selected);color:var(--host-option-color-selected);background:var(--host-option-background-selected)}`,ct=`scorad-options`,K=class extends x{connectedCallback(){this.render(),this.addEventListener(`focusin`,this._handleFocusIn,{once:!0}),this.addEventListener(`click`,this._handleClick)}disconnectedCallback(){this.addEventListener(`click`,this._handleClick)}_handleFocusIn=()=>{this.readonly||(this.committedValue=this.value,this.addEventListener(`focusout`,this._handleFocusOut,{once:!0}),this.addEventListener(`keydown`,this._handleKeydown))};_handleFocusOut=()=>{this.removeEventListener(`keydown`,this._handleKeydown),this.addEventListener(`focusin`,this._handleFocusIn,{once:!0}),this.setValue(this.value),this.value!==this.committedValue&&this.valueChange(this.value)};_handleClick=e=>{if(this.readonly)return;e.stopPropagation(),e.preventDefault(),this.focus();let t=e.composedPath()[0];if(!(t instanceof HTMLSpanElement))return;let n=Number.parseInt(t.dataset.value);this.setValue(n)};_handleKeydown=e=>{let t=this.value??0;switch(e.key){case`ArrowLeft`:case`ArrowDown`:e.preventDefault(),this.setValue(t-1);break;case`ArrowUp`:case`ArrowRight`:e.preventDefault(),this.setValue(t+1);break;case`Escape`:e.preventDefault(),this.setValue(this.committedValue);break}};min=0;max=5;showHue=!1;committedValue=0;value=0;setValue=e=>{this.value=Math.max(this.min,Math.min(this.max,e)),this.valueInput(this.value)};readonly=!1;text=[];render(){return F`
76
+ `}valueInput;valueChange};I([_(re)],G.prototype,`child`,void 0),I([_({name:`aria-readonly`,...v})],G.prototype,`readonly`,void 0),I([_({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],G.prototype,`errors`,void 0),I([S(`value`,`errors`)],G.prototype,`afterRender`,null),I([S(`child`)],G.prototype,`render`,null),I([b()],G.prototype,`valueInput`,void 0),I([b()],G.prototype,`valueChange`,void 0),G=I([y({tag:at,css:[L,H],delegatesFocus:!0})],G);var ot=`:host{--host-display:inline-flex;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}`,st=`:host{--host-display:inline-flex;--host-option-width:var(--scorad-option-width,1.5em);--host-option-height:var(--scorad-option-height,1.5em);--host-option-border:var(--scorad-option-border,solid 1px var(--host-color));--host-option-border-selected:var(--scorad-option-border-selected,solid 2px var(--host-color));--host-option-color:var(--scorad-option-color,var(--host-color));--host-option-background:var(--scorad-option-background,transparent);--host-option-color-selected:var(--scorad-option-color-selected,var(--host-background-color));--host-option-background-selected:var(--scorad-option-background-selected,var(--host-color));gap:var(--host-spacing-unit);margin:var(--host-padding-unit)0;outline:none;width:max-content;position:relative}span{height:var(--host-option-height);width:var(--host-option-width);outline:var(--host-option-border);border-radius:var(--host-border-radius);padding:calc(.5*var(--host-padding-unit))var(--host-padding-unit);color:var(--host-option-color);background:var(--host-option-background);cursor:pointer;touch-action:none}span:before{content:"​";touch-action:none;pointer-events:none}span[aria-selected=true]{outline:var(--host-option-border-selected);color:var(--host-option-color-selected);background:var(--host-option-background-selected)}`,ct=`scorad-options`,K=class extends x{connectedCallback(){this.render(),this.addEventListener(`focusin`,this.handleFocusIn,{once:!0}),this.addEventListener(`click`,this.handleClick)}disconnectedCallback(){this.removeEventListener(`focusin`,this.handleFocusIn),this.removeEventListener(`click`,this.handleClick)}handleFocusIn=()=>{this.readonly||(this.committedValue=this.value,this.addEventListener(`focusout`,this.handleFocusOut,{once:!0}),this.addEventListener(`keydown`,this.handleKeydown))};handleFocusOut=()=>{this.removeEventListener(`keydown`,this.handleKeydown),this.addEventListener(`focusin`,this.handleFocusIn,{once:!0}),this.setValue(this.value),this.value!==this.committedValue&&this.valueChange(this.value)};handleClick=e=>{if(this.readonly)return;e.stopPropagation(),e.preventDefault(),this.focus();let t=e.composedPath()[0];if(!(t instanceof HTMLSpanElement))return;let n=Number.parseInt(t.dataset.value);this.setValue(n)};handleKeydown=e=>{let t=this.value??0;switch(e.key){case`ArrowLeft`:case`ArrowDown`:e.preventDefault(),this.setValue(t-1);break;case`ArrowUp`:case`ArrowRight`:e.preventDefault(),this.setValue(t+1);break;case`Escape`:e.preventDefault(),this.setValue(this.committedValue);break}};min=0;max=5;showHue=!1;committedValue=0;value=0;setValue=e=>{this.value=Math.max(this.min,Math.min(this.max,e)),this.valueInput(this.value)};readonly=!1;text=[];render(){return F`
77
77
  ${Array.from({length:this.max-this.min+1},(e,t)=>this.min+t).map(e=>F`
78
78
  <span data-value="${e}">${this.text[e]}</span>
79
79
  `)}
80
- `}afterRender(){this.shadowRoot&&this.shadowRoot.querySelectorAll(`span`).forEach(e=>{let t=Number.parseInt(e.dataset.value);if(e.ariaSelected=t===this.value?`true`:`false`,!this.showHue)return;if(t>this.value){e.style.backgroundColor=``;return}let n=Math.round(100*t/(this.max-this.min));e.style.backgroundColor=`hsl(var(--scorad-h, 0), ${n}%, 50%, ${n}%)`})}valueInput;valueChange};I([v({read:Number,write:!1})],K.prototype,`min`,void 0),I([v({read:Number,write:!1})],K.prototype,`max`,void 0),I([v(re)],K.prototype,`showHue`,void 0),I([v({name:`aria-readonly`,...ne})],K.prototype,`readonly`,void 0),I([v({write:!1})],K.prototype,`text`,void 0),I([S(`min`,`max`,`text`)],K.prototype,`render`,null),I([S(`value`)],K.prototype,`afterRender`,null),I([b()],K.prototype,`valueInput`,void 0),I([b()],K.prototype,`valueChange`,void 0),K=I([y({tag:ct,css:[L,st]})],K);var q=`scorad-intensity`,J=class extends x{connectedCallback(){this.render()}value=z;score;errors;afterRender(){if(this.value==null){this.value=z;return}if(this.shadowRoot)for(let[e,t]of Object.entries(this.value)){let n=this.shadowRoot.querySelector(`.${_(e)}`);if(!n)return;n.dataset.value=`${t}`;let r=n.querySelector(`scorad-options`);if(!r)return;r.value=t,r.style.setProperty(`--host-option-border`,this.errors?.[e]==null?null:`solid 1px var(--host-error-color)`)}}render(){return F`
80
+ `}afterRender(){this.shadowRoot&&this.shadowRoot.querySelectorAll(`span`).forEach(e=>{let t=Number.parseInt(e.dataset.value);if(e.setAttribute(`aria-selected`,t===this.value?`true`:`false`),!this.showHue)return;if(t>this.value){e.style.backgroundColor=``;return}let n=Math.round(100*t/(this.max-this.min));e.style.backgroundColor=`hsl(var(--scorad-h, 0), ${n}%, 50%, ${n}%)`})}valueInput;valueChange};I([_({read:Number,write:!1})],K.prototype,`min`,void 0),I([_({read:Number,write:!1})],K.prototype,`max`,void 0),I([_(re)],K.prototype,`showHue`,void 0),I([_({name:`aria-readonly`,...v})],K.prototype,`readonly`,void 0),I([_({write:!1})],K.prototype,`text`,void 0),I([S(`min`,`max`,`text`)],K.prototype,`render`,null),I([S(`value`)],K.prototype,`afterRender`,null),I([b()],K.prototype,`valueInput`,void 0),I([b()],K.prototype,`valueChange`,void 0),K=I([y({tag:ct,css:[L,st]})],K);var lt=`scorad-intensity`,q=class extends x{connectedCallback(){this.render()}readonly=!1;value=z;score;errors;afterRender(){if(this.value==null){this.value=z;return}if(this.shadowRoot)for(let[e,t]of Object.entries(this.value)){let n=this.shadowRoot.querySelector(`.${g(e)}`);if(!n)return;n.dataset.value=`${t}`;let r=n.querySelector(`scorad-options`);if(!r)return;r.value=t,r.style.setProperty(`--host-option-border`,this.errors?.[e]==null?null:`solid 1px var(--host-error-color)`)}}render(){return F`
81
81
  ${f(this.value).map(e=>this.renderLevel(e))}
82
- `}renderLevel(e){let t=t=>{t&&t.addEventListener(`value-input`,t=>{this.value={...this.value,[e]:t.detail},this.valueInput(this.value)})},n=it.intensity[e];return F`
83
- <scorad-label class="${_(e)} row"
82
+ `}renderLevel(e){let t=t=>{t&&(t.addEventListener(`value-input`,t=>{this.value={...this.value,[e]:t.detail},this.errors=void 0,this.valueInput(this.value)}),t.addEventListener(`value-change`,t=>{this.value={...this.value,[e]:t.detail},this.errors=void 0,this.valueChange(this.value)}))},n=it.intensity[e];return F`
83
+ <scorad-label class="${g(e)} row"
84
84
  text="${n.text}"
85
85
  description="${n.description}">
86
86
  <scorad-options ${t}
87
87
  min="0" max="3" show-hue tabindex="0"
88
88
  ></scorad-options>
89
89
  </scorad-label>
90
- `}valueInput;valueChange};I([v({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],J.prototype,`errors`,void 0),I([S(`value`,`errors`)],J.prototype,`afterRender`,null),I([b()],J.prototype,`valueInput`,void 0),I([b()],J.prototype,`valueChange`,void 0),J=I([y({tag:q,css:[L,ot],delegatesFocus:!0})],J);var lt=`:host{--host-display:inline-flex;--scorad-label-text-min-width:7rem;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}`,ut=`scorad-subjective`,Y=class extends x{connectedCallback(){this.render()}value=B;score;errors;afterRender(){if(this.value==null){this.value=B;return}if(this.shadowRoot)for(let[e,t]of Object.entries(this.value)){let n=this.shadowRoot.querySelector(`.${_(e)}`);if(!n)return;n.dataset.value=`${t}`;let r=n.querySelector(`scorad-options`);if(!r)return;r.value=t,r.style.setProperty(`--host-option-border`,this.errors?.[e]==null?null:`solid 1px var(--host-error-color)`)}}render(){return F`
90
+ `}valueInput;valueChange};I([_({name:`aria-readonly`,...v})],q.prototype,`readonly`,void 0),I([_({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],q.prototype,`errors`,void 0),I([S(`value`,`errors`)],q.prototype,`afterRender`,null),I([b()],q.prototype,`valueInput`,void 0),I([b()],q.prototype,`valueChange`,void 0),q=I([y({tag:lt,css:[L,ot],delegatesFocus:!0})],q);var ut=`:host{--host-display:inline-flex;--scorad-label-text-min-width:7rem;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}`,dt=`scorad-subjective`,J=class extends x{connectedCallback(){this.render()}value=B;score;errors;afterRender(){if(this.value==null){this.value=B;return}if(this.shadowRoot)for(let[e,t]of Object.entries(this.value)){let n=this.shadowRoot.querySelector(`.${g(e)}`);if(!n)return;n.dataset.value=`${t}`;let r=n.querySelector(`scorad-options`);if(!r)return;r.value=t,r.style.setProperty(`--host-option-border`,this.errors?.[e]==null?null:`solid 1px var(--host-error-color)`)}}render(){return F`
91
91
  ${f(this.value).map(e=>this.renderLevel(e))}
92
92
  `}renderLevel(e){let t=t=>{t&&t.addEventListener(`value-input`,t=>{this.value={...this.value,[e]:t.detail},this.valueInput(this.value)})},n=it.subjective[e];return F`
93
- <scorad-label class="${_(e)} row"
93
+ <scorad-label class="${g(e)} row"
94
94
  text="${n.text}"
95
95
  description="${n.description}">
96
96
  <scorad-options ${t}
97
97
  min="0" max="10" show-hue tabindex="0"></scorad-options>
98
98
  </scorad-label>
99
- `}valueInput;valueChange};I([v({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],Y.prototype,`errors`,void 0),I([S(`value`,`errors`)],Y.prototype,`afterRender`,null),I([b()],Y.prototype,`valueInput`,void 0),I([b()],Y.prototype,`valueChange`,void 0),Y=I([y({tag:ut,css:[L,lt],delegatesFocus:!0})],Y);var dt=`:host{--host-display:inline-flex;padding:0 var(--host-padding-unit);border-radius:var(--host-border-radius);justify-content:center;align-items:baseline;position:relative}:host(:hover){outline:var(--host-outline-hover)}:host(:focus-within){outline:var(--host-outline-focus)}scorad-options{--host-option-width:auto;--host-option-height:auto}`,ft=`scorad-weightings`,X=class extends x{connectedCallback(){this.render()}value=!1;afterRender(){if(this.value==null){this.value=!1;return}if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`scorad-options`);e&&(e.value=this.value?1:0,e.text=[`Adult`,`Child`])}render(){return F`
99
+ `}valueInput;valueChange};I([_({name:`has-errors`,write:e=>e==null?void 0:``,read:!1})],J.prototype,`errors`,void 0),I([S(`value`,`errors`)],J.prototype,`afterRender`,null),I([b()],J.prototype,`valueInput`,void 0),I([b()],J.prototype,`valueChange`,void 0),J=I([y({tag:dt,css:[L,ut],delegatesFocus:!0})],J);var ft=`:host{--host-display:inline-flex;padding:0 var(--host-padding-unit);border-radius:var(--host-border-radius);justify-content:center;align-items:baseline;position:relative}:host(:hover){outline:var(--host-outline-hover)}:host(:focus-within){outline:var(--host-outline-focus)}scorad-options{--host-option-width:auto;--host-option-height:auto}`,pt=`scorad-weightings`,Y=class extends x{connectedCallback(){this.render()}value=!1;afterRender(){if(this.value==null){this.value=!1;return}if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`scorad-options`);e&&(e.value=this.value?1:0,e.text=[`Adult`,`Child`])}render(){return F`
100
100
  <scorad-options ${e=>{e.addEventListener(`value-input`,e=>{this.value=e.detail===1,this.valueInput(this.value)})}}
101
101
  min="0" max="1" tabindex="0"
102
102
  ></scorad-options>
103
- `}valueInput;valueChange};I([S(`value`)],X.prototype,`afterRender`,null),I([b()],X.prototype,`valueInput`,void 0),I([b()],X.prototype,`valueChange`,void 0),X=I([y({tag:ft,css:[L,dt],delegatesFocus:!0})],X);let pt=e=>{let t=W(e);if(t instanceof g)return t;e=t.value;let n=U(e),r=Object.entries(e.extent).reduce((e,[t,r])=>e+r*n[t],0),i=Object.values(e.intensity).reduce((e,t)=>e+t,0),a=e.subjective.pruritus+e.subjective.sleeplessness,o=Math.round((r/5+7*i/2+a)*100)/100;return ee.Ok({A:r,B:i,C:a,total:o})};var Z=`:host{--host-display:var(--scorad-label-display,inline-flex);--host-options:var(--scorad-label-options,solid 1px var(--host-color));--host-text-min-width:var(--scorad-label-text-min-width,none);--host-text-max-width:var(--scorad-label-text-max-width,none);grid-column:1/3;grid-template-columns:subgrid;padding:var(--host-padding-unit);border-radius:var(--host-border-radius-outer);flex-wrap:wrap;align-content:baseline;align-items:baseline;position:relative}:host(:hover){outline:var(--host-outline-hover)}:host(:focus-within){outline:var(--host-outline-focus)}:host>label{min-width:var(--host-text-min-width);max-width:var(--host-text-max-width)}:host>label>slot[name=text]{transition:all .2s ease-in-out;display:block}:host>label>slot[name=description]{opacity:0;margin-bottom:-1.1em;transition:all .4s ease-in-out;display:block}:host(:hover)>label>slot[name=text],:host(:focus-within)>label>slot[name=text]{transform:translateY(-.5em)}:host(:hover)>label>slot[name=description],:host(:focus-within)>label>slot[name=description]{opacity:.667;transform:translateY(-.6em)}@media print{:host>label>slot[name=text]{transform:translateY(-.5em)}:host>label>slot[name=description]{opacity:.667;transform:translateY(-.6em)}}:host>label{padding:var(--host-padding-unit);flex:1;padding-left:0}`,mt=`scorad-label`,ht=class extends x{connectedCallback(){this.render(),this.addEventListener(`click`,this._handleClick)}diconnectedCallback(){this.removeEventListener(`click`,this._handleClick)}_handleClick=e=>{this.querySelector(i)?.focus()};text=`(label)`;description;render(){return F`
103
+ `}valueInput;valueChange};I([S(`value`)],Y.prototype,`afterRender`,null),I([b()],Y.prototype,`valueInput`,void 0),I([b()],Y.prototype,`valueChange`,void 0),Y=I([y({tag:pt,css:[L,ft],delegatesFocus:!0})],Y);let mt=e=>{let t=W(e);if(t instanceof h)return t;e=t.value;let n=U(e),r=Object.entries(e.extent).reduce((e,[t,r])=>e+r*n[t],0),i=Object.values(e.intensity).reduce((e,t)=>e+t,0),a=e.subjective.pruritus+e.subjective.sleeplessness,o=Math.round((r/5+7*i/2+a)*100)/100;return te.Ok({A:r,B:i,C:a,total:o})};var X=`:host{--host-display:var(--scorad-label-display,inline-flex);--host-options:var(--scorad-label-options,solid 1px var(--host-color));--host-text-min-width:var(--scorad-label-text-min-width,none);--host-text-max-width:var(--scorad-label-text-max-width,none);grid-column:1/3;grid-template-columns:subgrid;padding:var(--host-padding-unit);border-radius:var(--host-border-radius-outer);flex-wrap:wrap;align-content:baseline;align-items:baseline;position:relative}:host(:hover){outline:var(--host-outline-hover)}:host(:focus-within){outline:var(--host-outline-focus)}:host>label{min-width:var(--host-text-min-width);max-width:var(--host-text-max-width)}:host>label>slot[name=text]{transition:all .2s ease-in-out;display:block}:host>label>slot[name=description]{opacity:0;margin-bottom:-1.1em;transition:all .4s ease-in-out;display:block}:host(:hover)>label>slot[name=text],:host(:focus-within)>label>slot[name=text]{transform:translateY(-.5em)}:host(:hover)>label>slot[name=description],:host(:focus-within)>label>slot[name=description]{opacity:.667;transform:translateY(-.6em)}@media print{:host>label>slot[name=text]{transform:translateY(-.5em)}:host>label>slot[name=description]{opacity:.667;transform:translateY(-.6em)}}:host>label{padding:var(--host-padding-unit);flex:1;padding-left:0}`,ht=`scorad-label`,gt=class extends x{connectedCallback(){this.render(),this.addEventListener(`click`,this._handleClick)}diconnectedCallback(){this.removeEventListener(`click`,this._handleClick)}_handleClick=e=>{this.querySelector(i)?.focus()};text=`(label)`;description;render(){return F`
104
104
  <label>
105
105
  <slot name="text"><span>${this.text}</span></slot>
106
106
  <slot name="description"><small>${this.description}</small></slot>
107
107
  </label>
108
108
  <slot></slot>
109
- `}};I([v({write:!1})],ht.prototype,`text`,void 0),I([v({write:!1})],ht.prototype,`description`,void 0),ht=I([y({tag:mt,css:[L,Z]})],ht);var gt=`scorad-component`,_t=class extends x{connectedCallback(){this.render()}value=nt;showErrors=!1;afterRender(){if(this.value==null){this.value=nt;return}if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`#score`);if(!e)return;let t=pt(this.value).orNull(),n={},r=W(this.value).errors.reduce((e,t)=>{let n=t.indexOf(`:`);return p(e,t.substring(0,n),t.substring(n+2))},n);e.innerText=`${t?.total??`Get Score`}`,e.style.color=this.showErrors&&r!=n?`var(--host-error-color)`:``;let i=this.shadowRoot.querySelector(`scorad-subjective`);i&&(i.value=this.value?.subjective??B,i.score=t?.B,this.showErrors&&(i.errors=d(r,`subjective`)));let a=this.shadowRoot.querySelector(`scorad-intensity`);a&&(a.value=this.value?.intensity??z,a.score=t?.B,this.showErrors&&(a.errors=d(r,`intensity`)));let o=this.shadowRoot.querySelector(`scorad-extent`);o&&(o.child=this.value?.child??!1,o.value=this.value?.extent??R,o.score=t?.A,this.showErrors&&(o.errors=d(r,`extent`)));let s=this.shadowRoot.querySelector(`scorad-weightings`);s&&(s.value=this.value?.child??!1)}render(){return F`
109
+ `}};I([_({write:!1})],gt.prototype,`text`,void 0),I([_({write:!1})],gt.prototype,`description`,void 0),gt=I([y({tag:ht,css:[L,X]})],gt);var _t=`scorad-component`,Z=class extends x{connectedCallback(){this.render()}value=nt;showErrors=!1;afterRender(){if(this.value==null){this.value=nt;return}if(!this.shadowRoot)return;let e=this.shadowRoot.querySelector(`#score`);if(!e)return;let t=mt(this.value).orNull(),n={},r=W(this.value).errors.reduce((e,t)=>{let n=t.indexOf(`:`);return p(e,t.substring(0,n),t.substring(n+2))},n);e.innerText=`${t?.total??`Get Score`}`,e.style.color=this.showErrors&&r!=n?`var(--host-error-color)`:``;let i=this.shadowRoot.querySelector(`scorad-subjective`);i&&(i.value=this.value?.subjective??B,i.score=t?.B,this.showErrors&&(i.errors=d(r,`subjective`)));let a=this.shadowRoot.querySelector(`scorad-intensity`);a&&(a.value=this.value?.intensity??z,a.score=t?.B,this.showErrors&&(a.errors=d(r,`intensity`)));let o=this.shadowRoot.querySelector(`scorad-extent`);o&&(o.child=this.value?.child??!1,o.value=this.value?.extent??R,o.score=t?.A,this.showErrors&&(o.errors=d(r,`extent`)));let s=this.shadowRoot.querySelector(`scorad-weightings`);s&&(s.value=this.value?.child??!1)}render(){return F`
110
110
  <scorad-label id="extent-label">
111
111
  <h3 slot="text">A</h3>
112
112
  <p slot="description">extent - effected surface area</p>
113
- <scorad-weightings ${e=>{e instanceof X&&e.addEventListener(`value-input`,e=>{this.value={...this.value,child:e.detail}})}}></scorad-weightings>
114
- <scorad-extent tabindex="0" ${e=>{e instanceof G&&e.addEventListener(`value-input`,e=>{this.value={...this.value,extent:e.detail}})}}></scorad-extent>
113
+ <scorad-weightings ${e=>{e instanceof Y&&(e.addEventListener(`value-input`,e=>{this.value={...this.value,child:e.detail},this.valueInput(this.value)}),e.addEventListener(`value-change`,e=>{this.value={...this.value,child:e.detail},this.valueChange(this.value)}))}}></scorad-weightings>
114
+ <scorad-extent tabindex="0" ${e=>{e instanceof G&&(e.addEventListener(`value-input`,e=>{this.value={...this.value,extent:e.detail},this.valueInput(this.value)}),e.addEventListener(`value-change`,e=>{this.value={...this.value,extent:e.detail},this.valueChange(this.value)}))}}></scorad-extent>
115
115
  </scorad-label>
116
116
 
117
117
  <scorad-label id="intensity-label">
118
118
  <h3 slot="text">B</h3>
119
119
  <p slot="description">intensity - clinical sign severity</p>
120
- <scorad-intensity tabindex="0" ${e=>{e instanceof J&&e.addEventListener(`value-input`,e=>{this.value={...this.value,intensity:e.detail}})}}></scorad-intensity>
120
+ <scorad-intensity tabindex="0" ${e=>{e instanceof q&&(e.addEventListener(`value-input`,e=>{this.value={...this.value,intensity:e.detail},this.valueInput(this.value)}),e.addEventListener(`value-change`,e=>{this.value={...this.value,intensity:e.detail},this.valueChange(this.value)}))}}></scorad-intensity>
121
121
  </scorad-label>
122
122
 
123
123
  <scorad-label id="subjective-label">
124
124
  <h3 slot="text">C</h3>
125
125
  <p slot="description">subjective - patient reported symptoms</p>
126
- <scorad-subjective tabindex="0" ${e=>{e instanceof Y&&e.addEventListener(`value-input`,e=>{this.value={...this.value,subjective:e.detail}})}}></scorad-subjective>
126
+ <scorad-subjective tabindex="0" ${e=>{e instanceof J&&(e.addEventListener(`value-input`,e=>{this.value={...this.value,subjective:e.detail},this.valueInput(this.value)}),e.addEventListener(`value-change`,e=>{this.value={...this.value,subjective:e.detail},this.valueChange(this.value)}))}}></scorad-subjective>
127
127
  </scorad-label>
128
128
 
129
129
  <scorad-label id="score-label"
130
130
  text="SCORAD"
131
131
  description="(A / 5) + (7 * B / 2) + C"
132
- ${e=>{e instanceof ht&&e.addEventListener(`click`,()=>{if(!this.shadowRoot)return;this.showErrors=!0,this.afterRender();let e=this.shadowRoot.querySelector(`[has-errors]`);e&&(e.focus({preventScroll:!0}),e.scrollIntoView({behavior:`smooth`,block:`start`}))})}}
132
+ ${e=>{e instanceof gt&&e.addEventListener(`click`,()=>{if(!this.shadowRoot)return;this.showErrors=!0;let e=this.shadowRoot.querySelector(`[has-errors]`);e&&(e.focus({preventScroll:!0}),e.scrollIntoView({behavior:`smooth`,block:`start`}))})}}
133
133
  >
134
134
  <span id="score" tabindex="0"></span>
135
135
  </scorad-label>
136
- `}};I([S(`value`)],_t.prototype,`afterRender`,null),_t=I([y({tag:gt,css:[L,tt],delegatesFocus:!0})],_t);let vt=s(`@ntix/components-scorad`,typeof ANTIX_COMPONENTS_SCORAD_LOG_LEVEL>`u`?a.warn:ANTIX_COMPONENTS_SCORAD_LOG_LEVEL);Object.defineProperty(e,`HTMLScoradElement`,{enumerable:!0,get:function(){return _t}}),Object.defineProperty(e,`HTMLScoradExtentElement`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,`HTMLScoradIntensityElement`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,`HTMLScoradLabelElement`,{enumerable:!0,get:function(){return ht}}),Object.defineProperty(e,`HTMLScoradOptionsElement`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,`HTMLScoradSubjectiveElement`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(e,`HTMLScoradWeightingsElement`,{enumerable:!0,get:function(){return X}}),e.SCORAD_ADULT_WEIGHTS=rt,e.SCORAD_CHILD_WEIGHTS=V,e.SCORAD_DEFAULT=nt,e.SCORAD_EXTENT_DEFAULT=R,e.SCORAD_EXTENT_MAX_VALUE=100,e.SCORAD_INTENSITY_DEFAULT=z,e.SCORAD_INTENSITY_MAX_VALUE=3,e.SCORAD_SUBJECTIVE_DEFAULT=B,e.SCORAD_SUBJECTIVE_MAX_VALUE=10,e.ScoradResources=it,e.componentsScoradLogger=vt,e.getScoradScore=pt,e.selectScoradWeights=U,e.validateScoradData=W});
136
+ `}valueInput;valueChange};I([S(`value`,`showErrors`)],Z.prototype,`afterRender`,null),I([b()],Z.prototype,`valueInput`,void 0),I([b()],Z.prototype,`valueChange`,void 0),Z=I([y({tag:_t,css:[L,tt],delegatesFocus:!0})],Z);let vt=s(`@ntix/components-scorad`,typeof ANTIX_COMPONENTS_SCORAD_LOG_LEVEL>`u`?a.warn:ANTIX_COMPONENTS_SCORAD_LOG_LEVEL);Object.defineProperty(e,`HTMLScoradElement`,{enumerable:!0,get:function(){return Z}}),Object.defineProperty(e,`HTMLScoradExtentElement`,{enumerable:!0,get:function(){return G}}),Object.defineProperty(e,`HTMLScoradIntensityElement`,{enumerable:!0,get:function(){return q}}),Object.defineProperty(e,`HTMLScoradLabelElement`,{enumerable:!0,get:function(){return gt}}),Object.defineProperty(e,`HTMLScoradOptionsElement`,{enumerable:!0,get:function(){return K}}),Object.defineProperty(e,`HTMLScoradSubjectiveElement`,{enumerable:!0,get:function(){return J}}),Object.defineProperty(e,`HTMLScoradWeightingsElement`,{enumerable:!0,get:function(){return Y}}),e.SCORAD_ADULT_WEIGHTS=rt,e.SCORAD_CHILD_WEIGHTS=V,e.SCORAD_DEFAULT=nt,e.SCORAD_EXTENT_DEFAULT=R,e.SCORAD_EXTENT_MAX_VALUE=100,e.SCORAD_INTENSITY_DEFAULT=z,e.SCORAD_INTENSITY_MAX_VALUE=3,e.SCORAD_SUBJECTIVE_DEFAULT=B,e.SCORAD_SUBJECTIVE_MAX_VALUE=10,e.ScoradResources=it,e.componentsScoradLogger=vt,e.getScoradScore=mt,e.selectScoradWeights=U,e.validateScoradData=W});
@@ -1,4 +1,4 @@
1
- import { HTMLComponentElement } from '@ntix/components-core';
1
+ import { HTMLComponentElement, EventEmitter } from '@ntix/components-core';
2
2
  import { ScoradData } from './ScoradData';
3
3
  export interface HTMLScoradElementEventMap extends HTMLElementEventMap {
4
4
  'value-input': CustomEvent<number>;
@@ -10,4 +10,6 @@ export declare class HTMLScoradElement extends HTMLComponentElement<HTMLScoradEl
10
10
  showErrors: boolean;
11
11
  afterRender(): void;
12
12
  render(): import('@ntix/components-renderer').HTMLLiteralResult;
13
+ valueInput: EventEmitter<ScoradData>;
14
+ valueChange: EventEmitter<ScoradData>;
13
15
  }
@@ -6,9 +6,15 @@ export interface HTMLScoradExtentElementEventMap extends HTMLElementEventMap {
6
6
  }
7
7
  export declare class HTMLScoradExtentElement extends HTMLComponentElement<HTMLScoradExtentElementEventMap> {
8
8
  connectedCallback(): void;
9
+ disconnectedCallback(): void;
10
+ private handleFocusIn;
11
+ private handleFocusOut;
9
12
  child: boolean;
13
+ readonly: boolean;
14
+ committedValue: ScoradExtentData;
10
15
  value: ScoradExtentData;
11
16
  score?: number;
17
+ setValue: (value: ScoradExtentData) => void;
12
18
  errors?: Record<string, string>;
13
19
  afterRender(): void;
14
20
  resizeCallback(): void;
@@ -6,6 +6,7 @@ export interface HTMLScoradIntensityElementEventMap extends HTMLElementEventMap
6
6
  }
7
7
  export declare class HTMLScoradIntensityElement extends HTMLComponentElement<HTMLScoradIntensityElementEventMap> {
8
8
  connectedCallback(): void;
9
+ readonly: boolean;
9
10
  value: ScoradIntensityData;
10
11
  score?: number;
11
12
  errors?: Record<string, string>;
@@ -6,10 +6,10 @@ export interface HTMLScoradOptionsElementEventMap extends HTMLElementEventMap {
6
6
  export declare class HTMLScoradOptionsElement extends HTMLComponentElement<HTMLScoradOptionsElementEventMap> {
7
7
  connectedCallback(): void;
8
8
  disconnectedCallback(): void;
9
- _handleFocusIn: () => void;
10
- _handleFocusOut: () => void;
11
- _handleClick: (e: PointerEvent) => void;
12
- _handleKeydown: (e: KeyboardEvent) => void;
9
+ private handleFocusIn;
10
+ private handleFocusOut;
11
+ private handleClick;
12
+ private handleKeydown;
13
13
  min: number;
14
14
  max: number;
15
15
  showHue: boolean;
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@ntix/components-scorad",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
+ "homepage": "https://antix.co.uk/scorad",
4
5
  "type": "module",
5
6
  "publishConfig": {
6
7
  "access": "public"
7
8
  },
8
- "license": "LICENSE.md",
9
+ "license": "SEE LICENSE IN LICENSE.md",
9
10
  "main": "./dist/@ntix/components-scorad.umd.js",
10
11
  "module": "./dist/@ntix/components-scorad.es.js",
11
12
  "types": "./dist/index.d.ts",
@@ -14,17 +15,19 @@
14
15
  "types": "./dist/index.d.ts",
15
16
  "import": "./dist/@ntix/components-scorad.es.js",
16
17
  "require": "./dist/@ntix/components-scorad.umd.js"
17
- },
18
- "./style.css": "./src/vars.css"
18
+ }
19
19
  },
20
20
  "files": [
21
21
  "dist",
22
- "src/vars.css"
22
+ "README.md",
23
+ "LICENSE.md",
24
+ "VALIDATION.md"
23
25
  ],
24
26
  "scripts": {
25
27
  "dev": "vite",
26
28
  "test": "vitest run",
27
29
  "build": "vite build",
28
- "preview": "vite preview"
30
+ "preview": "vite preview",
31
+ "prepublishOnly": "npm run test && npm run build"
29
32
  }
30
33
  }