瀏覽代碼

refactoring

Falko Schindler 1 年之前
父節點
當前提交
6bb60b976b
共有 1 個文件被更改,包括 19 次插入13 次删除
  1. 19 13
      nicegui/templates/index.html

+ 19 - 13
nicegui/templates/index.html

@@ -44,15 +44,17 @@
       const loaded_components = new Set();
       const elements = {{ elements | safe }};
 
-      function stringifyEvent(e) {
-        if (e instanceof Event) {
-          const obj = {};
-          for (let k in e) obj[k] = e[k];
-          return JSON.stringify(obj, (k, v) => v instanceof Node || v instanceof Window ? undefined : v);
-        }
-        else {
-          return JSON.stringify(e);
-        }
+      function stringifyEventArgs(args) {
+        return args.map(arg => {
+          if (arg instanceof Event) {
+            const obj = {};
+            for (let k in arg) obj[k] = arg[k];
+            return JSON.stringify(obj, (k, v) => v instanceof Node || v instanceof Window ? undefined : v);
+          }
+          else {
+            return JSON.stringify(arg);
+          }
+        });
       }
 
       const waitingCallbacks = new Map();
@@ -113,12 +115,16 @@
         element.events.forEach((event) => {
           let event_name = 'on' + event.type[0].toLocaleUpperCase() + event.type.substring(1);
           event.specials.forEach(s => event_name += s[0].toLocaleUpperCase() + s.substring(1));
-          let handler = (...event_args) => {
-            const args = event_args.map(stringifyEvent);
-            const emitter = () => window.socket.emit("event", {id: element.id, listener_id: event.listener_id, args});
+          let handler = (...args) => {
+            const data = {
+              id: element.id,
+              listener_id: event.listener_id,
+              args: stringifyEventArgs(args),
+            };
+            const emitter = () => window.socket.emit("event", data);
             throttle(emitter, event.throttle, event.leading_events, event.trailing_events, event.listener_id);
             if (element.props["loopback"] === False && event.type == "update:model-value") {
-              element.props["model-value"] = event_args;
+              element.props["model-value"] = args;
             }
           };
           handler = Vue.withModifiers(handler, event.modifiers);