@churchapps/apphelper 1.8.2 → 1.8.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawHTMLElement.d.ts","sourceRoot":"","sources":["../../../../src/website/components/elementTypes/RawHTMLElement.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC/E;
|
|
1
|
+
{"version":3,"file":"RawHTMLElement.d.ts","sourceRoot":"","sources":["../../../../src/website/components/elementTypes/RawHTMLElement.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEnE,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC/E;AAqBD,eAAO,MAAM,cAAc,GAAI,qBAAqB,KAAK,gCA4CxD,CAAC"}
|
|
@@ -1,17 +1,47 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useEffect } from "react";
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
const recreatedScripts = new WeakSet();
|
|
5
|
+
// innerHTML-inserted scripts never execute; recreate them so they do.
|
|
6
|
+
// CSP script-src 'strict-dynamic' trusts these non-parser-inserted nodes.
|
|
7
|
+
const recreateScripts = (root) => {
|
|
8
|
+
root.querySelectorAll("script").forEach((old) => {
|
|
9
|
+
if (recreatedScripts.has(old))
|
|
10
|
+
return;
|
|
11
|
+
try {
|
|
12
|
+
const script = document.createElement("script");
|
|
13
|
+
Array.from(old.attributes).forEach((attr) => script.setAttribute(attr.name, attr.value));
|
|
14
|
+
script.text = old.text;
|
|
15
|
+
recreatedScripts.add(script);
|
|
16
|
+
old.replaceWith(script);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
/* swallow inline-script parse/insert failures from user-pasted content */
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
4
23
|
export const RawHTMLElement = ({ element, onEdit }) => {
|
|
5
24
|
const emptyStyle = { minHeight: 50 };
|
|
25
|
+
const htmlRef = useRef(null);
|
|
26
|
+
const jsRef = useRef(null);
|
|
27
|
+
const javascript = element.answers.javascript || "";
|
|
28
|
+
const isMarkup = javascript.trim().startsWith("<");
|
|
6
29
|
const insertJavascript = () => {
|
|
7
|
-
if (window &&
|
|
8
|
-
//
|
|
9
|
-
if (
|
|
30
|
+
if (window && javascript) {
|
|
31
|
+
// Vendor snippets come wrapped in <script> tags; parse them as markup instead of code.
|
|
32
|
+
if (isMarkup) {
|
|
33
|
+
if (!jsRef.current)
|
|
34
|
+
return;
|
|
35
|
+
const template = document.createElement("template");
|
|
36
|
+
template.innerHTML = javascript;
|
|
37
|
+
jsRef.current.replaceChildren(template.content);
|
|
38
|
+
recreateScripts(jsRef.current);
|
|
10
39
|
return;
|
|
40
|
+
}
|
|
11
41
|
try {
|
|
12
42
|
const script = document.createElement("script");
|
|
13
43
|
script.id = "script-" + element.id;
|
|
14
|
-
script.innerHTML =
|
|
44
|
+
script.innerHTML = javascript;
|
|
15
45
|
const existing = document.getElementById(script.id);
|
|
16
46
|
if (existing)
|
|
17
47
|
existing.innerHTML = script.innerHTML;
|
|
@@ -23,7 +53,11 @@ export const RawHTMLElement = ({ element, onEdit }) => {
|
|
|
23
53
|
}
|
|
24
54
|
}
|
|
25
55
|
};
|
|
26
|
-
useEffect(insertJavascript, [
|
|
27
|
-
|
|
56
|
+
useEffect(insertJavascript, [javascript]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (htmlRef.current)
|
|
59
|
+
recreateScripts(htmlRef.current);
|
|
60
|
+
}, [element.answers.rawHTML]);
|
|
61
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { ref: htmlRef, dangerouslySetInnerHTML: { __html: element.answers.rawHTML || "" }, style: (!onEdit ? {} : emptyStyle) }), isMarkup && _jsx("div", { ref: jsRef, id: "script-" + element.id })] }));
|
|
28
62
|
};
|
|
29
63
|
//# sourceMappingURL=RawHTMLElement.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RawHTMLElement.js","sourceRoot":"","sources":["../../../../src/website/components/elementTypes/RawHTMLElement.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RawHTMLElement.js","sourceRoot":"","sources":["../../../../src/website/components/elementTypes/RawHTMLElement.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@churchapps/apphelper",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.3",
|
|
4
4
|
"description": "Library of helper functions, components, and feature modules (donations/forms/login/markdown/website) for React and NextJS ChurchApps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|