UNPKG

@mikezimm/fps-library-v2

Version:

Library of reusable typescript/javascript functions, interfaces and constants

410 lines (408 loc) 25.7 kB
/** * CodeAnalizerComment: Updated 5 imports on 2024-09-22 14:49:52 * Update:: import { ISpecialMessage } to '@mikezimm/fps-core-v7/lib/banner/components/SpecialBanner/interface;' * Update:: import { IWebpartBannerProps } to '@mikezimm/fps-core-v7/lib/banner/mainReact/IWebpartBannerProps;' * Update:: import { createKeySiteProps } to '@mikezimm/fps-core-v7/lib/banner/components/Gear/CreateKeySiteProps;' * Update:: import { IThisFPSWebPartClass } to '@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/IThisFPSWebPartClass1152;' * Update:: import { check4Tricks } to '@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/functions/showTricks;' */ /** * CodeAnalizerComment: Updated 15 imports on 2024-09-21 23:07:24 * Update:: import { baseBannerCmdStyles } to '@mikezimm/fps-core-v7/lib/common/commandStyles/defaults;' * Update:: import { baseBannerStyles } to '@mikezimm/fps-core-v7/lib/common/commandStyles/defaults;' * Update:: import { check4SiteTheme } to '@mikezimm/fps-core-v7/lib/common/commandStyles/ISiteThemeChoices;' * Update:: import { DisplayMode } to '@mikezimm/fps-core-v7/lib/types/@msft/1.15.2/displayMode;' * Update:: import { verifyAudienceVsUser } to '@mikezimm/fps-core-v7/lib/logic/Users/CheckPermissions;' * Update:: import { getReactCSSFromString } to '@mikezimm/fps-core-v7/lib/logic/Strings/reactCSS;' * Update:: import { ICurleyBraceCheck } to '@mikezimm/fps-core-v7/lib/logic/Strings/reactCSS;' * Update:: import { createEasyPagesSourceWPProps } to '@mikezimm/fps-core-v7/lib/components/atoms/easy-pages/functions/createEasyPagesSourceWPProps;' * Update:: import { createEasyPagesExtraWPProps } to '@mikezimm/fps-core-v7/lib/components/atoms/easy-pages/functions/createEasyPagesExtraWPProps;' * Update:: import { createEasyIconsWPProps } to '@mikezimm/fps-core-v7/lib/components/atoms/easy-icons/functions/createEasyIconsWPProps;' * Update:: import { IThisFPSWebPartClass } to '@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/IThisFPSWebPartClass1152;' * Update:: import { IMinWPFieldPanelProps } to '@mikezimm/fps-core-v7/lib/components/molecules/FieldPanel/interfaces/IMinWPFieldPanelProps;' * Update:: import { check4Tricks } to '@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/functions/showTricks;' * Update:: import { check4This } to '@mikezimm/fps-core-v7/lib/logic/Links/CheckSearch;' * Update:: import { getCert } to '@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/getCert;' */ // import { DisplayMode } from "@microsoft/sp-core-library"; import { baseBannerCmdStyles, baseBannerStyles } from "@mikezimm/fps-core-v7/lib/common/commandStyles/defaults"; import { check4SiteTheme } from "@mikezimm/fps-core-v7/lib/common/commandStyles/ISiteThemeChoices"; import { DisplayMode, } from "@mikezimm/fps-core-v7/lib/types/@msft/1.15.2/displayMode"; import { createPerformanceTableVisitor, } from "../../components/indexes/Performance"; import { verifyAudienceVsUser } from "@mikezimm/fps-core-v7/lib/components/atoms/Users/CheckPermissions"; import { getReactCSSFromString } from "@mikezimm/fps-core-v7/lib/logic/Strings/reactCSS"; import { visitorPanelInfo } from "../components/VisitorPanel/VisitorPanelComponent"; // import { SPPermission } from '@microsoft/sp-page-context'; import { createEasyPagesSourceWPProps } from "@mikezimm/fps-core-v7/lib/components/atoms/easy-pages/functions/createEasyPagesSourceWPProps"; import { createEasyPagesExtraWPProps } from "@mikezimm/fps-core-v7/lib/components/atoms/easy-pages/functions/createEasyPagesExtraWPProps"; import { createEasyIconsWPProps } from "@mikezimm/fps-core-v7/lib/components/atoms/easy-icons/functions/createEasyIconsWPProps"; import { createKeySiteProps } from "@mikezimm/fps-core-v7/lib/banner/components/Gear/CreateKeySiteProps"; import { check4Tricks } from "@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/functions/showTricks"; import { check4This, Check4 } from "@mikezimm/fps-core-v7/lib/logic/Links/CheckSearch"; import { getCert } from "@mikezimm/fps-core-v7/lib/banner/FPSWebPartClass/getCert"; /** * This function takes the main webpart class * @param setup * @returns */ export function mainWebPartRenderBannerSetupX(setup) { const { SPPermission } = setup; const { displayMode, _beAReader, _FPSUser, _FPSEnviro, properties, _modifyBannerTitle, _forceBanner, _sitePresets, _allowPandoramic, _addParamToUrl, } = setup.main; const { _tenantHelpUrl, _tenanatFirst5, _tenantGetStartedUrl, _tenantPolicies, _youtubeChannel, _youtubeFirst5, _youtubeHelp, _youtubeGetStarted, _preConfigClassTest } = setup.main; const { pageContext, _pageLayoutType } = setup.main.context; // Field Panel specific properties const { _FieldPanelDesignMode, _FieldPanelListProp, _FieldPanelWebProp, _allowFieldPanel, _fpsSpService } = setup.main; const renderAsReader = displayMode === DisplayMode.Read && _beAReader === true ? true : false; const isSiteAdmin = renderAsReader !== true && _FPSUser.isSiteAdmin === true ? true : false; /*** * d888888b d8888b. d888888b .o88b. db dD .d8888. * `~~88~~' 88 `8D `88' d8P Y8 88 ,8P' 88' YP * 88 88oobY' 88 8P 88,8P `8bo. * 88 88`8b 88 8b 88`8b `Y8b. * 88 88 `88. .88. Y8b d8 88 `88. db 8D * YP 88 YD Y888888P `Y88P' YP YD `8888Y' * * */ // // let showTricks: any = false; // setup.main._trickyEmailsAll.map( getsTricks => { // if ( pageContext.user && pageContext.user.loginName && pageContext.user.loginName.toLowerCase().indexOf( getsTricks ) > -1 ) { // showTricks = true ; // properties.showRepoLinks = true; //Always show these users repo links // } // } ); const showTricks = check4Tricks(setup.main._trickyEmailsAll, { ...pageContext.user, ..._FPSUser }); properties.showRepoLinks = showTricks; /*** * db db d88888b db d8888b. d8888b. .d8b. d8b db d88888b db * 88 88 88' 88 88 `8D 88 `8D d8' `8b 888o 88 88' 88 * 88ooo88 88ooooo 88 88oodD' 88oodD' 88ooo88 88V8o 88 88ooooo 88 * 88~~~88 88~~~~~ 88 88~~~ 88~~~ 88~~~88 88 V8o88 88~~~~~ 88 * 88 88 88. 88booo. 88 88 88 88 88 V888 88. 88booo. * YP YP Y88888P Y88888P 88 88 YP YP VP V8P Y88888P Y88888P * * */ const showRepoLinks = renderAsReader === true || properties.showRepoLinks === false ? false : true; //Always show full panel if you are SCA const showFullPanel = isSiteAdmin === true ? true : verifyAudienceVsUser(_FPSUser, showTricks, properties.fullPanelAudience, SPPermission.editListItems, renderAsReader); let errMessage = ''; let validDocsContacts = ''; //This may no longer be needed if links below are commented out. if ((properties.documentationIsValid !== true && properties.documentationLinkUrl) //This means it failed the url ping test... throw error || (properties.requireDocumentation === true && !properties.documentationLinkUrl)) { //This means docs are required but there isn't one provided errMessage += ' Invalid Support Doc Link: ' + (properties.documentationLinkUrl ? properties.documentationLinkUrl : 'Empty. '); validDocsContacts += 'DocLink,'; } if (properties.requireContacts === true) { if (!properties.supportContacts || properties.supportContacts.length < 1) { errMessage += ' Need valid Support Contacts'; validDocsContacts += 'Contacts,'; } } const replacePanelWarning = `Anyone with lower permissions than '${properties.fullPanelAudience}' will ONLY see this content in panel`; let infoElement = 'More Information'; if (properties.infoElementChoice === 'Text') { infoElement = properties.infoElementText; } else if (properties.infoElementChoice) { infoElement = properties.infoElementChoice; } /*** * d8b db d88888b .d8b. d8888b. d88888b db d88888b .88b d88. d88888b d8b db d888888b .d8888. * 888o 88 88' d8' `8b 88 `8D 88' 88 88' 88'YbdP`88 88' 888o 88 `~~88~~' 88' YP * 88V8o 88 88ooooo 88ooo88 88oobY' 88ooooo 88 88ooooo 88 88 88 88ooooo 88V8o 88 88 `8bo. * 88 V8o88 88~~~~~ 88~~~88 88`8b 88~~~~~ 88 88~~~~~ 88 88 88 88~~~~~ 88 V8o88 88 `Y8b. * 88 V888 88. 88 88 88 `88. 88. 88booo. 88. 88 88 88 88. 88 V888 88 db 8D * VP V8P Y88888P YP YP 88 YD Y88888P Y88888P Y88888P YP YP YP Y88888P VP V8P YP `8888Y' * * */ //Always pass false for verifyAudienceVsUser 'beAUser' or it will hide the beAUser Icon. const showBeAUserIcon = verifyAudienceVsUser(_FPSUser, showTricks, properties.beAUserAudience, SPPermission.addAndCustomizePages, false); properties.showBannerGear = verifyAudienceVsUser(_FPSUser, showTricks, properties.homeParentGearAudience, null, renderAsReader); const hasCustomizePages = isSiteAdmin === true ? true : verifyAudienceVsUser(_FPSUser, showTricks, properties.homeParentGearAudience, SPPermission.addAndCustomizePages, renderAsReader); const homeParentGearAudience = isSiteAdmin === true ? true : verifyAudienceVsUser(_FPSUser, showTricks, properties.homeParentGearAudience, null, renderAsReader); const showBannerGear = isSiteAdmin === true ? true : properties.showBannerGear === true && homeParentGearAudience === true ? true : false; const showGoToHome = isSiteAdmin === true ? true : properties.showGoToHome === true && homeParentGearAudience === true ? true : false; const showGoToParent = isSiteAdmin === true ? true : properties.showGoToParent === true && homeParentGearAudience === true ? true : false; const showExport = isSiteAdmin === true ? true : properties.showExport === true && hasCustomizePages !== true ? false : true; const enableExpandoramic = _allowPandoramic === false || properties.enableExpandoramic === false ? false : verifyAudienceVsUser(_FPSUser, showTricks, properties.expandoAudience, null, renderAsReader); /*** * d888888b d888888b d888888b db d88888b .d8888. d888888b db db db d88888b .d8888. * `~~88~~' `88' `~~88~~' 88 88' 88' YP `~~88~~' `8b d8' 88 88' 88' YP * 88 88 88 88 88ooooo `8bo. 88 `8bd8' 88 88ooooo `8bo. * 88 88 88 88 88~~~~~ `Y8b. 88 88 88 88~~~~~ `Y8b. * 88 .88. 88 88booo. 88. db 8D 88 88 88booo. 88. db 8D * YP Y888888P YP Y88888P Y88888P `8888Y' YP YP Y88888P Y88888P `8888Y' * * */ // Updated for SPA to get Title which is also the window.name property https://github.com/mikezimm/drilldown7/issues/243 const bannerTitle = _modifyBannerTitle === true && properties.bannerTitle && properties.bannerTitle.length > 0 ? properties.bannerTitle : _pageLayoutType === 'SingleWebPartAppPageLayout' ? document.title : setup.main._repoLink.desc; //Added useSiteTheme for SiteTheme in Banner const useSiteTheme = check4SiteTheme(properties.bannerStyleChoice); const bannerStyle = getReactCSSFromString('bannerStyle', properties.bannerStyle, baseBannerStyles, useSiteTheme); const bannerCmdStyle = getReactCSSFromString('bannerCmdStyle', properties.bannerCmdStyle, baseBannerCmdStyles, useSiteTheme); //Over-rides expand for certain users // Changed expandoStyle from buildExpandoStyle function based on https://github.com/mikezimm/CoreFPS114/issues/6 // let expandobuildExpandoStyle = buildExpandoStyle( errMessage, properties, bbs.errorObjArray, bbs.expandoErrorObj ); const expandoStyleObject = getReactCSSFromString('expandoStyle', properties.expandoStyle, {}, false); const styleErrors = []; if (bannerStyle.errMessage) { styleErrors.push(bannerStyle.errMessage); } if (bannerCmdStyle.errMessage) { styleErrors.push(bannerCmdStyle.errMessage); } if (expandoStyleObject.errMessage) { styleErrors.push(expandoStyleObject.errMessage); } const styleErrorMessage = styleErrors.length > 0 ? `; ${styleErrors.join('; ')}` : ''; errMessage += styleErrorMessage; const showBannerError = errMessage !== '' && errMessage !== null ? true : false; /*** * d88888b d888888b d88888b db d8888b. d8888b. .d8b. d8b db d88888b db * 88' `88' 88' 88 88 `8D 88 `8D d8' `8b 888o 88 88' 88 * 88ooo 88 88ooooo 88 88 88 88oodD' 88ooo88 88V8o 88 88ooooo 88 * 88~~~ 88 88~~~~~ 88 88 88 88~~~ 88~~~88 88 V8o88 88~~~~~ 88 * 88 .88. 88. 88booo. 88 .8D 88 88 88 88 V888 88. 88booo. * YP Y888888P Y88888P Y88888P Y8888D' 88 YP YP VP V8P Y88888P Y88888P * * */ const MinFPProps = setup.main.properties; const saveCommands = _FieldPanelDesignMode === 'Disabled' ? null : setup.main._saveFieldPanelCommandsFunction.bind(setup.main); const saveViews = _FieldPanelDesignMode === 'Disabled' ? null : setup.main._saveFieldPanelViewsFunction.bind(setup.main); // 2024-12-21: These two can be commented out (I think) const FieldPanelWebUrl = _FieldPanelWebProp && MinFPProps[_FieldPanelWebProp] ? MinFPProps[_FieldPanelWebProp] : pageContext.web.absoluteUrl; const FieldPanelListTitle = _FieldPanelListProp ? MinFPProps[_FieldPanelListProp] : 'Documents'; const fieldPanelProps = { displayMode: displayMode, lists: [{ fpsSpService: _fpsSpService, webUrl: _FieldPanelWebProp && MinFPProps[_FieldPanelWebProp] ? MinFPProps[_FieldPanelWebProp] : pageContext.web.absoluteUrl, listTitle: _FieldPanelListProp ? MinFPProps[_FieldPanelListProp] : 'Documents', }], bannerPillShape: setup.main.properties.bannerPillShape, designMode: _FieldPanelDesignMode, tryCommands: null, saveCommands: saveCommands, tryViews: null, saveViews: saveViews, fpsSpService: setup.main._fpsSpService, // enable: this._allowFieldPanel === true && FieldPanelWebUrl && FieldPanelListTitle ? true : false, }; const startTime = new Date(); const refreshId = startTime.toISOString().replace('T', ' T'); // + ' ~ ' + startTime.toLocaleTimeString(); const { enableSUL, sUCode } = setup.main.properties; // https://github.com/mikezimm/fps-library-v2/issues/180 const certCount = setup.main._IFPSCert ? setup.main._IFPSCert.length : 0; const fpsCert = certCount === 1 ? setup.main._IFPSCert[0] : getCert(setup.main._IFPSCert, enableSUL, sUCode, setup.main._repoLink.cCode); // Get again of for some reason it was not already narrowed down /*** * d8888b. .d8b. d8b db d8b db d88888b d8888b. d8888b. d8888b. .d88b. d8888b. .d8888. * 88 `8D d8' `8b 888o 88 888o 88 88' 88 `8D 88 `8D 88 `8D .8P Y8. 88 `8D 88' YP * 88oooY' 88ooo88 88V8o 88 88V8o 88 88ooooo 88oobY' 88oodD' 88oobY' 88 88 88oodD' `8bo. * 88~~~b. 88~~~88 88 V8o88 88 V8o88 88~~~~~ 88`8b 88~~~ 88`8b 88 88 88~~~ `Y8b. * 88 8D 88 88 88 V888 88 V888 88. 88 `88. 88 88 `88. `8b d8' 88 db 8D * Y8888P' YP YP VP V8P VP V8P Y88888P 88 YD 88 88 YD `Y88P' 88 `8888Y' * * */ //https://github.com/mikezimm/fps-library-v2/issues/50 const defaultVersionInfo = `202X-XX-79 - UPDATE CLASS vX.X.X.XX`; const versionData = setup.main._panelVersion ? setup.main._panelVersion.split(' - ') : defaultVersionInfo.split(' - '); const bannerProps = { fpsCert: fpsCert, webpartHistory: properties.webpartHistory, easyPagesSourceProps: createEasyPagesSourceWPProps(setup.main), easyPagesExtraProps: createEasyPagesExtraWPProps(setup.main, showTricks, renderAsReader), EasyIconsObject: createEasyIconsWPProps(properties), sitePresets: _sitePresets, tenantHelp: { _tenantHelpUrl: _tenantHelpUrl, _tenanatFirst5: _tenanatFirst5, _tenantGetStartedUrl: _tenantGetStartedUrl, _tenantPolicies: _tenantPolicies, _youtubeChannel: _youtubeChannel, _youtubeFirst5: _youtubeFirst5, _youtubeHelp: _youtubeHelp, _youtubeGetStarted: _youtubeGetStarted, _preConfigClassTest: _preConfigClassTest, }, keySiteProps: createKeySiteProps(pageContext), lockProps: { enableLockProps: properties.enableLockProps, lockedByUser: properties.lockedByUser, lockedTime: properties.lockedTime, lockedMess1: properties.lockedMess1, lockedMess2: properties.lockedMess2, lockedMess3: properties.lockedMess3, lockedHTML1: properties.lockedHTML1, }, overRideProps: { enableForceOverRide: properties.enableForceOverRide, overrideByUser: properties.overrideByUser, overrideTime: properties.overrideTime, overrideProps: properties.overrideProps, overrideKeys: properties.overrideKeys, }, easyAnalyticsProps: { analyticsListX: setup.main._analyticsListX, analyticsWebX: setup.main._analyticsWebX, analyticsOptionsX: setup.main._analyticsOptionsX, trickyLytics: fpsCert.trickyLytics, wpTDLeft: setup.main._wpTDLeft, wpTDRight: setup.main._wpTDRight, wpFilterProps: setup.main._wpFilterProps, class1: setup.main._fpsSiteThemePrimary, class2: setup.main._fpsSiteThemeDark, renderBarsRow: setup.main._renderBarsRow, renderItemsRow: setup.main._renderItemsRow, expandedState: false, }, siteThemes: { dark: setup.main._fpsSiteThemeDark, light: setup.main._fpsSiteThemeLight, primary: setup.main._fpsSiteThemePrimary, }, fieldPanelProps: fieldPanelProps, fpsPinMenu: { defPinState: properties.defPinState ? properties.defPinState : 'disabled', forcePinState: properties.forcePinState !== true ? false : true, domElement: setup.main.context.domElement, pageLayout: properties.pageLayout, }, refreshId: refreshId, FPSUser: _FPSUser, FPSEnviro: _FPSEnviro, exportProps: setup.exportProps, analyticsProps: setup.analyticsProps, context: setup.main.context, fpsSpService: setup.main._fpsSpService, displayMode: displayMode, WebPartHelpPivots: [], SpecialMessage: setup.SpecialMessage, panelTitle: showBannerError === true ? errMessage : bannerTitle, infoElement: infoElement, // changed null to undefined: https://github.com/mikezimm/ALVFinMan/issues/171 contentPages: { aboutTable: undefined, advancedContent: undefined, basicsContent: undefined, errorsContent: undefined, futureContent: undefined, getRandomTip: undefined, gettingStartedContent: undefined, tricksTable: undefined, webParTips: [], whyContent: undefined, }, bannerWidth: (setup.main.domElement.clientWidth - (displayMode === DisplayMode.Edit ? 250 : 0)), showBanner: showTricks === true || _forceBanner === true || properties.showBanner !== false ? true : false, feedbackEmail: properties.feedbackEmail ? properties.feedbackEmail : '', showTricks: showTricks, showBannerGear: showBannerGear, showGoToHome: showGoToHome, showGoToParent: showGoToParent, showRepoLinks: showRepoLinks, showExport: showExport, showFullPanel: showFullPanel, replacePanelHTML: properties.replacePanelHTML, bonusHTML1: null, panelPerformance: setup.main._performance, bonusHTML2: null, replacePanelWarning: replacePanelWarning, // onHomePage: anyContext._pageLayoutType === 'Home' ? true : false, onHomePage: pageContext.legacyPageContext.isWebWelcomePage === true ? true : false, hoverEffect: properties.bannerHoverEffect === false ? false : true, bannerPillShape: properties.bannerPillShape === true ? true : false, //This was my modified attempt that didn't work title: showBannerError === true ? errMessage : bannerTitle, bannerReactCSS: showBannerError === true ? { background: "yellow", color: "red", } : bannerStyle.parsed, bannerCmdReactCSS: bannerCmdStyle.parsed, themeChoice: properties.bannerStyleChoice, useSiteTheme: useSiteTheme, gitHubRepo: setup.main._repoLink, farElements: [], nearElements: [], earyAccess: false, wideToggle: setup.wideToggle, //2022-02-17: Added these for expandoramic mode domElement: setup.main.context.domElement, pageLayout: properties.pageLayout, expandoProps: { enableExpandoramic: enableExpandoramic, expandoDefault: properties.expandoDefault, expandoStyle: expandoStyleObject.parsed, expandAlert: false, expandConsole: setup.expandConsole, expandoPadding: properties.expandoPadding, expandoAudience: properties.expandoAudience, //2022-02-17: END additions for expandoramic mode }, fpsPageBGWPProps: { fullPageImage: properties.fullPageImage, fullPageImageFilter: properties.fullPageImageFilter, fullPageScrollable: properties.fullPageScrollable, defaultWhiteText: properties.defaultWhiteText, whiteRefreshTip: properties.whiteRefreshTip, fullPageOverlayOpacity: properties.fullPageOverlayOpacity, fullPageOverlayColor: properties.fullPageOverlayColor, defaultWPBack: properties.defaultWPBack, defaultWPBordRad: properties.defaultWPBordRad, fullPageImageFit: properties.fullPageImageFit, _allowFullPageBG: setup.main._allowFullPageBG, _FPSId: setup.main._FPSId, enableTabs: properties.enableTabs, }, _FPSId: setup.main._FPSId, _refreshBGStyles: setup.main._refreshBGStyles.bind(setup.main), // https://github.com/mikezimm/pivottiles7/issues/383 _resetEasyIcons: setup.main._resetEasyIcons.bind(setup.main), _forceMainRender: setup.main._forceMainRender.bind(setup.main), beAUser: renderAsReader, addParamToUrl: _addParamToUrl.bind(setup.main), showBeAUserIcon: showBeAUserIcon, beAUserFunction: null, hardExp: setup.main._hardExpire, versionDate: versionData[0].trim(), versionLabel: versionData[1] ? versionData[1].trim() : '', versionInfo: setup.main._panelVersion ? setup.main._panelVersion : defaultVersionInfo, // From about page }; //close #129: This makes the maxWidth added in fps options apply to banner as well. // if ( properties.fpsContainerMaxWidth && properties.fpsContainerMaxWidth.length > 0 && bannerProps.bannerReactCSS ) { // bannerProps.bannerReactCSS.maxWidth = properties.fpsContainerMaxWidth; // } // 2022-12-12: VERIFY THIS IS NEEDED, it's in buildBannerPropsv1 AND WebPartRenderBannerV2.ts if (properties.allSectionMaxWidthEnable && properties.allSectionMaxWidth > 0 && bannerProps.bannerReactCSS) { bannerProps.bannerReactCSS.maxWidth = properties.allSectionMaxWidth; } if (properties.defPinState === 'disabled') { } else { if (!properties.bannerTitle || properties.bannerTitle === '') { if (properties.defPinState !== 'normal' && setup.strings.bannerTitle) { bannerProps.title = setup.strings.bannerTitle; } else { bannerProps.title = 'hide'; } } //Add this to force a title because when pinned by default, users may not know it's there. if (properties.forcePinState === true && properties.defPinState !== 'normal') { if (!properties.bannerTitle || properties.bannerTitle.length < 3) { bannerProps.title = 'Page Contents'; } } } if (check4This(Check4.tracePerformance_Eq_true) === true) console.log(`tracePerformance mainWebPartRenderBannerSetupX ~ 364`, JSON.parse(JSON.stringify(setup.main._performance))); properties.replacePanelHTML = visitorPanelInfo(properties, setup.main._repoLink, '', '', createPerformanceTableVisitor(setup.main._performance, setup.main._keysToShow), 'mainWebPartRenderBannerSetupX'); bannerProps.replacePanelHTML = properties.replacePanelHTML; return bannerProps; } //# sourceMappingURL=BuildBannerPropsX2.js.map