Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f252066
use fast invoke js extension methods in sync calls #9917
msynk Jun 7, 2026
a37c91e
resolve review comments
msynk Jun 7, 2026
66ddcee
resolve review comments II
msynk Jun 7, 2026
7dc0a74
fix tests
msynk Jun 7, 2026
e4413ef
fix fast invoke call
msynk Jun 7, 2026
3323b28
resolve local review comments
msynk Jun 9, 2026
f3caf7c
resovle local review findings
msynk Jun 9, 2026
da5449a
resolve review comments III
msynk Jun 9, 2026
4213ff7
resolve review comments IV
msynk Jun 9, 2026
183ea92
Merge branch 'develop' into 9917-blazorui-fastinvoke-js
msynk Jun 10, 2026
73d19e4
resolve review comments V
msynk Jun 10, 2026
7d1c17c
resolve local review findings
msynk Jun 13, 2026
d1b203b
Merge branch 'develop' into 9917-blazorui-fastinvoke-js
msynk Jun 13, 2026
ffe7f4c
fix build
msynk Jun 13, 2026
10da4a1
resolve review comments VI
msynk Jun 13, 2026
5fc51bb
resolve review comments VII
msynk Jun 14, 2026
a94b816
Merge branch '9917-blazorui-fastinvoke-js' of https://github.com/msyn…
msynk Jun 14, 2026
5a2c1ab
rename js util method
msynk Jun 14, 2026
1a0daf9
resolve local review findings II
msynk Jun 14, 2026
0c0a743
improve local review findings III
msynk Jun 14, 2026
d412b02
resolve review comments VIII
msynk Jun 14, 2026
706e07b
Merge branch 'develop' into 9917-blazorui-fastinvoke-js
msynk Jun 21, 2026
4cd6e71
resolve review comments IX
msynk Jun 21, 2026
c8d2a13
resolve review comments X
msynk Jun 21, 2026
ddf5ad6
resolve review comments XI
msynk Jun 21, 2026
6a96dc3
resolve review comments XII
msynk Jun 21, 2026
9bc302f
resolve review comments XIII
msynk Jun 21, 2026
0830e8f
resolve review comments XIV
msynk Jun 21, 2026
a209bb5
Merge branch 'develop' into 9917-blazorui-fastinvoke-js
msynk Jun 26, 2026
aae36e8
resolve review comments XV
msynk Jun 26, 2026
6cf6ec8
resolve review comments XVI
msynk Jun 26, 2026
28314ad
resolve review comments XVII
msynk Jun 26, 2026
7ea4211
resolve review commnets XVIII
msynk Jun 27, 2026
61c705c
Merge branch 'develop' into 9917-blazorui-fastinvoke-js
msynk Jun 27, 2026
d88bff2
resolve review comments XIX
msynk Jun 27, 2026
243d6ed
resovle review comments XX
msynk Jun 27, 2026
257a0d4
resolve review comments XXI
msynk Jun 27, 2026
67994da
resolve review comments XXII
msynk Jun 27, 2026
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
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,21 @@ internal static class BitAppShellJsRuntimeExtensions
{
internal static ValueTask BitAppShellInitScroll(this IJSRuntime jsRuntime, ElementReference container, string url)
{
return jsRuntime.InvokeVoid("BitBlazorUI.AppShell.initScroll", container, url);
return jsRuntime.FastInvokeVoid("BitBlazorUI.AppShell.initScroll", container, url);
}

internal static ValueTask BitAppShellLocationChangedScroll(this IJSRuntime jsRuntime, string url)
{
return jsRuntime.InvokeVoid("BitBlazorUI.AppShell.locationChangedScroll", url);
return jsRuntime.FastInvokeVoid("BitBlazorUI.AppShell.locationChangedScroll", url);
}

internal static ValueTask BitAppShellAfterRenderScroll(this IJSRuntime jsRuntime, string url)
{
return jsRuntime.InvokeVoid("BitBlazorUI.AppShell.afterRenderScroll", url);
return jsRuntime.FastInvokeVoid("BitBlazorUI.AppShell.afterRenderScroll", url);
}

internal static ValueTask BitAppShellDisposeScroll(this IJSRuntime jsRuntime)
{
return jsRuntime.InvokeVoid("BitBlazorUI.AppShell.disposeScroll");
return jsRuntime.FastInvokeVoid("BitBlazorUI.AppShell.disposeScroll");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ namespace BitBlazorUI {

public static updateChart(config: BitChartConfiguration): boolean {
if (!BitChart._bitCharts.has(config.canvasId))
throw `Could not find a chart with the given id. ${config.canvasId}`;
throw `Could not find a chart with the given id: ${config.canvasId}`;

let myChart = BitChart._bitCharts.get(config.canvasId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ internal static class BitChartJsInterop

public static ValueTask BitChartJsRemoveChart(this IJSRuntime jsRuntime, string? canvasId)
{
return jsRuntime.InvokeVoid("BitBlazorUI.BitChart.removeChart", canvasId);
return jsRuntime.FastInvokeVoid("BitBlazorUI.BitChart.removeChart", canvasId);
}

/// <summary>
Expand All @@ -35,7 +35,7 @@ public static ValueTask<bool> BitChartJsSetupChart(this IJSRuntime jsRuntime, Bi
{
var dynParam = StripNulls(chartConfig);
Dictionary<string, object> param = ConvertExpandoObjectToDictionary(dynParam!);
return jsRuntime.Invoke<bool>("BitBlazorUI.BitChart.setupChart", param);
return jsRuntime.FastInvoke<bool>("BitBlazorUI.BitChart.setupChart", param);
}

/// <summary>
Expand All @@ -48,7 +48,7 @@ public static ValueTask<bool> BitChartJsUpdateChart(this IJSRuntime jsRuntime, B
{
var dynParam = StripNulls(chartConfig);
var param = ConvertExpandoObjectToDictionary(dynParam!);
return jsRuntime.Invoke<bool>("BitBlazorUI.BitChart.updateChart", param);
return jsRuntime.FastInvoke<bool>("BitBlazorUI.BitChart.updateChart", param);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ internal static class BitDataGridJsRuntimeExtensions
{
public static async ValueTask<IJSObjectReference> BitDataGridInit(this IJSRuntime jsRuntime, ElementReference tableElement)
{
return await jsRuntime.Invoke<IJSObjectReference>("BitBlazorUI.DataGrid.init", tableElement);
return await jsRuntime.FastInvoke<IJSObjectReference>("BitBlazorUI.DataGrid.init", tableElement);
}

public static async ValueTask BitDataGridCheckColumnOptionsPosition(this IJSRuntime jsRuntime, ElementReference tableElement)
{
await jsRuntime.InvokeVoid("BitBlazorUI.DataGrid.checkColumnOptionsPosition", tableElement);
await jsRuntime.FastInvokeVoid("BitBlazorUI.DataGrid.checkColumnOptionsPosition", tableElement);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ public static ValueTask BitInfiniteScrollingSetup<T>(this IJSRuntime jsRuntime,
decimal? threshold,
DotNetObjectReference<BitInfiniteScrolling<T>> dotnetObj)
{
return jsRuntime.InvokeVoid("BitBlazorUI.InfiniteScrolling.setup", id, scrollerSelector, rootElement, lastElement, threshold, dotnetObj);
return jsRuntime.FastInvokeVoid("BitBlazorUI.InfiniteScrolling.setup", id, scrollerSelector, rootElement, lastElement, threshold, dotnetObj);
}

public static ValueTask BitInfiniteScrollingReobserve(this IJSRuntime jsRuntime,
string id,
ElementReference lastElement)
{
return jsRuntime.InvokeVoid("BitBlazorUI.InfiniteScrolling.reobserve", id, lastElement);
return jsRuntime.FastInvokeVoid("BitBlazorUI.InfiniteScrolling.reobserve", id, lastElement);
}

public static ValueTask BitInfiniteScrollingDispose(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.InfiniteScrolling.dispose", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.InfiniteScrolling.dispose", id);
Comment thread
msynk marked this conversation as resolved.
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ public static ValueTask BitPdfReaderRefreshPage(this IJSRuntime jsRuntime, BitPd

public static ValueTask BitPdfReaderDispose(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.PdfReader.dispose", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.PdfReader.dispose", id);
}
Comment thread
msynk marked this conversation as resolved.
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ internal static class ExtrasJsRuntimeExtensions
{
internal static ValueTask BitExtrasApplyRootClasses(this IJSRuntime jsRuntime, List<string> cssClasses, Dictionary<string, string> cssVariables)
{
return jsRuntime.InvokeVoid("BitBlazorUI.Extras.applyRootClasses", cssClasses, cssVariables);
return jsRuntime.FastInvokeVoid("BitBlazorUI.Extras.applyRootClasses", cssClasses, cssVariables);
}

internal static ValueTask BitExtrasGoToTop(this IJSRuntime jsRuntime, ElementReference element, BitScrollBehavior? behavior = null)
{
return jsRuntime.InvokeVoid("BitBlazorUI.Extras.goToTop", element, behavior?.ToString().ToLowerInvariant());
return jsRuntime.FastInvokeVoid("BitBlazorUI.Extras.goToTop", element, behavior?.ToString().ToLowerInvariant());
}

internal static ValueTask BitExtrasScrollBy(this IJSRuntime jsRuntime, ElementReference element, decimal x, decimal y)
{
return jsRuntime.InvokeVoid("BitBlazorUI.Extras.scrollBy", element, x, y);
return jsRuntime.FastInvokeVoid("BitBlazorUI.Extras.scrollBy", element, x, y);
}

public static ValueTask BitExtrasInitScripts(this IJSRuntime jsRuntime, IEnumerable<string> scripts, bool isModule = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ internal static class BitCircularTimePickerJsRuntimeExtensions
{
internal static ValueTask<string> BitCircularTimePickerSetup(this IJSRuntime js, DotNetObjectReference<BitCircularTimePicker> obj, string pointerUpHandler, string pointerMoveHandler)
{
return js.Invoke<string>("BitBlazorUI.CircularTimePicker.setup", obj, pointerUpHandler, pointerMoveHandler);
return js.FastInvoke<string>("BitBlazorUI.CircularTimePicker.setup", obj, pointerUpHandler, pointerMoveHandler);
}

internal static ValueTask BitCircularTimePickerDispose(this IJSRuntime jSRuntime, string? abortControllerId)
{
return jSRuntime.InvokeVoid("BitBlazorUI.CircularTimePicker.dispose", abortControllerId);
return jSRuntime.FastInvokeVoid("BitBlazorUI.CircularTimePicker.dispose", abortControllerId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ internal static class BitColorPickerJsRuntimeExtensions
{
internal static ValueTask<string> BitColorPickerSetup(this IJSRuntime js, DotNetObjectReference<BitColorPicker> obj, string pointerUpHandler, string pointerMoveHandler)
{
return js.Invoke<string>("BitBlazorUI.ColorPicker.setup", obj, pointerUpHandler, pointerMoveHandler);
return js.FastInvoke<string>("BitBlazorUI.ColorPicker.setup", obj, pointerUpHandler, pointerMoveHandler);
}

internal static ValueTask BitColorPickerDispose(this IJSRuntime jSRuntime, string? abortControllerId)
{
return jSRuntime.InvokeVoid("BitBlazorUI.ColorPicker.dispose", abortControllerId);
return jSRuntime.FastInvokeVoid("BitBlazorUI.ColorPicker.dispose", abortControllerId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ internal static ValueTask<BitFileInfo[]> BitFileUploadSetup(this IJSRuntime jsRu
string? uploadAddress,
Dictionary<string, string>? uploadRequestHttpHeaders)
{
return jsRuntime.Invoke<BitFileInfo[]>("BitBlazorUI.FileUpload.setup", id, dotnetObjectReference, element, append, uploadAddress, uploadRequestHttpHeaders);
return jsRuntime.FastInvoke<BitFileInfo[]>("BitBlazorUI.FileUpload.setup", id, dotnetObjectReference, element, append, uploadAddress, uploadRequestHttpHeaders);
}

internal static ValueTask BitFileUploadUpload(this IJSRuntime jsRuntime,
Expand All @@ -24,34 +24,34 @@ internal static ValueTask BitFileUploadUpload(this IJSRuntime jsRuntime,
string? uploadUrl,
Dictionary<string, string>? httpHeaders)
{
return (httpHeaders is null ? jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.upload", id, from, to, index, uploadUrl)
: jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.upload", id, from, to, index, uploadUrl, httpHeaders));
return (httpHeaders is null ? jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.upload", id, from, to, index, uploadUrl)
: jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.upload", id, from, to, index, uploadUrl, httpHeaders));
}

internal static ValueTask BitFileUploadPause(this IJSRuntime jsRuntime, string id, int index = -1)
{
return jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.pause", id, index);
return jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.pause", id, index);
}

internal static ValueTask<IJSObjectReference> BitFileUploadSetupDragDrop(this IJSRuntime jsRuntime,
ElementReference dragDropZoneElement,
ElementReference inputFileElement)
{
return jsRuntime.Invoke<IJSObjectReference>("BitBlazorUI.FileUpload.setupDragDrop", dragDropZoneElement, inputFileElement);
return jsRuntime.FastInvoke<IJSObjectReference>("BitBlazorUI.FileUpload.setupDragDrop", dragDropZoneElement, inputFileElement);
}

internal static ValueTask BitFileUploadBrowse(this IJSRuntime jsRuntime, ElementReference inputFileElement)
{
return jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.browse", inputFileElement);
return jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.browse", inputFileElement);
}

internal static ValueTask BitFileUploadClear(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.clear", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.clear", id);
}

internal static ValueTask BitFileUploadReset(this IJSRuntime jsRuntime, string id, ElementReference inputFileElement)
{
return jsRuntime.InvokeVoid("BitBlazorUI.FileUpload.reset", id, inputFileElement);
return jsRuntime.FastInvokeVoid("BitBlazorUI.FileUpload.reset", id, inputFileElement);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ internal static class BitOtpInputJsRuntimeExtensions
{
internal static ValueTask BitOtpInputSetup(this IJSRuntime jsRuntime, string id, DotNetObjectReference<BitOtpInput> obj, ElementReference input)
{
return jsRuntime.InvokeVoid("BitBlazorUI.OtpInput.setup", id, obj, input);
return jsRuntime.FastInvokeVoid("BitBlazorUI.OtpInput.setup", id, obj, input);
}

internal static ValueTask BitOtpInputDispose(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.OtpInput.dispose", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.OtpInput.dispose", id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ internal static class BitSearchBoxJsRuntimeExtensions
{
internal static ValueTask BitSearchBoxMoveCursorToEnd(this IJSRuntime jsRuntime, ElementReference input)
{
return jsRuntime.InvokeVoid("BitBlazorUI.SearchBox.moveCursorToEnd", input);
return jsRuntime.FastInvokeVoid("BitBlazorUI.SearchBox.moveCursorToEnd", input);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ internal static class BitSwiperJsRuntimeExtensions
{
internal static ValueTask BitSwiperSetup(this IJSRuntime jsRuntime, string id, ElementReference element, DotNetObjectReference<BitSwiper> dotnetObj)
{
return jsRuntime.InvokeVoid("BitBlazorUI.Swiper.setup", id, element, dotnetObj);
return jsRuntime.FastInvokeVoid("BitBlazorUI.Swiper.setup", id, element, dotnetObj);
}

internal static ValueTask<SwiperDimensions> BitSwiperGetDimensions(this IJSRuntime jsRuntime, ElementReference root, ElementReference container)
{
return jsRuntime.Invoke<SwiperDimensions>("BitBlazorUI.Swiper.getDimensions", root, container);
return jsRuntime.FastInvoke<SwiperDimensions>("BitBlazorUI.Swiper.getDimensions", root, container);
Comment thread
msynk marked this conversation as resolved.
Outdated
}

internal static ValueTask BitSwiperDispose(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.Swiper.dispose", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.Swiper.dispose", id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ internal static class BitModalJsRuntimeExtensions
{
internal static ValueTask BitModalSetupDragDrop(this IJSRuntime js, string id, string dragElementSelector)
{
return js.InvokeVoid("BitBlazorUI.Modal.setupDragDrop", id, dragElementSelector);
return js.FastInvokeVoid("BitBlazorUI.Modal.setupDragDrop", id, dragElementSelector);
}

internal static ValueTask BitModalRemoveDragDrop(this IJSRuntime js, string id, string dragElementSelector)
{
return js.InvokeVoid("BitBlazorUI.Modal.removeDragDrop", id, dragElementSelector);
return js.FastInvokeVoid("BitBlazorUI.Modal.removeDragDrop", id, dragElementSelector);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
element.style.height = height + 'px';
};

public static resetPaneDimensions(element: HTMLElement) {
public static resetPaneDimensions(element: HTMLElement | undefined) {
if (!element || !element.style) return;

element.style.width = '';
element.style.height = '';
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,36 @@ internal static class BitSplitterJsRuntimeExtensions
{
internal static ValueTask BitSplitterResetPaneDimensions(this IJSRuntime js, ElementReference element)
{
return js.InvokeVoid("BitBlazorUI.Splitter.resetPaneDimensions", element);
return js.FastInvokeVoid("BitBlazorUI.Splitter.resetPaneDimensions", element);
}

internal static ValueTask<double> BitSplitterGetSplitterWidth(this IJSRuntime js, ElementReference element)
{
return js.Invoke<double>("BitBlazorUI.Splitter.getSplitterWidth", element);
return js.FastInvoke<double>("BitBlazorUI.Splitter.getSplitterWidth", element);
}

internal static ValueTask BitSplitterSetSplitterWidth(this IJSRuntime js, ElementReference element, double value)
{
return js.InvokeVoid("BitBlazorUI.Splitter.setSplitterWidth", element, value);
return js.FastInvokeVoid("BitBlazorUI.Splitter.setSplitterWidth", element, value);
}

internal static ValueTask<double> BitSplitterGetSplitterHeight(this IJSRuntime js, ElementReference element)
{
return js.Invoke<double>("BitBlazorUI.Splitter.getSplitterHeight", element);
return js.FastInvoke<double>("BitBlazorUI.Splitter.getSplitterHeight", element);
}

internal static ValueTask BitSplitterSetSplitterHeight(this IJSRuntime js, ElementReference element, double value)
{
return js.InvokeVoid("BitBlazorUI.Splitter.setSplitterHeight", element, value);
return js.FastInvokeVoid("BitBlazorUI.Splitter.setSplitterHeight", element, value);
}

internal static ValueTask BitSplitterHandleSplitterDragging(this IJSRuntime js, TouchEventArgs e)
{
return js.InvokeVoid("BitBlazorUI.Splitter.handleSplitterDragging", e);
return js.FastInvokeVoid("BitBlazorUI.Splitter.handleSplitterDragging", e);
}

internal static ValueTask BitSplitterHandleSplitterDraggingEnd(this IJSRuntime js)
{
return js.InvokeVoid("BitBlazorUI.Splitter.handleSplitterDraggingEnd");
return js.FastInvokeVoid("BitBlazorUI.Splitter.handleSplitterDraggingEnd");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@
factor: number;
margin: number;
threshold: number;
dotnetObj: DotNetObject;
dotnetObj: DotNetObject | undefined;
disposer: () => void = () => { };

constructor(id: string,
Expand Down Expand Up @@ -169,6 +169,7 @@
public dispose() {
this.disposer();
this.dotnetObj?.dispose();
this.dotnetObj = undefined;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Diagnostics.CodeAnalysis;

namespace Bit.BlazorUI;
namespace Bit.BlazorUI;

internal static class BitPullToRefreshJsRuntimeExtensions
{
Expand All @@ -16,11 +14,11 @@ internal static ValueTask BitPullToRefreshSetup(this IJSRuntime jsRuntime,
int threshold,
DotNetObjectReference<BitPullToRefresh>? dotnetObjectReference)
{
return jsRuntime.InvokeVoid("BitBlazorUI.PullToRefresh.setup", id, anchor, loading, scrollerElement, scrollerSelector, trigger, factor, margin , threshold, dotnetObjectReference);
return jsRuntime.FastInvokeVoid("BitBlazorUI.PullToRefresh.setup", id, anchor, loading, scrollerElement, scrollerSelector, trigger, factor, margin, threshold, dotnetObjectReference);
}

internal static ValueTask BitPullToRefreshDispose(this IJSRuntime jsRuntime, string id)
{
return jsRuntime.InvokeVoid("BitBlazorUI.PullToRefresh.dispose", id);
return jsRuntime.FastInvokeVoid("BitBlazorUI.PullToRefresh.dispose", id);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ internal static ValueTask BitUtilsSetStyle(this IJSRuntime jsRuntime, ElementRef

internal static ValueTask<float> BitUtilsToggleOverflow(this IJSRuntime jsRuntime, string scrollerSelector, bool isHidden)
{
return jsRuntime.Invoke<float>("BitBlazorUI.Utils.toggleOverflow", scrollerSelector, isHidden);
return jsRuntime.FastInvoke<float>("BitBlazorUI.Utils.toggleOverflow", scrollerSelector, isHidden);
}

internal static ValueTask<float> BitUtilsToggleOverflow(this IJSRuntime jsRuntime, ElementReference scrollerElement, bool isHidden)
{
return jsRuntime.Invoke<float>("BitBlazorUI.Utils.toggleOverflow", scrollerElement, isHidden);
return jsRuntime.FastInvoke<float>("BitBlazorUI.Utils.toggleOverflow", scrollerElement, isHidden);
}
}
Loading
Loading