Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 18 additions & 20 deletions js/chat/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,7 @@ class ChatInput extends LightElement {
if (this.valueIsEmpty) return;
if (this.disabled) return;

Shiny.setInputValue!(this.id, this.value, { priority: "event" });
window.Shiny.setInputValue!(this.id, this.value, { priority: "event" });

// Emit event so parent element knows to insert the message
const sentEvent = new CustomEvent("shiny-chat-input-sent", {
Expand Down Expand Up @@ -527,28 +527,26 @@ customElements.define(CHAT_MESSAGES_TAG, ChatMessages);
customElements.define(CHAT_INPUT_TAG, ChatInput);
customElements.define(CHAT_CONTAINER_TAG, ChatContainer);

$(function () {
Shiny.addCustomMessageHandler(
"shinyChatMessage",
function (message: ShinyChatMessage) {
const evt = new CustomEvent(message.handler, {
detail: message.obj,
});
window.Shiny.addCustomMessageHandler(
"shinyChatMessage",
function (message: ShinyChatMessage) {
const evt = new CustomEvent(message.handler, {
detail: message.obj,
});

const el = document.getElementById(message.id);
const el = document.getElementById(message.id);

if (!el) {
showShinyClientMessage({
status: "error",
message: `Unable to handle Chat() message since element with id
if (!el) {
showShinyClientMessage({
status: "error",
message: `Unable to handle Chat() message since element with id
${message.id} wasn't found. Do you need to call .ui() (Express) or need a
chat_ui('${message.id}') in the UI (Core)?
`,
});
return;
}

el.dispatchEvent(evt);
});
return;
}
);
});

el.dispatchEvent(evt);
}
);
31 changes: 16 additions & 15 deletions js/data-frame/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -527,7 +527,7 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
useEffect(() => {
if (!htmlDeps) return;
// Register the Shiny HtmlDependencies
Shiny.renderDependenciesAsync([...htmlDeps]);
window.Shiny.renderDependenciesAsync([...htmlDeps]);
}, [htmlDeps]);

useEffect(() => {
Expand Down Expand Up @@ -701,7 +701,7 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
} else {
console.error("Unhandled row selection mode:", selectionModes);
}
Shiny.setInputValue!(`${id}_cell_selection`, shinyValue);
window.Shiny.setInputValue!(`${id}_cell_selection`, shinyValue);
}, [id, selection, selectionModes, table, table.getSortedRowModel]);

useEffect(() => {
Expand All @@ -714,10 +714,10 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
desc: sortObj.desc,
});
});
Shiny.setInputValue!(`${id}_sort`, shinySort);
window.Shiny.setInputValue!(`${id}_sort`, shinySort);

// Deprecated as of 2024-05-21
Shiny.setInputValue!(`${id}_column_sort`, shinySort);
window.Shiny.setInputValue!(`${id}_column_sort`, shinySort);
}, [columns, id, sorting]);
useEffect(() => {
if (!id) return;
Expand All @@ -732,10 +732,10 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
value: filterObj.value as FilterValue,
});
});
Shiny.setInputValue!(`${id}_filter`, shinyFilter);
window.Shiny.setInputValue!(`${id}_filter`, shinyFilter);

// Deprecated as of 2024-05-21
Shiny.setInputValue!(`${id}_column_filter`, shinyFilter);
window.Shiny.setInputValue!(`${id}_column_filter`, shinyFilter);
}, [id, columnFilters, columns]);
useEffect(() => {
if (!id) return;
Expand All @@ -744,10 +744,10 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
// Already prefiltered rows!
.getSortedRowModel()
.rows.map((row) => row.index);
Shiny.setInputValue!(`${id}_data_view_rows`, shinyRows);
window.Shiny.setInputValue!(`${id}_data_view_rows`, shinyRows);

// Legacy value as of 2024-05-13
Shiny.setInputValue!(`${id}_data_view_indices`, shinyRows);
window.Shiny.setInputValue!(`${id}_data_view_indices`, shinyRows);
}, [
id,
table,
Expand All @@ -773,7 +773,7 @@ const ShinyDataGrid: FC<ShinyDataGridProps<unknown>> = ({
.filter((x): x is number => x !== null)
.sort();
}
Shiny.setInputValue!(`${id}_selected_rows`, shinyValue);
window.Shiny.setInputValue!(`${id}_selected_rows`, shinyValue);
}, [id, selection, selectionModes, table]);

// ### End row selection ############################################################
Expand Down Expand Up @@ -1083,7 +1083,7 @@ function useVirtualizerMeasureWorkaround(
return measureElementWithRetry;
}

class ShinyDataFrameOutputBinding extends Shiny.OutputBinding {
class ShinyDataFrameOutputBinding extends window.Shiny.OutputBinding {
find(scope: HTMLElement | JQuery<HTMLElement>): JQuery<HTMLElement> {
return $(scope).find("shiny-data-frame");
}
Expand All @@ -1103,7 +1103,7 @@ class ShinyDataFrameOutputBinding extends Shiny.OutputBinding {
el.clearError();
}
}
Shiny.outputBindings.register(
window.Shiny.outputBindings.register(
new ShinyDataFrameOutputBinding(),
"shinyDataFrame"
);
Expand Down Expand Up @@ -1214,12 +1214,13 @@ customElements.define("shiny-data-frame", ShinyDataFrameOutput);
// react listener.
// It would be better to have something similar to session.send_input_message
// for updating outputs, but that requires changes to ShinyJS.
$(function () {
Shiny.addCustomMessageHandler("shinyDataFrameMessage", function (message) {
window.Shiny.addCustomMessageHandler(
"shinyDataFrameMessage",
function (message) {
const evt = new CustomEvent(message.handler, {
detail: message.obj,
});
const el = document.getElementById(message.id);
el?.dispatchEvent(evt);
});
});
}
);
7 changes: 4 additions & 3 deletions js/markdown-stream/markdown-stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -272,8 +272,9 @@ function handleMessage(message: ContentMessage | IsStreamingMessage): void {
}
}

$(function () {
Shiny.addCustomMessageHandler("shinyMarkdownStreamMessage", handleMessage);
});
window.Shiny.addCustomMessageHandler(
"shinyMarkdownStreamMessage",
handleMessage
);

export { MarkdownElement, contentToHTML };
16 changes: 9 additions & 7 deletions js/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"@types/node": "^20.14.10",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/rstudio-shiny": "git+https://[email protected]/rstudio/shiny.git#v1.8.0",
"@types/rstudio-shiny": "git+https://[email protected]/rstudio/shiny.git#v1.10.0",
"@typescript-eslint/eslint-plugin": "^5.59.7",
"@typescript-eslint/parser": "^5.59.7",
"esbuild": "^0.18.11",
Expand Down
10 changes: 5 additions & 5 deletions js/page-output/page-output.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import type { ErrorsMessageValue } from "rstudio-shiny/srcts/types/src/shiny/shinyapp";

class PageOutputBinding extends Shiny.OutputBinding {
class PageOutputBinding extends window.Shiny.OutputBinding {
originalBodyTagAttrs: Array<Attr> | null = null;

find(scope: HTMLElement | JQuery<HTMLElement>): JQuery<HTMLElement> {
return $(scope).find(".shiny-page-output");
}

onValueError(el: HTMLElement, err: ErrorsMessageValue): void {
if (Shiny.unbindAll) Shiny.unbindAll(el);
if (window.Shiny.unbindAll) window.Shiny.unbindAll(el);
this.renderError(el, err);
}

async renderValue(
el: HTMLElement,
data: Parameters<typeof Shiny.renderContentAsync>[1]
data: Parameters<typeof window.Shiny.renderContentAsync>[1]
): Promise<void> {
if (data === null) return;
if (el !== document.body) {
Expand Down Expand Up @@ -67,11 +67,11 @@ class PageOutputBinding extends Shiny.OutputBinding {
data.html = content;
}

await Shiny.renderContentAsync(el, data);
await window.Shiny.renderContentAsync(el, data);
}
}

Shiny.outputBindings.register(
window.Shiny.outputBindings.register(
new PageOutputBinding(),
"shinyPageOutputBinding"
);
Expand Down
6 changes: 2 additions & 4 deletions shiny/api-examples/send_custom_message/app-core.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
ui.tags.div(id="messages"),
ui.tags.script(
"""
$(function() {
Shiny.addCustomMessageHandler("append_msg", function(message) {
$("<p>").text(message.msg).appendTo("#messages");
});
Shiny.addCustomMessageHandler("append_msg", function(message) {
$("<p>").text(message.msg).appendTo("#messages");
});
"""
),
Expand Down
6 changes: 2 additions & 4 deletions shiny/api-examples/send_custom_message/app-express.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@
ui.tags.div(id="messages")
ui.tags.script(
"""
$(function() {
Shiny.addCustomMessageHandler("append_msg", function(message) {
$("<p>").text(message.msg).appendTo("#messages");
});
Shiny.addCustomMessageHandler("append_msg", function(message) {
$("<p>").text(message.msg).appendTo("#messages");
});
"""
)
Expand Down
18 changes: 9 additions & 9 deletions shiny/www/py-shiny/chat/chat.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions shiny/www/py-shiny/chat/chat.js.map

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions shiny/www/py-shiny/data-frame/data-frame.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions shiny/www/py-shiny/data-frame/data-frame.js.map

Large diffs are not rendered by default.

52 changes: 26 additions & 26 deletions shiny/www/py-shiny/markdown-stream/markdown-stream.js

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions shiny/www/py-shiny/markdown-stream/markdown-stream.js.map

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions shiny/www/py-shiny/page-output/page-output.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// page-output/page-output.ts
var PageOutputBinding = class extends Shiny.OutputBinding {
var PageOutputBinding = class extends window.Shiny.OutputBinding {
constructor() {
super(...arguments);
this.originalBodyTagAttrs = null;
Expand All @@ -8,8 +8,8 @@ var PageOutputBinding = class extends Shiny.OutputBinding {
return $(scope).find(".shiny-page-output");
}
onValueError(el, err) {
if (Shiny.unbindAll)
Shiny.unbindAll(el);
if (window.Shiny.unbindAll)
window.Shiny.unbindAll(el);
this.renderError(el, err);
}
async renderValue(el, data) {
Expand Down Expand Up @@ -48,10 +48,10 @@ var PageOutputBinding = class extends Shiny.OutputBinding {
} else {
data.html = content;
}
await Shiny.renderContentAsync(el, data);
await window.Shiny.renderContentAsync(el, data);
}
};
Shiny.outputBindings.register(
window.Shiny.outputBindings.register(
new PageOutputBinding(),
"shinyPageOutputBinding"
);
Expand Down
Loading