From f196514b4f5271ad8ae43618d104ed355b7a6dd0 Mon Sep 17 00:00:00 2001 From: Jonathan Kelley Date: Tue, 27 Feb 2024 19:23:36 -0800 Subject: [PATCH] change serialization --- packages/interpreter/src/js/hash.txt | 2 +- packages/interpreter/src/js/native.js | 224 ++---------- packages/interpreter/src/ts/serialize.ts | 411 +++-------------------- 3 files changed, 72 insertions(+), 565 deletions(-) diff --git a/packages/interpreter/src/js/hash.txt b/packages/interpreter/src/js/hash.txt index e3bf98bdd..d29edbd8e 100644 --- a/packages/interpreter/src/js/hash.txt +++ b/packages/interpreter/src/js/hash.txt @@ -1 +1 @@ -16803007677292896021 \ No newline at end of file +12494364440840058490 \ No newline at end of file diff --git a/packages/interpreter/src/js/native.js b/packages/interpreter/src/js/native.js index 0c59cc667..883285eda 100644 --- a/packages/interpreter/src/js/native.js +++ b/packages/interpreter/src/js/native.js @@ -169,6 +169,21 @@ System.register("serialize", [], function (exports_3, context_3) { "use strict"; var __moduleName = context_3 && context_3.id; function serializeEvent(event) { + var _a; + if (event instanceof InputEvent) { + if (event.target instanceof HTMLInputElement) { + var target = event.target; + var value = (_a = target.value) !== null && _a !== void 0 ? _a : target.textContent; + if (target.type === "checkbox") { + value = target.checked ? "true" : "false"; + } + return { + value: value, + values: {}, + }; + } + return {}; + } if (event instanceof KeyboardEvent) { return { char_code: event.charCode, @@ -185,6 +200,24 @@ System.register("serialize", [], function (exports_3, context_3) { code: event.code, }; } + if (event instanceof MouseEvent) { + return { + alt_key: event.altKey, + button: event.button, + buttons: event.buttons, + client_x: event.clientX, + client_y: event.clientY, + ctrl_key: event.ctrlKey, + meta_key: event.metaKey, + offset_x: event.offsetX, + offset_y: event.offsetY, + page_x: event.pageX, + page_y: event.pageY, + screen_x: event.screenX, + screen_y: event.screenY, + shift_key: event.shiftKey, + }; + } if (event instanceof PointerEvent) { return { alt_key: event.altKey, @@ -211,24 +244,6 @@ System.register("serialize", [], function (exports_3, context_3) { is_primary: event.isPrimary, }; } - if (event instanceof MouseEvent) { - return { - alt_key: event.altKey, - button: event.button, - buttons: event.buttons, - client_x: event.clientX, - client_y: event.clientY, - ctrl_key: event.ctrlKey, - meta_key: event.metaKey, - offset_x: event.offsetX, - offset_y: event.offsetY, - page_x: event.pageX, - page_y: event.pageY, - screen_x: event.screenX, - screen_y: event.screenY, - shift_key: event.shiftKey, - }; - } if (event instanceof TouchEvent) { return { alt_key: event.altKey, @@ -287,179 +302,6 @@ System.register("serialize", [], function (exports_3, context_3) { return {}; } exports_3("serializeEvent", serializeEvent); - function isElementNode(node) { - return node.nodeType == 1; - } - function eventBubbles(eventName) { - switch (eventName) { - case "copy": - return true; - case "cut": - return true; - case "paste": - return true; - case "compositionend": - return true; - case "compositionstart": - return true; - case "compositionupdate": - return true; - case "keydown": - return true; - case "keypress": - return true; - case "keyup": - return true; - case "focus": - return false; - case "focusout": - return true; - case "focusin": - return true; - case "blur": - return false; - case "change": - return true; - case "input": - return true; - case "invalid": - return true; - case "reset": - return true; - case "submit": - return true; - case "click": - return true; - case "contextmenu": - return true; - case "doubleclick": - return true; - case "dblclick": - return true; - case "drag": - return true; - case "dragend": - return true; - case "dragenter": - return false; - case "dragexit": - return false; - case "dragleave": - return true; - case "dragover": - return true; - case "dragstart": - return true; - case "drop": - return true; - case "mousedown": - return true; - case "mouseenter": - return false; - case "mouseleave": - return false; - case "mousemove": - return true; - case "mouseout": - return true; - case "scroll": - return false; - case "mouseover": - return true; - case "mouseup": - return true; - case "pointerdown": - return true; - case "pointermove": - return true; - case "pointerup": - return true; - case "pointercancel": - return true; - case "gotpointercapture": - return true; - case "lostpointercapture": - return true; - case "pointerenter": - return false; - case "pointerleave": - return false; - case "pointerover": - return true; - case "pointerout": - return true; - case "select": - return true; - case "touchcancel": - return true; - case "touchend": - return true; - case "touchmove": - return true; - case "touchstart": - return true; - case "wheel": - return true; - case "abort": - return false; - case "canplay": - return false; - case "canplaythrough": - return false; - case "durationchange": - return false; - case "emptied": - return false; - case "encrypted": - return true; - case "ended": - return false; - case "error": - return false; - case "loadeddata": - case "loadedmetadata": - case "loadstart": - case "load": - return false; - case "pause": - return false; - case "play": - return false; - case "playing": - return false; - case "progress": - return false; - case "ratechange": - return false; - case "seeked": - return false; - case "seeking": - return false; - case "stalled": - return false; - case "suspend": - return false; - case "timeupdate": - return false; - case "volumechange": - return false; - case "waiting": - return false; - case "animationstart": - return true; - case "animationend": - return true; - case "animationiteration": - return true; - case "transitionend": - return true; - case "toggle": - return true; - case "mounted": - return false; - } - return true; - } return { setters: [], execute: function () { diff --git a/packages/interpreter/src/ts/serialize.ts b/packages/interpreter/src/ts/serialize.ts index 03f17434a..1cfd5990c 100644 --- a/packages/interpreter/src/ts/serialize.ts +++ b/packages/interpreter/src/ts/serialize.ts @@ -7,8 +7,21 @@ export type SerializedEvent = { }; export function serializeEvent(event: Event): SerializedEvent { + if (event instanceof InputEvent) { + if (event.target instanceof HTMLInputElement) { + let target = event.target; + let value = target.value ?? target.textContent; + if (target.type === "checkbox") { + value = target.checked ? "true" : "false"; + } + return { + value: value, + values: {}, + }; + } + return {}; + } - // copy, cut, paste if (event instanceof KeyboardEvent) { return { char_code: event.charCode, @@ -26,9 +39,25 @@ export function serializeEvent(event: Event): SerializedEvent { }; } + if (event instanceof MouseEvent) { + return { + alt_key: event.altKey, + button: event.button, + buttons: event.buttons, + client_x: event.clientX, + client_y: event.clientY, + ctrl_key: event.ctrlKey, + meta_key: event.metaKey, + offset_x: event.offsetX, + offset_y: event.offsetY, + page_x: event.pageX, + page_y: event.pageY, + screen_x: event.screenX, + screen_y: event.screenY, + shift_key: event.shiftKey, + }; + } - // "pointerdown" "pointermove" "pointerup" "pointercancel" "gotpointercapture" "lostpointercapture" "pointerenter" - // "pointerleave" "pointerover" "pointerout" if (event instanceof PointerEvent) { return { alt_key: event.altKey, @@ -56,24 +85,6 @@ export function serializeEvent(event: Event): SerializedEvent { }; } - if (event instanceof MouseEvent) { - return { - alt_key: event.altKey, - button: event.button, - buttons: event.buttons, - client_x: event.clientX, - client_y: event.clientY, - ctrl_key: event.ctrlKey, - meta_key: event.metaKey, - offset_x: event.offsetX, - offset_y: event.offsetY, - page_x: event.pageX, - page_y: event.pageY, - screen_x: event.screenX, - screen_y: event.screenY, - shift_key: event.shiftKey, - }; - } if (event instanceof TouchEvent) { return { @@ -123,6 +134,12 @@ export function serializeEvent(event: Event): SerializedEvent { } if (event instanceof DragEvent) { + // let files = []; + // if (event.dataTransfer && event.dataTransfer.files) { + // files = ["a", "b", "c"]; + // // files = await serializeFileList(event.dataTransfer.files); + // } + // return { mouse: get_mouse_data(event), files }; return { mouse: { alt_key: event.altKey, @@ -140,355 +157,3 @@ export function serializeEvent(event: Event): SerializedEvent { return {}; } - -function isElementNode(node: Node) { - return node.nodeType == 1; -} - -function eventBubbles(eventName: string) { - switch (eventName) { - case "copy": - return true; - case "cut": - return true; - case "paste": - return true; - case "compositionend": - return true; - case "compositionstart": - return true; - case "compositionupdate": - return true; - case "keydown": - return true; - case "keypress": - return true; - case "keyup": - return true; - case "focus": - return false; - case "focusout": - return true; - case "focusin": - return true; - case "blur": - return false; - case "change": - return true; - case "input": - return true; - case "invalid": - return true; - case "reset": - return true; - case "submit": - return true; - case "click": - return true; - case "contextmenu": - return true; - case "doubleclick": - return true; - case "dblclick": - return true; - case "drag": - return true; - case "dragend": - return true; - case "dragenter": - return false; - case "dragexit": - return false; - case "dragleave": - return true; - case "dragover": - return true; - case "dragstart": - return true; - case "drop": - return true; - case "mousedown": - return true; - case "mouseenter": - return false; - case "mouseleave": - return false; - case "mousemove": - return true; - case "mouseout": - return true; - case "scroll": - return false; - case "mouseover": - return true; - case "mouseup": - return true; - case "pointerdown": - return true; - case "pointermove": - return true; - case "pointerup": - return true; - case "pointercancel": - return true; - case "gotpointercapture": - return true; - case "lostpointercapture": - return true; - case "pointerenter": - return false; - case "pointerleave": - return false; - case "pointerover": - return true; - case "pointerout": - return true; - case "select": - return true; - case "touchcancel": - return true; - case "touchend": - return true; - case "touchmove": - return true; - case "touchstart": - return true; - case "wheel": - return true; - case "abort": - return false; - case "canplay": - return false; - case "canplaythrough": - return false; - case "durationchange": - return false; - case "emptied": - return false; - case "encrypted": - return true; - case "ended": - return false; - case "error": - return false; - case "loadeddata": - case "loadedmetadata": - case "loadstart": - case "load": - return false; - case "pause": - return false; - case "play": - return false; - case "playing": - return false; - case "progress": - return false; - case "ratechange": - return false; - case "seeked": - return false; - case "seeking": - return false; - case "stalled": - return false; - case "suspend": - return false; - case "timeupdate": - return false; - case "volumechange": - return false; - case "waiting": - return false; - case "animationstart": - return true; - case "animationend": - return true; - case "animationiteration": - return true; - case "transitionend": - return true; - case "toggle": - return true; - case "mounted": - return false; - } - - return true; -} - - - -// switch (event.type) { -// case "copy": case "cut": case "paste": { -// return {}; -// } -// case "compositionend": -// case "compositionstart": -// case "compositionupdate": { -// let { data } = event; -// return { -// data, -// }; -// } -// case "keydown": case "keypress": case "keyup": { -// if (event instanceof KeyboardEvent) { -// return { -// char_code: event.charCode, -// is_composing: event.isComposing, -// key: event.key, -// alt_key: event.altKey, -// ctrl_key: event.ctrlKey, -// meta_key: event.metaKey, -// key_code: event.keyCode, -// shift_key: event.shiftKey, -// location: event.location, -// repeat: event.repeat, -// which: event.which, -// code: event.code, -// }; -// }; -// } -// case "focus": -// case "blur": { -// return {}; -// } -// case "change": { -// let target = event.target; -// let value; -// if (target.type === "checkbox" || target.type === "radio") { -// value = target.checked ? "true" : "false"; -// } else { -// value = target.value ?? target.textContent; -// } -// return { -// value: value, -// values: {}, -// }; -// } -// case "input": -// case "invalid": -// case "reset": -// case "submit": { -// let target = event.target; -// let value = target.value ?? target.textContent; - -// if (target.type === "checkbox") { -// value = target.checked ? "true" : "false"; -// } - -// return { -// value: value, -// values: {}, -// }; -// } -// case "drag": -// case "dragend": -// case "dragenter": -// case "dragexit": -// case "dragleave": -// case "dragover": -// case "dragstart": -// case "drop": { -// let files = []; - -// if (event.dataTransfer && event.dataTransfer.files) { -// files = ["a", "b", "c"]; -// // files = await serializeFileList(event.dataTransfer.files); -// } - -// return { mouse: get_mouse_data(event), files }; -// } -// case "click": -// case "contextmenu": -// case "doubleclick": -// case "dblclick": -// case "mousedown": -// case "mouseenter": -// case "mouseleave": -// case "mousemove": -// case "mouseout": -// case "mouseover": -// case "mouseup": { -// return get_mouse_data(event); -// } -// case "select": { -// return {}; -// } -// case "touchcancel": -// case "touchend": -// case "touchmove": -// case "touchstart": { -// const { altKey, ctrlKey, metaKey, shiftKey } = event; -// return { -// // changed_touches: event.changedTouches, -// // target_touches: event.targetTouches, -// // touches: event.touches, -// alt_key: altKey, -// ctrl_key: ctrlKey, -// meta_key: metaKey, -// shift_key: shiftKey, -// }; -// } -// case "scroll": { -// return {}; -// } -// case "wheel": { -// const { deltaX, deltaY, deltaZ, deltaMode } = event; -// return { -// delta_x: deltaX, -// delta_y: deltaY, -// delta_z: deltaZ, -// delta_mode: deltaMode, -// }; -// } -// case "animationstart": -// case "animationend": -// case "animationiteration": { -// const { animationName, elapsedTime, pseudoElement } = event; -// return { -// animation_name: animationName, -// elapsed_time: elapsedTime, -// pseudo_element: pseudoElement, -// }; -// } -// case "transitionend": { -// const { propertyName, elapsedTime, pseudoElement } = event; -// return { -// property_name: propertyName, -// elapsed_time: elapsedTime, -// pseudo_element: pseudoElement, -// }; -// } -// case "abort": -// case "canplay": -// case "canplaythrough": -// case "durationchange": -// case "emptied": -// case "encrypted": -// case "ended": -// case "error": -// case "loadeddata": -// case "loadedmetadata": -// case "loadstart": -// case "pause": -// case "play": -// case "playing": -// case "progress": -// case "ratechange": -// case "seeked": -// case "seeking": -// case "stalled": -// case "suspend": -// case "timeupdate": -// case "volumechange": -// case "waiting": { -// return {}; -// } -// case "toggle": { -// return {}; -// } -// default: { -// return {}; -// } -// }