@ntix/components-scorad 1.0.1 → 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 +32 -0
- package/README.md +73 -0
- package/VALIDATION.md +39 -0
- package/dist/@ntix/components-scorad.es.js +393 -285
- package/dist/@ntix/components-scorad.umd.js +46 -42
- package/dist/component.d.ts +4 -1
- package/dist/extent/component.d.ts +7 -0
- package/dist/intensity/component.d.ts +2 -0
- package/dist/label/component.d.ts +1 -0
- package/dist/options/component.d.ts +4 -6
- package/dist/subjective/component.d.ts +1 -0
- package/dist/validateScoradData.d.ts +1 -0
- package/package.json +9 -5
- package/src/vars.css +0 -56
|
@@ -15,10 +15,10 @@ var cache = /* @__PURE__ */ new Map(), asCachedStyle = (t) => t == null ? [] : (
|
|
|
15
15
|
return { list: (t, n, r) => {
|
|
16
16
|
if (t.dataset[e]) return;
|
|
17
17
|
t.dataset[e] = "true";
|
|
18
|
-
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()), /* @__PURE__ */ new Map()), l = s(r?.gripSelector, "drag-grip"), u = s(r?.itemSelector, "drag-item"), d, f, p, m = 0, h, g,
|
|
18
|
+
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()), /* @__PURE__ */ new Map()), l = s(r?.gripSelector, "drag-grip"), u = s(r?.itemSelector, "drag-item"), d, f, p, m = 0, h, g, _ = (e) => {
|
|
19
19
|
let n = e.composedPath();
|
|
20
|
-
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",
|
|
21
|
-
},
|
|
20
|
+
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", ze), document.addEventListener("pointerup", v));
|
|
21
|
+
}, ze = (e) => {
|
|
22
22
|
if (!p || !f) throw Error("drag item is undefined");
|
|
23
23
|
let n = f.get(p), r = null;
|
|
24
24
|
for (let [t, i] of f.entries()) {
|
|
@@ -36,7 +36,7 @@ var cache = /* @__PURE__ */ new Map(), asCachedStyle = (t) => t == null ? [] : (
|
|
|
36
36
|
p.style.transform = `translateY(${e.clientY - m}px)`;
|
|
37
37
|
}, v = (e) => {
|
|
38
38
|
if (!p) throw Error("drag item is undefined");
|
|
39
|
-
e.stopPropagation(), document.removeEventListener("pointermove",
|
|
39
|
+
e.stopPropagation(), document.removeEventListener("pointermove", ze), document.removeEventListener("pointerup", v), 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);
|
|
40
40
|
}, y = (e) => {
|
|
41
41
|
if (!e.altKey) return;
|
|
42
42
|
let r = (e, r) => {
|
|
@@ -62,8 +62,8 @@ var cache = /* @__PURE__ */ new Map(), asCachedStyle = (t) => t == null ? [] : (
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
|
-
return t.addEventListener("pointerdown",
|
|
66
|
-
t.removeEventListener("pointerdown",
|
|
65
|
+
return t.addEventListener("pointerdown", _), t.addEventListener("keydown", y), () => {
|
|
66
|
+
t.removeEventListener("pointerdown", _), t.removeEventListener("keydown", y);
|
|
67
67
|
};
|
|
68
68
|
} };
|
|
69
69
|
})();
|
|
@@ -112,7 +112,34 @@ var provideLogger = (() => {
|
|
|
112
112
|
if (e) return e;
|
|
113
113
|
n = Object.getPrototypeOf(n);
|
|
114
114
|
}
|
|
115
|
-
}
|
|
115
|
+
};
|
|
116
|
+
function splitPath(e) {
|
|
117
|
+
return e.split(/\.|\[|\]\.?/).filter((e) => e !== "").map((e) => {
|
|
118
|
+
let t = Number.parseInt(e);
|
|
119
|
+
return isNaN(t) ? e : t;
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
function getValue(e, t) {
|
|
123
|
+
let n = splitPath(t);
|
|
124
|
+
for (let t = 0; t < n.length; t++) {
|
|
125
|
+
if (e == null) return;
|
|
126
|
+
let r = n[t];
|
|
127
|
+
e = e[r];
|
|
128
|
+
}
|
|
129
|
+
return e;
|
|
130
|
+
}
|
|
131
|
+
var objectKeys = (e) => Object.keys(e);
|
|
132
|
+
function setValue(e, t, n) {
|
|
133
|
+
let r = t.match(/[^.\[\]]+/g);
|
|
134
|
+
if (!r) return n;
|
|
135
|
+
let i = { ...e }, a = i;
|
|
136
|
+
for (let e = 0; e < r.length - 1; e++) {
|
|
137
|
+
let t = r[e], n = r[e + 1], i = !isNaN(Number(n));
|
|
138
|
+
t in a ? Array.isArray(a[t]) ? a[t] = [...a[t]] : a[t] = { ...a[t] } : a[t] = i ? [] : {}, a = a[t];
|
|
139
|
+
}
|
|
140
|
+
let o = r[r.length - 1];
|
|
141
|
+
return a[o] = n, i;
|
|
142
|
+
}
|
|
116
143
|
function isPromise(e) {
|
|
117
144
|
return e != null && typeof e.then == "function";
|
|
118
145
|
}
|
|
@@ -127,6 +154,7 @@ var Success = class {
|
|
|
127
154
|
orNull() {
|
|
128
155
|
return this.value;
|
|
129
156
|
}
|
|
157
|
+
errors = [];
|
|
130
158
|
}, Failure = class e {
|
|
131
159
|
constructor(e) {
|
|
132
160
|
this.errors = e;
|
|
@@ -257,22 +285,22 @@ function Component(e = { tag: void 0 }) {
|
|
|
257
285
|
r?.read && (this[r.propertyName] = r.read(n));
|
|
258
286
|
}
|
|
259
287
|
};
|
|
260
|
-
let
|
|
288
|
+
let u = o.prototype.connectedCallback ?? n;
|
|
261
289
|
o.prototype.connectedCallback = function() {
|
|
262
290
|
a.forEach((e) => e()), (i.shadowRoot === "open" || i.shadowRoot === "closed") && !this.__shadowRoot && (this.__shadowRoot = this.attachShadow({
|
|
263
291
|
delegatesFocus: i.delegatesFocus,
|
|
264
292
|
mode: i.shadowRoot,
|
|
265
293
|
slotAssignment: "named"
|
|
266
|
-
}), this.__shadowRoot.adoptedStyleSheets = i.css),
|
|
294
|
+
}), this.__shadowRoot.adoptedStyleSheets = i.css), u.call(this), s && s.observe(this);
|
|
267
295
|
};
|
|
268
|
-
let
|
|
296
|
+
let d = o.prototype.disconnectedCallback ?? n;
|
|
269
297
|
o.prototype.disconnectedCallback = function() {
|
|
270
|
-
|
|
298
|
+
d.call(this), s && s.unobserve(this);
|
|
271
299
|
};
|
|
272
|
-
let
|
|
300
|
+
let f = o.prototype.beforeRender ?? n, m = o.prototype.render ?? n, h = o.prototype.afterRender ?? n;
|
|
273
301
|
return o.prototype.render = async function() {
|
|
274
302
|
r.debug("render", this.tagName);
|
|
275
|
-
let e =
|
|
303
|
+
let e = f.call(this);
|
|
276
304
|
if (isPromise(e) && await e, this.__shadowRoot) {
|
|
277
305
|
let e = this.__shadowRoot, t = m.call(this);
|
|
278
306
|
isComponentRender(t) ? await t.render(e) : e.innerHTML = t;
|
|
@@ -526,25 +554,25 @@ var html$1 = freeze(/* @__PURE__ */ "a.abbr.acronym.address.area.article.aside.a
|
|
|
526
554
|
function createDOMPurify() {
|
|
527
555
|
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : getGlobal(), t = (e) => createDOMPurify(e);
|
|
528
556
|
if (t.version = "3.3.0", t.removed = [], !e || !e.document || e.document.nodeType !== NODE_TYPE.document || !e.Element) return t.isSupported = !1, t;
|
|
529
|
-
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 = lookupGetter(m, "cloneNode"), g = lookupGetter(m, "remove"),
|
|
557
|
+
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 = lookupGetter(m, "cloneNode"), g = lookupGetter(m, "remove"), _ = lookupGetter(m, "nextSibling"), ze = lookupGetter(m, "childNodes"), v = lookupGetter(m, "parentNode");
|
|
530
558
|
if (typeof o == "function") {
|
|
531
559
|
let e = n.createElement("template");
|
|
532
560
|
e.content && e.content.ownerDocument && (n = e.content.ownerDocument);
|
|
533
561
|
}
|
|
534
|
-
let y, b = "", { implementation:
|
|
535
|
-
t.isSupported = typeof entries == "function" && typeof v == "function" &&
|
|
536
|
-
let { MUSTACHE_EXPR:
|
|
562
|
+
let y, b = "", { implementation: x, createNodeIterator: Be, createDocumentFragment: Ve, getElementsByTagName: He } = n, { importNode: Ue } = r, S = _createHooksMap();
|
|
563
|
+
t.isSupported = typeof entries == "function" && typeof v == "function" && x && x.createHTMLDocument !== void 0;
|
|
564
|
+
let { MUSTACHE_EXPR: C, ERB_EXPR: w, TMPLIT_EXPR: We, DATA_ATTR: Ge, ARIA_ATTR: Ke, IS_SCRIPT_OR_DATA: qe, ATTR_WHITESPACE: Je, CUSTOM_ELEMENT: Ye } = EXPRESSIONS, { IS_ALLOWED_URI: Xe } = EXPRESSIONS, T = null, Ze = addToSet({}, [
|
|
537
565
|
...html$1,
|
|
538
566
|
...svg$1,
|
|
539
567
|
...svgFilters,
|
|
540
568
|
...mathMl$1,
|
|
541
569
|
...text
|
|
542
|
-
]),
|
|
570
|
+
]), E = null, Qe = addToSet({}, [
|
|
543
571
|
...html$2,
|
|
544
572
|
...svg,
|
|
545
573
|
...mathMl,
|
|
546
574
|
...xml
|
|
547
|
-
]),
|
|
575
|
+
]), D = Object.seal(create(null, {
|
|
548
576
|
tagNameCheck: {
|
|
549
577
|
writable: !0,
|
|
550
578
|
configurable: !1,
|
|
@@ -563,7 +591,7 @@ function createDOMPurify() {
|
|
|
563
591
|
enumerable: !0,
|
|
564
592
|
value: !1
|
|
565
593
|
}
|
|
566
|
-
})),
|
|
594
|
+
})), O = null, $e = null, k = Object.seal(create(null, {
|
|
567
595
|
tagCheck: {
|
|
568
596
|
writable: !0,
|
|
569
597
|
configurable: !1,
|
|
@@ -576,7 +604,7 @@ function createDOMPurify() {
|
|
|
576
604
|
enumerable: !0,
|
|
577
605
|
value: null
|
|
578
606
|
}
|
|
579
|
-
})),
|
|
607
|
+
})), et = !0, A = !0, tt = !1, nt = !0, j = !1, M = !0, N = !1, rt = !1, it = !1, P = !1, F = !1, I = !1, at = !0, ot = !1, st = !0, L = !1, R = {}, z = null, ct = addToSet({}, [
|
|
580
608
|
"annotation-xml",
|
|
581
609
|
"audio",
|
|
582
610
|
"colgroup",
|
|
@@ -609,7 +637,7 @@ function createDOMPurify() {
|
|
|
609
637
|
"source",
|
|
610
638
|
"image",
|
|
611
639
|
"track"
|
|
612
|
-
]),
|
|
640
|
+
]), B = null, dt = addToSet({}, [
|
|
613
641
|
"alt",
|
|
614
642
|
"class",
|
|
615
643
|
"for",
|
|
@@ -624,10 +652,10 @@ function createDOMPurify() {
|
|
|
624
652
|
"value",
|
|
625
653
|
"style",
|
|
626
654
|
"xmlns"
|
|
627
|
-
]),
|
|
628
|
-
B,
|
|
655
|
+
]), V = "http://www.w3.org/1998/Math/MathML", H = "http://www.w3.org/2000/svg", U = "http://www.w3.org/1999/xhtml", W = U, G = !1, ft = null, pt = addToSet({}, [
|
|
629
656
|
V,
|
|
630
|
-
H
|
|
657
|
+
H,
|
|
658
|
+
U
|
|
631
659
|
], stringToString), K = addToSet({}, [
|
|
632
660
|
"mi",
|
|
633
661
|
"mo",
|
|
@@ -645,11 +673,11 @@ function createDOMPurify() {
|
|
|
645
673
|
}, vt = function() {
|
|
646
674
|
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
647
675
|
if (!(X && X === e)) {
|
|
648
|
-
if ((!e || typeof e != "object") && (e = {}), e = clone(e), J = ht.indexOf(e.PARSER_MEDIA_TYPE) === -1 ? "text/html" : e.PARSER_MEDIA_TYPE, Y = J === "application/xhtml+xml" ? stringToString : stringToLowerCase,
|
|
676
|
+
if ((!e || typeof e != "object") && (e = {}), e = clone(e), J = ht.indexOf(e.PARSER_MEDIA_TYPE) === -1 ? "text/html" : e.PARSER_MEDIA_TYPE, Y = J === "application/xhtml+xml" ? stringToString : stringToLowerCase, T = objectHasOwnProperty(e, "ALLOWED_TAGS") ? addToSet({}, e.ALLOWED_TAGS, Y) : Ze, E = objectHasOwnProperty(e, "ALLOWED_ATTR") ? addToSet({}, e.ALLOWED_ATTR, Y) : Qe, ft = objectHasOwnProperty(e, "ALLOWED_NAMESPACES") ? addToSet({}, e.ALLOWED_NAMESPACES, stringToString) : pt, B = objectHasOwnProperty(e, "ADD_URI_SAFE_ATTR") ? addToSet(clone(dt), e.ADD_URI_SAFE_ATTR, Y) : dt, lt = objectHasOwnProperty(e, "ADD_DATA_URI_TAGS") ? addToSet(clone(ut), e.ADD_DATA_URI_TAGS, Y) : ut, z = objectHasOwnProperty(e, "FORBID_CONTENTS") ? addToSet({}, e.FORBID_CONTENTS, Y) : ct, O = objectHasOwnProperty(e, "FORBID_TAGS") ? addToSet({}, e.FORBID_TAGS, Y) : clone({}), $e = objectHasOwnProperty(e, "FORBID_ATTR") ? addToSet({}, e.FORBID_ATTR, Y) : clone({}), R = objectHasOwnProperty(e, "USE_PROFILES") ? e.USE_PROFILES : !1, et = e.ALLOW_ARIA_ATTR !== !1, A = e.ALLOW_DATA_ATTR !== !1, tt = e.ALLOW_UNKNOWN_PROTOCOLS || !1, nt = e.ALLOW_SELF_CLOSE_IN_ATTR !== !1, j = e.SAFE_FOR_TEMPLATES || !1, M = e.SAFE_FOR_XML !== !1, N = e.WHOLE_DOCUMENT || !1, P = e.RETURN_DOM || !1, F = e.RETURN_DOM_FRAGMENT || !1, I = e.RETURN_TRUSTED_TYPE || !1, it = e.FORCE_BODY || !1, at = e.SANITIZE_DOM !== !1, ot = e.SANITIZE_NAMED_PROPS || !1, st = e.KEEP_CONTENT !== !1, L = e.IN_PLACE || !1, Xe = e.ALLOWED_URI_REGEXP || IS_ALLOWED_URI, W = e.NAMESPACE || U, K = e.MATHML_TEXT_INTEGRATION_POINTS || K, q = e.HTML_INTEGRATION_POINTS || q, D = e.CUSTOM_ELEMENT_HANDLING || {}, e.CUSTOM_ELEMENT_HANDLING && _t(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (D.tagNameCheck = e.CUSTOM_ELEMENT_HANDLING.tagNameCheck), e.CUSTOM_ELEMENT_HANDLING && _t(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (D.attributeNameCheck = e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), e.CUSTOM_ELEMENT_HANDLING && typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements == "boolean" && (D.allowCustomizedBuiltInElements = e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), j && (A = !1), F && (P = !0), R && (T = addToSet({}, text), E = [], R.html === !0 && (addToSet(T, html$1), addToSet(E, html$2)), R.svg === !0 && (addToSet(T, svg$1), addToSet(E, svg), addToSet(E, xml)), R.svgFilters === !0 && (addToSet(T, svgFilters), addToSet(E, svg), addToSet(E, xml)), R.mathMl === !0 && (addToSet(T, mathMl$1), addToSet(E, mathMl), addToSet(E, xml))), e.ADD_TAGS && (typeof e.ADD_TAGS == "function" ? k.tagCheck = e.ADD_TAGS : (T === Ze && (T = clone(T)), addToSet(T, e.ADD_TAGS, Y))), e.ADD_ATTR && (typeof e.ADD_ATTR == "function" ? k.attributeCheck = e.ADD_ATTR : (E === Qe && (E = clone(E)), addToSet(E, e.ADD_ATTR, Y))), e.ADD_URI_SAFE_ATTR && addToSet(B, e.ADD_URI_SAFE_ATTR, Y), e.FORBID_CONTENTS && (z === ct && (z = clone(z)), addToSet(z, e.FORBID_CONTENTS, Y)), st && (T["#text"] = !0), N && addToSet(T, [
|
|
649
677
|
"html",
|
|
650
678
|
"head",
|
|
651
679
|
"body"
|
|
652
|
-
]),
|
|
680
|
+
]), T.table && (addToSet(T, ["tbody"]), delete O.tbody), e.TRUSTED_TYPES_POLICY) {
|
|
653
681
|
if (typeof e.TRUSTED_TYPES_POLICY.createHTML != "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.");
|
|
654
682
|
if (typeof e.TRUSTED_TYPES_POLICY.createScriptURL != "function") throw typeErrorCreate("TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.");
|
|
655
683
|
y = e.TRUSTED_TYPES_POLICY, b = y.createHTML("");
|
|
@@ -663,11 +691,11 @@ function createDOMPurify() {
|
|
|
663
691
|
]), bt = addToSet({}, [...mathMl$1, ...mathMlDisallowed]), xt = function(e) {
|
|
664
692
|
let t = v(e);
|
|
665
693
|
(!t || !t.tagName) && (t = {
|
|
666
|
-
namespaceURI:
|
|
694
|
+
namespaceURI: W,
|
|
667
695
|
tagName: "template"
|
|
668
696
|
});
|
|
669
697
|
let n = stringToLowerCase(e.tagName), r = stringToLowerCase(t.tagName);
|
|
670
|
-
return
|
|
698
|
+
return ft[e.namespaceURI] ? e.namespaceURI === H ? t.namespaceURI === U ? n === "svg" : t.namespaceURI === V ? n === "svg" && (r === "annotation-xml" || K[r]) : !!yt[n] : e.namespaceURI === V ? t.namespaceURI === U ? n === "math" : t.namespaceURI === H ? n === "math" && q[r] : !!bt[n] : e.namespaceURI === U ? t.namespaceURI === H && !q[r] || t.namespaceURI === V && !K[r] ? !1 : !bt[n] && (mt[n] || !yt[n]) : !!(J === "application/xhtml+xml" && ft[e.namespaceURI]) : !1;
|
|
671
699
|
}, Z = function(e) {
|
|
672
700
|
arrayPush(t.removed, { element: e });
|
|
673
701
|
try {
|
|
@@ -687,7 +715,7 @@ function createDOMPurify() {
|
|
|
687
715
|
from: n
|
|
688
716
|
});
|
|
689
717
|
}
|
|
690
|
-
if (n.removeAttribute(e), e === "is") if (
|
|
718
|
+
if (n.removeAttribute(e), e === "is") if (P || F) try {
|
|
691
719
|
Z(n);
|
|
692
720
|
} catch {}
|
|
693
721
|
else try {
|
|
@@ -695,26 +723,26 @@ function createDOMPurify() {
|
|
|
695
723
|
} catch {}
|
|
696
724
|
}, St = function(e) {
|
|
697
725
|
let t = null, r = null;
|
|
698
|
-
if (
|
|
726
|
+
if (it) e = "<remove></remove>" + e;
|
|
699
727
|
else {
|
|
700
728
|
let t = stringMatch(e, /^[\r\n\t ]+/);
|
|
701
729
|
r = t && t[0];
|
|
702
730
|
}
|
|
703
|
-
J === "application/xhtml+xml" &&
|
|
731
|
+
J === "application/xhtml+xml" && W === U && (e = "<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>" + e + "</body></html>");
|
|
704
732
|
let i = y ? y.createHTML(e) : e;
|
|
705
|
-
if (
|
|
733
|
+
if (W === U) try {
|
|
706
734
|
t = new f().parseFromString(i, J);
|
|
707
735
|
} catch {}
|
|
708
736
|
if (!t || !t.documentElement) {
|
|
709
|
-
t =
|
|
737
|
+
t = x.createDocument(W, "template", null);
|
|
710
738
|
try {
|
|
711
|
-
t.documentElement.innerHTML =
|
|
739
|
+
t.documentElement.innerHTML = G ? b : i;
|
|
712
740
|
} catch {}
|
|
713
741
|
}
|
|
714
742
|
let a = t.body || t.documentElement;
|
|
715
|
-
return e && r && a.insertBefore(n.createTextNode(r), a.childNodes[0] || null),
|
|
743
|
+
return e && r && a.insertBefore(n.createTextNode(r), a.childNodes[0] || null), W === U ? He.call(t, N ? "html" : "body")[0] : N ? t.documentElement : a;
|
|
716
744
|
}, Ct = function(e) {
|
|
717
|
-
return
|
|
745
|
+
return Be.call(e.ownerDocument || e, e, l.SHOW_ELEMENT | l.SHOW_COMMENT | l.SHOW_TEXT | l.SHOW_PROCESSING_INSTRUCTION | l.SHOW_CDATA_SECTION, null);
|
|
718
746
|
}, wt = function(e) {
|
|
719
747
|
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");
|
|
720
748
|
}, Tt = function(e) {
|
|
@@ -727,57 +755,57 @@ function createDOMPurify() {
|
|
|
727
755
|
}
|
|
728
756
|
let Et = function(e) {
|
|
729
757
|
let n = null;
|
|
730
|
-
if ($(
|
|
758
|
+
if ($(S.beforeSanitizeElements, e, null), wt(e)) return Z(e), !0;
|
|
731
759
|
let r = Y(e.nodeName);
|
|
732
|
-
if ($(
|
|
760
|
+
if ($(S.uponSanitizeElement, e, {
|
|
733
761
|
tagName: r,
|
|
734
|
-
allowedTags:
|
|
735
|
-
}),
|
|
736
|
-
if (!(
|
|
737
|
-
if (!
|
|
738
|
-
if (
|
|
739
|
-
let t = v(e) || e.parentNode, n =
|
|
762
|
+
allowedTags: T
|
|
763
|
+
}), M && e.hasChildNodes() && !Tt(e.firstElementChild) && regExpTest(/<[/\w!]/g, e.innerHTML) && regExpTest(/<[/\w!]/g, e.textContent) || e.nodeType === NODE_TYPE.progressingInstruction || M && e.nodeType === NODE_TYPE.comment && regExpTest(/<[/\w]/g, e.data)) return Z(e), !0;
|
|
764
|
+
if (!(k.tagCheck instanceof Function && k.tagCheck(r)) && (!T[r] || O[r])) {
|
|
765
|
+
if (!O[r] && Ot(r) && (D.tagNameCheck instanceof RegExp && regExpTest(D.tagNameCheck, r) || D.tagNameCheck instanceof Function && D.tagNameCheck(r))) return !1;
|
|
766
|
+
if (st && !z[r]) {
|
|
767
|
+
let t = v(e) || e.parentNode, n = ze(e) || e.childNodes;
|
|
740
768
|
if (n && t) {
|
|
741
769
|
let r = n.length;
|
|
742
770
|
for (let i = r - 1; i >= 0; --i) {
|
|
743
771
|
let r = h(n[i], !0);
|
|
744
|
-
r.__removalCount = (e.__removalCount || 0) + 1, t.insertBefore(r,
|
|
772
|
+
r.__removalCount = (e.__removalCount || 0) + 1, t.insertBefore(r, _(e));
|
|
745
773
|
}
|
|
746
774
|
}
|
|
747
775
|
}
|
|
748
776
|
return Z(e), !0;
|
|
749
777
|
}
|
|
750
|
-
return e instanceof c && !xt(e) || (r === "noscript" || r === "noembed" || r === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, e.innerHTML) ? (Z(e), !0) : (
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
778
|
+
return e instanceof c && !xt(e) || (r === "noscript" || r === "noembed" || r === "noframes") && regExpTest(/<\/no(script|embed|frames)/i, e.innerHTML) ? (Z(e), !0) : (j && e.nodeType === NODE_TYPE.text && (n = e.textContent, arrayForEach([
|
|
779
|
+
C,
|
|
780
|
+
w,
|
|
781
|
+
We
|
|
754
782
|
], (e) => {
|
|
755
783
|
n = stringReplace(n, e, " ");
|
|
756
|
-
}), e.textContent !== n && (arrayPush(t.removed, { element: e.cloneNode() }), e.textContent = n)), $(
|
|
784
|
+
}), e.textContent !== n && (arrayPush(t.removed, { element: e.cloneNode() }), e.textContent = n)), $(S.afterSanitizeElements, e, null), !1);
|
|
757
785
|
}, Dt = function(e, t, r) {
|
|
758
|
-
if (
|
|
759
|
-
if (!(
|
|
760
|
-
if (!
|
|
761
|
-
if (!(Ot(e) && (
|
|
762
|
-
} else if (!
|
|
786
|
+
if (at && (t === "id" || t === "name") && (r in n || r in gt)) return !1;
|
|
787
|
+
if (!(A && !$e[t] && regExpTest(Ge, t)) && !(et && regExpTest(Ke, t)) && !(k.attributeCheck instanceof Function && k.attributeCheck(t, e))) {
|
|
788
|
+
if (!E[t] || $e[t]) {
|
|
789
|
+
if (!(Ot(e) && (D.tagNameCheck instanceof RegExp && regExpTest(D.tagNameCheck, e) || D.tagNameCheck instanceof Function && D.tagNameCheck(e)) && (D.attributeNameCheck instanceof RegExp && regExpTest(D.attributeNameCheck, t) || D.attributeNameCheck instanceof Function && D.attributeNameCheck(t, e)) || t === "is" && D.allowCustomizedBuiltInElements && (D.tagNameCheck instanceof RegExp && regExpTest(D.tagNameCheck, r) || D.tagNameCheck instanceof Function && D.tagNameCheck(r)))) return !1;
|
|
790
|
+
} else if (!B[t] && !regExpTest(Xe, stringReplace(r, Je, "")) && !((t === "src" || t === "xlink:href" || t === "href") && e !== "script" && stringIndexOf(r, "data:") === 0 && lt[e]) && !(tt && !regExpTest(qe, stringReplace(r, Je, ""))) && r) return !1;
|
|
763
791
|
}
|
|
764
792
|
return !0;
|
|
765
793
|
}, Ot = function(e) {
|
|
766
|
-
return e !== "annotation-xml" && stringMatch(e,
|
|
794
|
+
return e !== "annotation-xml" && stringMatch(e, Ye);
|
|
767
795
|
}, kt = function(e) {
|
|
768
|
-
$(
|
|
796
|
+
$(S.beforeSanitizeAttributes, e, null);
|
|
769
797
|
let { attributes: n } = e;
|
|
770
798
|
if (!n || wt(e)) return;
|
|
771
799
|
let r = {
|
|
772
800
|
attrName: "",
|
|
773
801
|
attrValue: "",
|
|
774
802
|
keepAttr: !0,
|
|
775
|
-
allowedAttributes:
|
|
803
|
+
allowedAttributes: E,
|
|
776
804
|
forceKeepAttr: void 0
|
|
777
805
|
}, i = n.length;
|
|
778
806
|
for (; i--;) {
|
|
779
807
|
let { name: a, namespaceURI: o, value: s } = n[i], c = Y(a), l = s, u = a === "value" ? l : stringTrim(l);
|
|
780
|
-
if (r.attrName = c, r.attrValue = u, r.keepAttr = !0, r.forceKeepAttr = void 0, $(
|
|
808
|
+
if (r.attrName = c, r.attrValue = u, r.keepAttr = !0, r.forceKeepAttr = void 0, $(S.uponSanitizeAttribute, e, r), u = r.attrValue, ot && (c === "id" || c === "name") && (Q(a, e), u = "user-content-" + u), M && regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i, u)) {
|
|
781
809
|
Q(a, e);
|
|
782
810
|
continue;
|
|
783
811
|
}
|
|
@@ -790,14 +818,14 @@ function createDOMPurify() {
|
|
|
790
818
|
Q(a, e);
|
|
791
819
|
continue;
|
|
792
820
|
}
|
|
793
|
-
if (!
|
|
821
|
+
if (!nt && regExpTest(/\/>/i, u)) {
|
|
794
822
|
Q(a, e);
|
|
795
823
|
continue;
|
|
796
824
|
}
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
825
|
+
j && arrayForEach([
|
|
826
|
+
C,
|
|
827
|
+
w,
|
|
828
|
+
We
|
|
801
829
|
], (e) => {
|
|
802
830
|
u = stringReplace(u, e, " ");
|
|
803
831
|
});
|
|
@@ -820,63 +848,63 @@ function createDOMPurify() {
|
|
|
820
848
|
Q(a, e);
|
|
821
849
|
}
|
|
822
850
|
}
|
|
823
|
-
$(
|
|
851
|
+
$(S.afterSanitizeAttributes, e, null);
|
|
824
852
|
}, At = function e(t) {
|
|
825
853
|
let n = null, r = Ct(t);
|
|
826
|
-
for ($(
|
|
827
|
-
$(
|
|
854
|
+
for ($(S.beforeSanitizeShadowDOM, t, null); n = r.nextNode();) $(S.uponSanitizeShadowNode, n, null), Et(n), kt(n), n.content instanceof a && e(n.content);
|
|
855
|
+
$(S.afterSanitizeShadowDOM, t, null);
|
|
828
856
|
};
|
|
829
857
|
return t.sanitize = function(e) {
|
|
830
858
|
let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, i = null, o = null, c = null, l = null;
|
|
831
|
-
if (
|
|
859
|
+
if (G = !e, G && (e = "<!-->"), typeof e != "string" && !Tt(e)) if (typeof e.toString == "function") {
|
|
832
860
|
if (e = e.toString(), typeof e != "string") throw typeErrorCreate("dirty is not a string, aborting");
|
|
833
861
|
} else throw typeErrorCreate("toString is not a function");
|
|
834
862
|
if (!t.isSupported) return e;
|
|
835
|
-
if (
|
|
863
|
+
if (rt || vt(n), t.removed = [], typeof e == "string" && (L = !1), L) {
|
|
836
864
|
if (e.nodeName) {
|
|
837
865
|
let t = Y(e.nodeName);
|
|
838
|
-
if (!
|
|
866
|
+
if (!T[t] || O[t]) throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place");
|
|
839
867
|
}
|
|
840
868
|
} else if (e instanceof s) i = St("<!---->"), o = i.ownerDocument.importNode(e, !0), o.nodeType === NODE_TYPE.element && o.nodeName === "BODY" || o.nodeName === "HTML" ? i = o : i.appendChild(o);
|
|
841
869
|
else {
|
|
842
|
-
if (!
|
|
843
|
-
if (i = St(e), !i) return
|
|
870
|
+
if (!P && !j && !N && e.indexOf("<") === -1) return y && I ? y.createHTML(e) : e;
|
|
871
|
+
if (i = St(e), !i) return P ? null : I ? b : "";
|
|
844
872
|
}
|
|
845
|
-
i &&
|
|
873
|
+
i && it && Z(i.firstChild);
|
|
846
874
|
let u = Ct(L ? e : i);
|
|
847
875
|
for (; c = u.nextNode();) Et(c), kt(c), c.content instanceof a && At(c.content);
|
|
848
876
|
if (L) return e;
|
|
849
|
-
if (
|
|
850
|
-
if (
|
|
877
|
+
if (P) {
|
|
878
|
+
if (F) for (l = Ve.call(i.ownerDocument); i.firstChild;) l.appendChild(i.firstChild);
|
|
851
879
|
else l = i;
|
|
852
|
-
return (
|
|
880
|
+
return (E.shadowroot || E.shadowrootmode) && (l = Ue.call(r, l, !0)), l;
|
|
853
881
|
}
|
|
854
|
-
let d =
|
|
855
|
-
return
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
882
|
+
let d = N ? i.outerHTML : i.innerHTML;
|
|
883
|
+
return N && T["!doctype"] && i.ownerDocument && i.ownerDocument.doctype && i.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, i.ownerDocument.doctype.name) && (d = "<!DOCTYPE " + i.ownerDocument.doctype.name + ">\n" + d), j && arrayForEach([
|
|
884
|
+
C,
|
|
885
|
+
w,
|
|
886
|
+
We
|
|
859
887
|
], (e) => {
|
|
860
888
|
d = stringReplace(d, e, " ");
|
|
861
|
-
}), y &&
|
|
889
|
+
}), y && I ? y.createHTML(d) : d;
|
|
862
890
|
}, t.setConfig = function() {
|
|
863
|
-
vt(arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}),
|
|
891
|
+
vt(arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}), rt = !0;
|
|
864
892
|
}, t.clearConfig = function() {
|
|
865
|
-
X = null,
|
|
893
|
+
X = null, rt = !1;
|
|
866
894
|
}, t.isValidAttribute = function(e, t, n) {
|
|
867
895
|
return X || vt({}), Dt(Y(e), Y(t), n);
|
|
868
896
|
}, t.addHook = function(e, t) {
|
|
869
|
-
typeof t == "function" && arrayPush(
|
|
897
|
+
typeof t == "function" && arrayPush(S[e], t);
|
|
870
898
|
}, t.removeHook = function(e, t) {
|
|
871
899
|
if (t !== void 0) {
|
|
872
|
-
let n = arrayLastIndexOf(
|
|
873
|
-
return n === -1 ? void 0 : arraySplice(
|
|
900
|
+
let n = arrayLastIndexOf(S[e], t);
|
|
901
|
+
return n === -1 ? void 0 : arraySplice(S[e], n, 1)[0];
|
|
874
902
|
}
|
|
875
|
-
return arrayPop(
|
|
903
|
+
return arrayPop(S[e]);
|
|
876
904
|
}, t.removeHooks = function(e) {
|
|
877
|
-
|
|
905
|
+
S[e] = [];
|
|
878
906
|
}, t.removeAllHooks = function() {
|
|
879
|
-
|
|
907
|
+
S = _createHooksMap();
|
|
880
908
|
}, t;
|
|
881
909
|
}
|
|
882
910
|
var purify = createDOMPurify(), HTMLConfig = { sanitize: (e) => purify.sanitize(e) }, html = (e, ...t) => new HTMLLiteralResult(e.reduce((e, n, r) => {
|
|
@@ -901,24 +929,24 @@ function __decorate(e, t, n, r) {
|
|
|
901
929
|
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);
|
|
902
930
|
return i > 3 && a && Object.defineProperty(t, n, a), a;
|
|
903
931
|
}
|
|
904
|
-
var component_default
|
|
932
|
+
var component_default = ":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%}", host_default = "*{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%)}}";
|
|
905
933
|
const SCORAD_EXTENT_MAX_VALUE = 100, SCORAD_INTENSITY_MAX_VALUE = 3, SCORAD_SUBJECTIVE_MAX_VALUE = 10, SCORAD_EXTENT_DEFAULT = {
|
|
906
|
-
headNeck:
|
|
907
|
-
anteriorTrunk:
|
|
908
|
-
posteriorTrunk:
|
|
909
|
-
upperLimbs:
|
|
910
|
-
lowerLimbs:
|
|
911
|
-
genitals:
|
|
934
|
+
headNeck: null,
|
|
935
|
+
anteriorTrunk: null,
|
|
936
|
+
posteriorTrunk: null,
|
|
937
|
+
upperLimbs: null,
|
|
938
|
+
lowerLimbs: null,
|
|
939
|
+
genitals: null
|
|
912
940
|
}, SCORAD_INTENSITY_DEFAULT = {
|
|
913
|
-
erythema:
|
|
914
|
-
oedemaPapulation:
|
|
915
|
-
oozingCrusting:
|
|
916
|
-
excoriations:
|
|
917
|
-
lichenification:
|
|
918
|
-
xerosis:
|
|
941
|
+
erythema: null,
|
|
942
|
+
oedemaPapulation: null,
|
|
943
|
+
oozingCrusting: null,
|
|
944
|
+
excoriations: null,
|
|
945
|
+
lichenification: null,
|
|
946
|
+
xerosis: null
|
|
919
947
|
}, SCORAD_SUBJECTIVE_DEFAULT = {
|
|
920
|
-
pruritus:
|
|
921
|
-
sleeplessness:
|
|
948
|
+
pruritus: null,
|
|
949
|
+
sleeplessness: null
|
|
922
950
|
}, SCORAD_DEFAULT = {
|
|
923
951
|
child: !1,
|
|
924
952
|
extent: SCORAD_EXTENT_DEFAULT,
|
|
@@ -939,13 +967,105 @@ const SCORAD_EXTENT_MAX_VALUE = 100, SCORAD_INTENSITY_MAX_VALUE = 3, SCORAD_SUBJ
|
|
|
939
967
|
lowerLimbs: .28,
|
|
940
968
|
genitals: 0
|
|
941
969
|
};
|
|
942
|
-
var component_default$6 = ":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{width:
|
|
970
|
+
var component_default$6 = ":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}";
|
|
971
|
+
const selectScoradWeights = (e) => e?.child ? SCORAD_CHILD_WEIGHTS : SCORAD_ADULT_WEIGHTS, validateScoradData = (e) => {
|
|
972
|
+
let t = [], n = (e, n, r) => {
|
|
973
|
+
for (let [i, a] of Object.entries(e)) validateScoradData.isValid(a, r) || t.push(validateScoradData.formatError(n, i, r, a));
|
|
974
|
+
}, r = { ...e?.extent ?? SCORAD_EXTENT_DEFAULT }, i = selectScoradWeights(e);
|
|
975
|
+
for (let [e, t] of Object.entries(i)) t === 0 && delete r[e];
|
|
976
|
+
return n(r, "extent", 100), n(e?.intensity ?? SCORAD_INTENSITY_DEFAULT, "intensity", 3), n(e?.subjective ?? SCORAD_SUBJECTIVE_DEFAULT, "subjective", 10), t.length ? Result.Fail(t) : Result.Ok(e);
|
|
977
|
+
};
|
|
978
|
+
validateScoradData.formatError = (e, t, n, r) => `${e}.${t}: must be between 0 and ${n}, but received ${r}.`, validateScoradData.isValid = (e, t) => typeof e == "number" && Number.isFinite(e) && e >= 0 && e <= t;
|
|
979
|
+
const ScoradResources = {
|
|
980
|
+
child: {
|
|
981
|
+
text: "child",
|
|
982
|
+
description: "use weightings for a child"
|
|
983
|
+
},
|
|
984
|
+
extent: {
|
|
985
|
+
headNeck: {
|
|
986
|
+
text: "head",
|
|
987
|
+
description: "percentage of the head and neck area affected"
|
|
988
|
+
},
|
|
989
|
+
anteriorTrunk: {
|
|
990
|
+
text: "trunk",
|
|
991
|
+
description: "percentage of the front torso area affected"
|
|
992
|
+
},
|
|
993
|
+
posteriorTrunk: {
|
|
994
|
+
text: "back",
|
|
995
|
+
description: "percentage of the back torso area affected"
|
|
996
|
+
},
|
|
997
|
+
genitals: {
|
|
998
|
+
text: "genitals",
|
|
999
|
+
description: "percentage of the genital area affected"
|
|
1000
|
+
},
|
|
1001
|
+
upperLimbs: {
|
|
1002
|
+
text: "arms",
|
|
1003
|
+
description: "percentage of the arms and shoulders affected"
|
|
1004
|
+
},
|
|
1005
|
+
lowerLimbs: {
|
|
1006
|
+
text: "legs",
|
|
1007
|
+
description: "percentage of the legs and hips affected"
|
|
1008
|
+
}
|
|
1009
|
+
},
|
|
1010
|
+
intensity: {
|
|
1011
|
+
erythema: {
|
|
1012
|
+
text: "Erythema",
|
|
1013
|
+
description: "redness of the skin"
|
|
1014
|
+
},
|
|
1015
|
+
oedemaPapulation: {
|
|
1016
|
+
text: "Oedema/Papulation",
|
|
1017
|
+
description: "swelling and small bumps"
|
|
1018
|
+
},
|
|
1019
|
+
oozingCrusting: {
|
|
1020
|
+
text: "Oozing/Crusting",
|
|
1021
|
+
description: "fluid leakage and dried scabs"
|
|
1022
|
+
},
|
|
1023
|
+
excoriations: {
|
|
1024
|
+
text: "Excoriations",
|
|
1025
|
+
description: "scratch marks"
|
|
1026
|
+
},
|
|
1027
|
+
lichenification: {
|
|
1028
|
+
text: "Lichenification",
|
|
1029
|
+
description: "skin thickening and hardening"
|
|
1030
|
+
},
|
|
1031
|
+
xerosis: {
|
|
1032
|
+
text: "Xerosis",
|
|
1033
|
+
description: "dryness of the skin"
|
|
1034
|
+
}
|
|
1035
|
+
},
|
|
1036
|
+
subjective: {
|
|
1037
|
+
pruritus: {
|
|
1038
|
+
text: "Pruritus",
|
|
1039
|
+
description: "itching"
|
|
1040
|
+
},
|
|
1041
|
+
sleeplessness: {
|
|
1042
|
+
text: "Sleeplessness",
|
|
1043
|
+
description: "difficulty sleeping"
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
1046
|
+
};
|
|
1047
|
+
var tag$6 = "scorad-extent", HTMLScoradExtentElement = class extends HTMLComponentElement {
|
|
943
1048
|
connectedCallback() {
|
|
944
|
-
this.render();
|
|
1049
|
+
this.render(), this.addEventListener("focusin", this.handleFocusIn, { once: !0 });
|
|
1050
|
+
}
|
|
1051
|
+
disconnectedCallback() {
|
|
1052
|
+
this.removeEventListener("focusin", this.handleFocusIn);
|
|
945
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
|
+
};
|
|
946
1060
|
child = !1;
|
|
1061
|
+
readonly = !1;
|
|
1062
|
+
committedValue = SCORAD_EXTENT_DEFAULT;
|
|
947
1063
|
value = SCORAD_EXTENT_DEFAULT;
|
|
948
1064
|
score;
|
|
1065
|
+
setValue = (e) => {
|
|
1066
|
+
this.value = e, this.errors = void 0, this.valueInput(this.value);
|
|
1067
|
+
};
|
|
1068
|
+
errors;
|
|
949
1069
|
afterRender() {
|
|
950
1070
|
if (!this.value) {
|
|
951
1071
|
this.value = SCORAD_EXTENT_DEFAULT;
|
|
@@ -957,45 +1077,45 @@ var component_default$6 = ":host{--host-display:inline-flex;--host-font-size:1re
|
|
|
957
1077
|
n.style.setProperty("--extent", `${t}%`), n.style.setProperty("--opacity", `${(t ?? 0) / 100}`);
|
|
958
1078
|
let r = n.querySelector("text");
|
|
959
1079
|
if (!r) return;
|
|
960
|
-
r.textContent = t
|
|
1080
|
+
r.textContent = validateScoradData.isValid(t, 100) ? `${t}%` : ScoradResources.extent[e].text, n.querySelectorAll("path").forEach((t) => t.style.stroke = this.errors?.[e] == null ? "" : "var(--host-error-color)");
|
|
961
1081
|
}
|
|
962
1082
|
}
|
|
963
1083
|
resizeCallback() {
|
|
964
1084
|
if (!this.shadowRoot) return;
|
|
965
1085
|
let e = this.shadowRoot.querySelector("svg");
|
|
966
1086
|
if (!e) return;
|
|
967
|
-
let t = Math.round(
|
|
1087
|
+
let t = Math.round(19e3 / e.clientWidth) / 100;
|
|
968
1088
|
this.style.setProperty("--host-font-size", `${t}rem`);
|
|
969
1089
|
}
|
|
970
1090
|
render() {
|
|
971
1091
|
let e = (e) => {
|
|
972
1092
|
let t = (t) => {
|
|
973
1093
|
let n = Math.round(Math.min(100, Math.max(0, t)));
|
|
974
|
-
this.
|
|
1094
|
+
this.setValue({
|
|
975
1095
|
...this.value,
|
|
976
1096
|
[e]: n
|
|
977
|
-
}
|
|
1097
|
+
});
|
|
978
1098
|
};
|
|
979
1099
|
return (n) => {
|
|
980
1100
|
if (!n) return;
|
|
981
1101
|
"ontouchstart" in window && n.addEventListener("touchstart", (e) => {
|
|
982
1102
|
e.preventDefault();
|
|
983
1103
|
}, { passive: !1 }), n.style.touchAction = "none", n.addEventListener("pointerdown", (r) => {
|
|
984
|
-
r.
|
|
1104
|
+
r.stopPropagation(), n.focus();
|
|
985
1105
|
let i = this.value[e], a = r.clientY, o = (e) => {
|
|
986
1106
|
e.preventDefault();
|
|
987
|
-
let n = a - e.clientY;
|
|
1107
|
+
let n = (a - e.clientY) / 2;
|
|
988
1108
|
t(Math.round((i + n) / 5) * 5);
|
|
989
1109
|
}, s = () => {
|
|
990
1110
|
document.removeEventListener("pointermove", o), document.removeEventListener("pointerup", s), document.removeEventListener("pointercancel", s);
|
|
991
1111
|
};
|
|
992
|
-
document.addEventListener("pointermove", o), document.addEventListener("pointerup", s), document.addEventListener("pointercancel", s);
|
|
1112
|
+
document.addEventListener("pointermove", o), document.addEventListener("pointerup", s), document.addEventListener("pointercancel", s), o(r);
|
|
993
1113
|
});
|
|
994
1114
|
let r, i;
|
|
995
1115
|
n.addEventListener("focus", () => {
|
|
996
1116
|
i = "000", r = this.value[e];
|
|
997
1117
|
}), n.addEventListener("keydown", (n) => {
|
|
998
|
-
let a = this.value[e], o = n.shiftKey ? 5 : 1;
|
|
1118
|
+
let a = validateScoradData.isValid(this.value[e], 100) ? this.value[e] : 0, o = n.shiftKey ? 5 : 1;
|
|
999
1119
|
switch (n.key) {
|
|
1000
1120
|
case "0":
|
|
1001
1121
|
case "1":
|
|
@@ -1027,7 +1147,7 @@ var component_default$6 = ":host{--host-display:inline-flex;--host-font-size:1re
|
|
|
1027
1147
|
t && (t.textContent = `${this.value[e]}%`);
|
|
1028
1148
|
};
|
|
1029
1149
|
return html`
|
|
1030
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
1150
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 190 240">
|
|
1031
1151
|
<g ${e("headNeck")}
|
|
1032
1152
|
class="head-neck" tabindex="0">
|
|
1033
1153
|
<text x="40" y="20" ${t("headNeck")}>--</text>
|
|
@@ -1072,7 +1192,7 @@ var component_default$6 = ":host{--host-display:inline-flex;--host-font-size:1re
|
|
|
1072
1192
|
<path d="M120,139 100,154 100,230 A1,1 0,0,0 120,230Z"></path>
|
|
1073
1193
|
</g>
|
|
1074
1194
|
</svg>
|
|
1075
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
1195
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 190 240">
|
|
1076
1196
|
<g class="head-neck">
|
|
1077
1197
|
<path d="M100,45 100,49 Q95,48 90,49 L90,45 A20,22.5 1,1,1 100,45Z"></path>
|
|
1078
1198
|
</g>
|
|
@@ -1082,8 +1202,8 @@ var component_default$6 = ":host{--host-display:inline-flex;--host-font-size:1re
|
|
|
1082
1202
|
</g>
|
|
1083
1203
|
<g ${e("posteriorTrunk")}
|
|
1084
1204
|
class="posterior-trunk" tabindex="0">
|
|
1085
|
-
<text x="
|
|
1086
|
-
<line x1="
|
|
1205
|
+
<text x="150" y="50" ${t("posteriorTrunk")}>--</text>
|
|
1206
|
+
<line x1="145" y1="46" x2="115" y2="52"></line>
|
|
1087
1207
|
<path d="M80,58 Q95,52 110,58 L120,130 Q110,152 95,142 L95,142 Q80,152 70,130 L80,60Z"></path>
|
|
1088
1208
|
</g>
|
|
1089
1209
|
<g class="lower-limbs">
|
|
@@ -1096,106 +1216,40 @@ var component_default$6 = ":host{--host-display:inline-flex;--host-font-size:1re
|
|
|
1096
1216
|
valueInput;
|
|
1097
1217
|
valueChange;
|
|
1098
1218
|
};
|
|
1099
|
-
__decorate([Att(AttBoolean)], HTMLScoradExtentElement.prototype, "child", void 0), __decorate([
|
|
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({
|
|
1223
|
+
name: "has-errors",
|
|
1224
|
+
write: (e) => e == null ? void 0 : "",
|
|
1225
|
+
read: !1
|
|
1226
|
+
})], HTMLScoradExtentElement.prototype, "errors", void 0), __decorate([Watch("value", "errors")], HTMLScoradExtentElement.prototype, "afterRender", null), __decorate([Watch("child")], HTMLScoradExtentElement.prototype, "render", null), __decorate([Event()], HTMLScoradExtentElement.prototype, "valueInput", void 0), __decorate([Event()], HTMLScoradExtentElement.prototype, "valueChange", void 0), HTMLScoradExtentElement = __decorate([Component({
|
|
1100
1227
|
tag: tag$6,
|
|
1101
1228
|
css: [host_default, component_default$6],
|
|
1102
1229
|
delegatesFocus: !0
|
|
1103
1230
|
})], HTMLScoradExtentElement);
|
|
1104
|
-
var component_default$4 = ":host{--host-display:inline-flex;flex-direction:column;position:relative}scorad-options{margin-left:auto}";
|
|
1105
|
-
const ScoradResources = {
|
|
1106
|
-
child: {
|
|
1107
|
-
text: "child",
|
|
1108
|
-
description: "use weightings for a child"
|
|
1109
|
-
},
|
|
1110
|
-
extent: {
|
|
1111
|
-
headNeck: {
|
|
1112
|
-
text: "Head/Neck",
|
|
1113
|
-
description: "percentage of the head and neck area affected"
|
|
1114
|
-
},
|
|
1115
|
-
anteriorTrunk: {
|
|
1116
|
-
text: "Anterior Trunk",
|
|
1117
|
-
description: "percentage of the front torso area affected"
|
|
1118
|
-
},
|
|
1119
|
-
posteriorTrunk: {
|
|
1120
|
-
text: "Posterior Trunk",
|
|
1121
|
-
description: "percentage of the back torso area affected"
|
|
1122
|
-
},
|
|
1123
|
-
genitals: {
|
|
1124
|
-
text: "Genitals",
|
|
1125
|
-
description: "percentage of the genital area affected"
|
|
1126
|
-
},
|
|
1127
|
-
upperLimbs: {
|
|
1128
|
-
text: "Upper Limbs",
|
|
1129
|
-
description: "percentage of the arms and shoulders affected"
|
|
1130
|
-
},
|
|
1131
|
-
lowerLimbs: {
|
|
1132
|
-
text: "Lower Limbs",
|
|
1133
|
-
description: "percentage of the legs and hips affected"
|
|
1134
|
-
}
|
|
1135
|
-
},
|
|
1136
|
-
intensity: {
|
|
1137
|
-
erythema: {
|
|
1138
|
-
text: "Erythema",
|
|
1139
|
-
description: "redness of the skin"
|
|
1140
|
-
},
|
|
1141
|
-
oedemaPapulation: {
|
|
1142
|
-
text: "Oedema/Papulation",
|
|
1143
|
-
description: "swelling and small, raised bumps"
|
|
1144
|
-
},
|
|
1145
|
-
oozingCrusting: {
|
|
1146
|
-
text: "Oozing/Crusting",
|
|
1147
|
-
description: "fluid leakage and dried scabs"
|
|
1148
|
-
},
|
|
1149
|
-
excoriations: {
|
|
1150
|
-
text: "Excoriations",
|
|
1151
|
-
description: "scratch marks"
|
|
1152
|
-
},
|
|
1153
|
-
lichenification: {
|
|
1154
|
-
text: "Lichenification",
|
|
1155
|
-
description: "skin thickening and hardening"
|
|
1156
|
-
},
|
|
1157
|
-
xerosis: {
|
|
1158
|
-
text: "Xerosis",
|
|
1159
|
-
description: "dryness of the skin"
|
|
1160
|
-
}
|
|
1161
|
-
},
|
|
1162
|
-
subjective: {
|
|
1163
|
-
pruritus: {
|
|
1164
|
-
text: "Pruritus",
|
|
1165
|
-
description: "itching"
|
|
1166
|
-
},
|
|
1167
|
-
sleeplessness: {
|
|
1168
|
-
text: "Sleeplessness",
|
|
1169
|
-
description: "difficulty sleeping"
|
|
1170
|
-
}
|
|
1171
|
-
}
|
|
1172
|
-
};
|
|
1173
|
-
var 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);padding:calc(1.5*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 {
|
|
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 {
|
|
1174
1232
|
connectedCallback() {
|
|
1175
|
-
this.render(), this.addEventListener("focusin", this.
|
|
1233
|
+
this.render(), this.addEventListener("focusin", this.handleFocusIn, { once: !0 }), this.addEventListener("click", this.handleClick);
|
|
1176
1234
|
}
|
|
1177
1235
|
disconnectedCallback() {
|
|
1178
|
-
this.
|
|
1236
|
+
this.removeEventListener("focusin", this.handleFocusIn), this.removeEventListener("click", this.handleClick);
|
|
1179
1237
|
}
|
|
1180
|
-
|
|
1181
|
-
this.readonly || (this.committedValue = this.value, this.addEventListener("focusout", this.
|
|
1182
|
-
};
|
|
1183
|
-
_handleFocusOut = () => {
|
|
1184
|
-
this.removeEventListener("keydown", this._handleKeydown), this.addEventListener("focusin", this._handleFocusIn, { once: !0 }), this.setValue(this.value), this.value !== this.committedValue && this.valueChange(this.value);
|
|
1238
|
+
handleFocusIn = () => {
|
|
1239
|
+
this.readonly || (this.committedValue = this.value, this.addEventListener("focusout", this.handleFocusOut, { once: !0 }), this.addEventListener("keydown", this.handleKeydown));
|
|
1185
1240
|
};
|
|
1186
|
-
|
|
1187
|
-
this.
|
|
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);
|
|
1188
1243
|
};
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
_handleMove = (e) => {
|
|
1244
|
+
handleClick = (e) => {
|
|
1245
|
+
if (this.readonly) return;
|
|
1246
|
+
e.stopPropagation(), e.preventDefault(), this.focus();
|
|
1193
1247
|
let t = e.composedPath()[0];
|
|
1194
1248
|
if (!(t instanceof HTMLSpanElement)) return;
|
|
1195
1249
|
let n = Number.parseInt(t.dataset.value);
|
|
1196
1250
|
this.setValue(n);
|
|
1197
1251
|
};
|
|
1198
|
-
|
|
1252
|
+
handleKeydown = (e) => {
|
|
1199
1253
|
let t = this.value ?? 0;
|
|
1200
1254
|
switch (e.key) {
|
|
1201
1255
|
case "ArrowLeft":
|
|
@@ -1231,7 +1285,7 @@ var component_default$5 = ":host{--host-display:inline-flex;--host-option-width:
|
|
|
1231
1285
|
afterRender() {
|
|
1232
1286
|
this.shadowRoot && this.shadowRoot.querySelectorAll("span").forEach((e) => {
|
|
1233
1287
|
let t = Number.parseInt(e.dataset.value);
|
|
1234
|
-
if (e.
|
|
1288
|
+
if (e.setAttribute("aria-selected", t === this.value ? "true" : "false"), !this.showHue) return;
|
|
1235
1289
|
if (t > this.value) {
|
|
1236
1290
|
e.style.backgroundColor = "";
|
|
1237
1291
|
return;
|
|
@@ -1260,8 +1314,10 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
|
|
|
1260
1314
|
connectedCallback() {
|
|
1261
1315
|
this.render();
|
|
1262
1316
|
}
|
|
1317
|
+
readonly = !1;
|
|
1263
1318
|
value = SCORAD_INTENSITY_DEFAULT;
|
|
1264
1319
|
score;
|
|
1320
|
+
errors;
|
|
1265
1321
|
afterRender() {
|
|
1266
1322
|
if (this.value == null) {
|
|
1267
1323
|
this.value = SCORAD_INTENSITY_DEFAULT;
|
|
@@ -1273,7 +1329,7 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
|
|
|
1273
1329
|
n.dataset.value = `${t}`;
|
|
1274
1330
|
let r = n.querySelector("scorad-options");
|
|
1275
1331
|
if (!r) return;
|
|
1276
|
-
r.value = t;
|
|
1332
|
+
r.value = t, r.style.setProperty("--host-option-border", this.errors?.[e] == null ? null : "solid 1px var(--host-error-color)");
|
|
1277
1333
|
}
|
|
1278
1334
|
}
|
|
1279
1335
|
render() {
|
|
@@ -1283,12 +1339,17 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
|
|
|
1283
1339
|
}
|
|
1284
1340
|
renderLevel(e) {
|
|
1285
1341
|
let t = (t) => {
|
|
1286
|
-
t && t.addEventListener("value-input", (t) => {
|
|
1342
|
+
t && (t.addEventListener("value-input", (t) => {
|
|
1287
1343
|
this.value = {
|
|
1288
1344
|
...this.value,
|
|
1289
1345
|
[e]: t.detail
|
|
1290
|
-
}, this.valueInput(this.value);
|
|
1291
|
-
})
|
|
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
|
+
}));
|
|
1292
1353
|
}, n = ScoradResources.intensity[e];
|
|
1293
1354
|
return html`
|
|
1294
1355
|
<scorad-label class="${toKebabCase(e)} row"
|
|
@@ -1303,17 +1364,25 @@ var tag$4 = "scorad-intensity", HTMLScoradIntensityElement = class extends HTMLC
|
|
|
1303
1364
|
valueInput;
|
|
1304
1365
|
valueChange;
|
|
1305
1366
|
};
|
|
1306
|
-
__decorate([
|
|
1367
|
+
__decorate([Att({
|
|
1368
|
+
name: "aria-readonly",
|
|
1369
|
+
...AttTrueFalse
|
|
1370
|
+
})], HTMLScoradIntensityElement.prototype, "readonly", void 0), __decorate([Att({
|
|
1371
|
+
name: "has-errors",
|
|
1372
|
+
write: (e) => e == null ? void 0 : "",
|
|
1373
|
+
read: !1
|
|
1374
|
+
})], HTMLScoradIntensityElement.prototype, "errors", void 0), __decorate([Watch("value", "errors")], HTMLScoradIntensityElement.prototype, "afterRender", null), __decorate([Event()], HTMLScoradIntensityElement.prototype, "valueInput", void 0), __decorate([Event()], HTMLScoradIntensityElement.prototype, "valueChange", void 0), HTMLScoradIntensityElement = __decorate([Component({
|
|
1307
1375
|
tag: tag$4,
|
|
1308
1376
|
css: [host_default, component_default$4],
|
|
1309
1377
|
delegatesFocus: !0
|
|
1310
1378
|
})], HTMLScoradIntensityElement);
|
|
1311
|
-
var component_default$3 = ":host{--host-display:inline-flex;flex-direction:column;position:relative}scorad-options{margin-left:auto}", tag$3 = "scorad-subjective", HTMLScoradSubjectiveElement = class extends HTMLComponentElement {
|
|
1379
|
+
var component_default$3 = ":host{--host-display:inline-flex;--scorad-label-text-min-width:7rem;flex-direction:column;position:relative}scorad-options{align-self:center;margin-left:auto}", tag$3 = "scorad-subjective", HTMLScoradSubjectiveElement = class extends HTMLComponentElement {
|
|
1312
1380
|
connectedCallback() {
|
|
1313
1381
|
this.render();
|
|
1314
1382
|
}
|
|
1315
1383
|
value = SCORAD_SUBJECTIVE_DEFAULT;
|
|
1316
1384
|
score;
|
|
1385
|
+
errors;
|
|
1317
1386
|
afterRender() {
|
|
1318
1387
|
if (this.value == null) {
|
|
1319
1388
|
this.value = SCORAD_SUBJECTIVE_DEFAULT;
|
|
@@ -1325,7 +1394,7 @@ var component_default$3 = ":host{--host-display:inline-flex;flex-direction:colum
|
|
|
1325
1394
|
n.dataset.value = `${t}`;
|
|
1326
1395
|
let r = n.querySelector("scorad-options");
|
|
1327
1396
|
if (!r) return;
|
|
1328
|
-
r.value = t;
|
|
1397
|
+
r.value = t, r.style.setProperty("--host-option-border", this.errors?.[e] == null ? null : "solid 1px var(--host-error-color)");
|
|
1329
1398
|
}
|
|
1330
1399
|
}
|
|
1331
1400
|
render() {
|
|
@@ -1354,12 +1423,16 @@ var component_default$3 = ":host{--host-display:inline-flex;flex-direction:colum
|
|
|
1354
1423
|
valueInput;
|
|
1355
1424
|
valueChange;
|
|
1356
1425
|
};
|
|
1357
|
-
__decorate([
|
|
1426
|
+
__decorate([Att({
|
|
1427
|
+
name: "has-errors",
|
|
1428
|
+
write: (e) => e == null ? void 0 : "",
|
|
1429
|
+
read: !1
|
|
1430
|
+
})], HTMLScoradSubjectiveElement.prototype, "errors", void 0), __decorate([Watch("value", "errors")], HTMLScoradSubjectiveElement.prototype, "afterRender", null), __decorate([Event()], HTMLScoradSubjectiveElement.prototype, "valueInput", void 0), __decorate([Event()], HTMLScoradSubjectiveElement.prototype, "valueChange", void 0), HTMLScoradSubjectiveElement = __decorate([Component({
|
|
1358
1431
|
tag: tag$3,
|
|
1359
1432
|
css: [host_default, component_default$3],
|
|
1360
1433
|
delegatesFocus: !0
|
|
1361
1434
|
})], HTMLScoradSubjectiveElement);
|
|
1362
|
-
var component_default$2 = ":host{--host-display:inline-flex
|
|
1435
|
+
var component_default$2 = ":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}", tag$2 = "scorad-weightings", HTMLScoradWeightingsElement = class extends HTMLComponentElement {
|
|
1363
1436
|
connectedCallback() {
|
|
1364
1437
|
this.render();
|
|
1365
1438
|
}
|
|
@@ -1392,14 +1465,6 @@ __decorate([Watch("value")], HTMLScoradWeightingsElement.prototype, "afterRender
|
|
|
1392
1465
|
css: [host_default, component_default$2],
|
|
1393
1466
|
delegatesFocus: !0
|
|
1394
1467
|
})], HTMLScoradWeightingsElement);
|
|
1395
|
-
const selectScoradWeights = (e) => e?.child ? SCORAD_CHILD_WEIGHTS : SCORAD_ADULT_WEIGHTS, validateScoradData = (e) => {
|
|
1396
|
-
let t = [], n = (e, n, r) => {
|
|
1397
|
-
for (let [i, a] of Object.entries(e)) (a < 0 || a > r) && t.push(validateScoradData.formatError(n, i, r, a));
|
|
1398
|
-
}, r = { ...e?.extent ?? SCORAD_EXTENT_DEFAULT }, i = selectScoradWeights(e);
|
|
1399
|
-
for (let [e, t] of Object.entries(i)) t === 0 && delete r[e];
|
|
1400
|
-
return n(r, "extent", 100), n(e?.intensity ?? SCORAD_INTENSITY_DEFAULT, "intensity", 3), n(e?.subjective ?? SCORAD_SUBJECTIVE_DEFAULT, "subjective", 10), t.length ? Result.Fail(t) : Result.Ok(e);
|
|
1401
|
-
};
|
|
1402
|
-
validateScoradData.formatError = (e, t, n, r) => `${e}.${t}: must be between 0 and ${n}, but received ${r}.`;
|
|
1403
1468
|
const getScoradScore = (e) => {
|
|
1404
1469
|
let t = validateScoradData(e);
|
|
1405
1470
|
if (t instanceof Failure) return t;
|
|
@@ -1412,11 +1477,38 @@ const getScoradScore = (e) => {
|
|
|
1412
1477
|
total: o
|
|
1413
1478
|
});
|
|
1414
1479
|
};
|
|
1415
|
-
var tag$1 = "scorad-
|
|
1480
|
+
var component_default$1 = ":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}", tag$1 = "scorad-label", HTMLScoradLabelElement = class extends HTMLComponentElement {
|
|
1481
|
+
connectedCallback() {
|
|
1482
|
+
this.render(), this.addEventListener("click", this._handleClick);
|
|
1483
|
+
}
|
|
1484
|
+
diconnectedCallback() {
|
|
1485
|
+
this.removeEventListener("click", this._handleClick);
|
|
1486
|
+
}
|
|
1487
|
+
_handleClick = (e) => {
|
|
1488
|
+
this.querySelector(FOCUSABLE)?.focus();
|
|
1489
|
+
};
|
|
1490
|
+
text = "(label)";
|
|
1491
|
+
description;
|
|
1492
|
+
render() {
|
|
1493
|
+
return html`
|
|
1494
|
+
<label>
|
|
1495
|
+
<slot name="text"><span>${this.text}</span></slot>
|
|
1496
|
+
<slot name="description"><small>${this.description}</small></slot>
|
|
1497
|
+
</label>
|
|
1498
|
+
<slot></slot>
|
|
1499
|
+
`;
|
|
1500
|
+
}
|
|
1501
|
+
};
|
|
1502
|
+
__decorate([Att({ write: !1 })], HTMLScoradLabelElement.prototype, "text", void 0), __decorate([Att({ write: !1 })], HTMLScoradLabelElement.prototype, "description", void 0), HTMLScoradLabelElement = __decorate([Component({
|
|
1503
|
+
tag: tag$1,
|
|
1504
|
+
css: [host_default, component_default$1]
|
|
1505
|
+
})], HTMLScoradLabelElement);
|
|
1506
|
+
var tag = "scorad-component", HTMLScoradElement = class extends HTMLComponentElement {
|
|
1416
1507
|
connectedCallback() {
|
|
1417
1508
|
this.render();
|
|
1418
1509
|
}
|
|
1419
1510
|
value = SCORAD_DEFAULT;
|
|
1511
|
+
showErrors = !1;
|
|
1420
1512
|
afterRender() {
|
|
1421
1513
|
if (this.value == null) {
|
|
1422
1514
|
this.value = SCORAD_DEFAULT;
|
|
@@ -1425,99 +1517,115 @@ var tag$1 = "scorad-component", HTMLScoradElement = class extends HTMLComponentE
|
|
|
1425
1517
|
if (!this.shadowRoot) return;
|
|
1426
1518
|
let e = this.shadowRoot.querySelector("#score");
|
|
1427
1519
|
if (!e) return;
|
|
1428
|
-
let t = getScoradScore(this.value).orNull()
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1520
|
+
let t = getScoradScore(this.value).orNull(), n = {}, r = validateScoradData(this.value).errors.reduce((e, t) => {
|
|
1521
|
+
let n = t.indexOf(":");
|
|
1522
|
+
return setValue(e, t.substring(0, n), t.substring(n + 2));
|
|
1523
|
+
}, n);
|
|
1524
|
+
e.innerText = `${t?.total ?? "Get Score"}`, e.style.color = this.showErrors && r != n ? "var(--host-error-color)" : "";
|
|
1525
|
+
let i = this.shadowRoot.querySelector("scorad-subjective");
|
|
1526
|
+
i && (i.value = this.value?.subjective ?? SCORAD_SUBJECTIVE_DEFAULT, i.score = t?.B, this.showErrors && (i.errors = getValue(r, "subjective")));
|
|
1527
|
+
let a = this.shadowRoot.querySelector("scorad-intensity");
|
|
1528
|
+
a && (a.value = this.value?.intensity ?? SCORAD_INTENSITY_DEFAULT, a.score = t?.B, this.showErrors && (a.errors = getValue(r, "intensity")));
|
|
1529
|
+
let o = this.shadowRoot.querySelector("scorad-extent");
|
|
1530
|
+
o && (o.child = this.value?.child ?? !1, o.value = this.value?.extent ?? SCORAD_EXTENT_DEFAULT, o.score = t?.A, this.showErrors && (o.errors = getValue(r, "extent")));
|
|
1531
|
+
let s = this.shadowRoot.querySelector("scorad-weightings");
|
|
1532
|
+
s && (s.value = this.value?.child ?? !1);
|
|
1438
1533
|
}
|
|
1439
1534
|
render() {
|
|
1440
1535
|
return html`
|
|
1441
|
-
<
|
|
1442
|
-
<h3>A</h3>
|
|
1536
|
+
<scorad-label id="extent-label">
|
|
1537
|
+
<h3 slot="text">A</h3>
|
|
1538
|
+
<p slot="description">extent - effected surface area</p>
|
|
1443
1539
|
<scorad-weightings ${(e) => {
|
|
1444
|
-
e instanceof HTMLScoradWeightingsElement && e.addEventListener("value-input", (e) => {
|
|
1540
|
+
e instanceof HTMLScoradWeightingsElement && (e.addEventListener("value-input", (e) => {
|
|
1445
1541
|
this.value = {
|
|
1446
1542
|
...this.value,
|
|
1447
1543
|
child: e.detail
|
|
1448
|
-
};
|
|
1449
|
-
})
|
|
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
|
+
}));
|
|
1450
1551
|
}}></scorad-weightings>
|
|
1451
|
-
<scorad-extent ${(e) => {
|
|
1452
|
-
e instanceof HTMLScoradExtentElement && e.addEventListener("value-input", (e) => {
|
|
1552
|
+
<scorad-extent tabindex="0" ${(e) => {
|
|
1553
|
+
e instanceof HTMLScoradExtentElement && (e.addEventListener("value-input", (e) => {
|
|
1453
1554
|
this.value = {
|
|
1454
1555
|
...this.value,
|
|
1455
1556
|
extent: e.detail
|
|
1456
|
-
};
|
|
1457
|
-
})
|
|
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
|
+
}));
|
|
1458
1564
|
}}></scorad-extent>
|
|
1459
|
-
</
|
|
1565
|
+
</scorad-label>
|
|
1460
1566
|
|
|
1461
|
-
<
|
|
1462
|
-
<h3>B</h3>
|
|
1463
|
-
<
|
|
1464
|
-
|
|
1567
|
+
<scorad-label id="intensity-label">
|
|
1568
|
+
<h3 slot="text">B</h3>
|
|
1569
|
+
<p slot="description">intensity - clinical sign severity</p>
|
|
1570
|
+
<scorad-intensity tabindex="0" ${(e) => {
|
|
1571
|
+
e instanceof HTMLScoradIntensityElement && (e.addEventListener("value-input", (e) => {
|
|
1465
1572
|
this.value = {
|
|
1466
1573
|
...this.value,
|
|
1467
1574
|
intensity: e.detail
|
|
1468
|
-
};
|
|
1469
|
-
})
|
|
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
|
+
}));
|
|
1470
1582
|
}}></scorad-intensity>
|
|
1471
|
-
</
|
|
1583
|
+
</scorad-label>
|
|
1472
1584
|
|
|
1473
|
-
<
|
|
1474
|
-
<h3>C</h3>
|
|
1475
|
-
<
|
|
1476
|
-
|
|
1585
|
+
<scorad-label id="subjective-label">
|
|
1586
|
+
<h3 slot="text">C</h3>
|
|
1587
|
+
<p slot="description">subjective - patient reported symptoms</p>
|
|
1588
|
+
<scorad-subjective tabindex="0" ${(e) => {
|
|
1589
|
+
e instanceof HTMLScoradSubjectiveElement && (e.addEventListener("value-input", (e) => {
|
|
1477
1590
|
this.value = {
|
|
1478
1591
|
...this.value,
|
|
1479
1592
|
subjective: e.detail
|
|
1480
|
-
};
|
|
1481
|
-
})
|
|
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
|
+
}));
|
|
1482
1600
|
}}></scorad-subjective>
|
|
1483
|
-
</
|
|
1601
|
+
</scorad-label>
|
|
1484
1602
|
|
|
1485
|
-
<scorad-label
|
|
1603
|
+
<scorad-label id="score-label"
|
|
1486
1604
|
text="SCORAD"
|
|
1487
1605
|
description="(A / 5) + (7 * B / 2) + C"
|
|
1606
|
+
${(e) => {
|
|
1607
|
+
e instanceof HTMLScoradLabelElement && e.addEventListener("click", () => {
|
|
1608
|
+
if (!this.shadowRoot) return;
|
|
1609
|
+
this.showErrors = !0;
|
|
1610
|
+
let e = this.shadowRoot.querySelector("[has-errors]");
|
|
1611
|
+
e && (e.focus({ preventScroll: !0 }), e.scrollIntoView({
|
|
1612
|
+
behavior: "smooth",
|
|
1613
|
+
block: "start"
|
|
1614
|
+
}));
|
|
1615
|
+
});
|
|
1616
|
+
}}
|
|
1488
1617
|
>
|
|
1489
1618
|
<span id="score" tabindex="0"></span>
|
|
1490
1619
|
</scorad-label>
|
|
1491
1620
|
`;
|
|
1492
1621
|
}
|
|
1622
|
+
valueInput;
|
|
1623
|
+
valueChange;
|
|
1493
1624
|
};
|
|
1494
|
-
__decorate([Watch("value")], HTMLScoradElement.prototype, "afterRender", null), HTMLScoradElement = __decorate([Component({
|
|
1495
|
-
tag
|
|
1496
|
-
css: [host_default, component_default
|
|
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({
|
|
1626
|
+
tag,
|
|
1627
|
+
css: [host_default, component_default],
|
|
1497
1628
|
delegatesFocus: !0
|
|
1498
1629
|
})], HTMLScoradElement);
|
|
1499
1630
|
const componentsScoradLogger = provideLogger("@ntix/components-scorad", typeof ANTIX_COMPONENTS_SCORAD_LOG_LEVEL > "u" ? LogLevel.warn : ANTIX_COMPONENTS_SCORAD_LOG_LEVEL);
|
|
1500
|
-
var component_default = ":host{--host-display:inline-flex;--host-options:var(--scorad-label-options,solid 1px var(--host-color));--host-hover:var(--scorad-label-hover,dashed 2px var(--host-primary-color));--host-focus:var(--scorad-label-focus,solid 2px var(--host-primary-color));padding:var(--host-padding-unit);border-radius:var(--host-border-radius-outer);flex-wrap:wrap;align-items:baseline;position:relative}:host(:hover){outline:var(--host-hover)}:host(:focus-within){outline:var(--host-focus)}:host>label>span{transition:all .2s ease-in-out;display:block}:host>label>small{opacity:0;height:0;transition:all .4s ease-in-out;display:block}:host(:hover)>label>span,:host(:focus-within)>label>span{transform:translateY(-.5em)}:host(:hover)>label>small,:host(:focus-within)>label>small{opacity:.667;transform:translateY(-.6em)}:host>label{padding:var(--host-padding-unit);flex:1;padding-left:0}", tag = "scorad-label", HTMLScoradLabelElement = class extends HTMLComponentElement {
|
|
1501
|
-
connectedCallback() {
|
|
1502
|
-
this.render(), this.addEventListener("mousedown", this._handleClick);
|
|
1503
|
-
}
|
|
1504
|
-
_handleClick = (e) => {
|
|
1505
|
-
this.querySelector(FOCUSABLE)?.focus();
|
|
1506
|
-
};
|
|
1507
|
-
text = "(label)";
|
|
1508
|
-
description;
|
|
1509
|
-
render() {
|
|
1510
|
-
return html`
|
|
1511
|
-
<label>
|
|
1512
|
-
<span>${this.text}</span>
|
|
1513
|
-
<small>${this.description}</small>
|
|
1514
|
-
</label>
|
|
1515
|
-
<slot></slot>
|
|
1516
|
-
`;
|
|
1517
|
-
}
|
|
1518
|
-
};
|
|
1519
|
-
__decorate([Att({ write: !1 })], HTMLScoradLabelElement.prototype, "text", void 0), __decorate([Att({ write: !1 })], HTMLScoradLabelElement.prototype, "description", void 0), HTMLScoradLabelElement = __decorate([Component({
|
|
1520
|
-
tag,
|
|
1521
|
-
css: [host_default, component_default]
|
|
1522
|
-
})], HTMLScoradLabelElement);
|
|
1523
1631
|
export { HTMLScoradElement, HTMLScoradExtentElement, HTMLScoradIntensityElement, HTMLScoradLabelElement, HTMLScoradOptionsElement, HTMLScoradSubjectiveElement, HTMLScoradWeightingsElement, SCORAD_ADULT_WEIGHTS, SCORAD_CHILD_WEIGHTS, SCORAD_DEFAULT, SCORAD_EXTENT_DEFAULT, SCORAD_EXTENT_MAX_VALUE, SCORAD_INTENSITY_DEFAULT, SCORAD_INTENSITY_MAX_VALUE, SCORAD_SUBJECTIVE_DEFAULT, SCORAD_SUBJECTIVE_MAX_VALUE, ScoradResources, componentsScoradLogger, getScoradScore, selectScoradWeights, validateScoradData };
|