@apvee/spfx-react-toolkit 1.0.0

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.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2012 -0
  3. package/lib/core/atoms.internal.d.ts +53 -0
  4. package/lib/core/atoms.internal.d.ts.map +1 -0
  5. package/lib/core/atoms.internal.js +35 -0
  6. package/lib/core/atoms.internal.js.map +1 -0
  7. package/lib/core/context.internal.d.ts +23 -0
  8. package/lib/core/context.internal.d.ts.map +1 -0
  9. package/lib/core/context.internal.js +34 -0
  10. package/lib/core/context.internal.js.map +1 -0
  11. package/lib/core/index.d.ts +6 -0
  12. package/lib/core/index.d.ts.map +1 -0
  13. package/lib/core/index.js +6 -0
  14. package/lib/core/index.js.map +1 -0
  15. package/lib/core/provider-application-customizer.d.ts +57 -0
  16. package/lib/core/provider-application-customizer.d.ts.map +1 -0
  17. package/lib/core/provider-application-customizer.js +45 -0
  18. package/lib/core/provider-application-customizer.js.map +1 -0
  19. package/lib/core/provider-base.internal.d.ts +20 -0
  20. package/lib/core/provider-base.internal.d.ts.map +1 -0
  21. package/lib/core/provider-base.internal.js +126 -0
  22. package/lib/core/provider-base.internal.js.map +1 -0
  23. package/lib/core/provider-field-customizer.d.ts +58 -0
  24. package/lib/core/provider-field-customizer.d.ts.map +1 -0
  25. package/lib/core/provider-field-customizer.js +46 -0
  26. package/lib/core/provider-field-customizer.js.map +1 -0
  27. package/lib/core/provider-listview-commandset.d.ts +60 -0
  28. package/lib/core/provider-listview-commandset.d.ts.map +1 -0
  29. package/lib/core/provider-listview-commandset.js +48 -0
  30. package/lib/core/provider-listview-commandset.js.map +1 -0
  31. package/lib/core/provider-webpart.d.ts +48 -0
  32. package/lib/core/provider-webpart.d.ts.map +1 -0
  33. package/lib/core/provider-webpart.js +36 -0
  34. package/lib/core/provider-webpart.js.map +1 -0
  35. package/lib/core/types.d.ts +84 -0
  36. package/lib/core/types.d.ts.map +1 -0
  37. package/lib/core/types.js +4 -0
  38. package/lib/core/types.js.map +1 -0
  39. package/lib/hooks/index.d.ts +34 -0
  40. package/lib/hooks/index.d.ts.map +1 -0
  41. package/lib/hooks/index.js +34 -0
  42. package/lib/hooks/index.js.map +1 -0
  43. package/lib/hooks/useSPFxAadHttpClient.d.ts +231 -0
  44. package/lib/hooks/useSPFxAadHttpClient.d.ts.map +1 -0
  45. package/lib/hooks/useSPFxAadHttpClient.js +299 -0
  46. package/lib/hooks/useSPFxAadHttpClient.js.map +1 -0
  47. package/lib/hooks/useSPFxContainerInfo.d.ts +41 -0
  48. package/lib/hooks/useSPFxContainerInfo.d.ts.map +1 -0
  49. package/lib/hooks/useSPFxContainerInfo.js +47 -0
  50. package/lib/hooks/useSPFxContainerInfo.js.map +1 -0
  51. package/lib/hooks/useSPFxContainerSize.d.ts +119 -0
  52. package/lib/hooks/useSPFxContainerSize.d.ts.map +1 -0
  53. package/lib/hooks/useSPFxContainerSize.js +150 -0
  54. package/lib/hooks/useSPFxContainerSize.js.map +1 -0
  55. package/lib/hooks/useSPFxContext.d.ts +14 -0
  56. package/lib/hooks/useSPFxContext.d.ts.map +1 -0
  57. package/lib/hooks/useSPFxContext.js +16 -0
  58. package/lib/hooks/useSPFxContext.js.map +1 -0
  59. package/lib/hooks/useSPFxCorrelationInfo.d.ts +51 -0
  60. package/lib/hooks/useSPFxCorrelationInfo.d.ts.map +1 -0
  61. package/lib/hooks/useSPFxCorrelationInfo.js +58 -0
  62. package/lib/hooks/useSPFxCorrelationInfo.js.map +1 -0
  63. package/lib/hooks/useSPFxCrossSitePermissions.d.ts +81 -0
  64. package/lib/hooks/useSPFxCrossSitePermissions.d.ts.map +1 -0
  65. package/lib/hooks/useSPFxCrossSitePermissions.js +132 -0
  66. package/lib/hooks/useSPFxCrossSitePermissions.js.map +1 -0
  67. package/lib/hooks/useSPFxDisplayMode.d.ts +61 -0
  68. package/lib/hooks/useSPFxDisplayMode.d.ts.map +1 -0
  69. package/lib/hooks/useSPFxDisplayMode.js +69 -0
  70. package/lib/hooks/useSPFxDisplayMode.js.map +1 -0
  71. package/lib/hooks/useSPFxEnvironmentInfo.d.ts +63 -0
  72. package/lib/hooks/useSPFxEnvironmentInfo.d.ts.map +1 -0
  73. package/lib/hooks/useSPFxEnvironmentInfo.js +91 -0
  74. package/lib/hooks/useSPFxEnvironmentInfo.js.map +1 -0
  75. package/lib/hooks/useSPFxFluent9ThemeInfo.d.ts +105 -0
  76. package/lib/hooks/useSPFxFluent9ThemeInfo.d.ts.map +1 -0
  77. package/lib/hooks/useSPFxFluent9ThemeInfo.js +136 -0
  78. package/lib/hooks/useSPFxFluent9ThemeInfo.js.map +1 -0
  79. package/lib/hooks/useSPFxHubSiteInfo.d.ts +80 -0
  80. package/lib/hooks/useSPFxHubSiteInfo.d.ts.map +1 -0
  81. package/lib/hooks/useSPFxHubSiteInfo.js +127 -0
  82. package/lib/hooks/useSPFxHubSiteInfo.js.map +1 -0
  83. package/lib/hooks/useSPFxInstanceInfo.d.ts +41 -0
  84. package/lib/hooks/useSPFxInstanceInfo.d.ts.map +1 -0
  85. package/lib/hooks/useSPFxInstanceInfo.js +40 -0
  86. package/lib/hooks/useSPFxInstanceInfo.js.map +1 -0
  87. package/lib/hooks/useSPFxListInfo.d.ts +64 -0
  88. package/lib/hooks/useSPFxListInfo.d.ts.map +1 -0
  89. package/lib/hooks/useSPFxListInfo.js +70 -0
  90. package/lib/hooks/useSPFxListInfo.js.map +1 -0
  91. package/lib/hooks/useSPFxLocaleInfo.d.ts +123 -0
  92. package/lib/hooks/useSPFxLocaleInfo.d.ts.map +1 -0
  93. package/lib/hooks/useSPFxLocaleInfo.js +109 -0
  94. package/lib/hooks/useSPFxLocaleInfo.js.map +1 -0
  95. package/lib/hooks/useSPFxLogger.d.ts +108 -0
  96. package/lib/hooks/useSPFxLogger.d.ts.map +1 -0
  97. package/lib/hooks/useSPFxLogger.js +117 -0
  98. package/lib/hooks/useSPFxLogger.js.map +1 -0
  99. package/lib/hooks/useSPFxMSGraphClient.d.ts +200 -0
  100. package/lib/hooks/useSPFxMSGraphClient.d.ts.map +1 -0
  101. package/lib/hooks/useSPFxMSGraphClient.js +264 -0
  102. package/lib/hooks/useSPFxMSGraphClient.js.map +1 -0
  103. package/lib/hooks/useSPFxOneDriveAppData.d.ts +264 -0
  104. package/lib/hooks/useSPFxOneDriveAppData.d.ts.map +1 -0
  105. package/lib/hooks/useSPFxOneDriveAppData.js +395 -0
  106. package/lib/hooks/useSPFxOneDriveAppData.js.map +1 -0
  107. package/lib/hooks/useSPFxPageContext.d.ts +37 -0
  108. package/lib/hooks/useSPFxPageContext.d.ts.map +1 -0
  109. package/lib/hooks/useSPFxPageContext.js +49 -0
  110. package/lib/hooks/useSPFxPageContext.js.map +1 -0
  111. package/lib/hooks/useSPFxPageType.d.ts +82 -0
  112. package/lib/hooks/useSPFxPageType.d.ts.map +1 -0
  113. package/lib/hooks/useSPFxPageType.js +137 -0
  114. package/lib/hooks/useSPFxPageType.js.map +1 -0
  115. package/lib/hooks/useSPFxPerformance.d.ts +72 -0
  116. package/lib/hooks/useSPFxPerformance.d.ts.map +1 -0
  117. package/lib/hooks/useSPFxPerformance.js +167 -0
  118. package/lib/hooks/useSPFxPerformance.js.map +1 -0
  119. package/lib/hooks/useSPFxPermissions.d.ts +61 -0
  120. package/lib/hooks/useSPFxPermissions.d.ts.map +1 -0
  121. package/lib/hooks/useSPFxPermissions.js +73 -0
  122. package/lib/hooks/useSPFxPermissions.js.map +1 -0
  123. package/lib/hooks/useSPFxPnP.d.ts +539 -0
  124. package/lib/hooks/useSPFxPnP.d.ts.map +1 -0
  125. package/lib/hooks/useSPFxPnP.js +533 -0
  126. package/lib/hooks/useSPFxPnP.js.map +1 -0
  127. package/lib/hooks/useSPFxPnPContext.d.ts +290 -0
  128. package/lib/hooks/useSPFxPnPContext.d.ts.map +1 -0
  129. package/lib/hooks/useSPFxPnPContext.js +340 -0
  130. package/lib/hooks/useSPFxPnPContext.js.map +1 -0
  131. package/lib/hooks/useSPFxPnPList.d.ts +545 -0
  132. package/lib/hooks/useSPFxPnPList.d.ts.map +1 -0
  133. package/lib/hooks/useSPFxPnPList.js +906 -0
  134. package/lib/hooks/useSPFxPnPList.js.map +1 -0
  135. package/lib/hooks/useSPFxPnPSearch.d.ts +540 -0
  136. package/lib/hooks/useSPFxPnPSearch.d.ts.map +1 -0
  137. package/lib/hooks/useSPFxPnPSearch.js +672 -0
  138. package/lib/hooks/useSPFxPnPSearch.js.map +1 -0
  139. package/lib/hooks/useSPFxProperties.d.ts +80 -0
  140. package/lib/hooks/useSPFxProperties.d.ts.map +1 -0
  141. package/lib/hooks/useSPFxProperties.js +95 -0
  142. package/lib/hooks/useSPFxProperties.js.map +1 -0
  143. package/lib/hooks/useSPFxSPHttpClient.d.ts +218 -0
  144. package/lib/hooks/useSPFxSPHttpClient.d.ts.map +1 -0
  145. package/lib/hooks/useSPFxSPHttpClient.js +287 -0
  146. package/lib/hooks/useSPFxSPHttpClient.js.map +1 -0
  147. package/lib/hooks/useSPFxServiceScope.d.ts +107 -0
  148. package/lib/hooks/useSPFxServiceScope.d.ts.map +1 -0
  149. package/lib/hooks/useSPFxServiceScope.js +105 -0
  150. package/lib/hooks/useSPFxServiceScope.js.map +1 -0
  151. package/lib/hooks/useSPFxSiteInfo.d.ts +116 -0
  152. package/lib/hooks/useSPFxSiteInfo.d.ts.map +1 -0
  153. package/lib/hooks/useSPFxSiteInfo.js +109 -0
  154. package/lib/hooks/useSPFxSiteInfo.js.map +1 -0
  155. package/lib/hooks/useSPFxStorage.d.ts +81 -0
  156. package/lib/hooks/useSPFxStorage.d.ts.map +1 -0
  157. package/lib/hooks/useSPFxStorage.js +140 -0
  158. package/lib/hooks/useSPFxStorage.js.map +1 -0
  159. package/lib/hooks/useSPFxTeams.d.ts +63 -0
  160. package/lib/hooks/useSPFxTeams.d.ts.map +1 -0
  161. package/lib/hooks/useSPFxTeams.js +198 -0
  162. package/lib/hooks/useSPFxTeams.js.map +1 -0
  163. package/lib/hooks/useSPFxTenantProperty.d.ts +389 -0
  164. package/lib/hooks/useSPFxTenantProperty.d.ts.map +1 -0
  165. package/lib/hooks/useSPFxTenantProperty.js +683 -0
  166. package/lib/hooks/useSPFxTenantProperty.js.map +1 -0
  167. package/lib/hooks/useSPFxThemeInfo.d.ts +27 -0
  168. package/lib/hooks/useSPFxThemeInfo.d.ts.map +1 -0
  169. package/lib/hooks/useSPFxThemeInfo.js +33 -0
  170. package/lib/hooks/useSPFxThemeInfo.js.map +1 -0
  171. package/lib/hooks/useSPFxUserInfo.d.ts +47 -0
  172. package/lib/hooks/useSPFxUserInfo.d.ts.map +1 -0
  173. package/lib/hooks/useSPFxUserInfo.js +47 -0
  174. package/lib/hooks/useSPFxUserInfo.js.map +1 -0
  175. package/lib/hooks/useSPFxUserPhoto.d.ts +270 -0
  176. package/lib/hooks/useSPFxUserPhoto.d.ts.map +1 -0
  177. package/lib/hooks/useSPFxUserPhoto.js +346 -0
  178. package/lib/hooks/useSPFxUserPhoto.js.map +1 -0
  179. package/lib/index.d.ts +3 -0
  180. package/lib/index.d.ts.map +1 -0
  181. package/lib/index.js +3 -0
  182. package/lib/index.js.map +1 -0
  183. package/lib/utils/index.d.ts +1 -0
  184. package/lib/utils/index.d.ts.map +1 -0
  185. package/lib/utils/index.js +3 -0
  186. package/lib/utils/index.js.map +1 -0
  187. package/lib/utils/resize-observer.internal.d.ts +10 -0
  188. package/lib/utils/resize-observer.internal.d.ts.map +1 -0
  189. package/lib/utils/resize-observer.internal.js +34 -0
  190. package/lib/utils/resize-observer.internal.js.map +1 -0
  191. package/lib/utils/theme-subscription.internal.d.ts +11 -0
  192. package/lib/utils/theme-subscription.internal.d.ts.map +1 -0
  193. package/lib/utils/theme-subscription.internal.js +58 -0
  194. package/lib/utils/theme-subscription.internal.js.map +1 -0
  195. package/lib/utils/type-guards.internal.d.ts +35 -0
  196. package/lib/utils/type-guards.internal.d.ts.map +1 -0
  197. package/lib/utils/type-guards.internal.js +88 -0
  198. package/lib/utils/type-guards.internal.js.map +1 -0
  199. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.d.ts +13 -0
  200. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.d.ts.map +1 -0
  201. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js +67 -0
  202. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.js.map +1 -0
  203. package/lib/webparts/spFxReactToolkitTest/SpFxReactToolkitTestWebPart.manifest.json +21 -0
  204. package/lib/webparts/spFxReactToolkitTest/assets/welcome-dark.png +0 -0
  205. package/lib/webparts/spFxReactToolkitTest/assets/welcome-light.png +0 -0
  206. package/lib/webparts/spFxReactToolkitTest/components/ISpFxReactToolkitTestProps.d.ts +8 -0
  207. package/lib/webparts/spFxReactToolkitTest/components/ISpFxReactToolkitTestProps.d.ts.map +1 -0
  208. package/lib/webparts/spFxReactToolkitTest/components/ISpFxReactToolkitTestProps.js +2 -0
  209. package/lib/webparts/spFxReactToolkitTest/components/ISpFxReactToolkitTestProps.js.map +1 -0
  210. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts +8 -0
  211. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.d.ts.map +1 -0
  212. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js +1351 -0
  213. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.js.map +1 -0
  214. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.css +2 -0
  215. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.d.ts +18 -0
  216. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.d.ts.map +1 -0
  217. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js +19 -0
  218. package/lib/webparts/spFxReactToolkitTest/components/SpFxReactToolkitTest.module.scss.js.map +1 -0
  219. package/lib/webparts/spFxReactToolkitTest/loc/en-us.js +16 -0
  220. package/package.json +95 -0
