// Copyright (c) MudBlazor 2021 // MudBlazor licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. window.getTabbableElements = (element) => { return element.querySelectorAll( "a[href]:not([tabindex='-1'])," + "area[href]:not([tabindex='-1'])," + "button:not([disabled]):not([tabindex='-1'])," + "input:not([disabled]):not([tabindex='-1']):not([type='hidden'])," + "select:not([disabled]):not([tabindex='-1'])," + "textarea:not([disabled]):not([tabindex='-1'])," + "iframe:not([tabindex='-1'])," + "details:not([tabindex='-1'])," + "[tabindex]:not([tabindex='-1'])," + "[contentEditable=true]:not([tabindex='-1']" ); }; //from: https://github.com/RemiBou/BrowserInterop window.serializeParameter = (data, spec) => { if (typeof data == "undefined" || data === null) { return null; } if (typeof data === "number" || typeof data === "string" || typeof data == "boolean") { return data; } let res = (Array.isArray(data)) ? [] : {}; if (!spec) { spec = "*"; } for (let i in data) { let currentMember = data[i]; if (typeof currentMember === 'function' || currentMember === null) { continue; } let currentMemberSpec; if (spec != "*") { currentMemberSpec = Array.isArray(data) ? spec : spec[i]; if (!currentMemberSpec) { continue; } } else { currentMemberSpec = "*" } if (typeof currentMember === 'object') { if (Array.isArray(currentMember) || currentMember.length) { res[i] = []; for (let j = 0; j < currentMember.length; j++) { const arrayItem = currentMember[j]; if (typeof arrayItem === 'object') { res[i].push(this.serializeParameter(arrayItem, currentMemberSpec)); } else { res[i].push(arrayItem); } } } else { //the browser provides some member (like plugins) as hash with index as key, if length == 0 we shall not convert it if (currentMember.length === 0) { res[i] = []; } else { res[i] = this.serializeParameter(currentMember, currentMemberSpec); } } } else { // string, number or boolean if (currentMember === Infinity) { //inifity is not serialized by JSON.stringify currentMember = "Infinity"; } if (currentMember !== null) { //needed because the default json serializer in jsinterop serialize null values res[i] = currentMember; } } } return res; };