Skip to content

Commit

Permalink
fix(ClientTriggers): add built-in exit event
Browse files Browse the repository at this point in the history
  • Loading branch information
jourdain committed Apr 12, 2024
1 parent c9edb1a commit 0103d30
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 9 deletions.
5 changes: 5 additions & 0 deletions examples/vue3/trigger.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ def call_method_3():
ctrl.call("method3")


def client_exited():
print("client exited")


# -----------------------------------------------------------------------------
# UI setup
# -----------------------------------------------------------------------------
Expand All @@ -56,6 +60,7 @@ def call_method_3():
method1="window.console.log('method 1', $event)",
method2="window.console.log('method 2', $event)",
method3="window.console.log('method 3', $event)",
exit=client_exited,
)
ctrl.call = client_triggers.call

Expand Down
11 changes: 11 additions & 0 deletions trame_client/widgets/trame.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,12 +192,23 @@ class ClientTriggers(AbstractElement):
:param ref: Identifier for the client side DOM elem
:param **kwargs: List of events to registers with their callbacks
Built-in events are:
- mounted
- created
- before_destroy
- before_unmount
- exit
"""

def __init__(self, ref="trame_triggers", children=None, **kwargs):
self.__name = ref
super().__init__("trame-client-triggers", children=None, ref=ref, **kwargs)
self._attr_names += ["ref"]
self._event_names += [
("before_destroy", "beforeDestroy"),
("before_unmount", "beforeUnmount"),
]
self._event_names += list(kwargs.keys())

def call(self, method, *args):
Expand Down
6 changes: 4 additions & 2 deletions vue2-app/src/components/ClientTriggers.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { onMounted, onBeforeUnmount } = window.Vue;

export default {
emits: ['mounted', 'created', 'beforeDestroy', 'beforeUnmount'],
emits: ['mounted', 'created', 'beforeDestroy', 'beforeUnmount', 'exit'],
setup(props, { emit, expose }) {
function emitTopic(topic, event) {
emit(topic, event);
Expand All @@ -13,7 +13,9 @@ export default {
emit('beforeUnmount');
});
expose({ emit: emitTopic });

window.addEventListener('beforeunload', () => {
emit('exit');
});
emit('created');
return { emit: emitTopic };
},
Expand Down
5 changes: 4 additions & 1 deletion vue3-app/src/components/TrameClientTriggers.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { onMounted, onBeforeUnmount } = window.Vue;

export default {
emits: ["mounted", "created", "beforeDestroy", "beforeUnmount"],
emits: ["mounted", "created", "beforeDestroy", "beforeUnmount", "exit"],
setup(props, { emit, expose }) {
function emitTopic(topic, event) {
emit(topic, event);
Expand All @@ -12,6 +12,9 @@ export default {
emit("beforeDestroy");
emit("beforeUnmount");
});
window.addEventListener("beforeunload", () => {
emit("exit");
});
expose({ emit: emitTopic });

emit("created");
Expand Down
14 changes: 8 additions & 6 deletions vue3-app/src/core/wslink/protocols/SyncView.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
export default (session) => ({
getArray(hash, binary = true) {
return session.call("viewport.geometry.array.get", [hash, binary]).then((res) => {
if (res.buffer) {
return new Blob([res]);
}
return res;
});
return session
.call("viewport.geometry.array.get", [hash, binary])
.then((res) => {
if (res.buffer) {
return new Blob([res]);
}
return res;
});
},
getViewState(viewId, newSubscription = false) {
return session.call("viewport.geometry.view.get.state", [
Expand Down

0 comments on commit 0103d30

Please sign in to comment.