summaryrefslogtreecommitdiffstatshomepage
path: root/www/test/1.8.6/src/ext/path-deps.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/test/1.8.6/src/ext/path-deps.js')
-rw-r--r--www/test/1.8.6/src/ext/path-deps.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/www/test/1.8.6/src/ext/path-deps.js b/www/test/1.8.6/src/ext/path-deps.js
new file mode 100644
index 00000000..4987e50e
--- /dev/null
+++ b/www/test/1.8.6/src/ext/path-deps.js
@@ -0,0 +1,60 @@
+(function(undefined){
+ 'use strict';
+
+ // Save a reference to the global object (window in the browser)
+ var _root = this;
+
+ function dependsOn(pathSpec, url) {
+ if (pathSpec === "ignore") {
+ return false;
+ }
+ var dependencyPath = pathSpec.split("/");
+ var urlPath = url.split("/");
+ for (var i = 0; i < urlPath.length; i++) {
+ var dependencyElement = dependencyPath.shift();
+ var pathElement = urlPath[i];
+ if (dependencyElement !== pathElement && dependencyElement !== "*") {
+ return false;
+ }
+ if (dependencyPath.length === 0 || (dependencyPath.length === 1 && dependencyPath[0] === "")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function refreshPath(path) {
+ var eltsWithDeps = htmx.findAll("[path-deps]");
+ for (var i = 0; i < eltsWithDeps.length; i++) {
+ var elt = eltsWithDeps[i];
+ if (dependsOn(elt.getAttribute('path-deps'), path)) {
+ htmx.trigger(elt, "path-deps");
+ }
+ }
+ }
+
+ htmx.defineExtension('path-deps', {
+ onEvent: function (name, evt) {
+ if (name === "htmx:beforeOnLoad") {
+ var config = evt.detail.requestConfig;
+ // mutating call
+ if (config.verb !== "get" && evt.target.getAttribute('path-deps') !== 'ignore') {
+ refreshPath(config.path);
+ }
+ }
+ }
+ });
+
+ /**
+ * ********************
+ * Expose functionality
+ * ********************
+ */
+
+ _root.PathDeps = {
+ refresh: function(path) {
+ refreshPath(path);
+ }
+ };
+
+}).call(this);