From 77dbf1246bfd90fec0a443dcd6ab02589f21e594 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Mon, 18 Apr 2022 12:43:37 +0800 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=20QRCode=20?= =?UTF-8?q?=E6=89=93=E5=8C=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/QRCode/QRCode.esm.js | 28 +++++++++++++++++++ .../Components/QRCode/QRCode.js | 20 ------------- src/BootstrapBlazor/bundleconfig.json | 10 +++++++ .../wwwroot/modules/qrcode.bundle.js | 28 +++++++++++++++++++ .../modules/{barcodereader => }/qrcode.min.js | 0 5 files changed, 66 insertions(+), 20 deletions(-) create mode 100644 src/BootstrapBlazor/Components/QRCode/QRCode.esm.js delete mode 100644 src/BootstrapBlazor/Components/QRCode/QRCode.js create mode 100644 src/BootstrapBlazor/wwwroot/modules/qrcode.bundle.js rename src/BootstrapBlazor/wwwroot/modules/{barcodereader => }/qrcode.min.js (100%) diff --git a/src/BootstrapBlazor/Components/QRCode/QRCode.esm.js b/src/BootstrapBlazor/Components/QRCode/QRCode.esm.js new file mode 100644 index 000000000..79701e74a --- /dev/null +++ b/src/BootstrapBlazor/Components/QRCode/QRCode.esm.js @@ -0,0 +1,28 @@ +export function bb_qrcode(el, method, text, obj) { + BootstrapBlazorModules.addScript('_content/BootstrapBlazor/modules/qrcode.min.js'); + + var handler = window.setInterval(function () { + if ($.isFunction(QRCode)) { + window.clearInterval(handler); + + dowork(); + } + }, 100); + + var dowork = function () { + var $el = $(el); + var $qr = $el.find('.qrcode-img'); + $qr.html(''); + if (method === 'generate') { + new QRCode($qr[0], { + text: text, + width: 128, + height: 128, + colorDark: '#000000', + colorLight: '#ffffff', + correctLevel: QRCode.CorrectLevel.H + }); + obj.invokeMethodAsync('Generated'); + } + }; +}; diff --git a/src/BootstrapBlazor/Components/QRCode/QRCode.js b/src/BootstrapBlazor/Components/QRCode/QRCode.js deleted file mode 100644 index 1b1034022..000000000 --- a/src/BootstrapBlazor/Components/QRCode/QRCode.js +++ /dev/null @@ -1,20 +0,0 @@ -(function ($) { - $.extend({ - bb_qrcode: function (el, obj, method, text) { - var $el = $(el); - var $qr = $el.find('.qrcode-img'); - $qr.html(''); - if (method === 'generate') { - qrcode = new QRCode($qr[0], { - text: text, - width: 128, - height: 128, - colorDark: '#000000', - colorLight: '#ffffff', - correctLevel: QRCode.CorrectLevel.H - }); - obj.invokeMethodAsync('Generated'); - } - }, - }); -})(jQuery); diff --git a/src/BootstrapBlazor/bundleconfig.json b/src/BootstrapBlazor/bundleconfig.json index 97b4935ad..9204bd4dd 100644 --- a/src/BootstrapBlazor/bundleconfig.json +++ b/src/BootstrapBlazor/bundleconfig.json @@ -45,5 +45,15 @@ "enabled": false, "renameLocals": true } + }, + { + "outputFileName": "wwwroot/modules/qrcode.bundle.js", + "inputFiles": [ + "Components/qrcode/QRCode.esm.js" + ], + "minify": { + "enabled": false, + "renameLocals": true + } } ] diff --git a/src/BootstrapBlazor/wwwroot/modules/qrcode.bundle.js b/src/BootstrapBlazor/wwwroot/modules/qrcode.bundle.js new file mode 100644 index 000000000..0ee2bc253 --- /dev/null +++ b/src/BootstrapBlazor/wwwroot/modules/qrcode.bundle.js @@ -0,0 +1,28 @@ +export function bb_qrcode(el, method, text, obj) { + BootstrapBlazorModules.addScript('_content/BootstrapBlazor/modules/qrcode.min.js'); + + var handler = window.setInterval(function () { + if ($.isFunction(QRCode)) { + window.clearInterval(handler); + + dowork(); + } + }, 100); + + var dowork = function () { + var $el = $(el); + var $qr = $el.find('.qrcode-img'); + $qr.html(''); + if (method === 'generate') { + new QRCode($qr[0], { + text: text, + width: 128, + height: 128, + colorDark: '#000000', + colorLight: '#ffffff', + correctLevel: QRCode.CorrectLevel.H + }); + obj.invokeMethodAsync('Generated'); + } + }; +}; diff --git a/src/BootstrapBlazor/wwwroot/modules/barcodereader/qrcode.min.js b/src/BootstrapBlazor/wwwroot/modules/qrcode.min.js similarity index 100% rename from src/BootstrapBlazor/wwwroot/modules/barcodereader/qrcode.min.js rename to src/BootstrapBlazor/wwwroot/modules/qrcode.min.js -- Gitee From bdf48c08d312fe7e05abc2fdc6ba1d59552fde24 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Mon, 18 Apr 2022 12:44:08 +0800 Subject: [PATCH 2/5] =?UTF-8?q?refactor:=20=E4=BA=8C=E7=BB=B4=E7=A0=81?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E6=94=B9=E4=B8=BA=E5=8A=A8=E6=80=81=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/QRCode/QRCode.razor.cs | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/BootstrapBlazor/Components/QRCode/QRCode.razor.cs b/src/BootstrapBlazor/Components/QRCode/QRCode.razor.cs index 00f1e3818..bf73b7b6f 100644 --- a/src/BootstrapBlazor/Components/QRCode/QRCode.razor.cs +++ b/src/BootstrapBlazor/Components/QRCode/QRCode.razor.cs @@ -11,13 +11,10 @@ namespace BootstrapBlazor.Components; /// /// QRCode 组件 /// -public partial class QRCode : IDisposable +public partial class QRCode : IAsyncDisposable { private ElementReference QRCodeElement { get; set; } - [NotNull] - private JSInterop? Interop { get; set; } - /// /// 获得/设置 二维码生成后回调委托 /// @@ -63,6 +60,9 @@ public partial class QRCode : IDisposable private string? MethodName { get; set; } + [NotNull] + private JSModule? Module { get; set; } + /// /// OnInitialized 方法 /// @@ -73,8 +73,6 @@ public partial class QRCode : IDisposable PlaceHolder ??= Localizer[nameof(PlaceHolder)]; ClearButtonText ??= Localizer[nameof(ClearButtonText)]; GenerateButtonText ??= Localizer[nameof(GenerateButtonText)]; - - Interop = new JSInterop(JSRuntime); } /// @@ -94,7 +92,11 @@ public partial class QRCode : IDisposable { if (!string.IsNullOrEmpty(MethodName)) { - await Interop.InvokeVoidAsync(this, QRCodeElement, "bb_qrcode", MethodName, Content ?? ""); + if (Module == null) + { + Module = await JSRuntime.LoadModule("qrcode.bundle.js", this); + } + await Module.InvokeVoidAsync("bb_qrcode", QRCodeElement, MethodName, Content ?? ""); MethodName = null; } } @@ -128,21 +130,23 @@ public partial class QRCode : IDisposable /// Dispose 方法 /// /// - protected virtual void Dispose(bool disposing) + protected virtual async ValueTask DisposeAsync(bool disposing) { if (disposing) { - Interop.Dispose(); - Interop = null; + if (Module != null) + { + await Module.DisposeAsync(); + } } } /// /// Dispose 方法 /// - public void Dispose() + public async ValueTask DisposeAsync() { - Dispose(disposing: true); + await DisposeAsync(true); GC.SuppressFinalize(this); } } -- Gitee From 46272e9e6c3e26aa4d2963c902fb3f6067007b25 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Mon, 18 Apr 2022 12:44:20 +0800 Subject: [PATCH 3/5] =?UTF-8?q?doc:=20=E5=88=A0=E9=99=A4=E6=B3=A8=E9=94=80?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Markdown/Markdown.razor.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Extensions/Components/BootstrapBlazor.Markdown/Components/Markdown/Markdown.razor.cs b/src/Extensions/Components/BootstrapBlazor.Markdown/Components/Markdown/Markdown.razor.cs index 61b5e4600..7ac2b7edd 100644 --- a/src/Extensions/Components/BootstrapBlazor.Markdown/Components/Markdown/Markdown.razor.cs +++ b/src/Extensions/Components/BootstrapBlazor.Markdown/Components/Markdown/Markdown.razor.cs @@ -153,13 +153,11 @@ public partial class Markdown : IAsyncDisposable var jSObjectReference = await JSRuntime.InvokeAsync(identifier: "import", $"./_content/BootstrapBlazor.Markdown/js/bootstrap.blazor.markdown.min.js"); Module = new JSModule(jSObjectReference); await Module.InvokeVoidAsync("bb_markdown", MarkdownElement, Interop, _markdownOption, nameof(Update)); - //await Interop.InvokeVoidAsync(this, MarkdownElement, "bb_markdown", _markdownOption, nameof(Update)); } if (IsRender) { await Module.InvokeVoidAsync("bb_markdown", MarkdownElement, Interop, Value ?? "", "setMarkdown"); - //await Interop.InvokeVoidAsync(this, MarkdownElement, "bb_markdown", Value ?? "", "setMarkdown"); } } -- Gitee From 780185effa0058b606b29ddacca5256dff52a9f0 Mon Sep 17 00:00:00 2001 From: Argo-Lenovo Date: Mon, 18 Apr 2022 12:59:30 +0800 Subject: [PATCH 4/5] =?UTF-8?q?chore:=20=E6=9B=B4=E6=96=B0=E6=89=93?= =?UTF-8?q?=E5=8C=85=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.bundle.min.js | 2 +- src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.bundle.min.js b/src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.bundle.min.js index e100fc8f5..7a5b78d5b 100644 --- a/src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.bundle.min.js +++ b/src/BootstrapBlazor/wwwroot/js/bootstrap.blazor.bundle.min.js @@ -11,4 +11,4 @@ /*! Summernote v0.8.18 | (c) 2013- Alan Hong and other contributors | MIT license */ !function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var o in n)("object"==typeof exports?exports:t)[o]=n[o]}}(self,(function(t){return(()=>{"use strict";var e={9458:e=>{e.exports=t}},n={};function o(t){var i=n[t];if(void 0!==i)return i.exports;var r=n[t]={exports:{}};return e[t](r,r.exports,o),r.exports}o.amdO={},o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var i={};return(()=>{o.r(i);var t=o(9458),e=o.n(t);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){for(var n=0;n'),u=s('