@@ -0,0 +1,14 @@
1
+ import { useSPFxContext } from '../core/context.internal';
2
+ /**
3
+ * Internal hook to access SPFx context
4
+ *
5
+ * Returns:
6
+ * - instanceId: Unique identifier for this SPFx instance
7
+ * - spfxContext: The SPFx context object (WebPartContext, etc.)
8
+ * - kind: Type of host component ('WebPart', 'AppCustomizer', etc.)
9
+ *
10
+ * @throws Error if used outside SPFxProvider
11
+ * @internal - Not exported in public API
12
+ */
13
+ export { useSPFxContext };
14
+ //# sourceMappingURL=useSPFxContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxContext.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ // useSPFxContext.ts
2
+ // Internal hook to access SPFx context metadata
3
+ import { useSPFxContext } from '../core/context.internal';
4
+ /**
5
+ * Internal hook to access SPFx context
6
+ *
7
+ * Returns:
8
+ * - instanceId: Unique identifier for this SPFx instance
9
+ * - spfxContext: The SPFx context object (WebPartContext, etc.)
10
+ * - kind: Type of host component ('WebPart', 'AppCustomizer', etc.)
11
+ *
12
+ * @throws Error if used outside SPFxProvider
13
+ * @internal - Not exported in public API
14
+ */
15
+ export { useSPFxContext };
16
+ //# sourceMappingURL=useSPFxContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxContext.js","sourceRoot":"","sources":["../../src/hooks/useSPFxContext.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,gDAAgD;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Return type for useSPFxCorrelationInfo hook
3
+ */
4
+ export interface SPFxCorrelationInfo {
5
+ /** Correlation ID for tracking requests across services */
6
+ readonly correlationId: string | undefined;
7
+ /** Azure AD Tenant ID */
8
+ readonly tenantId: string | undefined;
9
+ }
10
+ /**
11
+ * Hook for correlation and tenant ID extraction
12
+ *
13
+ * Provides diagnostic IDs for tracking and monitoring:
14
+ * - Correlation ID: Tracks requests across SPFx → SharePoint → Microsoft Graph
15
+ * - Tenant ID: Azure AD tenant identifier
16
+ *
17
+ * These IDs are essential for:
18
+ * - Distributed tracing
19
+ * - Log correlation
20
+ * - Support tickets
21
+ * - Diagnostic troubleshooting
22
+ * - Security auditing
23
+ *
24
+ * Useful for:
25
+ * - Structured logging
26
+ * - Error tracking (Application Insights, etc.)
27
+ * - Support requests
28
+ * - Performance monitoring
29
+ *
30
+ * @returns Correlation and tenant identifiers
31
+ *
32
+ * @example
33
+ * ```tsx
34
+ * function MyComponent() {
35
+ * const { correlationId, tenantId } = useSPFxCorrelationInfo();
36
+ *
37
+ * const logError = (error: Error) => {
38
+ * console.error('Error occurred', {
39
+ * message: error.message,
40
+ * correlationId,
41
+ * tenantId,
42
+ * timestamp: new Date().toISOString()
43
+ * });
44
+ * };
45
+ *
46
+ * return <div>Tenant: {tenantId}</div>;
47
+ * }
48
+ * ```
49
+ */
50
+ export declare function useSPFxCorrelationInfo(): SPFxCorrelationInfo;
51
+ //# sourceMappingURL=useSPFxCorrelationInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxCorrelationInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxCorrelationInfo.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3C,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAgB5D"}
@@ -0,0 +1,58 @@
1
+ // useSPFxCorrelationInfo.ts
2
+ // Hook for correlation and tenant ID extraction
3
+ import { useSPFxPageContext } from './useSPFxPageContext';
4
+ /**
5
+ * Hook for correlation and tenant ID extraction
6
+ *
7
+ * Provides diagnostic IDs for tracking and monitoring:
8
+ * - Correlation ID: Tracks requests across SPFx → SharePoint → Microsoft Graph
9
+ * - Tenant ID: Azure AD tenant identifier
10
+ *
11
+ * These IDs are essential for:
12
+ * - Distributed tracing
13
+ * - Log correlation
14
+ * - Support tickets
15
+ * - Diagnostic troubleshooting
16
+ * - Security auditing
17
+ *
18
+ * Useful for:
19
+ * - Structured logging
20
+ * - Error tracking (Application Insights, etc.)
21
+ * - Support requests
22
+ * - Performance monitoring
23
+ *
24
+ * @returns Correlation and tenant identifiers
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * function MyComponent() {
29
+ * const { correlationId, tenantId } = useSPFxCorrelationInfo();
30
+ *
31
+ * const logError = (error: Error) => {
32
+ * console.error('Error occurred', {
33
+ * message: error.message,
34
+ * correlationId,
35
+ * tenantId,
36
+ * timestamp: new Date().toISOString()
37
+ * });
38
+ * };
39
+ *
40
+ * return <div>Tenant: {tenantId}</div>;
41
+ * }
42
+ * ```
43
+ */
44
+ export function useSPFxCorrelationInfo() {
45
+ var _a, _b, _c;
46
+ var pageContext = useSPFxPageContext();
47
+ // correlationId is in pageContext.site (SPSite type - public API)
48
+ var correlationId = (_b = (_a = pageContext.site) === null || _a === void 0 ? void 0 : _a.correlationId) === null || _b === void 0 ? void 0 : _b.toString();
49
+ // tenantId is in pageContext.aadInfo (AzureActiveDirectoryInfo - internal type)
50
+ // Casting required because AzureActiveDirectoryInfo is not exposed in public types
51
+ var aadInfo = pageContext.aadInfo;
52
+ var tenantId = (_c = aadInfo === null || aadInfo === void 0 ? void 0 : aadInfo.tenantId) === null || _c === void 0 ? void 0 : _c.toString();
53
+ return {
54
+ correlationId: correlationId,
55
+ tenantId: tenantId,
56
+ };
57
+ }
58
+ //# sourceMappingURL=useSPFxCorrelationInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxCorrelationInfo.js","sourceRoot":"","sources":["../../src/hooks/useSPFxCorrelationInfo.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,gDAAgD;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,UAAU,sBAAsB;;IACpC,IAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IAEzC,kEAAkE;IAClE,IAAM,aAAa,GAAG,MAAA,MAAA,WAAW,CAAC,IAAI,0CAAE,aAAa,0CAAE,QAAQ,EAAE,CAAC;IAElE,gFAAgF;IAChF,mFAAmF;IACnF,IAAM,OAAO,GAAG,WAAW,CAAC,OACuB,CAAC;IACpD,IAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,0CAAE,QAAQ,EAAE,CAAC;IAE/C,OAAO;QACL,aAAa,eAAA;QACb,QAAQ,UAAA;KACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,81 @@
1
+ import { SPPermission } from '@microsoft/sp-page-context';
2
+ /**
3
+ * Options for cross-site permissions retrieval
4
+ */
5
+ export interface SPFxCrossSitePermissionsOptions {
6
+ /**
7
+ * Optional web URL within the site (e.g., '/sites/mysite/subweb')
8
+ */
9
+ webUrl?: string;
10
+ /**
11
+ * Optional list ID to retrieve list-level permissions
12
+ */
13
+ listId?: string;
14
+ }
15
+ /**
16
+ * Information about cross-site permissions
17
+ */
18
+ export interface SPFxCrossSitePermissionsInfo {
19
+ /**
20
+ * Site-level permissions
21
+ */
22
+ sitePermissions?: SPPermission;
23
+ /**
24
+ * Web-level permissions
25
+ */
26
+ webPermissions?: SPPermission;
27
+ /**
28
+ * List-level permissions (if listId provided)
29
+ */
30
+ listPermissions?: SPPermission;
31
+ /**
32
+ * Check if user has specific web permission
33
+ */
34
+ hasWebPermission: (permission: SPPermission) => boolean;
35
+ /**
36
+ * Check if user has specific site permission
37
+ */
38
+ hasSitePermission: (permission: SPPermission) => boolean;
39
+ /**
40
+ * Check if user has specific list permission
41
+ */
42
+ hasListPermission: (permission: SPPermission) => boolean;
43
+ /**
44
+ * Loading state
45
+ */
46
+ isLoading: boolean;
47
+ /**
48
+ * Error state
49
+ */
50
+ error?: Error;
51
+ }
52
+ /**
53
+ * Hook to retrieve permissions for a different site/web/list
54
+ *
55
+ * @param siteUrl - The target site URL (optional - no fetch if undefined/empty)
56
+ * @param options - Optional configuration (webUrl, listId)
57
+ * @returns Permissions information with helper methods
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * // Lazy loading - no fetch until URL is set
62
+ * const [targetUrl, setTargetUrl] = useState<string | undefined>(undefined);
63
+ * const {
64
+ * sitePermissions,
65
+ * webPermissions,
66
+ * hasWebPermission,
67
+ * isLoading
68
+ * } = useSPFxCrossSitePermissions(targetUrl, {
69
+ * webUrl: 'https://contoso.sharepoint.com/sites/target/subweb'
70
+ * });
71
+ *
72
+ * // Set URL when ready - triggers fetch
73
+ * setTargetUrl('https://contoso.sharepoint.com/sites/target');
74
+ *
75
+ * if (!isLoading && hasWebPermission(SPPermission.addListItems)) {
76
+ * // User can add items
77
+ * }
78
+ * ```
79
+ */
80
+ export declare function useSPFxCrossSitePermissions(siteUrl?: string, options?: SPFxCrossSitePermissionsOptions): SPFxCrossSitePermissionsInfo;
81
+ //# sourceMappingURL=useSPFxCrossSitePermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxCrossSitePermissions.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxCrossSitePermissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;OAEG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;IAE/B;;OAEG;IACH,cAAc,CAAC,EAAE,YAAY,CAAC;IAE9B;;OAEG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;IAE/B;;OAEG;IACH,gBAAgB,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,OAAO,CAAC;IAExD;;OAEG;IACH,iBAAiB,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,OAAO,CAAC;IAEzD;;OAEG;IACH,iBAAiB,EAAE,CAAC,UAAU,EAAE,YAAY,KAAK,OAAO,CAAC;IAEzD;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,+BAA+B,GACxC,4BAA4B,CA6H9B"}
@@ -0,0 +1,132 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ import { SPPermission } from '@microsoft/sp-page-context';
3
+ import { SPHttpClient } from '@microsoft/sp-http';
4
+ import { useSPFxSPHttpClient } from './useSPFxSPHttpClient';
5
+ /**
6
+ * Hook to retrieve permissions for a different site/web/list
7
+ *
8
+ * @param siteUrl - The target site URL (optional - no fetch if undefined/empty)
9
+ * @param options - Optional configuration (webUrl, listId)
10
+ * @returns Permissions information with helper methods
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * // Lazy loading - no fetch until URL is set
15
+ * const [targetUrl, setTargetUrl] = useState<string | undefined>(undefined);
16
+ * const {
17
+ * sitePermissions,
18
+ * webPermissions,
19
+ * hasWebPermission,
20
+ * isLoading
21
+ * } = useSPFxCrossSitePermissions(targetUrl, {
22
+ * webUrl: 'https://contoso.sharepoint.com/sites/target/subweb'
23
+ * });
24
+ *
25
+ * // Set URL when ready - triggers fetch
26
+ * setTargetUrl('https://contoso.sharepoint.com/sites/target');
27
+ *
28
+ * if (!isLoading && hasWebPermission(SPPermission.addListItems)) {
29
+ * // User can add items
30
+ * }
31
+ * ```
32
+ */
33
+ export function useSPFxCrossSitePermissions(siteUrl, options) {
34
+ var invoke = useSPFxSPHttpClient().invoke;
35
+ var _a = useState(), sitePermissions = _a[0], setSitePermissions = _a[1];
36
+ var _b = useState(), webPermissions = _b[0], setWebPermissions = _b[1];
37
+ var _c = useState(), listPermissions = _c[0], setListPermissions = _c[1];
38
+ var _d = useState(false), isLoading = _d[0], setIsLoading = _d[1];
39
+ var _e = useState(), error = _e[0], setError = _e[1];
40
+ // Helper: Convert EffectiveBasePermissions to SPPermission
41
+ var convertToSPPermission = useCallback(function (data) {
42
+ return new SPPermission(data);
43
+ }, []);
44
+ // Fetch permissions when inputs change
45
+ useEffect(function () {
46
+ // Skip fetch if siteUrl is not provided or empty
47
+ if (!siteUrl || siteUrl.trim() === '') {
48
+ // Reset to idle state (no loading, no error)
49
+ setIsLoading(false);
50
+ setError(undefined);
51
+ setSitePermissions(undefined);
52
+ setWebPermissions(undefined);
53
+ setListPermissions(undefined);
54
+ return;
55
+ }
56
+ setIsLoading(true);
57
+ setError(undefined);
58
+ var targetWebUrl = (options === null || options === void 0 ? void 0 : options.webUrl) || siteUrl;
59
+ // Fetch site permissions
60
+ var fetchSitePermissions = invoke(function (client) {
61
+ return client.get("".concat(siteUrl, "/_api/site/effectivebasepermissions"), SPHttpClient.configurations.v1)
62
+ .then(function (res) { return res.json(); })
63
+ .then(function (data) {
64
+ if (data.EffectiveBasePermissions) {
65
+ return convertToSPPermission(data.EffectiveBasePermissions);
66
+ }
67
+ return undefined;
68
+ });
69
+ });
70
+ // Fetch web permissions
71
+ var fetchWebPermissions = invoke(function (client) {
72
+ return client.get("".concat(targetWebUrl, "/_api/web/effectivebasepermissions"), SPHttpClient.configurations.v1)
73
+ .then(function (res) { return res.json(); })
74
+ .then(function (data) {
75
+ if (data.EffectiveBasePermissions) {
76
+ return convertToSPPermission(data.EffectiveBasePermissions);
77
+ }
78
+ return undefined;
79
+ });
80
+ });
81
+ // Fetch list permissions if listId provided
82
+ var fetchListPermissions = (options === null || options === void 0 ? void 0 : options.listId)
83
+ ? invoke(function (client) {
84
+ return client.get("".concat(targetWebUrl, "/_api/web/lists(guid'").concat(options.listId, "')/effectivebasepermissions"), SPHttpClient.configurations.v1)
85
+ .then(function (res) { return res.json(); })
86
+ .then(function (data) {
87
+ if (data.EffectiveBasePermissions) {
88
+ return convertToSPPermission(data.EffectiveBasePermissions);
89
+ }
90
+ return undefined;
91
+ });
92
+ })
93
+ : Promise.resolve(undefined);
94
+ // Execute all fetches in parallel
95
+ Promise.all([fetchSitePermissions, fetchWebPermissions, fetchListPermissions])
96
+ .then(function (_a) {
97
+ var site = _a[0], web = _a[1], list = _a[2];
98
+ setSitePermissions(site);
99
+ setWebPermissions(web);
100
+ setListPermissions(list);
101
+ setIsLoading(false);
102
+ })
103
+ .catch(function (err) {
104
+ setError(err instanceof Error ? err : new Error(String(err)));
105
+ setIsLoading(false);
106
+ });
107
+ }, [siteUrl, options === null || options === void 0 ? void 0 : options.webUrl, options === null || options === void 0 ? void 0 : options.listId, invoke, convertToSPPermission]);
108
+ // Helper methods
109
+ var hasWebPermission = useCallback(function (permission) {
110
+ var _a;
111
+ return (_a = webPermissions === null || webPermissions === void 0 ? void 0 : webPermissions.hasPermission(permission)) !== null && _a !== void 0 ? _a : false;
112
+ }, [webPermissions]);
113
+ var hasSitePermission = useCallback(function (permission) {
114
+ var _a;
115
+ return (_a = sitePermissions === null || sitePermissions === void 0 ? void 0 : sitePermissions.hasPermission(permission)) !== null && _a !== void 0 ? _a : false;
116
+ }, [sitePermissions]);
117
+ var hasListPermission = useCallback(function (permission) {
118
+ var _a;
119
+ return (_a = listPermissions === null || listPermissions === void 0 ? void 0 : listPermissions.hasPermission(permission)) !== null && _a !== void 0 ? _a : false;
120
+ }, [listPermissions]);
121
+ return {
122
+ sitePermissions: sitePermissions,
123
+ webPermissions: webPermissions,
124
+ listPermissions: listPermissions,
125
+ hasWebPermission: hasWebPermission,
126
+ hasSitePermission: hasSitePermission,
127
+ hasListPermission: hasListPermission,
128
+ isLoading: isLoading,
129
+ error: error,
130
+ };
131
+ }
132
+ //# sourceMappingURL=useSPFxCrossSitePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxCrossSitePermissions.js","sourceRoot":"","sources":["../../src/hooks/useSPFxCrossSitePermissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { DisplayMode } from '@microsoft/sp-core-library';
2
+ /**
3
+ * Return type for useSPFxDisplayMode hook
4
+ */
5
+ export interface SPFxDisplayModeInfo {
6
+ /** Current display mode (Read/Edit) */
7
+ readonly mode: DisplayMode;
8
+ /** Whether currently in Edit mode */
9
+ readonly isEdit: boolean;
10
+ /** Whether currently in Read mode */
11
+ readonly isRead: boolean;
12
+ }
13
+ /**
14
+ * Hook to access SPFx display mode (readonly)
15
+ *
16
+ * Display mode controls whether the WebPart/Extension is in:
17
+ * - Read mode (DisplayMode.Read): Normal viewing mode
18
+ * - Edit mode (DisplayMode.Edit): Editing/configuration mode
19
+ *
20
+ * Note: displayMode is readonly in SPFx and controlled by SharePoint.
21
+ * It changes when the user clicks the Edit button in the page.
22
+ *
23
+ * Useful for:
24
+ * - Showing/hiding edit controls
25
+ * - Conditional rendering based on mode
26
+ * - Different layouts for read vs edit
27
+ *
28
+ * @returns Display mode information
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * function MyComponent() {
33
+ * const { mode, isEdit } = useSPFxDisplayMode();
34
+ *
35
+ * return (
36
+ * <div>
37
+ * <p>Mode: {isEdit ? 'Editing' : 'Reading'}</p>
38
+ * {isEdit && <EditControls />}
39
+ * </div>
40
+ * );
41
+ * }
42
+ * ```
43
+ */
44
+ export declare function useSPFxDisplayMode(): SPFxDisplayModeInfo;
45
+ /**
46
+ * Hook to check if currently in Edit mode
47
+ * Shortcut for useSPFxDisplayMode().isEdit
48
+ *
49
+ * @returns true if in Edit mode, false otherwise
50
+ *
51
+ * @example
52
+ * ```tsx
53
+ * function MyComponent() {
54
+ * const isEdit = useSPFxIsEdit();
55
+ *
56
+ * return isEdit ? <EditView /> : <ReadView />;
57
+ * }
58
+ * ```
59
+ */
60
+ export declare function useSPFxIsEdit(): boolean;
61
+ //# sourceMappingURL=useSPFxDisplayMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxDisplayMode.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxDisplayMode.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGzD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,qCAAqC;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,kBAAkB,IAAI,mBAAmB,CAexD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAGvC"}
@@ -0,0 +1,69 @@
1
+ // useSPFxDisplayMode.ts
2
+ // Hook to access display mode (Read/Edit)
3
+ import { useAtomValue } from 'jotai';
4
+ import { DisplayMode } from '@microsoft/sp-core-library';
5
+ import { spfxAtoms } from './../core/atoms.internal';
6
+ /**
7
+ * Hook to access SPFx display mode (readonly)
8
+ *
9
+ * Display mode controls whether the WebPart/Extension is in:
10
+ * - Read mode (DisplayMode.Read): Normal viewing mode
11
+ * - Edit mode (DisplayMode.Edit): Editing/configuration mode
12
+ *
13
+ * Note: displayMode is readonly in SPFx and controlled by SharePoint.
14
+ * It changes when the user clicks the Edit button in the page.
15
+ *
16
+ * Useful for:
17
+ * - Showing/hiding edit controls
18
+ * - Conditional rendering based on mode
19
+ * - Different layouts for read vs edit
20
+ *
21
+ * @returns Display mode information
22
+ *
23
+ * @example
24
+ * ```tsx
25
+ * function MyComponent() {
26
+ * const { mode, isEdit } = useSPFxDisplayMode();
27
+ *
28
+ * return (
29
+ * <div>
30
+ * <p>Mode: {isEdit ? 'Editing' : 'Reading'}</p>
31
+ * {isEdit && <EditControls />}
32
+ * </div>
33
+ * );
34
+ * }
35
+ * ```
36
+ */
37
+ export function useSPFxDisplayMode() {
38
+ // Read current mode directly from atom (readonly)
39
+ var modeValue = useAtomValue(spfxAtoms.displayMode);
40
+ // Default to Read mode if not set
41
+ var mode = modeValue !== null && modeValue !== void 0 ? modeValue : DisplayMode.Read;
42
+ var isEdit = mode === DisplayMode.Edit;
43
+ var isRead = mode === DisplayMode.Read;
44
+ return {
45
+ mode: mode,
46
+ isEdit: isEdit,
47
+ isRead: isRead,
48
+ };
49
+ }
50
+ /**
51
+ * Hook to check if currently in Edit mode
52
+ * Shortcut for useSPFxDisplayMode().isEdit
53
+ *
54
+ * @returns true if in Edit mode, false otherwise
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * function MyComponent() {
59
+ * const isEdit = useSPFxIsEdit();
60
+ *
61
+ * return isEdit ? <EditView /> : <ReadView />;
62
+ * }
63
+ * ```
64
+ */
65
+ export function useSPFxIsEdit() {
66
+ var isEdit = useSPFxDisplayMode().isEdit;
67
+ return isEdit;
68
+ }
69
+ //# sourceMappingURL=useSPFxDisplayMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxDisplayMode.js","sourceRoot":"","sources":["../../src/hooks/useSPFxDisplayMode.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,0CAA0C;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAgBrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,kBAAkB;IAChC,kDAAkD;IAClD,IAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAEtD,kCAAkC;IAClC,IAAM,IAAI,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,WAAW,CAAC,IAAI,CAAC;IAE3C,IAAM,MAAM,GAAG,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC;IACzC,IAAM,MAAM,GAAG,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC;IAEzC,OAAO;QACL,IAAI,MAAA;QACJ,MAAM,QAAA;QACN,MAAM,QAAA;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,aAAa;IACnB,IAAA,MAAM,GAAK,kBAAkB,EAAE,OAAzB,CAA0B;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * SPFx environment types
3
+ */
4
+ export type SPFxEnvironmentType = 'Local' | 'SharePoint' | 'SharePointOnPrem' | 'Teams' | 'Office' | 'Outlook';
5
+ /**
6
+ * Return type for useSPFxEnvironmentInfo hook
7
+ */
8
+ export interface SPFxEnvironmentInfo {
9
+ /** Current environment type */
10
+ readonly type: SPFxEnvironmentType;
11
+ /** Whether running in local workbench */
12
+ readonly isLocal: boolean;
13
+ /** Whether running in SharePoint workbench (hosted or local) */
14
+ readonly isWorkbench: boolean;
15
+ /** Whether running in SharePoint Online */
16
+ readonly isSharePoint: boolean;
17
+ /** Whether running in SharePoint On-Premises */
18
+ readonly isSharePointOnPrem: boolean;
19
+ /** Whether running in Microsoft Teams */
20
+ readonly isTeams: boolean;
21
+ /** Whether running in Office application */
22
+ readonly isOffice: boolean;
23
+ /** Whether running in Outlook */
24
+ readonly isOutlook: boolean;
25
+ }
26
+ /**
27
+ * Hook to access SPFx environment type information
28
+ *
29
+ * Detects the current host environment:
30
+ * - Local: Local workbench (localhost)
31
+ * - SharePoint: SharePoint Online
32
+ * - SharePointOnPrem: SharePoint On-Premises
33
+ * - Teams: Microsoft Teams
34
+ * - Office: Office applications
35
+ * - Outlook: Outlook
36
+ *
37
+ * Useful for:
38
+ * - Environment-specific rendering
39
+ * - Feature availability checks
40
+ * - API endpoint selection
41
+ * - Debugging information
42
+ *
43
+ * @returns Environment information
44
+ *
45
+ * @example
46
+ * ```tsx
47
+ * function MyComponent() {
48
+ * const { type, isTeams, isLocal } = useSPFxEnvironmentInfo();
49
+ *
50
+ * if (isLocal) {
51
+ * return <div>Development Mode</div>;
52
+ * }
53
+ *
54
+ * if (isTeams) {
55
+ * return <TeamsSpecificUI />;
56
+ * }
57
+ *
58
+ * return <SharePointUI />;
59
+ * }
60
+ * ```
61
+ */
62
+ export declare function useSPFxEnvironmentInfo(): SPFxEnvironmentInfo;
63
+ //# sourceMappingURL=useSPFxEnvironmentInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFxEnvironmentInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useSPFxEnvironmentInfo.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,OAAO,GACP,YAAY,GACZ,kBAAkB,GAClB,OAAO,GACP,QAAQ,GACR,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAEnC,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAE9B,2CAA2C;IAC3C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,gDAAgD;IAChD,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAErC,yCAAyC;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAE3B,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,CAgE5D"}