@spfx-extensions/package 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nvmrc +1 -1
- package/config/package-solution.json +2 -2
- package/dist/8d1029da-85e6-48cc-aaaf-37a5bbc0b9be.manifest.json +2 -2
- package/dist/d6ca1fc2-0591-4c6d-8a25-cae3262c017b.manifest.json +2 -2
- package/dist/debug/83e13c11-682e-4eaa-9ae0-74617ca28f96/Extension_8d1029da-85e6-48cc-aaaf-37a5bbc0b9be.xml +1 -1
- package/dist/debug/83e13c11-682e-4eaa-9ae0-74617ca28f96/WebPart_d6ca1fc2-0591-4c6d-8a25-cae3262c017b.xml +1 -1
- package/dist/debug/AppManifest.xml +1 -1
- package/dist/debug/ClientSideAssets/{spfx-extension-application-customizer_4ec7a7e885824c810f4a.js → spfx-extension-application-customizer_2f30086b4bcdf92ad9a2.js} +2 -2
- package/dist/debug/ClientSideAssets/spfx-extension-core.js +1 -1
- package/dist/debug/ClientSideAssets/spfx-extension-coreconfigurator.js +65 -65
- package/dist/{spfx-extension-loader_a8e9e98c65f5ffdfbd2f.js → debug/ClientSideAssets/spfx-extension-loader_b4583689ca9ee8de6592.js} +1 -1
- package/dist/debug/ClientSideAssets/spfx-extension-wrapper.js +1 -1
- package/dist/{spfx-extensionloader-web-part_02ffe17119fb99560692.js → debug/ClientSideAssets/spfx-extensionloader-web-part_e3a6a93dc899524b9f3f.js} +1 -1
- package/dist/debug/ClientSideAssets.xml +1 -1
- package/dist/debug/ClientSideAssets.xml.config.xml +1 -1
- package/dist/debug/_rels/ClientSideAssets.xml.rels +1 -1
- package/dist/debug/feature_83e13c11-682e-4eaa-9ae0-74617ca28f96.xml +1 -1
- package/dist/debug/feature_83e13c11-682e-4eaa-9ae0-74617ca28f96.xml.config.xml +1 -1
- package/dist/deploy/sp-fx-extensions.sppkg +0 -0
- package/dist/{spfx-extension-application-customizer_4ec7a7e885824c810f4a.js → spfx-extension-application-customizer_2f30086b4bcdf92ad9a2.js} +2 -2
- package/dist/spfx-extension-core.js +1 -1
- package/dist/spfx-extension-coreconfigurator.js +65 -65
- package/dist/{debug/ClientSideAssets/spfx-extension-loader_a8e9e98c65f5ffdfbd2f.js → spfx-extension-loader_b4583689ca9ee8de6592.js} +1 -1
- package/dist/spfx-extension-wrapper.js +1 -1
- package/dist/{debug/ClientSideAssets/spfx-extensionloader-web-part_02ffe17119fb99560692.js → spfx-extensionloader-web-part_e3a6a93dc899524b9f3f.js} +1 -1
- package/package.json +2 -2
- package/src/webparts/spfxExtensionloader/ai.json +38 -0
package/.nvmrc
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
22.
|
|
1
|
+
22.21.1
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"solution": {
|
|
4
4
|
"name": "SPFx Extensions",
|
|
5
5
|
"id": "7d56fff0-e90e-40a7-98cf-fcdbc63a9b01",
|
|
6
|
-
"version": "1.6.
|
|
6
|
+
"version": "1.6.2.0",
|
|
7
7
|
"includeClientSideAssets": true,
|
|
8
8
|
"skipFeatureDeployment": true,
|
|
9
9
|
"isDomainIsolated": false,
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"title": "Application Extension - Deployment of custom action",
|
|
35
35
|
"description": "Deploys a custom action with ClientSideComponentId association",
|
|
36
36
|
"id": "83e13c11-682e-4eaa-9ae0-74617ca28f96",
|
|
37
|
-
"version": "1.6.
|
|
37
|
+
"version": "1.6.2.0",
|
|
38
38
|
"assets": {
|
|
39
39
|
"elementManifests": [
|
|
40
40
|
"elements.xml",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"alias": "SpfxExtensionApplicationCustomizer",
|
|
4
4
|
"componentType": "Extension",
|
|
5
5
|
"extensionType": "ApplicationCustomizer",
|
|
6
|
-
"version": "1.6.
|
|
6
|
+
"version": "1.6.2",
|
|
7
7
|
"manifestVersion": 2,
|
|
8
8
|
"requiresCustomScript": false,
|
|
9
9
|
"loaderConfig": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"scriptResources": {
|
|
15
15
|
"spfx-extension-application-customizer": {
|
|
16
16
|
"type": "path",
|
|
17
|
-
"path": "spfx-extension-application-
|
|
17
|
+
"path": "spfx-extension-application-customizer_2f30086b4bcdf92ad9a2.js"
|
|
18
18
|
},
|
|
19
19
|
"@microsoft/sp-application-base": {
|
|
20
20
|
"type": "component",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "d6ca1fc2-0591-4c6d-8a25-cae3262c017b",
|
|
3
3
|
"alias": "SpfxExtensionloaderWebPart",
|
|
4
4
|
"componentType": "WebPart",
|
|
5
|
-
"version": "1.6.
|
|
5
|
+
"version": "1.6.2",
|
|
6
6
|
"manifestVersion": 2,
|
|
7
7
|
"requiresCustomScript": false,
|
|
8
8
|
"supportedHosts": [
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"scriptResources": {
|
|
40
40
|
"spfx-extensionloader-web-part": {
|
|
41
41
|
"type": "path",
|
|
42
|
-
"path": "spfx-extensionloader-web-
|
|
42
|
+
"path": "spfx-extensionloader-web-part_e3a6a93dc899524b9f3f.js"
|
|
43
43
|
},
|
|
44
44
|
"@microsoft/sp-core-library": {
|
|
45
45
|
"type": "component",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"><ClientSideComponent Name="SpfxExtensionApplicationCustomizer" Id="8d1029da-85e6-48cc-aaaf-37a5bbc0b9be" ComponentManifest="{"id":"8d1029da-85e6-48cc-aaaf-37a5bbc0b9be","alias":"SpfxExtensionApplicationCustomizer","componentType":"Extension","extensionType":"ApplicationCustomizer","version":"1.6.
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"><ClientSideComponent Name="SpfxExtensionApplicationCustomizer" Id="8d1029da-85e6-48cc-aaaf-37a5bbc0b9be" ComponentManifest="{"id":"8d1029da-85e6-48cc-aaaf-37a5bbc0b9be","alias":"SpfxExtensionApplicationCustomizer","componentType":"Extension","extensionType":"ApplicationCustomizer","version":"1.6.2","manifestVersion":2,"loaderConfig":{"internalModuleBaseUrls":["HTTPS://SPCLIENTSIDEASSETLIBRARY/"],"entryModuleId":"spfx-extension-application-customizer","scriptResources":{"spfx-extension-application-customizer":{"type":"path","path":"spfx-extension-application-customizer_2f30086b4bcdf92ad9a2.js"},"@microsoft/sp-application-base":{"type":"component","id":"4df9bb86-ab0a-4aab-ab5f-48bf167048fb","version":"1.21.1"}}}}" Type="Extension"></ClientSideComponent></Elements>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"><ClientSideComponent Name="SPFx Extension Loader" Id="d6ca1fc2-0591-4c6d-8a25-cae3262c017b" ComponentManifest="{"id":"d6ca1fc2-0591-4c6d-8a25-cae3262c017b","alias":"SpfxExtensionloaderWebPart","componentType":"WebPart","version":"1.6.
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/"><ClientSideComponent Name="SPFx Extension Loader" Id="d6ca1fc2-0591-4c6d-8a25-cae3262c017b" ComponentManifest="{"id":"d6ca1fc2-0591-4c6d-8a25-cae3262c017b","alias":"SpfxExtensionloaderWebPart","componentType":"WebPart","version":"1.6.2","manifestVersion":2,"supportedHosts":["SharePointWebPart","TeamsPersonalApp","TeamsTab","SharePointFullPage"],"supportsThemeVariants":true,"supportsFullBleed":true,"preconfiguredEntries":[{"groupId":"5c03119e-3074-46fd-976b-c60198311f70","group":{"default":"Advanced"},"title":{"default":"SPFx Extension Loader"},"description":{"default":"Allows you to add a custom developed app"},"officeFabricIconFontName":"Page","properties":{"description":"Select an app to load from the dropdown below"}}],"loaderConfig":{"internalModuleBaseUrls":["HTTPS://SPCLIENTSIDEASSETLIBRARY/"],"entryModuleId":"spfx-extensionloader-web-part","scriptResources":{"spfx-extensionloader-web-part":{"type":"path","path":"spfx-extensionloader-web-part_e3a6a93dc899524b9f3f.js"},"@microsoft/sp-core-library":{"type":"component","id":"7263c7d0-1d6a-45ec-8d85-d4d1d234171b","version":"1.21.1"},"@microsoft/sp-property-pane":{"type":"component","id":"f9e737b7-f0df-4597-ba8c-3060f82380db","version":"1.21.1"},"@microsoft/sp-webpart-base":{"type":"component","id":"974a7777-0990-4136-8fa6-95d80114c2e0","version":"1.21.1"},"@microsoft/sp-component-base":{"type":"component","id":"467dc675-7cc5-4709-8aac-78e3b71bd2f6","version":"1.21.1"}}}}" Type="WebPart"></ClientSideComponent><Module Name="SPFx Extension Loader" Url="_catalogs/wp" List="113"></Module></Elements>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="utf-8"?><App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest" Name="SPFx Extensions" ProductID="7d56fff0-e90e-40a7-98cf-fcdbc63a9b01" SharePointMinVersion="16.0.0.0" IsClientSideSolution="true" Version="1.6.
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?><App xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest" Name="SPFx Extensions" ProductID="7d56fff0-e90e-40a7-98cf-fcdbc63a9b01" SharePointMinVersion="16.0.0.0" IsClientSideSolution="true" Version="1.6.2.0" SkipFeatureDeployment="true" IsDomainIsolated="false"><Properties><Title>SPFx Extensions</Title><DeveloperProperties>{"name":"SPWizard01","websiteUrl":"https://github.com/SPWizard01/spfx-extensions","privacyUrl":"https://github.com/SPWizard01/spfx-extensions/blob/main/README.md","termsOfUseUrl":"https://github.com/SPWizard01/spfx-extensions/blob/main/LICENSE","mpnId":"Undefined-1.21.0"}</DeveloperProperties><ShortDescription><LocalizedString CultureName="default">SPFxExtensions App allows you to develop framework agnostic apps.</LocalizedString></ShortDescription><LongDescription><LocalizedString CultureName="default">SPFxExtensions App is a SharePoint Framework (SPFx) extension that allows developers to create framework-agnostic applications. This solution provides a streamlined way to deploy extensions and client-side components, enhancing the functionality and user experience of SharePoint sites. With this extension, developers can easily integrate their custom solutions into SharePoint, leveraging the power of SPFx to build robust and scalable applications.</LocalizedString></LongDescription><CategoryID>Content management,Productivity,Site Design</CategoryID><Screenshots></Screenshots></Properties></App>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(()=>{var e=document.currentScript;define("8d1029da-85e6-48cc-aaaf-37a5bbc0b9be_1.6.
|
|
2
|
-
,841:e=>{e.exports=t}},o={};function s(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,s),n.exports}s.m=r,s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,n)=>(s.f[n](e,t),t),[])),s.u=e=>"spfx-extension-
|
|
1
|
+
(()=>{var e=document.currentScript;define("8d1029da-85e6-48cc-aaaf-37a5bbc0b9be_1.6.2",["@microsoft/sp-application-base"],t=>(()=>{"use strict";var n,a,i,r={367:(e,t,n)=>{n.d(t,{Lf:()=>a});const a="[SPFxExtensions]"}
|
|
2
|
+
,841:e=>{e.exports=t}},o={};function s(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return r[e](n,n.exports,s),n.exports}s.m=r,s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce((t,n)=>(s.f[n](e,t),t),[])),s.u=e=>"spfx-extension-loader_b4583689ca9ee8de6592.js",s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n={},a="ae299698b44c2b261e21c7ecee64445a:",s.l=(e,t,i,r)=>{if(n[e])n[e].push(t);else{var o,c;if(void 0!==i)for(var d=document.getElementsByTagName("script"),l=0;l<d.length;l++){var u=d[l];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==a+i){o=u;break}}o||(c=!0,(o=document.createElement("script")).charset="utf-8",o.timeout=120,s.nc&&o.setAttribute("nonce",s.nc),o.setAttribute("data-webpack",a+i),o.src=e,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous")),n[e]=[t];var f=(t,a)=>{o.onerror=o.onload=null,clearTimeout(p);var i=n[e];if(delete n[e],o.parentNode&&o.parentNode.removeChild(o),i&&i.forEach(e=>e(a)),t)return t(a)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=f.bind(null,o.onerror),o.onload=f.bind(null,o.onload),c&&document.head.appendChild(o)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i=e?e.src:"",s.p=i.slice(0,i.lastIndexOf("/")+1),(()=>{var e={39:0};s.f.j=(t,n)=>{var a=s.o(e,t)?e[t]:void 0;if(0!==a)if(a)n.push(a[2]);else{var i=new Promise((n,i)=>a=e[t]=[n,i]);n.push(a[2]=i);var r=s.p+s.u(t),o=new Error;s.l(r,n=>{if(s.o(e,t)&&(0!==(a=e[t])&&(e[t]=void 0),a)){var i=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed.\n("+i+": "+r+")",o.name="ChunkLoadError",o.type=i,o.request=r,a[1](o)}},"chunk-"+t,t)}};var t=(t,n)=>{var a,i,[r,o,c]=n,d=0;if(r.some(t=>0!==e[t])){for(a in o)s.o(o,a)&&(s.m[a]=o[a]);c&&c(s)}for(t&&t(n);d<r.length;d++)i=r[d],s.o(e,i)&&e[i]&&e[i][0](),e[i]=0},n=self.webpackJsonp_ae299698b44c2b261e21c7ecee64445a=self.webpackJsonp_ae299698b44c2b261e21c7ecee64445a||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var c={};return(()=>{s.r(c),s.d(c,{default:()=>n});var e=s(841),t=s(367);class n extends e.BaseApplicationCustomizer{corePromise=new Promise(e=>{s.e(548).then(s.bind(s,364)).then(({initCore:n,registerPlaceHolderProvider:a})=>{n("SharePoint").then(()=>{a(this.context.placeholderProvider,this),e(!0)}).catch(e=>{console.error(t.Lf,"Error while initializing core from application customizer",e)})}).catch(e=>{console.error(t.Lf,"Error while importing core from application customizer",e)})});async onInit(){await this.corePromise}waitAndNotifyPlaceholderChanged(e){this.corePromise.then(()=>{window.__SPFxExtensions.Apps.forEach(t=>{t.instances.forEach(t=>{t.executeListeners("onPlaceholdersChanged",e)})})}).catch(()=>{})}onPlaceholdersChanged(e){this.waitAndNotifyPlaceholderChanged(e)}onDispose(){window.__SPFxExtensions?.Apps?.forEach(e=>{e.instances.forEach(e=>{e.executeListeners("onAppCustomizerDisposed",void 0)})})}}})(),c})())})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e1=Object.create;var{getPrototypeOf:xw,defineProperty:qx,getOwnPropertyNames:ww}=Object;var yw=Object.prototype.hasOwnProperty;var P9=(x,w,y)=>{y=x!=null?e1(xw(x)):{};let $=w||!x||!x.__esModule?qx(y,"default",{value:x,enumerable:!0}):y;for(let Q of ww(x))if(!yw.call($,Q))qx($,Q,{get:()=>x[Q],enumerable:!0});return $};var L9=(x,w)=>()=>(w||x((w={exports:{}}).exports,w),w.exports);var E9=(x,w)=>{for(var y in w)qx(x,y,{get:w[y],enumerable:!0,configurable:!0,set:($)=>w[y]=()=>$})};var m9=(x,w)=>()=>(x&&(w=x(x=0)),w);var Hx="d6ca1fc2-0591-4c6d-8a25-cae3262c017b",h="45e75137-13c5-4bb2-a2b3-8ab6382682ee",px="SPFxExtensionsConfigurator",t="SitePages/SPFxExtensionsConfigurator.aspx",P="manifest.txt",R="collectionconfig.txt",kx="Loading...",S="SPFxExtensionsConfiguration",U="SPFxExtensionsWhiteList",h9="SPFxExtensions",f="/SPFxExtensions/",k="SPFxExtensionsData",L="[SPFxExtensionCore]",Dx={appDefinitionMap:[],appRelativeEntryPointUrls:[],manualEntries:[]},d9={enabledEverywhere:!1,excludedHubIds:[],excludedIds:[],includedHubIds:[],includedIds:[]},nx={enabledAppCollections:[],urlMap:[]},p="00000000-0000-0000-0000-000000000000";function B(x,w,y=x){return($)=>{let Q=""+$,Z=Q.indexOf(w,x.length);return~Z?x+$w(Q,w,y,Z)+w:x+Q+w}}function $w(x,w,y,$){let Q="",Z=0;do Q+=x.substring(Z,$)+y,Z=$+w.length,$=x.indexOf(w,Z);while(~$);return Q+x.substring(Z)}var M9=B("\x1B[0m","\x1B[0m"),S9=B("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),U9=B("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),f9=B("\x1B[3m","\x1B[23m"),g9=B("\x1B[4m","\x1B[24m"),o9=B("\x1B[7m","\x1B[27m"),C9=B("\x1B[8m","\x1B[28m"),N9=B("\x1B[9m","\x1B[29m"),u9=B("\x1B[30m","\x1B[39m"),I9=B("\x1B[31m","\x1B[39m"),T9=B("\x1B[32m","\x1B[39m"),c9=B("\x1B[33m","\x1B[39m"),t9=B("\x1B[34m","\x1B[39m"),p9=B("\x1B[35m","\x1B[39m"),i9=B("\x1B[36m","\x1B[39m"),s9=B("\x1B[37m","\x1B[39m"),l9=B("\x1B[90m","\x1B[39m"),r9=B("\x1B[40m","\x1B[49m"),a9=B("\x1B[41m","\x1B[49m"),e9=B("\x1B[42m","\x1B[49m"),x0=B("\x1B[43m","\x1B[49m"),w0=B("\x1B[44m","\x1B[49m"),y0=B("\x1B[45m","\x1B[49m"),$0=B("\x1B[46m","\x1B[49m"),Q0=B("\x1B[47m","\x1B[49m"),Z0=B("\x1B[90m","\x1B[39m"),V0=B("\x1B[91m","\x1B[39m"),i=B("\x1B[92m","\x1B[39m"),z0=B("\x1B[93m","\x1B[39m"),Y0=B("\x1B[94m","\x1B[39m"),B0=B("\x1B[95m","\x1B[39m"),j0=B("\x1B[96m","\x1B[39m"),K0=B("\x1B[97m","\x1B[39m"),J0=B("\x1B[100m","\x1B[49m"),W0=B("\x1B[101m","\x1B[49m"),b0=B("\x1B[102m","\x1B[49m"),q0=B("\x1B[103m","\x1B[49m"),H0=B("\x1B[104m","\x1B[49m"),k0=B("\x1B[105m","\x1B[49m"),D0=B("\x1B[106m","\x1B[49m"),n0=B("\x1B[107m","\x1B[49m");function z(...x){console.error(i(L),(/*@__PURE__*/new Date()).toISOString(),...x)}function G(...x){console.warn(i(L),(/*@__PURE__*/new Date()).toISOString(),...x)}function J(...x){console.info(i(L),(/*@__PURE__*/new Date()).toISOString(),...x)}function b(...x){}function Fx(x,w,y){z("Error while executing onInstanceRequested for app",x.id,"with name",x.name,y?`Additional Data: ${y}`:"",w)}function g(){return G("The app instance event was called before app instance was initialized."),()=>{}}var Gx=window.crypto.randomUUID();function s(){return Gx}function ix(){return Gx=window.crypto.randomUUID(),Gx}function Rx(x){return x.replace("{","").replace("}","")}function X0(x){return JSON.parse(JSON.stringify(x))}function Qw(x,w,y){let $=x.instances.findIndex((Q)=>Q.key===w);if($>-1){let Q=x.instances.splice($,1);if(Q.length<1)return;let Z=Q[0];Z.executeListeners("onConfigurationClose",{domElement:void 0}),Z.allEventListeners.splice(0,Z.allEventListeners.length),y?.()}}async function sx(x){let w=window.__SPFxExtensions.Apps.filter((y)=>!y.isWebPartApp&&!y.keepOnContextChange&&y.id!==h);for(let y of w)for(let $ of y.instances.filter((Q)=>Q.contextId!==x))if($.instanceExecuted)$.unmount()}function l(x,w){if(w.instanceRequested)return;try{w.instanceRequested=!0,x.onInstanceRequested(w).then((y)=>{w.unmount=()=>{Qw(x,w.key,y)},w.instanceLoadPromiseResolver(),w.instanceExecuted=!0}).catch((y)=>{Fx(x,y)})}catch(y){Fx(x,y)}}function Zw(x){b("Executing appAdded event for",x.id),window.__SPFxExtensions.AppEventListeners.filter((w)=>w.eventName==="appAdded").forEach((w)=>{try{w.handler(x)}catch(y){z("Error executing appAdded event",y)}})}function Ox(x){let w=window.__SPFxExtensions.Apps.find((y)=>y.id===x);if(!w)b("Registering new app",x),w={id:x,name:kx,description:kx,isWebPartApp:!1,unmountOnRender:!0,keepOnContextChange:!1,autoExecute:!1,maxInstances:1/0,hideAppSelectorWhenAppLoaded:!1,hideConfiguratorButton:!1,registrationCompleted:!1,isManual:!1,instances:[],async onInstanceRequested(){return g}},window.__SPFxExtensions.Apps.push(w);return w}function lx(){if(!window.__SPFxExtensions.Apps)window.__SPFxExtensions.Apps=[];if(!window.__SPFxExtensions.RegisterApp)window.__SPFxExtensions.RegisterApp=async(x)=>{let w=Ox(x.id);if(w.registrationCompleted)return w;return w.name=x.name,w.description=x.description,w.isWebPartApp=x.isWebPartApp,w.keepOnContextChange=x.keepOnContextChange??!1,w.autoExecute=x.autoExecute??!1,w.isManual=x.isManual??!1,w.unmountOnRender=x.unmountOnRender??!0,w.maxInstances=x.maxInstances??1/0,w.hideAppSelectorWhenAppLoaded=x.hideAppSelectorWhenAppLoaded??!1,w.hideConfiguratorButton=x.hideConfiguratorButton??!1,w.icon=x.icon,w.onInstanceRequested=x.onInstanceRequested,w.registrationCompleted=!0,Zw(w),w.instances.forEach((y)=>{l(w,y)}),w};if(!window.__SPFxExtensions.UnregisterApp)window.__SPFxExtensions.UnregisterApp=async(x)=>{let w=window.__SPFxExtensions.Apps.findIndex(($)=>$.id===x);if(w<0)return;let y=window.__SPFxExtensions.Apps.splice(w,1);if(y.length<1)return;return b("Unregistering app",y[0].id,y[0].name),y[0].instances.forEach(($)=>{if($.instanceExecuted)$.unmount()}),y[0]}}function Vw(x){let w=(Q)=>{let Z=x.allEventListeners.findIndex((V)=>V.key===Q.key);if(Z>-1)b("Removing event listener",Q),x.allEventListeners.splice(Z,1)},y=(Q,Z)=>{let V={key:window.crypto.randomUUID(),eventName:Q,handler:Z};return x.allEventListeners.push(V),()=>{w(V)}},$=(Q,Z)=>{for(let V of x.allEventListeners){if(V.eventName!=Q)continue;if(V.handler)V.handler(Z)}};x.addEventListener=y,x.executeListeners=$}function zw(x,w){b("Executing instanceAdded event for app",x.id,"instance",w.key),window.__SPFxExtensions.AppEventListeners.filter((y)=>y.eventName==="instanceAdded").forEach((y)=>{try{y.handler({app:x,instance:w})}catch($){z("Error executing instanceAdded event",$)}})}function Yw(x){let{promise:w,resolve:y}=Promise.withResolvers(),$={...x,key:window.crypto.randomUUID(),contextId:s(),instanceRequested:!1,instanceExecuted:!1,unmountOnRender:!0,unmount:g,allEventListeners:[],addEventListener:g,executeListeners:g,instanceLoadPromise:w,instanceLoadPromiseResolver:y};return Vw($),$}function rx(){if(!window.__SPFxExtensions.InstantiateApp)window.__SPFxExtensions.InstantiateApp=async(x,w)=>{let y=Ox(x);b("Creating app instance for app",x);let $=Yw(w);if($.unmountOnRender=y.unmountOnRender??!0,y.instances.push($),zw(y,$),y.registrationCompleted)l(y,$);return $}}async function o(x,w=0){let $=(/*@__PURE__*/new TextEncoder()).encode(x),Q=await window.crypto.subtle.digest("SHA-1",$),V=Array.from(new Uint8Array(Q)).map((j)=>j.toString(16).padStart(2,"0")).join("");return w>0?V.substring(0,w):V}var Px=(x,w)=>w.some((y)=>x instanceof y),ax,ex;function Bw(){return ax||(ax=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function jw(){return ex||(ex=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}var Lx=/*@__PURE__*/new WeakMap,_x=/*@__PURE__*/new WeakMap,r=/*@__PURE__*/new WeakMap;function Kw(x){let w=new Promise((y,$)=>{let Q=()=>{x.removeEventListener("success",Z),x.removeEventListener("error",V)},Z=()=>{y(d(x.result)),Q()},V=()=>{$(x.error),Q()};x.addEventListener("success",Z),x.addEventListener("error",V)});return r.set(w,x),w}function Jw(x){if(Lx.has(x))return;let w=new Promise((y,$)=>{let Q=()=>{x.removeEventListener("complete",Z),x.removeEventListener("error",V),x.removeEventListener("abort",V)},Z=()=>{y(),Q()},V=()=>{$(x.error||new DOMException("AbortError","AbortError")),Q()};x.addEventListener("complete",Z),x.addEventListener("error",V),x.addEventListener("abort",V)});Lx.set(x,w)}var Ex={get(x,w,y){if(x instanceof IDBTransaction){if(w==="done")return Lx.get(x);if(w==="store")return y.objectStoreNames[1]?void 0:y.objectStore(y.objectStoreNames[0])}return d(x[w])},set(x,w,y){return x[w]=y,!0},has(x,w){if(x instanceof IDBTransaction&&(w==="done"||w==="store"))return!0;return w in x}};function $1(x){Ex=x(Ex)}function Ww(x){if(jw().includes(x))return function(...w){return x.apply(mx(this),w),d(this.request)};return function(...w){return d(x.apply(mx(this),w))}}function bw(x){if(typeof x==="function")return Ww(x);if(x instanceof IDBTransaction)Jw(x);if(Px(x,Bw()))return new Proxy(x,Ex);return x}function d(x){if(x instanceof IDBRequest)return Kw(x);if(_x.has(x))return _x.get(x);let w=bw(x);if(w!==x)_x.set(x,w),r.set(w,x);return w}var mx=(x)=>r.get(x);function Q1(x,w,{blocked:y,upgrade:$,blocking:Q,terminated:Z}={}){let V=indexedDB.open(x,w),j=d(V);if($)V.addEventListener("upgradeneeded",(Y)=>{$(d(V.result),Y.oldVersion,Y.newVersion,d(V.transaction),Y)});if(y)V.addEventListener("blocked",(Y)=>y(Y.oldVersion,Y.newVersion,Y));return j.then((Y)=>{if(Z)Y.addEventListener("close",()=>Z());if(Q)Y.addEventListener("versionchange",(K)=>Q(K.oldVersion,K.newVersion,K))}).catch(()=>{}),j}function Z1(x,{blocked:w}={}){let y=indexedDB.deleteDatabase(x);if(w)y.addEventListener("blocked",($)=>w($.oldVersion,$));return d(y).then(()=>{return})}var qw=["get","getKey","getAll","getAllKeys","count"],Hw=["put","add","delete","clear"],Xx=/*@__PURE__*/new Map;function x1(x,w){if(!(x instanceof IDBDatabase&&!(w in x)&&typeof w==="string"))return;if(Xx.get(w))return Xx.get(w);let y=w.replace(/FromIndex$/,""),$=w!==y,Q=Hw.includes(y);if(!(y in($?IDBIndex:IDBObjectStore).prototype)||!(Q||qw.includes(y)))return;let Z=async function(V,...j){let Y=this.transaction(V,Q?"readwrite":"readonly"),K=Y.store;if($)K=K.index(j.shift());return(await Promise.all([K[y](...j),Q&&Y.done]))[0]};return Xx.set(w,Z),Z}$1((x)=>({...x,get:(w,y,$)=>x1(w,y)||x.get(w,y,$),has:(w,y)=>!!x1(w,y)||x.has(w,y)}));var kw=["continue","continuePrimaryKey","advance"],w1={},Ax=/*@__PURE__*/new WeakMap,V1=/*@__PURE__*/new WeakMap,Dw={get(x,w){if(!kw.includes(w))return x[w];let y=w1[w];if(!y)y=w1[w]=function(...$){Ax.set(this,V1.get(this)[w](...$))};return y}};async function*nw(...x){let w=this;if(!(w instanceof IDBCursor))w=await w.openCursor(...x);if(!w)return;w=w;let y=new Proxy(w,Dw);V1.set(y,w),r.set(y,mx(w));while(w)yield y,w=await(Ax.get(y)||w.continue()),Ax.delete(y)}function y1(x,w){return w===Symbol.asyncIterator&&Px(x,[IDBIndex,IDBObjectStore,IDBCursor])||w==="iterate"&&Px(x,[IDBIndex,IDBObjectStore])}$1((x)=>({...x,get(w,y,$){if(y1(w,y))return nw;return x.get(w,y,$)},has(w,y){return y1(w,y)||x.has(w,y)}}));var A={SPFXEXT:"SPFXEXT_",SPFXEXT_CORE:"SPFXEXT"};function hx(){try{let x=typeof globalThis!=="undefined"?globalThis:void 0;if(x&&x.localStorage)return x.localStorage}catch{}try{if(typeof window!=="undefined"&&window.localStorage)return window.localStorage}catch{}return}function Fw(){let x=hx();if(!x)return[];try{let w=[];for(let y=0;y<x.length;y++){let $=x.key(y);if($)w.push($)}return w}catch{return[]}}function Gw(x){let w=hx();if(!w)return null;try{return w.getItem(x)}catch{return null}}function Rw(){return Fw().some((x)=>x.indexOf(A.SPFXEXT)>-1&&Number(Gw(x))>0)}function z1(x){return x.hostname.toLowerCase()==="localhost"}function Y1(x){try{let w=`${A.SPFXEXT}${x}`,y=hx(),$=y?y.getItem?y.getItem(w):y[w]:null;return Number($)>0}catch{return!1}}var E=Rw();var W={AppFolderManifestCache:"AppFolderManifestCache",AppCollectionManifestCache:"AppCollectionManifestCache",AllowedApps:"AllowedApps",HubSiteData:"HubSiteData",SPFxExtensionConfig:"SPFxExtensionConfig"},B1=`${A.SPFXEXT}COREDB`,j1=Q1(B1,1,{blocking(x,w,y){F.close(),alert("A new version of this page is ready. Please reload the page.")},async upgrade(x,w,y,$,Q){if(w===0)x.createObjectStore(W.AppFolderManifestCache,{keyPath:"url"}),x.createObjectStore(W.AppCollectionManifestCache,{keyPath:"url"}),x.createObjectStore(W.AllowedApps,{keyPath:"Id"}),x.createObjectStore(W.HubSiteData,{keyPath:"SiteId"}),x.createObjectStore(W.SPFxExtensionConfig,{keyPath:"Title"})}});j1.catch((x)=>{throw z("Error opening database for Core, please contact your administrator."),Z1(B1).then(()=>{window.location.reload()}),x});var F=await j1;function C(x){let w=/*@__PURE__*/new Date;return w.setMinutes(w.getMinutes()+x),{expires:w.toISOString()}}async function N(x,w){let y=await F.getAll(x),$=/*@__PURE__*/new Date,Q=y.filter((V)=>{let j=new Date(V.expires);return $>=j}),Z=Q.length;if(Z>0){let V=F.transaction(x,"readwrite"),j=V.objectStore(x);Q.forEach((Y)=>j.delete(Y[w])),await V.done,G(`Evicted ${Z} items from ${x} cache.`)}return Z}async function dx(){return await N(W.SPFxExtensionConfig,"Title"),F.getAll(W.SPFxExtensionConfig)}async function v(x){return await N(W.SPFxExtensionConfig,"Title"),F.get(W.SPFxExtensionConfig,x)}async function m(x,w=60){await F.put(W.SPFxExtensionConfig,{...x,...C(w)})}function K1(x,w){let y=F.transaction(W.SPFxExtensionConfig,"readwrite"),$=y.objectStore(W.SPFxExtensionConfig);return x.forEach((Q)=>$.put({...Q,...C(w)})),y.done}async function J1(){return F.getAll(W.AllowedApps)}async function vx(x){return F.get(W.AppFolderManifestCache,x)}async function Mx(x){return F.get(W.AppCollectionManifestCache,x)}async function W1(x){return F.get(W.HubSiteData,x)}async function b1(x,w=60){await F.put(W.HubSiteData,{...x,...C(w)})}async function Ow(x,w=60){await F.put(W.AppCollectionManifestCache,{...x,...C(w)})}async function _w(x,w=60){await F.put(W.AppFolderManifestCache,{...x,...C(w)})}async function q1(x,w=5){let y=C(w),$=F.transaction(W.AllowedApps,"readwrite"),Q=$.objectStore(W.AllowedApps);return x.forEach((Z)=>Q.put({...y,...Z})),$.done}function Xw(x){return F.delete(W.AppCollectionManifestCache,x)}function Pw(x){return F.delete(W.AppFolderManifestCache,x)}async function Lw(){return N(W.AppCollectionManifestCache,"url")}async function Ew(){return N(W.AppFolderManifestCache,"url")}async function H1(){return N(W.AllowedApps,"Id")}async function k1(){return N(W.HubSiteData,"SiteId")}async function a(x){if(x){let w=await vx(x.url);if(w){if(w.hash!==x.hash){await Pw(x.url);let y=x.url.toLowerCase().replace(`/${P}`,"");await xx([y],!1),G(`Evicted ${P} ${w.url} from cache. Because of hash mismatch.`)}}}return Ew()}async function e(x){if(x){let w=await Mx(x.url);if(w){if(w.hash!==x.hash)await Xw(x.url),await xx([x.url],!1),G(`Evicted ${R} ${w.url} from cache. Because of hash mismatch.`)}}return Lw()}async function D1(x){if(await a(),E)return;return vx(x)}async function n1(x,w){await a(x);let y=await vx(x.url);if(y&&y.hash===x.hash&&!E)return;await _w(x,w)}async function F1(x,w){await e(x);let y=await Mx(x.url);if(y&&y.hash===x.hash&&!E)return;await Ow(x,w)}async function G1(x){if(await e(),E)return;return Mx(x)}var Sx=/*@__PURE__*/new Map;async function R1(x,w=!1){let y="";if(Sx.has(x)&&!w)y=Sx.get(x)||"";if(y)return y;let $=await fetch(`${x}/_api/contextinfo`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json"}});if($.status===200){let Z=(await $.json()).d.GetContextWebInformation.FormDigestValue;return Sx.set(x,Z),Z}else z("Error while getting digest",$.status);return""}var Ux=(x)=>{},wx;async function yx(x=""){if(wx)return wx;wx=new Promise((w)=>{Ux=w});try{let $=(await(await fetch(`${x}/_api/SP_TenantSettings_Current`,{headers:{Accept:"application/json;odata=verbose"}})).json()).d.CorporateCatalogUrl;Ux($)}catch(w){z("Error while getting app catalog url. Trying default /sites/appcatalog",w);let y=`${window.location.origin}/sites/appcatalog`;Ux(y)}return wx}async function O1(x=""){let w=await v("AppCatalogUrl");if(w?.Data)return w.Data;let y=await yx(x);return await m({Title:"AppCatalogUrl",Data:y,date:"",expires:""},240),y}async function _(x=""){let y=`${await O1()}${x?`/${x}`:""}`;return R1(y)}var mw=await O1(),q=`${mw}/${k}`;var X1={Status:"Status",RootCDNLocation:"RootCDNLocation",InterceptHistory:"InterceptHistory",EnableAppWhiteList:"EnableAppWhiteList",AppCatalogUrl:"AppCatalogUrl",SPFxDataSite:"SPFxDataSite",ConfiguratorPageData:"ConfiguratorPageData",AppWhiteList:"AppWhiteList",Version:"2025-09-12T23:13:20.818Z"},_1=[{Title:"Status",Data:"Installed"},{Title:"InterceptHistory",Data:"true"},{Title:"EnableAppWhiteList",Data:"false"},{Title:"RootCDNLocation",Data:`/sites/appcatalog/${k}`}];function P1(x){let w=_1.find((y)=>y.Title==="RootCDNLocation");if(w)w.Data=x;return _1}var Aw=Object.keys(X1).length,$x;async function hw(){let x=`${q}/_api/web/lists/GetByTitle('${S}')/fields`;try{let w=await fetch(x,{headers:{Accept:"application/json;odata=verbose"}});if(w.status===200){let $=(await w.json()).d.results,Q=$.map((V)=>V.InternalName),Z=$.find((V)=>V.InternalName==="Title");if(!Z){z("Title field not found.");return}if(!Z.EnforceUniqueValues){let V=await _(k);if((await fetch(`${q}/_api/web/lists/GetByTitle('${S}')/fields('${Z.Id}')`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":V,"X-HTTP-Method":"MERGE","If-Match":"*"},body:JSON.stringify({__metadata:{type:"SP.Field"},Indexed:!0,EnforceUniqueValues:!0})})).status===204)J("Title field updated successfully.");else z("Unable to update Title field.")}if(!Q.includes("Data")){let V=await _(k);if((await fetch(x,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":V},body:JSON.stringify({__metadata:{type:"SP.Field"},Title:"Data",FieldTypeKind:2,Required:!0})})).status===201)J("Data field added successfully.");else z("Unable to add Data field.")}}}catch(w){z("Error while ensuring configuration list data fields.",w)}}async function dw(){let x=!1;try{if(x=(await fetch(`${q}/_api/web/lists/GetByTitle('${S}')`)).status===404,x){let y=await _(k);if(J("Creating configuration list."),(await fetch(`${q}/_api/web/lists`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":y},body:JSON.stringify({__metadata:{type:"SP.List"},BaseTemplate:100,Title:"SPFxExtensionsConfiguration",Description:"Configuration list for SPFxExtensions"})})).status===201)J("Configuration list created successfully.");else z("Unable to create configuration list.")}await hw()}catch(w){z("Error while ensuring configuration list.",w)}return x}async function L1(){let x=`${q}/_api/web/lists/GetByTitle('${S}')/items?$select=Title,Data`,y=await fetch(x,{...{headers:{Accept:"application/json;odata=verbose"}}});if(y.status!==200)return z("Unable to fetch configuration list items."),[];return(await y.json()).d.results}async function vw(){let x=await _(k);for(let w of P1(q))if((await fetch(`${q}/_api/web/lists/GetByTitle('${S}')/items`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":x},body:JSON.stringify({__metadata:{type:"SP.Data.SPFxExtensionsConfigurationListItem"},...w})})).status===201)J(`Item ${w.Title} added successfully.`);else z(`Unable to add item ${w.Title}.`)}function E1(x=!1){if(x)return L1();if($x)return $x;return $x=Mw(),$x}async function Mw(){let x=await dx();if(x.length<Aw){if(await dw())await vw();let y=await L1();await K1(y,240),x=await dx()}return x}async function Sw(x){let w=await yx(),y=await _(),$=await fetch(`${w}/_api/web/webs/add`,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json","X-RequestDigest":y},body:JSON.stringify({parameters:{Description:"Site that stores SPFxExtensions Data and global apps",Language:1033,Title:"SPFxExtensions Data",Url:x,UseSamePermissionsAsParentSite:!0,WebTemplate:"STS"}})});if(!$.ok)throw new Error(`Failed to create SPFxExtensionsData web in ${w}`);return await $.json()}async function Uw(){let x=await yx(),w=await _(),y=await fetch(`${x}/${k}/_api/web`,{method:"GET",headers:{Accept:"application/json;odata=nometadata","X-RequestDigest":w}});if(!y.ok){if(y.status===404)return{data:void 0,isError:!1,error:"",warnings:[`SPFxExtensionsData web not found in ${x}`]};return z(`Failed to fetch data from ${x}/${k}/_api/web`),{data:void 0,isError:!0,error:`Failed to fetch data from ${x}/${k}/_api/web`,warnings:[]}}return{data:await y.json(),isError:!1,error:"",warnings:[]}}async function fw(){return(await v("SPFxDataSite"))?.Data}var Qx;function m1(){if(Qx)return Qx;return Qx=gw(),Qx}async function gw(){let x=await fw();if(!x){let w=await Uw();if(!w.isError&&!w.data){let y=await Sw(k);w.data=y}return await m({Title:"SPFxDataSite",Data:w.data,date:"",expires:""},240),w.data}return x}var fx="f3ab710f-2c08-422e-a7ad-5d93eb51e7a3",Zx={accept:"application/json"},ow={"Content-Type":"application/json"};async function Cw(){let w={"X-RequestDigest":await _(k)};return(await(await fetch(`${q}/_api/sitepages/pages`,{headers:{...Zx,...w,...ow},body:JSON.stringify({PageLayoutType:"SingleWebPartAppPage",PromotedState:0}),method:"POST"})).json()).Id}async function gx(){let x=await fetch(`${q}/_api/sitepages/pages/GetByUrl('${t}')`,{headers:{...Zx},method:"GET"});if(x.status===404)return;return await x.json()}var Nw=[{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authorByline:[],authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"SPFx Extensions Configurator",topicHeader:"",enableGradientEffect:!0},reservedHeight:280,serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}],uw=[{addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:fx,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:{dataVersion:"1.0",description:"Allows you to add a custom developed app",id:Hx,instanceId:fx,properties:{description:"Select an app to load from the dropdown below",selectedApp:h,SPFxExtensionAppConfiguration:void 0},title:"SPFx Extension Loader"},webPartId:Hx},{controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}}],Iw={CanvasContent1:`${JSON.stringify(uw)}`,LayoutWebpartsContent:`${JSON.stringify(Nw)}`,Title:px};async function A1(x){let y={"X-RequestDigest":await _(k)};await fetch(`${q}/_api/sitepages/pages(${x})/savepage`,{headers:{"Content-Type":"application/json",...Zx,...y},body:JSON.stringify(Iw),method:"POST"}),await fetch(`${q}/_api/sitepages/pages(${x})/publish`,{headers:{...Zx,...y},method:"POST"})}async function Tw(){let x=await Cw();return await A1(x),gx()}async function cw(){let x=await v("ConfiguratorPageData");if(x?.Data)return x.Data;let w=await gx();if(w)await m({Title:"ConfiguratorPageData",Data:w,date:"",expires:""},480);return w}async function h1(){let x=await cw();if(!x)return Tw();if(x.CanvasContent1.indexOf(fx)===-1){await A1(x.Id);let w=await gx();return await m({Title:"ConfiguratorPageData",Data:w,date:"",expires:""},480),w}return x}async function tw(){let x=`${q}/_api/web/lists/GetByTitle('${U}')/fields`;try{let w=await fetch(x,{headers:{Accept:"application/json;odata=verbose"}});if(w.status===200){if(!(await w.json()).d.results.map((Z)=>Z.InternalName).some((Z)=>Z==="EntryPointUrl"))await pw(x,"EntryPointUrl","Full URL to the Entrypoint JS file, if * is specified all entries will be allowed.",!0)}}catch(w){z("Error while ensuring list fields.",w)}}async function pw(x,w,y,$){let Q=await _(k);if((await fetch(x,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":Q},body:JSON.stringify({__metadata:{type:"SP.Field"},Title:w,FieldTypeKind:3,Required:$,Description:y})})).status===201)J(w,"field added successfully.");else z(w,"Unable to add field.")}async function iw(){try{let x=await fetch(`${q}/_api/web/lists/GetByTitle('${U}')?$select=*`,{method:"GET",headers:{Accept:"application/json;odata=verbose"}});if(x.status===404){J("Creating app white list.");let y=await _(k),$=await fetch(`${q}/_api/web/lists`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":y},body:JSON.stringify({__metadata:{type:"SP.List"},BaseTemplate:100,Title:U,Description:"App whitelist for SPFxExtensions"})});if($.status===201)return J("App whitelist created successfully."),$.json();else{z("Unable to create app whitelist.");return}}return await tw(),x.json()}catch(x){z("Error while ensuring app whitelist.",x)}return}async function d1(){let x=await v("AppWhiteList");if(x?.Data)return x.Data;let w=await iw();if(w)await m({Title:"AppWhiteList",Data:w,date:"",expires:""},480);return w}var Vx;async function ox(){if(Vx)return Vx;return Vx=sw(),Vx}async function sw(){await m1(),await d1(),await h1(),window.__SPFxExtensions.Utils.ConfiguratorPageUrl=`${q}/${t}`}async function M(x=!1){return await ox(),E1(x)}async function v1(){return`${`${(await M()).find(($)=>$.Title==="RootCDNLocation")?.Data??`${q}`}${f}`}${R}`}async function M1(){let x=await M(),w=["7d56fff0-e90e-40a7-98cf-fcdbc63a9b01"];if(x.find((y)=>y.Title==="Version")?.Data!=="2025-09-12T23:13:20.818Z")x=await M(!0),m({Title:"Version",Data:"2025-09-12T23:13:20.818Z",date:"",expires:""},240),await xx(w,!0)}async function xx(x,w){let y=await window.caches.keys(),$=!1;for(let Q of y){let Z=await window.caches.open(Q),V=await Z.keys(),j=[];for(let Y of V){let K=Y.url.toLowerCase();if(x.some((O)=>K.indexOf(O.toLowerCase())>-1))J("Deleting cache key",Y,"from",Q),$=!0,j.push(Z.delete(Y,{ignoreMethod:!0,ignoreSearch:!0,ignoreVary:!0}))}await Promise.allSettled(j)}if($&&w)window.location.reload()}function S3(){return o(`${Date.now()}`,13)}var lw=rw();async function rw(){try{let x=await H1(),w=await J1();if(w.length>0&&!x)return w;if(w.length>0)J("Cache mismatch, loading allowed apps data...");let y=await S1();return await q1(y,5),y}catch(x){return z("Unable to load allowed apps data...",x),[]}}async function S1(x=!1){if((await M(x)).find(($)=>$.Title==="EnableAppWhiteList")?.Data!=="true")return[{Id:1,Title:"All apps allowed",EntryPointUrl:"*",date:(/*@__PURE__*/new Date()).toISOString(),expires:(/*@__PURE__*/new Date()).toISOString()}];return aw()}async function aw(){let x=`${q}/_api/web/lists/getByTitle('${U}')/Items?$select=Id,Title,EntryPointUrl&$top=1000`;return await ew(x)}async function ew(x){let w=x,y=[];while(w){let Q=await(await fetch(w,{method:"GET",headers:{Accept:"application/json;odata=verbose"}})).json();if(Q.error)throw new Error(JSON.stringify(Q.error));y.push(...Q.d.results),w=Q.d.__next}return y}function x9(x,w){if(w.some((Q)=>Q.EntryPointUrl==="*"))return!0;let $=(x.origin+x.pathname).toLowerCase();return w.some((Q)=>{try{let Z=new URL(Q.EntryPointUrl),V=Z.origin+Z.pathname;return $===V.toLowerCase()}catch(Z){return z("Error while parsing allowed entry URL",Q.EntryPointUrl,Z),!1}})}async function U1(x,w,y=!1){if(z1(x))return!0;let $=y?await S1(y):await lw;if(!x9(x,$))return G("File",x,`is not allowed to be executed. Please add it to whitelist @ ${q}.`),G(`If you are a developer you can enable this app by adding window.localStorage item ${A.SPFXEXT}${w} with a number value corresponding to development port of the localhost server.`),!1;return!0}async function T3(){if(window.moduleLoaderPromise)return(await window.moduleLoaderPromise)?.context;console.error("Unable to retrieve Modern SP Context...")}async function f1(){if(window.moduleLoaderPromise){let x=await window.moduleLoaderPromise;if(x?.context?.pageContext)return{contextType:"SPOModernContext",context:x.context.pageContext};throw"It seems this is a modern page, however it was not possible to retrieve SP Context..."}if(window._spPageContextInfo)return{contextType:"ClassicContext",context:window._spPageContextInfo};throw"It was not possible to retrieve SP Context either through modern or through classic means..."}var D=await f1();function g1(){return D.contextType==="SPOModernContext"?D.context.web.id.toString():Rx(D.context.webId)}function Cx(){return(D.contextType==="SPOModernContext"?D.context.web.absoluteUrl:D.context.webAbsoluteUrl).replace(/\/$/,"")}function zx(){return D.contextType==="SPOModernContext"?D.context.site.id.toString():Rx(D.context.siteId)}function T(){return D.contextType==="SPOModernContext"?D.context.site.absoluteUrl:D.context.siteAbsoluteUrl}function Yx(){return(D.contextType==="SPOModernContext"?D.context.legacyPageContext.hubSiteId?.toString():D.context.hubSiteId)??p}function o1(){return D.contextType==="SPOModernContext"?D.context.legacyPageContext.isHubSite:D.context.isHubSite}function w9(x){if(!Array.isArray(x.enabledAppCollections))throw`${L} ${R} enabledAppCollections should be an array`;if(!Array.isArray(x.urlMap))throw`${L} ${R} urlMap should be an array`}async function Bx(x,w,y,$,Q=!1,Z=60){let V=nx,j=x.toLowerCase();if(!Q&&!E){let H=await G1(j);if(H)return H.isHubFetch=$,H}let Y=`${j}?v=${Date.now()}`;try{b(`Fetching ${R} from`,Y);let u=await(await fetch(Y)).text();V=JSON.parse(u)}catch(H){G(`Unable to fetch ${R} from`,Y,H)}try{w9(V)}catch(H){z(`Error while parsing ${R} from`,Y,H),V=nx}let K=await o(JSON.stringify(V)),X={manifest:V,...{name:w,url:j,type:y,hash:K}};return await F1(X,E?1:Z),X.isHubFetch=$,X}async function jx(x,w,y,$=!1){let Q=[],Z=await v1();Q.push(Bx(Z,"apps","root",!0,$));let V=x+f;if(Q.push(Bx(`${V}${R}`,"apps","site",!1,$)),y){let H=y+f;Q.push(Bx(`${H}${R}`,"apps","site",!0,$))}let Y=`${w+f}${R}`,K=x.toLowerCase()===w.toLowerCase(),O=Y.toLowerCase()===Z.toLowerCase();if(!K&&!O)Q.push(Bx(Y,"apps","web",!1,$));return await Promise.all(Q)}function C1(x){if(!x.appDefinitionMap)x.appDefinitionMap=[];if(!x.appRelativeEntryPointUrls)x.appRelativeEntryPointUrls=[];if(!x.manualEntries)x.manualEntries=[];return x}function y9(x){if(Array.isArray(x)||typeof x!=="object")throw`${L} App manifest has to be an object.`;if(!x.appRelativeEntryPointUrls)throw z("Manifest does not have appRelativeEntryPointUrl property.",x),`${L} Manifest does not have appRelativeEntryPointUrl property.`;if(!x.appDefinitionMap)throw z("Manifest does not have enabledApps property.",x),`${L} Manifest does not have enabledApps property.`}async function $9(x,w,y,$,Q=!1,Z=60){let V={...Dx},j=x.toLowerCase();if(!Q&&!E){let H=await D1(j);if(H)return H.isHubFetch=$,H}let Y=`${j}?v=${Date.now()}`;try{b(`Fetching ${P} from`,Y);let u=await(await fetch(Y)).text();V=JSON.parse(u),C1(V)}catch(H){G(`Unable to fetch ${P} from`,Y,H)}try{y9(V)}catch(H){z(`Error while parsing ${P} from`,Y,H),V={...Dx}}let K=await o(JSON.stringify(V)),X={manifest:V,...{name:w,url:j,type:y,hash:K}};return await n1(X,E?1:Z),X.isHubFetch=$,X}function Q9(x,w){let y=`${x}${w}/${P}`,$=`${A.SPFXEXT}${w}`,Q=Number(window.localStorage.getItem($));if(Q>0){let Z=`https://localhost:${Q}/${P}`;return J(`<${w}> App is in debug mode, loading from`,Z),Z}return y}function Nx(x,w=!1){if(x.length===0)return[];let y=[];for(let $ of x){let Q=$.url.toLowerCase().replace(R.toLowerCase(),"");for(let Z of $.manifest.enabledAppCollections){let V=Q9(Q,Z);y.push($9(V,Z,$.type,$.isHubFetch??!1,w))}}return y}function Kx(x,w=!1){let y=x.filter((K)=>K.type==="root"),$=Nx(y,w),Q=x.filter((K)=>K.type==="site"),Z=Nx(Q,w),V=x.filter((K)=>K.type==="web"),j=Nx(V,w);return[...$,...Z,...j]}var Ix=!1,Jx=[];async function Z9(x,w,y){let $=y.appDefinitionMap.find((Z)=>Z.appId===w);if(!$){let Z=`Could not find app configuration item for Manual app ${w}`;return z(Z),[]}if(!u1($))return J(`App ${w} is not enabled in current context. Skipping...`),[];try{G("Manual module detected. Make sure to call window.__SPFxExtensions.RegisterApp and window.__SPFxExtensions.InstantiateApp in code.",x),await import(x)}catch(Z){let V=`Error while importing or executing ${x} ${Z}`;z(V)}return[]}async function V9(x,w){try{let $=(await import(x)).default;if(!$)return z(`No default export found in ${x}, only ESM modules are supported.`),[];return B9($,w,x)}catch(y){return z("Error while importing or executing",x,y),[]}}async function N1(x,w,y,$,Q){let Z=x.replace(/\.\.\/?/g,"./").replace(/^\.\//,""),V=`${w}${Z}`.toLowerCase();b("EntryPoint JS: ",V);let j=new URL(V);if(y)j.searchParams.set("v",`${y}`);if(!await U1(j,$.name))return;let K=`${j.origin}${j.pathname}`,O=`${j}`;if(Jx.includes(K)){J("EntryPoint already loaded:",O);return}return Jx.push(K),()=>{if(Q)return Z9(O,Q,$.manifest);return V9(O,$.manifest)}}async function ux(x){let w=[],y=x.url.replace(P,"");b("Parsing",x.type,"manifest:",x.manifest);let $="";if(x.manifest.cacheString&&x.manifest.enableCaching)$=Y1(x.name)?`${(/*@__PURE__*/new Date()).getTime()}`:x.manifest.cacheString;for(let Q of x.manifest.appRelativeEntryPointUrls){let Z=await N1(Q,y,$,x);if(Z)w.push(Z())}for(let Q of x.manifest.manualEntries){let Z=await N1(Q.entryPoint,y,$,x,Q.appId);if(Z)w.push(Z())}return w}async function Tx(x,w,y,$,Q=!1){if(Q)z9($);if(Ix)return;Ix=!0;let Z=await jx(x,w,y),V=Kx(Z);window.__SPFxExtensions.Utils.appManifestPromises=V,window.__SPFxExtensions.Utils.spAppInitializationPromiseResolver();let Y=(await Promise.allSettled(V)).filter((n)=>n.status==="fulfilled"),K=[],O=Y.filter((n)=>n.value.type==="root"),X=Y.filter((n)=>n.value.type==="site"),H=Y.filter((n)=>n.value.type==="web");for(let n of O){let I=await ux(n.value);K.push(...I)}b("Root apps loaded.");for(let n of X){let I=await ux(n.value);K.push(...I)}b("Site apps loaded.");for(let n of H){let I=await ux(n.value);K.push(...I)}b("SiteWeb apps loaded.");let u=(await Promise.allSettled(K)).filter((n)=>n.status==="fulfilled").flatMap((n)=>n.value);await Y9(u),window.__SPFxExtensions.AllAppAssetsLoadedResolver(),J("SPFx Extensions Core Components Loaded.")}function z9(x){Ix=!1,Jx.splice(0,Jx.length),sx(x);let{promise:w,resolve:y}=Promise.withResolvers();window.__SPFxExtensions.AllAppAssetsLoadedPromise=w,window.__SPFxExtensions.AllAppAssetsLoadedResolver=y}async function Y9(x){let w=[];for(let y of window.__SPFxExtensions.Apps)if(!x.find((Q)=>Q.id===y.id)&&!y.isManual&&y.id!==h)w.push(y.id);for(let y of w){let $=await window.__SPFxExtensions.UnregisterApp(y);if($)G(`Unregistered App ${$.id} (${$.name}) as it does not belong in this context`)}}async function B9(x,w,y){if(!Array.isArray(x))z("Default export of entry point should be an array of App definitions. TODO: add documentation url",y);let $=[];for(let Q of x){if(!Q.id){z("App definition does not have an id. Make sure that returned array is in proper format. TODO: add documentation url",y,Q);continue}let Z=w.appDefinitionMap.find((K)=>K.appId.toLowerCase()===Q.id.toLowerCase()),V=`App with id ${Q.id} (${Q.name}) is not enabled for current web. Skipping...`;if(!Z){J(V);continue}if(!u1(Z)){J(V);continue}let Y=await window.__SPFxExtensions.RegisterApp(Q);if($.push(Q),!Q.isWebPartApp&&Q.autoExecute){if(Y.instances.length<(Q.maxInstances??1/0))window.__SPFxExtensions.InstantiateApp(Q.id,{})}}return $}function u1(x){let w=g1().toLowerCase(),y=zx().toLowerCase(),$=Yx().toLowerCase(),Q=x.config.enabledEverywhere,Z=x.config.excludedIds.indexOf(w)===-1&&x.config.excludedIds.indexOf(y)===-1&&x.config.excludedHubIds.indexOf($)===-1,V=x.config.includedIds.indexOf(w)!==-1||x.config.includedIds.indexOf(y)!==-1||x.config.includedHubIds.indexOf($)!==-1;return Q?Z:V}var I1=!1;function c1(){if(window.moduleLoaderPromise&&!I1)I1=!0,window.moduleLoaderPromise.then((x)=>{let w=x.context.pageContext.initialize;x.context.pageContext.initialize=function(y,$){let Q=x.context.pageContext._initializationData;w.call(this,y,$);let Z={initializationData:y,legacyContext:$};if(Q.web.id===y.web.id){T1("contextRefresh",Z);return}T1("contextChange",Z)}})}function T1(x,w){let y=new CustomEvent(x,{detail:w});window.dispatchEvent(y),window.__SPFxExtensions.Apps.forEach(($)=>{$.instances.forEach((Q)=>{Q.executeListeners(x,w)})})}function j9(x){let w=window.__SPFxExtensions.AppEventListeners.findIndex((y)=>y.key===x.key);if(w>-1)b("Removing event listener",x),window.__SPFxExtensions.AppEventListeners.splice(w,1)}function t1(){if(!window.__SPFxExtensions.AppEventListeners)window.__SPFxExtensions.AppEventListeners=[];if(!window.__SPFxExtensions.AddAppEventListener)window.__SPFxExtensions.AddAppEventListener=(x,w)=>{let y={key:window.crypto.randomUUID(),eventName:x,handler:w};return window.__SPFxExtensions.AppEventListeners.push(y),()=>{j9(y)}};if(!window.__SPFxExtensions.RemoveAppEventListener)window.__SPFxExtensions.RemoveAppEventListener=(x)=>{let w=window.__SPFxExtensions.AppEventListeners.findIndex((y)=>y.key===x.key);if(w>-1)window.__SPFxExtensions.AppEventListeners.splice(w,1)}}var K9=window.history.pushState,J9=window.history.replaceState,W9=window.history.back,b9=window.history.forward,q9=window.history.go;function H9(){let x=window.history.state,w=window.location.href;return{currentState:x,previousUrl:w}}function c(x,w){let y={...H9(),...w},$=new CustomEvent(x,{detail:y});window.dispatchEvent($)}function k9(){function x(w,y,$){K9.call(this,w,y,$),c("historyPush",{newState:w,newUrl:$})}window.history.pushState=x}function D9(){function x(w,y,$){J9.call(this,w,y,$),c("historyReplace",{newState:w,newUrl:$})}window.history.replaceState=x}function n9(){function x(){W9.call(this),c("historyBack",{})}window.history.back=x}function F9(){function x(){b9.call(this),c("historyForward",{})}window.history.forward=x}function G9(){function x(w){q9.call(this,w),c("historyGo",{delta:w})}window.history.go=x}var p1=!1;function i1(){if(p1)return;p1=!0,D9(),k9(),F9(),n9(),G9()}async function cx(){if(o1())return"";let x=Yx(),w=zx();if(!x||x===p||x===w)return"";await k1();let y=await W1(x);if(!y){let $=T();J("Getting Hub data for HubSiteId:",x);try{let Z=await(await fetch(`${$}/_api/hubsites/GetById?hubSiteId='${x}'`,{headers:{accept:"application/json;odata=nometadata"}})).json();return await b1(Z),Z.SiteUrl}catch(Q){return z("Error fetching hub site data.",Q),""}}return y.SiteUrl}var s1="CORE_MANIFEST_CHECK",r1=Number(window.localStorage.getItem(A.SPFXEXT_CORE))>0?1e4:90000,Wx=0;function tx(x,w,y,$=!1){if($)window.clearInterval(Wx),Wx=0;if(Wx>0)return;Wx=window.setInterval(l1,r1,x,w,y),l1(x,w,y)}async function l1(x,w,y){try{let Q=window.localStorage.getItem(s1);if(Q){let j=new Date(Q),K=(/*@__PURE__*/new Date()).getTime()-j.getTime(),O=r1;if(K<O){b("Manifest check already performed recently, skipping.",`${K} < ${O}`);return}}J("Checking for manifest updates across all locations..."),await Promise.all([e(),a()]);let Z=await jx(x,w,y,!0),V=Kx(Z,!0);await Promise.allSettled(V)}catch(Q){z("Error checking for manifest updates",Q)}let $=(/*@__PURE__*/new Date()).toISOString();b("Setting next manifest check to",$),window.localStorage.setItem(s1,$)}var bx;async function R9(){if(bx)return bx;return bx=O9(),bx}async function O9(){if(await ox(),(await M()).find((Q)=>Q.Title==="InterceptHistory")?.Data==="true")i1();c1(),t1(),lx(),rx();let{promise:y,resolve:$}=Promise.withResolvers();if(!window.__SPFxExtensions.AllAppAssetsLoadedPromise)window.__SPFxExtensions.AllAppAssetsLoadedPromise=y,window.__SPFxExtensions.AllAppAssetsLoadedResolver=$}async function a1(){await M1(),await R9(),window.__SPFxExtensions.__CorePromiseResolver();let x=T(),w=Cx(),y=await cx();await Tx(x,w,y,s()),window.addEventListener("contextChange",async()=>{J("Context changed, reloading apps...");let $=T(),Q=Cx(),Z=await cx(),V=ix();await Tx($,Q,Z,V,!0),tx($,Q,Z,!0)}),tx(x,w,y),J("SPFx Extensions Core Has Been initialized.")}var _9={id:h,description:"Allows configuring custom apps",isWebPartApp:!1,hideAppSelectorWhenAppLoaded:!0,hideConfiguratorButton:!0,name:"SPFx Extensions Configurator",async onInstanceRequested(x){let w=import.meta.url.indexOf("localhost")>-1;if(w)b("Core is in debug mode");let y=w?import.meta.resolve(`./__spfxCoreConfigurator.js?v=${Date.now()}`):window.__SPFxExtensions.__ConfiguratorUrl;try{return(await import(y)).launch(x)}catch($){if(z("Error launching configurator app",$),x.domElement)x.domElement.innerHTML=`<div style="text-align: center; padding: 20px; color: red;">Error launching configurator app. ${$}</div>`;return()=>{}}}},X9="2025-09-12T23:13:20.818Z";J("Initializing SPFxExtensions Core Built:",X9);await a1();try{await window.__SPFxExtensions.RegisterApp(_9)}catch(x){z("Error registering configurator app",x)}
|
|
1
|
+
var e1=Object.create;var{getPrototypeOf:xw,defineProperty:Kx,getOwnPropertyNames:ww}=Object;var $w=Object.prototype.hasOwnProperty;var E9=(x,w,$)=>{$=x!=null?e1(xw(x)):{};let y=w||!x||!x.__esModule?Kx($,"default",{value:x,enumerable:!0}):$;for(let _ of ww(x))if(!$w.call(y,_))Kx(y,_,{get:()=>x[_],enumerable:!0});return y};var L9=(x,w)=>()=>(w||x((w={exports:{}}).exports,w),w.exports);var m9=(x,w)=>{for(var $ in w)Kx(x,$,{get:w[$],enumerable:!0,configurable:!0,set:(y)=>w[$]=()=>y})};var A9=(x,w)=>()=>(x&&(w=x(x=0)),w);var px="7d56fff0-e90e-40a7-98cf-fcdbc63a9b01",Jx="d6ca1fc2-0591-4c6d-8a25-cae3262c017b",A="45e75137-13c5-4bb2-a2b3-8ab6382682ee",ix="SPFxExtensionsConfigurator",T="SitePages/SPFxExtensionsConfigurator.aspx",G="manifest.txt",D="collectionconfig.txt",Wx="Loading...",h="SPFxExtensionsConfiguration",M="SPFxExtensionsWhiteList",d9="SPFxExtensions",v="/SPFxExtensions/",H="SPFxExtensionsData",X="[SPFxExtensionCore]",qx={appDefinitionMap:[],appRelativeEntryPointUrls:[],manualEntries:[]},S9={enabledEverywhere:!1,excludedHubIds:[],excludedIds:[],includedHubIds:[],includedIds:[]},Hx={enabledAppCollections:[],urlMap:[]},t="00000000-0000-0000-0000-000000000000";async function M9(){if(window.moduleLoaderPromise)return(await window.moduleLoaderPromise)?.context;console.error("Unable to retrieve Modern SP Context...")}async function sx(){if(window.moduleLoaderPromise){let x=await window.moduleLoaderPromise;if(x?.context?.pageContext)return{contextType:"SPOModernContext",context:x.context.pageContext};throw"It seems this is a modern page, however it was not possible to retrieve SP Context..."}if(window._spPageContextInfo)return{contextType:"ClassicContext",context:window._spPageContextInfo};throw"It was not possible to retrieve SP Context either through modern or through classic means..."}function z(x,w,$=x){return(y)=>{let _=""+y,n=_.indexOf(w,x.length);return~n?x+yw(_,w,$,n)+w:x+_+w}}function yw(x,w,$,y){let _="",n=0;do _+=x.substring(n,y)+$,n=y+w.length,y=x.indexOf(w,n);while(~y);return _+x.substring(n)}var C9=z("\x1B[0m","\x1B[0m"),U9=z("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),f9=z("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),g9=z("\x1B[3m","\x1B[23m"),N9=z("\x1B[4m","\x1B[24m"),u9=z("\x1B[7m","\x1B[27m"),I9=z("\x1B[8m","\x1B[28m"),T9=z("\x1B[9m","\x1B[29m"),t9=z("\x1B[30m","\x1B[39m"),c9=z("\x1B[31m","\x1B[39m"),p9=z("\x1B[32m","\x1B[39m"),i9=z("\x1B[33m","\x1B[39m"),s9=z("\x1B[34m","\x1B[39m"),l9=z("\x1B[35m","\x1B[39m"),r9=z("\x1B[36m","\x1B[39m"),a9=z("\x1B[37m","\x1B[39m"),e9=z("\x1B[90m","\x1B[39m"),x3=z("\x1B[40m","\x1B[49m"),w3=z("\x1B[41m","\x1B[49m"),$3=z("\x1B[42m","\x1B[49m"),y3=z("\x1B[43m","\x1B[49m"),_3=z("\x1B[44m","\x1B[49m"),n3=z("\x1B[45m","\x1B[49m"),Q3=z("\x1B[46m","\x1B[49m"),Z3=z("\x1B[47m","\x1B[49m"),V3=z("\x1B[90m","\x1B[39m"),z3=z("\x1B[91m","\x1B[39m"),c=z("\x1B[92m","\x1B[39m"),B3=z("\x1B[93m","\x1B[39m"),Y3=z("\x1B[94m","\x1B[39m"),j3=z("\x1B[95m","\x1B[39m"),K3=z("\x1B[96m","\x1B[39m"),J3=z("\x1B[97m","\x1B[39m"),W3=z("\x1B[100m","\x1B[49m"),q3=z("\x1B[101m","\x1B[49m"),H3=z("\x1B[102m","\x1B[49m"),b3=z("\x1B[103m","\x1B[49m"),k3=z("\x1B[104m","\x1B[49m"),F3=z("\x1B[105m","\x1B[49m"),D3=z("\x1B[106m","\x1B[49m"),P3=z("\x1B[107m","\x1B[49m");function Z(...x){console.error(c(X),(/*@__PURE__*/new Date()).toISOString(),...x)}function k(...x){console.warn(c(X),(/*@__PURE__*/new Date()).toISOString(),...x)}function j(...x){console.info(c(X),(/*@__PURE__*/new Date()).toISOString(),...x)}function J(...x){}function bx(x,w,$){Z("Error while executing onInstanceRequested for app",x.id,"with name",x.name,$?`Additional Data: ${$}`:"",w)}function C(){return k("The app instance event was called before app instance was initialized."),()=>{}}var kx=window.crypto.randomUUID();function p(){return kx}function lx(){return kx=window.crypto.randomUUID(),kx}function Fx(x){return x.replace("{","").replace("}","")}function L3(x){return JSON.parse(JSON.stringify(x))}function _w(x,w,$){let y=x.instances.findIndex((_)=>_.key===w);if(y>-1){let _=x.instances.splice(y,1);if(_.length<1)return;let n=_[0];n.executeListeners("onConfigurationClose",{domElement:void 0}),n.allEventListeners.splice(0,n.allEventListeners.length),$?.()}}async function rx(x){let w=window.__SPFxExtensions.Apps.filter(($)=>!$.isWebPartApp&&!$.keepOnContextChange&&$.id!==A);for(let $ of w)for(let y of $.instances.filter((_)=>_.contextId!==x))if(y.instanceExecuted)y.unmount()}function i(x,w){if(w.instanceRequested)return;try{w.instanceRequested=!0,x.onInstanceRequested(w).then(($)=>{w.unmount=()=>{_w(x,w.key,$)},w.instanceLoadPromiseResolver(),w.instanceExecuted=!0}).catch(($)=>{bx(x,$)})}catch($){bx(x,$)}}function nw(x){J("Executing appAdded event for",x.id),window.__SPFxExtensions.AppEventListeners.filter((w)=>w.eventName==="appAdded").forEach((w)=>{try{w.handler(x)}catch($){Z("Error executing appAdded event",$)}})}function Dx(x){let w=window.__SPFxExtensions.Apps.find(($)=>$.id===x);if(!w)J("Registering new app",x),w={id:x,name:Wx,description:Wx,isWebPartApp:!1,unmountOnRender:!0,keepOnContextChange:!1,autoExecute:!1,maxInstances:1/0,hideAppSelectorWhenAppLoaded:!1,hideConfiguratorButton:!1,registrationCompleted:!1,isManual:!1,instances:[],async onInstanceRequested(){return C}},window.__SPFxExtensions.Apps.push(w);return w}function ax(){if(!window.__SPFxExtensions.Apps)window.__SPFxExtensions.Apps=[];if(!window.__SPFxExtensions.RegisterApp)window.__SPFxExtensions.RegisterApp=async(x)=>{let w=Dx(x.id);if(w.registrationCompleted)return w;return w.name=x.name,w.description=x.description,w.isWebPartApp=x.isWebPartApp,w.keepOnContextChange=x.keepOnContextChange??!1,w.autoExecute=x.autoExecute??!1,w.isManual=x.isManual??!1,w.unmountOnRender=x.unmountOnRender??!0,w.maxInstances=x.maxInstances??1/0,w.hideAppSelectorWhenAppLoaded=x.hideAppSelectorWhenAppLoaded??!1,w.hideConfiguratorButton=x.hideConfiguratorButton??!1,w.icon=x.icon,w.onInstanceRequested=x.onInstanceRequested,w.registrationCompleted=!0,nw(w),w.instances.forEach(($)=>{i(w,$)}),w};if(!window.__SPFxExtensions.UnregisterApp)window.__SPFxExtensions.UnregisterApp=async(x)=>{let w=window.__SPFxExtensions.Apps.findIndex((y)=>y.id===x);if(w<0)return;let $=window.__SPFxExtensions.Apps.splice(w,1);if($.length<1)return;return J("Unregistering app",$[0].id,$[0].name),$[0].instances.forEach((y)=>{if(y.instanceExecuted)y.unmount()}),$[0]}}function Qw(x){let w=(_)=>{let n=x.allEventListeners.findIndex((Q)=>Q.key===_.key);if(n>-1)J("Removing event listener",_),x.allEventListeners.splice(n,1)},$=(_,n)=>{let Q={key:window.crypto.randomUUID(),eventName:_,handler:n};return x.allEventListeners.push(Q),()=>{w(Q)}},y=(_,n)=>{for(let Q of x.allEventListeners){if(Q.eventName!=_)continue;if(Q.handler)Q.handler(n)}};x.addEventListener=$,x.executeListeners=y}function Zw(x,w){J("Executing instanceAdded event for app",x.id,"instance",w.key),window.__SPFxExtensions.AppEventListeners.filter(($)=>$.eventName==="instanceAdded").forEach(($)=>{try{$.handler({app:x,instance:w})}catch(y){Z("Error executing instanceAdded event",y)}})}function Vw(x){let{promise:w,resolve:$}=Promise.withResolvers(),y={...x,key:window.crypto.randomUUID(),contextId:p(),instanceRequested:!1,instanceExecuted:!1,unmountOnRender:!0,unmount:C,allEventListeners:[],addEventListener:C,executeListeners:C,instanceLoadPromise:w,instanceLoadPromiseResolver:$};return Qw(y),y}function ex(){if(!window.__SPFxExtensions.InstantiateApp)window.__SPFxExtensions.InstantiateApp=async(x,w)=>{let $=Dx(x);J("Creating app instance for app",x);let y=Vw(w);if(y.unmountOnRender=$.unmountOnRender??!0,$.instances.push(y),Zw($,y),$.registrationCompleted)i($,y);return y}}async function U(x,w=0){let y=(/*@__PURE__*/new TextEncoder()).encode(x),_=await window.crypto.subtle.digest("SHA-1",y),Q=Array.from(new Uint8Array(_)).map((B)=>B.toString(16).padStart(2,"0")).join("");return w>0?Q.substring(0,w):Q}var Ox=(x,w)=>w.some(($)=>x instanceof $),x1,w1;function zw(){return x1||(x1=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function Bw(){return w1||(w1=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}var Gx=/*@__PURE__*/new WeakMap,Px=/*@__PURE__*/new WeakMap,s=/*@__PURE__*/new WeakMap;function Yw(x){let w=new Promise(($,y)=>{let _=()=>{x.removeEventListener("success",n),x.removeEventListener("error",Q)},n=()=>{$(o(x.result)),_()},Q=()=>{y(x.error),_()};x.addEventListener("success",n),x.addEventListener("error",Q)});return s.set(w,x),w}function jw(x){if(Gx.has(x))return;let w=new Promise(($,y)=>{let _=()=>{x.removeEventListener("complete",n),x.removeEventListener("error",Q),x.removeEventListener("abort",Q)},n=()=>{$(),_()},Q=()=>{y(x.error||new DOMException("AbortError","AbortError")),_()};x.addEventListener("complete",n),x.addEventListener("error",Q),x.addEventListener("abort",Q)});Gx.set(x,w)}var Xx={get(x,w,$){if(x instanceof IDBTransaction){if(w==="done")return Gx.get(x);if(w==="store")return $.objectStoreNames[1]?void 0:$.objectStore($.objectStoreNames[0])}return o(x[w])},set(x,w,$){return x[w]=$,!0},has(x,w){if(x instanceof IDBTransaction&&(w==="done"||w==="store"))return!0;return w in x}};function n1(x){Xx=x(Xx)}function Kw(x){if(Bw().includes(x))return function(...w){return x.apply(Ex(this),w),o(this.request)};return function(...w){return o(x.apply(Ex(this),w))}}function Jw(x){if(typeof x==="function")return Kw(x);if(x instanceof IDBTransaction)jw(x);if(Ox(x,zw()))return new Proxy(x,Xx);return x}function o(x){if(x instanceof IDBRequest)return Yw(x);if(Px.has(x))return Px.get(x);let w=Jw(x);if(w!==x)Px.set(x,w),s.set(w,x);return w}var Ex=(x)=>s.get(x);function Q1(x,w,{blocked:$,upgrade:y,blocking:_,terminated:n}={}){let Q=indexedDB.open(x,w),B=o(Q);if(y)Q.addEventListener("upgradeneeded",(V)=>{y(o(Q.result),V.oldVersion,V.newVersion,o(Q.transaction),V)});if($)Q.addEventListener("blocked",(V)=>$(V.oldVersion,V.newVersion,V));return B.then((V)=>{if(n)V.addEventListener("close",()=>n());if(_)V.addEventListener("versionchange",(Y)=>_(Y.oldVersion,Y.newVersion,Y))}).catch(()=>{}),B}function Z1(x,{blocked:w}={}){let $=indexedDB.deleteDatabase(x);if(w)$.addEventListener("blocked",(y)=>w(y.oldVersion,y));return o($).then(()=>{return})}var Ww=["get","getKey","getAll","getAllKeys","count"],qw=["put","add","delete","clear"],Rx=/*@__PURE__*/new Map;function $1(x,w){if(!(x instanceof IDBDatabase&&!(w in x)&&typeof w==="string"))return;if(Rx.get(w))return Rx.get(w);let $=w.replace(/FromIndex$/,""),y=w!==$,_=qw.includes($);if(!($ in(y?IDBIndex:IDBObjectStore).prototype)||!(_||Ww.includes($)))return;let n=async function(Q,...B){let V=this.transaction(Q,_?"readwrite":"readonly"),Y=V.store;if(y)Y=Y.index(B.shift());return(await Promise.all([Y[$](...B),_&&V.done]))[0]};return Rx.set(w,n),n}n1((x)=>({...x,get:(w,$,y)=>$1(w,$)||x.get(w,$,y),has:(w,$)=>!!$1(w,$)||x.has(w,$)}));var Hw=["continue","continuePrimaryKey","advance"],y1={},Lx=/*@__PURE__*/new WeakMap,V1=/*@__PURE__*/new WeakMap,bw={get(x,w){if(!Hw.includes(w))return x[w];let $=y1[w];if(!$)$=y1[w]=function(...y){Lx.set(this,V1.get(this)[w](...y))};return $}};async function*kw(...x){let w=this;if(!(w instanceof IDBCursor))w=await w.openCursor(...x);if(!w)return;w=w;let $=new Proxy(w,bw);V1.set($,w),s.set($,Ex(w));while(w)yield $,w=await(Lx.get($)||w.continue()),Lx.delete($)}function _1(x,w){return w===Symbol.asyncIterator&&Ox(x,[IDBIndex,IDBObjectStore,IDBCursor])||w==="iterate"&&Ox(x,[IDBIndex,IDBObjectStore])}n1((x)=>({...x,get(w,$,y){if(_1(w,$))return kw;return x.get(w,$,y)},has(w,$){return _1(w,$)||x.has(w,$)}}));var m={SPFXEXT:"SPFXEXT_",SPFXEXT_CORE:"SPFXEXT"};function mx(){try{let x=typeof globalThis<"u"?globalThis:void 0;if(x&&x.localStorage)return x.localStorage}catch{}try{if(typeof window<"u"&&window.localStorage)return window.localStorage}catch{}return}function Fw(){let x=mx();if(!x)return[];try{let w=[];for(let $=0;$<x.length;$++){let y=x.key($);if(y)w.push(y)}return w}catch{return[]}}function Dw(x){let w=mx();if(!w)return null;try{return w.getItem(x)}catch{return null}}function Pw(){return Fw().some((x)=>x.indexOf(m.SPFXEXT)>-1&&Number(Dw(x))>0)}function z1(x){return x.hostname.toLowerCase()==="localhost"}function B1(x){try{let w=`${m.SPFXEXT}${x}`,$=mx(),y=$?$.getItem?$.getItem(w):$[w]:null;return Number(y)>0}catch{return!1}}var E=Pw();var K={AppFolderManifestCache:"AppFolderManifestCache",AppCollectionManifestCache:"AppCollectionManifestCache",AllowedApps:"AllowedApps",HubSiteData:"HubSiteData",SPFxExtensionConfig:"SPFxExtensionConfig"},Y1=`${m.SPFXEXT}COREDB`,Ax=Q1(Y1,1,{blocking(x,w,$){Ax.then((y)=>y.close()),alert("A new version of this page is ready. Please reload the page.")},async upgrade(x,w,$,y,_){if(w===0)x.createObjectStore(K.AppFolderManifestCache,{keyPath:"url"}),x.createObjectStore(K.AppCollectionManifestCache,{keyPath:"url"}),x.createObjectStore(K.AllowedApps,{keyPath:"Id"}),x.createObjectStore(K.HubSiteData,{keyPath:"SiteId"}),x.createObjectStore(K.SPFxExtensionConfig,{keyPath:"Title"})}});Ax.catch((x)=>{throw Z("Error opening database for Core, please contact your administrator."),Z1(Y1).then(()=>{window.location.reload()}),x});var F=await Ax;function f(x){let w="never";if(x!==1/0){let $=/*@__PURE__*/new Date;$.setMinutes($.getMinutes()+x),w=$.toISOString()}return{expires:w}}async function g(x,w){let $=await F.getAll(x),y=/*@__PURE__*/new Date,_=$.filter((Q)=>{if(Q.expires==="never")return!1;let B=new Date(Q.expires);return y>=B}),n=_.length;if(n>0){let Q=F.transaction(x,"readwrite"),B=Q.objectStore(x);_.forEach((V)=>B.delete(V[w])),await Q.done,k(`Evicted ${n} items from ${x} cache.`)}return n}async function ox(){return await g(K.SPFxExtensionConfig,"Title"),F.getAll(K.SPFxExtensionConfig)}async function d(x){return await g(K.SPFxExtensionConfig,"Title"),F.get(K.SPFxExtensionConfig,x)}async function L(x,w=60){await F.put(K.SPFxExtensionConfig,{...x,...f(w)})}async function j1(x,w){let $=F.transaction(K.SPFxExtensionConfig,"readwrite"),y=$.objectStore(K.SPFxExtensionConfig);return x.forEach((_)=>y.put({..._,...f(w)})),$.done}async function K1(){return F.getAll(K.AllowedApps)}async function dx(x){return F.get(K.AppFolderManifestCache,x)}async function Sx(x){return F.get(K.AppCollectionManifestCache,x)}async function J1(x){return F.get(K.HubSiteData,x)}async function W1(x,w=60){await F.put(K.HubSiteData,{...x,...f(w)})}async function Rw(x,w=60){await F.put(K.AppCollectionManifestCache,{...x,...f(w)})}async function Ow(x,w=60){await F.put(K.AppFolderManifestCache,{...x,...f(w)})}async function q1(x,w=5){let $=f(w),y=F.transaction(K.AllowedApps,"readwrite"),_=y.objectStore(K.AllowedApps);return x.forEach((n)=>_.put({...$,...n})),y.done}async function Gw(x){return F.delete(K.AppCollectionManifestCache,x)}async function Xw(x){return F.delete(K.AppFolderManifestCache,x)}async function Ew(){return g(K.AppCollectionManifestCache,"url")}async function Lw(){return g(K.AppFolderManifestCache,"url")}async function H1(){return g(K.AllowedApps,"Id")}async function b1(){return g(K.HubSiteData,"SiteId")}async function l(x){if(x){let w=await dx(x.url);if(w){if(w.hash!==x.hash){await Xw(x.url);let $=x.url.toLowerCase().replace(`/${G}`,"");await a([$],!1),k(`Evicted ${G} ${w.url} from cache. Because of hash mismatch.`)}}}return Lw()}async function r(x){if(x){let w=await Sx(x.url);if(w){if(w.hash!==x.hash)await Gw(x.url),await a([x.url],!1),k(`Evicted ${D} ${w.url} from cache. Because of hash mismatch.`)}}return Ew()}async function k1(x){if(await l(),E)return;return dx(x)}async function F1(x,w){await l(x);let $=await dx(x.url);if($&&$.hash===x.hash&&!E)return;await Ow(x,w)}async function D1(x,w){await r(x);let $=await Sx(x.url);if($&&$.hash===x.hash&&!E)return;await Rw(x,w)}async function P1(x){if(await r(),E)return;return Sx(x)}var hx=/*@__PURE__*/new Map;async function R1(x,w=!1){let $="";if(hx.has(x)&&!w)$=hx.get(x)||"";if($)return $;let y=await fetch(`${x}/_api/contextinfo`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json"}});if(y.status===200){let n=(await y.json()).d.GetContextWebInformation.FormDigestValue;return hx.set(x,n),n}else Z("Error while getting digest",y.status);return""}var Mx=(x)=>{},e;async function xx(x=""){if(e)return e;e=new Promise((w)=>{Mx=w});try{let y=(await(await fetch(`${x}/_api/SP_TenantSettings_Current`,{headers:{Accept:"application/json;odata=verbose"}})).json()).d.CorporateCatalogUrl;Mx(y)}catch(w){Z("Error while getting app catalog url. Trying default /sites/appcatalog",w);let $=`${window.location.origin}/sites/appcatalog`;Mx($)}return e}async function O1(x=""){let w=await d("AppCatalogUrl");if(w?.Data)return w.Data;let $=await xx(x);return await L({Title:"AppCatalogUrl",Data:$},240),$}async function R(x=""){let $=`${await O1()}${x?`/${x}`:""}`;return R1($)}var mw=await O1(),W=`${mw}/${H}`;var X1={RootCDNLocation:"RootCDNLocation",InterceptHistory:"InterceptHistory",EnableAppWhiteList:"EnableAppWhiteList",AppCatalogUrl:"AppCatalogUrl",SPFxDataSite:"SPFxDataSite",ConfiguratorPageData:"ConfiguratorPageData",AppWhiteList:"AppWhiteList",Version:"2025-11-15T13:20:18.050Z"},G1=[{Title:"InterceptHistory",Data:"true"},{Title:"EnableAppWhiteList",Data:"false"},{Title:"RootCDNLocation",Data:`/sites/appcatalog/${H}`}];function E1(x){let w=G1.find(($)=>$.Title==="RootCDNLocation");if(w)w.Data=x;return G1}var Aw=Object.keys(X1).length,wx;async function ow(){let x=`${W}/_api/web/lists/GetByTitle('${h}')/fields`;try{let w=await fetch(x,{headers:{Accept:"application/json;odata=verbose"}});if(w.status===200){let y=(await w.json()).d.results,_=y.map((Q)=>Q.InternalName),n=y.find((Q)=>Q.InternalName==="Title");if(!n){Z("Title field not found.");return}if(!n.EnforceUniqueValues){let Q=await R(H);if((await fetch(`${W}/_api/web/lists/GetByTitle('${h}')/fields('${n.Id}')`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":Q,"X-HTTP-Method":"MERGE","If-Match":"*"},body:JSON.stringify({__metadata:{type:"SP.Field"},Indexed:!0,EnforceUniqueValues:!0})})).status===204)j("Title field updated successfully.");else Z("Unable to update Title field.")}if(!_.includes("Data")){let Q=await R(H);if((await fetch(x,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":Q},body:JSON.stringify({__metadata:{type:"SP.Field"},Title:"Data",FieldTypeKind:2,Required:!0})})).status===201)j("Data field added successfully.");else Z("Unable to add Data field.")}}}catch(w){Z("Error while ensuring configuration list data fields.",w)}}async function dw(){let x=!1;try{if(x=(await fetch(`${W}/_api/web/lists/GetByTitle('${h}')`)).status===404,x){let $=await R(H);if(j("Creating configuration list."),(await fetch(`${W}/_api/web/lists`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":$},body:JSON.stringify({__metadata:{type:"SP.List"},BaseTemplate:100,Title:"SPFxExtensionsConfiguration",Description:"Configuration list for SPFxExtensions"})})).status===201)j("Configuration list created successfully.");else Z("Unable to create configuration list.")}await ow()}catch(w){Z("Error while ensuring configuration list.",w)}return x}async function L1(){let x=`${W}/_api/web/lists/GetByTitle('${h}')/items?$select=Title,Data`,$=await fetch(x,{...{headers:{Accept:"application/json;odata=verbose"}}});if($.status!==200)return Z("Unable to fetch configuration list items."),[];return(await $.json()).d.results}async function Sw(){let x=await R(H);for(let w of E1(W))if((await fetch(`${W}/_api/web/lists/GetByTitle('${h}')/items`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":x},body:JSON.stringify({__metadata:{type:"SP.Data.SPFxExtensionsConfigurationListItem"},...w})})).status===201)j(`Item ${w.Title} added successfully.`);else Z(`Unable to add item ${w.Title}.`)}function m1(x=!1){if(x)return L1();if(wx)return wx;return wx=hw(),wx}async function hw(){let x=await ox();if(x.length<Aw){if(await dw())await Sw();let $=await L1();await j1($,240),x=await ox()}return x}async function Mw(x){let w=await xx(),$=await R(),y=await fetch(`${w}/_api/web/webs/add`,{method:"POST",headers:{Accept:"application/json;odata=nometadata","Content-Type":"application/json","X-RequestDigest":$},body:JSON.stringify({parameters:{Description:"Site that stores SPFxExtensions Data and global apps",Language:1033,Title:"SPFxExtensions Data",Url:x,UseSamePermissionsAsParentSite:!0,WebTemplate:"STS"}})});if(!y.ok)throw Error(`Failed to create SPFxExtensionsData web in ${w}`);return await y.json()}async function vw(){let x=await xx(),w=await R(),$=await fetch(`${x}/${H}/_api/web`,{method:"GET",headers:{Accept:"application/json;odata=nometadata","X-RequestDigest":w}});if(!$.ok){if($.status===404)return{data:void 0,isError:!1,error:"",warnings:[`SPFxExtensionsData web not found in ${x}`]};return Z(`Failed to fetch data from ${x}/${H}/_api/web`),{data:void 0,isError:!0,error:`Failed to fetch data from ${x}/${H}/_api/web`,warnings:[]}}return{data:await $.json(),isError:!1,error:"",warnings:[]}}async function Cw(){return(await d("SPFxDataSite"))?.Data}var $x;function A1(){if($x)return $x;return $x=Uw(),$x}async function Uw(){let x=await Cw();if(!x){let w=await vw();if(!w.isError&&!w.data){let $=await Mw(H);w.data=$}return await L({Title:"SPFxDataSite",Data:w.data},240),w.data}return x}var vx="f3ab710f-2c08-422e-a7ad-5d93eb51e7a3",yx={accept:"application/json"},fw={"Content-Type":"application/json"};async function gw(){let w={"X-RequestDigest":await R(H)};return(await(await fetch(`${W}/_api/sitepages/pages`,{headers:{...yx,...w,...fw},body:JSON.stringify({PageLayoutType:"SingleWebPartAppPage",PromotedState:0}),method:"POST"})).json()).Id}async function Cx(){let x=await fetch(`${W}/_api/sitepages/pages/GetByUrl('${T}')`,{headers:{...yx},method:"GET"});if(x.status===404)return;return await x.json()}var Nw=[{dataVersion:"1.4",description:"Title Region Description",id:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",instanceId:"cbe7b0a9-3504-44dd-a3a3-0e5cacd07788",properties:{authorByline:[],authors:[],layoutType:"FullWidthImage",showPublishDate:!1,showTopicHeader:!1,textAlignment:"Left",title:"SPFx Extensions Configurator",topicHeader:"",enableGradientEffect:!0},reservedHeight:280,serverProcessedContent:{htmlStrings:{},searchablePlainTexts:{},imageSources:{},links:{}},title:"Title area"}],uw=[{addedFromPersistedData:!1,controlType:3,displayMode:2,emphasis:{},id:vx,position:{controlIndex:1,layoutIndex:1,sectionFactor:12,sectionIndex:1,zoneIndex:1},reservedHeight:500,reservedWidth:500,webPartData:{dataVersion:"1.0",description:"Allows you to add a custom developed app",id:Jx,instanceId:vx,properties:{description:"Select an app to load from the dropdown below",selectedApp:A,SPFxExtensionAppConfiguration:void 0},title:"SPFx Extension Loader"},webPartId:Jx},{controlType:0,pageSettingsSlice:{isDefaultDescription:!0,isDefaultThumbnail:!0}}],Iw={CanvasContent1:`${JSON.stringify(uw)}`,LayoutWebpartsContent:`${JSON.stringify(Nw)}`,Title:ix};async function o1(x){let $={"X-RequestDigest":await R(H)};await fetch(`${W}/_api/sitepages/pages(${x})/savepage`,{headers:{"Content-Type":"application/json",...yx,...$},body:JSON.stringify(Iw),method:"POST"}),await fetch(`${W}/_api/sitepages/pages(${x})/publish`,{headers:{...yx,...$},method:"POST"})}async function Tw(){let x=await gw();return await o1(x),Cx()}async function tw(){let x=await d("ConfiguratorPageData");if(x?.Data)return x.Data;let w=await Cx();if(w)await L({Title:"ConfiguratorPageData",Data:w},480);return w}async function d1(){let x=await tw();if(!x)return Tw();if(x.CanvasContent1.indexOf(vx)===-1){await o1(x.Id);let w=await Cx();return await L({Title:"ConfiguratorPageData",Data:w},480),w}return x}async function cw(){let x=`${W}/_api/web/lists/GetByTitle('${M}')/fields`;try{let w=await fetch(x,{headers:{Accept:"application/json;odata=verbose"}});if(w.status===200){if(!(await w.json()).d.results.map((n)=>n.InternalName).some((n)=>n==="EntryPointUrl"))await pw(x,"EntryPointUrl","Full URL to the Entrypoint JS file, if * is specified all entries will be allowed.",!0)}}catch(w){Z("Error while ensuring list fields.",w)}}async function pw(x,w,$,y){let _=await R(H);if((await fetch(x,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":_},body:JSON.stringify({__metadata:{type:"SP.Field"},Title:w,FieldTypeKind:3,Required:y,Description:$})})).status===201)j(w,"field added successfully.");else Z(w,"Unable to add field.")}async function iw(){try{let x=await fetch(`${W}/_api/web/lists/GetByTitle('${M}')?$select=*`,{method:"GET",headers:{Accept:"application/json;odata=verbose"}});if(x.status===404){j("Creating app white list.");let $=await R(H),y=await fetch(`${W}/_api/web/lists`,{method:"POST",headers:{Accept:"application/json;odata=verbose","Content-Type":"application/json;odata=verbose","X-RequestDigest":$},body:JSON.stringify({__metadata:{type:"SP.List"},BaseTemplate:100,Title:M,Description:"App whitelist for SPFxExtensions"})});if(y.status===201)return j("App whitelist created successfully."),y.json();else{Z("Unable to create app whitelist.");return}}return await cw(),x.json()}catch(x){Z("Error while ensuring app whitelist.",x)}return}async function S1(){let x=await d("AppWhiteList");if(x?.Data)return x.Data;let w=await iw();if(w)await L({Title:"AppWhiteList",Data:w},480);return w}var _x;async function Ux(){if(_x)return _x;return _x=sw(),_x}async function sw(){await A1(),await S1(),await d1(),window.__SPFxExtensions.Utils.ConfiguratorPageUrl=`${W}/${T}`}async function S(x=!1){return await Ux(),m1(x)}async function h1(){return`${`${(await S()).find((y)=>y.Title==="RootCDNLocation")?.Data??`${W}`}${v}`}${D}`}async function M1(){let x=await S(),w=[px];if(x.find(($)=>$.Title==="Version")?.Data!=="2025-11-15T13:20:18.050Z")await L({Title:"Version",Data:"2025-11-15T13:20:18.050Z"},1/0),await a(w,!0)}async function a(x,w){let $=await window.caches.keys(),y=!1;for(let _ of $){let n=await window.caches.open(_),Q=await n.keys(),B=[];for(let V of Q){let Y=V.url.toLowerCase();if(x.some((P)=>Y.indexOf(P.toLowerCase())>-1))j("Deleting cache key",V,"from",_),y=!0,B.push(n.delete(V,{ignoreMethod:!0,ignoreSearch:!0,ignoreVary:!0}))}await Promise.allSettled(B)}if(y&&w)window.location.reload()}function f4(){return U(`${Date.now()}`,13)}var lw=rw();async function rw(){try{let x=await H1(),w=await K1();if(w.length>0&&!x)return w;if(w.length>0)j("Cache mismatch, loading allowed apps data...");let $=await v1();return await q1($,5),$}catch(x){return Z("Unable to load allowed apps data...",x),[]}}async function v1(x=!1){if((await S(x)).find((y)=>y.Title==="EnableAppWhiteList")?.Data!=="true")return[{Id:1,Title:"All apps allowed",EntryPointUrl:"*",date:(/*@__PURE__*/new Date()).toISOString(),expires:(/*@__PURE__*/new Date()).toISOString()}];return aw()}async function aw(){let x=`${W}/_api/web/lists/getByTitle('${M}')/Items?$select=Id,Title,EntryPointUrl&$top=1000`;return await ew(x)}async function ew(x){let w=x,$=[];while(w){let _=await(await fetch(w,{method:"GET",headers:{Accept:"application/json;odata=verbose"}})).json();if(_.error)throw Error(JSON.stringify(_.error));$.push(..._.d.results),w=_.d.__next}return $}function x9(x,w){if(w.some((_)=>_.EntryPointUrl==="*"))return!0;let y=(x.origin+x.pathname).toLowerCase();return w.some((_)=>{try{let n=new URL(_.EntryPointUrl),Q=n.origin+n.pathname;return y===Q.toLowerCase()}catch(n){return Z("Error while parsing allowed entry URL",_.EntryPointUrl,n),!1}})}async function C1(x,w,$=!1){if(z1(x))return!0;let y=$?await v1($):await lw;if(!x9(x,y))return k("File",x,`is not allowed to be executed. Please add it to whitelist @ ${W}.`),k(`If you are a developer you can enable this app by adding window.localStorage item ${m.SPFXEXT}${w} with a number value corresponding to development port of the localhost server.`),!1;return!0}function U1(){return window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.web.id.toString():Fx(window.__SPFxExtensions.__CurrentContext.context.webId)}function fx(){return(window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.web.absoluteUrl:window.__SPFxExtensions.__CurrentContext.context.webAbsoluteUrl).replace(/\/$/,"")}function nx(){return window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.site.id.toString():Fx(window.__SPFxExtensions.__CurrentContext.context.siteId)}function gx(){return window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.site.absoluteUrl:window.__SPFxExtensions.__CurrentContext.context.siteAbsoluteUrl}function Qx(){return(window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.legacyPageContext.hubSiteId?.toString():window.__SPFxExtensions.__CurrentContext.context.hubSiteId)??t}function f1(){return window.__SPFxExtensions.__CurrentContext.contextType==="SPOModernContext"?window.__SPFxExtensions.__CurrentContext.context.legacyPageContext.isHubSite:window.__SPFxExtensions.__CurrentContext.context.isHubSite}function w9(x){if(!Array.isArray(x.enabledAppCollections))throw`${X} ${D} enabledAppCollections should be an array`;if(!Array.isArray(x.urlMap))throw`${X} ${D} urlMap should be an array`}async function Zx(x,w,$,y,_=!1,n=60){let Q=Hx,B=x.toLowerCase();if(!_&&!E){let q=await P1(B);if(q)return q.isHubFetch=y,q}let V=`${B}?v=${Date.now()}`;try{J(`Fetching ${D} from`,V);let N=await(await fetch(V)).text();Q=JSON.parse(N)}catch(q){k(`Unable to fetch ${D} from`,V,q)}try{w9(Q)}catch(q){Z(`Error while parsing ${D} from`,V,q),Q=Hx}let Y=await U(JSON.stringify(Q)),O={manifest:Q,...{name:w,url:B,type:$,hash:Y}};return await D1(O,E?1:n),O.isHubFetch=y,O}async function Vx(x,w,$,y=!1){let _=[],n=await h1();_.push(Zx(n,"apps","root",!0,y));let Q=x+v;if(_.push(Zx(`${Q}${D}`,"apps","site",!1,y)),$){let q=$+v;_.push(Zx(`${q}${D}`,"apps","site",!0,y))}let V=`${w+v}${D}`,Y=x.toLowerCase()===w.toLowerCase(),P=V.toLowerCase()===n.toLowerCase();if(!Y&&!P)_.push(Zx(V,"apps","web",!1,y));return await Promise.all(_)}function g1(x){if(!x.appDefinitionMap)x.appDefinitionMap=[];if(!x.appRelativeEntryPointUrls)x.appRelativeEntryPointUrls=[];if(!x.manualEntries)x.manualEntries=[];return x}function $9(x){if(Array.isArray(x)||typeof x!=="object")throw`${X} App manifest has to be an object.`;if(!x.appRelativeEntryPointUrls)throw Z("Manifest does not have appRelativeEntryPointUrl property.",x),`${X} Manifest does not have appRelativeEntryPointUrl property.`;if(!x.appDefinitionMap)throw Z("Manifest does not have enabledApps property.",x),`${X} Manifest does not have enabledApps property.`}async function y9(x,w,$,y,_=!1,n=60){let Q={...qx},B=x.toLowerCase();if(!_&&!E){let q=await k1(B);if(q)return q.isHubFetch=y,q}let V=`${B}?v=${Date.now()}`;try{J(`Fetching ${G} from`,V);let N=await(await fetch(V)).text();Q=JSON.parse(N),g1(Q)}catch(q){k(`Unable to fetch ${G} from`,V,q)}try{$9(Q)}catch(q){Z(`Error while parsing ${G} from`,V,q),Q={...qx}}let Y=await U(JSON.stringify(Q)),O={manifest:Q,...{name:w,url:B,type:$,hash:Y}};return await F1(O,E?1:n),O.isHubFetch=y,O}function _9(x,w){let $=`${x}${w}/${G}`,y=`${m.SPFXEXT}${w}`,_=Number(window.localStorage.getItem(y));if(_>0){let n=`https://localhost:${_}/${G}`;return j(`<${w}> App is in debug mode, loading from`,n),n}return $}function Nx(x,w=!1){if(x.length===0)return[];let $=[];for(let y of x){let _=y.url.toLowerCase().replace(D.toLowerCase(),"");for(let n of y.manifest.enabledAppCollections){let Q=_9(_,n);$.push(y9(Q,n,y.type,y.isHubFetch??!1,w))}}return $}function zx(x,w=!1){let $=x.filter((Y)=>Y.type==="root"),y=Nx($,w),_=x.filter((Y)=>Y.type==="site"),n=Nx(_,w),Q=x.filter((Y)=>Y.type==="web"),B=Nx(Q,w);return[...y,...n,...B]}var Ix=!1,Bx=[];async function n9(x,w,$){let y=$.appDefinitionMap.find((n)=>n.appId===w);if(!y){let n=`Could not find app configuration item for Manual app ${w}`;return Z(n),[]}if(!u1(y))return j(`App ${w} is not enabled in current context. Skipping...`),[];try{k("Manual module detected. Make sure to call window.__SPFxExtensions.RegisterApp and window.__SPFxExtensions.InstantiateApp in code.",x),await import(x)}catch(n){let Q=`Error while importing or executing ${x} ${n}`;Z(Q)}return[]}async function Q9(x,w){try{let y=(await import(x)).default;if(!y)return Z(`No default export found in ${x}, only ESM modules are supported.`),[];return z9(y,w,x)}catch($){return Z("Error while importing or executing",x,$),[]}}async function N1(x,w,$,y,_){let n=x.replace(/\.\.\/?/g,"./").replace(/^\.\//,""),Q=`${w}${n}`.toLowerCase();J("EntryPoint JS: ",Q);let B=new URL(Q);if($)B.searchParams.set("v",`${$}`);if(!await C1(B,y.name))return;let Y=`${B.origin}${B.pathname}`,P=`${B}`;if(Bx.includes(Y)){j("EntryPoint already loaded:",P);return}return Bx.push(Y),()=>{if(_)return n9(P,_,y.manifest);return Q9(P,y.manifest)}}async function ux(x){let w=[],$=x.url.replace(G,"");J("Parsing",x.type,"manifest:",x.manifest);let y="";if(x.manifest.cacheString&&x.manifest.enableCaching)y=B1(x.name)?`${(/*@__PURE__*/new Date()).getTime()}`:x.manifest.cacheString;for(let _ of x.manifest.appRelativeEntryPointUrls){let n=await N1(_,$,y,x);if(n)w.push(n())}for(let _ of x.manifest.manualEntries){let n=await N1(_.entryPoint,$,y,x,_.appId);if(n)w.push(n())}return w}async function Tx(x,w,$,y,_=!1){if(_)Z9(y);if(Ix)return;Ix=!0;let n=await Vx(x,w,$),Q=zx(n);window.__SPFxExtensions.Utils.appManifestPromises=Q,window.__SPFxExtensions.Utils.spAppInitializationPromiseResolver();let V=(await Promise.allSettled(Q)).filter((b)=>b.status==="fulfilled"),Y=[],P=V.filter((b)=>b.value.type==="root"),O=V.filter((b)=>b.value.type==="site"),q=V.filter((b)=>b.value.type==="web");for(let b of P){let u=await ux(b.value);Y.push(...u)}J("Root apps loaded.");for(let b of O){let u=await ux(b.value);Y.push(...u)}J("Site apps loaded.");for(let b of q){let u=await ux(b.value);Y.push(...u)}J("SiteWeb apps loaded.");let N=(await Promise.allSettled(Y)).filter((b)=>b.status==="fulfilled").flatMap((b)=>b.value);await V9(N),window.__SPFxExtensions.AllAppAssetsLoadedResolver(),j("SPFx Extensions Core Components Loaded.")}function Z9(x){Ix=!1,Bx.splice(0,Bx.length),rx(x);let{promise:w,resolve:$}=Promise.withResolvers();window.__SPFxExtensions.AllAppAssetsLoadedPromise=w,window.__SPFxExtensions.AllAppAssetsLoadedResolver=$}async function V9(x){let w=[];for(let $ of window.__SPFxExtensions.Apps)if(!x.find((_)=>_.id===$.id)&&!$.isManual&&$.id!==A)w.push($.id);for(let $ of w){let y=await window.__SPFxExtensions.UnregisterApp($);if(y)k(`Unregistered App ${y.id} (${y.name}) as it does not belong in this context`)}}async function z9(x,w,$){if(!Array.isArray(x))Z("Default export of entry point should be an array of App definitions. TODO: add documentation url",$);let y=[];for(let _ of x){if(!_.id){Z("App definition does not have an id. Make sure that returned array is in proper format. TODO: add documentation url",$,_);continue}let n=w.appDefinitionMap.find((Y)=>Y.appId.toLowerCase()===_.id.toLowerCase()),Q=`App with id ${_.id} (${_.name}) is not enabled for current web. Skipping...`;if(!n){j(Q);continue}if(!u1(n)){j(Q);continue}let V=await window.__SPFxExtensions.RegisterApp(_);if(y.push(_),!_.isWebPartApp&&_.autoExecute){if(V.instances.length<(_.maxInstances??1/0))window.__SPFxExtensions.InstantiateApp(_.id,{})}}return y}function u1(x){let w=U1().toLowerCase(),$=nx().toLowerCase(),y=Qx().toLowerCase(),_=x.config.enabledEverywhere,n=x.config.excludedIds.indexOf(w)===-1&&x.config.excludedIds.indexOf($)===-1&&x.config.excludedHubIds.indexOf(y)===-1,Q=x.config.includedIds.indexOf(w)!==-1||x.config.includedIds.indexOf($)!==-1||x.config.includedHubIds.indexOf(y)!==-1;return _?n:Q}var I1=!1;function t1(){if(window.moduleLoaderPromise&&!I1)I1=!0,window.moduleLoaderPromise.then((x)=>{let w=x.context.pageContext.initialize;x.context.pageContext.initialize=function($,y){let _=x.context.pageContext._initializationData;w.call(this,$,y);let n={initializationData:$,legacyContext:y};if(_.web.id===$.web.id){T1("contextRefresh",n);return}T1("contextChange",n)}})}function T1(x,w){let $=new CustomEvent(x,{detail:w});window.dispatchEvent($),window.__SPFxExtensions.Apps.forEach((y)=>{y.instances.forEach((_)=>{_.executeListeners(x,w)})})}function B9(x){let w=window.__SPFxExtensions.AppEventListeners.findIndex(($)=>$.key===x.key);if(w>-1)J("Removing event listener",x),window.__SPFxExtensions.AppEventListeners.splice(w,1)}function c1(){if(!window.__SPFxExtensions.AppEventListeners)window.__SPFxExtensions.AppEventListeners=[];if(!window.__SPFxExtensions.AddAppEventListener)window.__SPFxExtensions.AddAppEventListener=(x,w)=>{let $={key:window.crypto.randomUUID(),eventName:x,handler:w};return window.__SPFxExtensions.AppEventListeners.push($),()=>{B9($)}};if(!window.__SPFxExtensions.RemoveAppEventListener)window.__SPFxExtensions.RemoveAppEventListener=(x)=>{let w=window.__SPFxExtensions.AppEventListeners.findIndex(($)=>$.key===x.key);if(w>-1)window.__SPFxExtensions.AppEventListeners.splice(w,1)}}var Y9=window.history.pushState,j9=window.history.replaceState,K9=window.history.back,J9=window.history.forward,W9=window.history.go;function q9(){let x=window.history.state,w=window.location.href;return{currentState:x,previousUrl:w}}function I(x,w){let $={...q9(),...w},y=new CustomEvent(x,{detail:$});window.dispatchEvent(y)}function H9(){function x(w,$,y){Y9.call(this,w,$,y),I("historyPush",{newState:w,newUrl:y})}window.history.pushState=x}function b9(){function x(w,$,y){j9.call(this,w,$,y),I("historyReplace",{newState:w,newUrl:y})}window.history.replaceState=x}function k9(){function x(){K9.call(this),I("historyBack",{})}window.history.back=x}function F9(){function x(){J9.call(this),I("historyForward",{})}window.history.forward=x}function D9(){function x(w){W9.call(this,w),I("historyGo",{delta:w})}window.history.go=x}var p1=!1;function i1(){if(p1)return;p1=!0,b9(),H9(),F9(),k9(),D9()}async function tx(){if(f1())return"";let w=Qx(),$=nx();if(!w||w===t||w===$)return"";await b1();let y=await J1(w);if(!y){j("Getting Hub data for HubSiteId:",w);try{let n=await(await fetch(`/_api/hubsites/GetById?hubSiteId='${w}'`,{headers:{accept:"application/json;odata=nometadata"}})).json();return await W1(n),n.SiteUrl}catch(_){return Z("Error fetching hub site data.",_),""}}return y.SiteUrl}var s1="CORE_MANIFEST_CHECK",r1=Number(window.localStorage.getItem(m.SPFXEXT_CORE))>0?1e4:90000,Yx=0;function cx(x,w,$,y=!1){if(y)window.clearInterval(Yx),Yx=0;if(Yx>0)return;Yx=window.setInterval(l1,r1,x,w,$),l1(x,w,$)}async function l1(x,w,$){try{let _=window.localStorage.getItem(s1);if(_){let B=new Date(_),Y=(/*@__PURE__*/new Date()).getTime()-B.getTime(),P=r1;if(Y<P){J("Manifest check already performed recently, skipping.",`${Y} < ${P}`);return}}j("Checking for manifest updates across all locations..."),await Promise.all([r(),l()]);let n=await Vx(x,w,$,!0),Q=zx(n,!0);await Promise.allSettled(Q)}catch(_){Z("Error checking for manifest updates",_)}let y=(/*@__PURE__*/new Date()).toISOString();J("Setting next manifest check to",y),window.localStorage.setItem(s1,y)}var jx;async function P9(){if(jx)return jx;return jx=O9(),jx}async function R9(){window.__SPFxExtensions.__CurrentContext=await sx()}async function O9(){if(await Ux(),(await S()).find((_)=>_.Title==="InterceptHistory")?.Data==="true")i1();t1(),c1(),ax(),ex();let{promise:$,resolve:y}=Promise.withResolvers();if(!window.__SPFxExtensions.AllAppAssetsLoadedPromise)window.__SPFxExtensions.AllAppAssetsLoadedPromise=$,window.__SPFxExtensions.AllAppAssetsLoadedResolver=y}async function a1(){await M1(),await P9(),await R9(),window.__SPFxExtensions.__CorePromiseResolver();let x=gx(),w=fx(),$=await tx();await Tx(x,w,$,p()),window.addEventListener("contextChange",async(y)=>{j("Context changed, reloading apps...");let _=y.detail?.initializationData?.site?.absoluteUrl||gx(),n=y.detail?.initializationData?.web?.absoluteUrl||fx(),Q=await tx(),B=lx();await Tx(_,n,Q,B,!0),cx(_,n,Q,!0)}),cx(x,w,$),j("SPFx Extensions Core Has Been initialized.")}var G9={id:A,description:"Allows configuring custom apps",isWebPartApp:!1,hideAppSelectorWhenAppLoaded:!0,hideConfiguratorButton:!0,name:"SPFx Extensions Configurator",async onInstanceRequested(x){let w=import.meta.url.indexOf("localhost")>-1;if(w)J("Core is in debug mode");let $=w?import.meta.resolve(`./__spfxCoreConfigurator.js?v=${Date.now()}`):window.__SPFxExtensions.__ConfiguratorUrl;try{return(await import($)).launch(x)}catch(y){if(Z("Error launching configurator app",y),x.domElement)x.domElement.innerHTML=`<div style="text-align: center; padding: 20px; color: red;">Error launching configurator app. ${y}</div>`;return()=>{}}}},X9="2025-11-15T13:20:18.050Z";j("Initializing SPFxExtensions Core Built:",X9);await a1();try{await window.__SPFxExtensions.RegisterApp(G9)}catch(x){Z("Error registering configurator app",x)}
|