From 2bb33a378778e3e437832f5b0b64e09240dc9823 Mon Sep 17 00:00:00 2001 From: Bill Min Date: Mon, 8 Jan 2024 14:59:48 -0500 Subject: [PATCH] feat: better ways to control src change and slot refreshing logic (#28) feat: sse slot no-refresh option --- .../micro-frame-slot/marko-tag.json | 8 ++++ src/components/micro-frame-sse/README.md | 4 ++ .../renders.expected/loading.0.html | 19 ++++++++ .../renders.expected/loading.1.html | 23 +++++++++ .../renders.expected/loading.2.html | 24 ++++++++++ .../renders.expected/loading.3.html | 48 +++++++++++++++++++ .../renders.expected/loading.4.html | 40 ++++++++++++++++ .../renders.expected/step-0.0.html | 35 ++++++++++++++ .../renders.expected/step-0.1.html | 37 ++++++++++++++ .../renders.expected/loading.0.html | 19 ++++++++ .../renders.expected/loading.1.html | 23 +++++++++ .../renders.expected/loading.2.html | 24 ++++++++++ .../renders.expected/loading.3.html | 48 +++++++++++++++++++ .../renders.expected/loading.4.html | 40 ++++++++++++++++ .../renders.expected/step-0.0.html | 35 ++++++++++++++ .../renders.expected/step-0.1.html | 37 ++++++++++++++ .../components/app.marko | 16 +++++++ .../ssr-change-src-and-name/embed.marko | 25 ++++++++++ .../ssr-change-src-and-name/embed_2.marko | 15 ++++++ .../ssr-change-src-and-name/index.marko | 13 +++++ .../ssr-change-src-and-name/slot_1.html | 1 + .../ssr-change-src-and-name/slot_2.html | 1 + .../ssr-no-refresh/components/app.marko | 13 +++++ .../fixtures/ssr-no-refresh/embed.marko | 25 ++++++++++ .../fixtures/ssr-no-refresh/embed_2.marko | 9 ++++ .../fixtures/ssr-no-refresh/index.marko | 13 +++++ .../fixtures/ssr-no-refresh/slot_1.html | 1 + .../fixtures/ssr-no-refresh/slot_2.html | 1 + .../micro-frame-sse/__tests__/server.test.ts | 14 ++++++ .../web.component.ts | 23 ++++----- .../stream-source-component/web.component.ts | 4 +- 31 files changed, 626 insertions(+), 12 deletions(-) create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.0.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.1.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.2.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.3.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.4.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/step-0.0.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/step-0.1.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/loading.0.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/loading.1.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/loading.2.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/loading.3.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/loading.4.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/step-0.0.html create mode 100644 src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-no-refresh/renders.expected/step-0.1.html create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/components/app.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/embed.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/embed_2.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/index.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/slot_1.html create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-change-src-and-name/slot_2.html create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/components/app.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/embed.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/embed_2.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/index.marko create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/slot_1.html create mode 100644 src/components/micro-frame-sse/__tests__/fixtures/ssr-no-refresh/slot_2.html diff --git a/src/components/micro-frame-slot/marko-tag.json b/src/components/micro-frame-slot/marko-tag.json index ce5d990..99c6c89 100644 --- a/src/components/micro-frame-slot/marko-tag.json +++ b/src/components/micro-frame-slot/marko-tag.json @@ -50,6 +50,14 @@ } ] }, + "@no-refresh": { + "type": "boolean", + "autocomplete": [ + { + "description": "Flag to disable slot content refresh after stream src change." + } + ] + }, "@class": { "autocomplete": [ { diff --git a/src/components/micro-frame-sse/README.md b/src/components/micro-frame-sse/README.md index c2c6d71..c067fe5 100644 --- a/src/components/micro-frame-sse/README.md +++ b/src/components/micro-frame-sse/README.md @@ -254,6 +254,10 @@ Optional `style` attribute which works the same way as [Marko style attribute](h ``` +## `no-refresh` + +Boolean value controls whether the slot should refresh when its stream source src change. + # Communicating between host and child Communicating between host and child works the same way as [micro-frame](../../../README.md). diff --git a/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.0.html b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.0.html new file mode 100644 index 0000000..721429b --- /dev/null +++ b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.0.html @@ -0,0 +1,19 @@ +
+ Host app +
+ +
+
+
\ No newline at end of file diff --git a/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.1.html b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.1.html new file mode 100644 index 0000000..99f8541 --- /dev/null +++ b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.1.html @@ -0,0 +1,23 @@ +
+ Host app +
+ +
+
+
+

+ test_html for slot_1 +

+
\ No newline at end of file diff --git a/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.2.html b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.2.html new file mode 100644 index 0000000..808df14 --- /dev/null +++ b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.2.html @@ -0,0 +1,24 @@ +
+ Host app +
+ +
+
+
+

+ test_html for slot_1 +

+ next chunk for slot_1 +
\ No newline at end of file diff --git a/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.3.html b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.3.html new file mode 100644 index 0000000..e84c2eb --- /dev/null +++ b/src/components/micro-frame-sse/__tests__/__snapshots__/micro-frame-sse/ssr-change-src-and-name/renders.expected/loading.3.html @@ -0,0 +1,48 @@ +
+ Host app +
+ +
+
+
+

+ test_html for slot_1 +

+ next chunk for slot_1 +
+
+

+ test_html for slot_2 +

+
+ +