Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo-mod-jslibs-dist.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'alpinejs/packages/csp/src/index.js')
-rw-r--r--alpinejs/packages/csp/src/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/alpinejs/packages/csp/src/index.js b/alpinejs/packages/csp/src/index.js
new file mode 100644
index 0000000..9b5b26c
--- /dev/null
+++ b/alpinejs/packages/csp/src/index.js
@@ -0,0 +1,38 @@
+import Alpine from 'alpinejs/src/alpine'
+
+Alpine.setEvaluator(cspCompliantEvaluator)
+
+import { reactive, effect, stop, toRaw } from '@vue/reactivity'
+Alpine.setReactivityEngine({ reactive, effect, release: stop, raw: toRaw })
+
+import 'alpinejs/src/magics/index'
+import 'alpinejs/src/directives/index'
+
+import { closestDataStack, mergeProxies } from 'alpinejs/src/scope'
+import { injectMagics } from 'alpinejs/src/magics'
+import { generateEvaluatorFromFunction, runIfTypeOfFunction } from 'alpinejs/src/evaluator'
+import { tryCatch } from 'alpinejs/src/utils/error'
+
+function cspCompliantEvaluator(el, expression) {
+ let overriddenMagics = {}
+
+ injectMagics(overriddenMagics, el)
+
+ let dataStack = [overriddenMagics, ...closestDataStack(el)]
+
+ if (typeof expression === 'function') {
+ return generateEvaluatorFromFunction(dataStack, expression)
+ }
+
+ let evaluator = (receiver = () => {}, { scope = {}, params = [] } = {}) => {
+ let completeScope = mergeProxies([scope, ...dataStack])
+
+ if (completeScope[expression] !== undefined) {
+ runIfTypeOfFunction(receiver, completeScope[expression], completeScope, params)
+ }
+ }
+
+ return tryCatch.bind(null, el, expression, evaluator)
+}
+
+export default Alpine