@pnp/spfx-controls-react 3.25.0-beta.2845356 → 3.25.0-beta.3152906

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 (81) hide show
  1. package/jest-output/JUnit.xml +103 -83
  2. package/lib/SPFilePicker.d.ts +2 -0
  3. package/lib/SPFilePicker.d.ts.map +1 -0
  4. package/lib/SPFilePicker.js +2 -0
  5. package/lib/SPFilePicker.js.map +1 -0
  6. package/lib/common/telemetry/version.js +1 -1
  7. package/lib/controls/SPFilePicker/ISPFilePicker.types.d.ts +152 -0
  8. package/lib/controls/SPFilePicker/ISPFilePicker.types.d.ts.map +1 -0
  9. package/lib/controls/SPFilePicker/ISPFilePicker.types.js +11 -0
  10. package/lib/controls/SPFilePicker/ISPFilePicker.types.js.map +1 -0
  11. package/lib/controls/SPFilePicker/ISPFilePickerProps.d.ts +80 -0
  12. package/lib/controls/SPFilePicker/ISPFilePickerProps.d.ts.map +1 -0
  13. package/lib/controls/SPFilePicker/ISPFilePickerProps.js +2 -0
  14. package/lib/controls/SPFilePicker/ISPFilePickerProps.js.map +1 -0
  15. package/lib/controls/SPFilePicker/SPFilePicker.d.ts +22 -0
  16. package/lib/controls/SPFilePicker/SPFilePicker.d.ts.map +1 -0
  17. package/lib/controls/SPFilePicker/SPFilePicker.js +83 -0
  18. package/lib/controls/SPFilePicker/SPFilePicker.js.map +1 -0
  19. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.d.ts +20 -0
  20. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.d.ts.map +1 -0
  21. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.js +27 -0
  22. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.js.map +1 -0
  23. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.d.ts +2 -0
  24. package/lib/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.d.ts.map +1 -0
  25. package/lib/controls/SPFilePicker/hooks/useLogging.d.ts +28 -0
  26. package/lib/controls/SPFilePicker/hooks/useLogging.d.ts.map +1 -0
  27. package/lib/controls/SPFilePicker/hooks/useLogging.js +28 -0
  28. package/lib/controls/SPFilePicker/hooks/useLogging.js.map +1 -0
  29. package/lib/controls/SPFilePicker/hooks/useSPFilePicker.d.ts +68 -0
  30. package/lib/controls/SPFilePicker/hooks/useSPFilePicker.d.ts.map +1 -0
  31. package/lib/controls/SPFilePicker/hooks/useSPFilePicker.js +356 -0
  32. package/lib/controls/SPFilePicker/hooks/useSPFilePicker.js.map +1 -0
  33. package/lib/controls/SPFilePicker/index.d.ts +5 -0
  34. package/lib/controls/SPFilePicker/index.d.ts.map +1 -0
  35. package/lib/controls/SPFilePicker/index.js +5 -0
  36. package/lib/controls/SPFilePicker/index.js.map +1 -0
  37. package/lib/controls/SPFilePicker/useSPFilePickerStyles.d.ts +8 -0
  38. package/lib/controls/SPFilePicker/useSPFilePickerStyles.d.ts.map +1 -0
  39. package/lib/controls/SPFilePicker/useSPFilePickerStyles.js +33 -0
  40. package/lib/controls/SPFilePicker/useSPFilePickerStyles.js.map +1 -0
  41. package/lib/index.d.ts +1 -0
  42. package/lib/index.d.ts.map +1 -1
  43. package/lib/index.js +1 -0
  44. package/lib/index.js.map +1 -1
  45. package/lib/loc/en-us.js +5 -0
  46. package/lib/loc/en-us.js.map +1 -1
  47. package/lib-commonjs/SPFilePicker.js +5 -0
  48. package/lib-commonjs/SPFilePicker.js.map +1 -0
  49. package/lib-commonjs/common/telemetry/version.js +1 -1
  50. package/lib-commonjs/controls/SPFilePicker/ISPFilePicker.types.js +12 -0
  51. package/lib-commonjs/controls/SPFilePicker/ISPFilePicker.types.js.map +1 -0
  52. package/lib-commonjs/controls/SPFilePicker/ISPFilePickerProps.js +3 -0
  53. package/lib-commonjs/controls/SPFilePicker/ISPFilePickerProps.js.map +1 -0
  54. package/lib-commonjs/controls/SPFilePicker/SPFilePicker.js +88 -0
  55. package/lib-commonjs/controls/SPFilePicker/SPFilePicker.js.map +1 -0
  56. package/lib-commonjs/controls/SPFilePicker/hooks/SPFilePicker.helpers.js +32 -0
  57. package/lib-commonjs/controls/SPFilePicker/hooks/SPFilePicker.helpers.js.map +1 -0
  58. package/lib-commonjs/controls/SPFilePicker/hooks/useLogging.js +31 -0
  59. package/lib-commonjs/controls/SPFilePicker/hooks/useLogging.js.map +1 -0
  60. package/lib-commonjs/controls/SPFilePicker/hooks/useSPFilePicker.js +359 -0
  61. package/lib-commonjs/controls/SPFilePicker/hooks/useSPFilePicker.js.map +1 -0
  62. package/lib-commonjs/controls/SPFilePicker/index.js +8 -0
  63. package/lib-commonjs/controls/SPFilePicker/index.js.map +1 -0
  64. package/lib-commonjs/controls/SPFilePicker/useSPFilePickerStyles.js +37 -0
  65. package/lib-commonjs/controls/SPFilePicker/useSPFilePickerStyles.js.map +1 -0
  66. package/lib-commonjs/index.js +1 -0
  67. package/lib-commonjs/index.js.map +1 -1
  68. package/lib-commonjs/loc/en-us.js +5 -0
  69. package/lib-commonjs/loc/en-us.js.map +1 -1
  70. package/lib-commonjs/webparts/controlsTest/ControlsTestWebPart.manifest.json +1 -0
  71. package/lib-commonjs/webparts/controlsTest/components/ControlsTest.js +4 -0
  72. package/lib-commonjs/webparts/controlsTest/components/ControlsTest.js.map +1 -1
  73. package/lib-commonjs/webparts/controlsTest/components/TestSPFilePickerControl.js +29 -0
  74. package/lib-commonjs/webparts/controlsTest/components/TestSPFilePickerControl.js.map +1 -0
  75. package/lib-commonjs/webparts/controlsTest/propertyPane/controls/ControlToggles.js +1 -0
  76. package/lib-commonjs/webparts/controlsTest/propertyPane/controls/ControlToggles.js.map +1 -1
  77. package/package.json +1 -1
  78. package/release/analysis-logs/lint.sarif +639 -584
  79. package/release/manifests/45165954-80f9-44c1-9967-cd38ae92a33b.manifest.json +4 -3
  80. package/release/manifests/57ebd944-98ed-43f9-b722-e959d6dac6ad.manifest.json +3 -3
  81. package/release/manifests/f9c6b930-8d5d-4550-bfd9-ed5f6ca443a8.manifest.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISPFilePickerProps.d.ts","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/ISPFilePickerProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,yBAAyB;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,OAAO,EAAE,cAAc,CAAC;IAExB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAE3B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,yBAAyB,CAAC;IAE1C,6DAA6D;IAC7D,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAElC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAEhC,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B;;;OAGG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAGrC,sEAAsE;IACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAE/C,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAG9C;;;OAGG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAElD,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ISPFilePickerProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ISPFilePickerProps.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/ISPFilePickerProps.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import type { ISPFilePickerProps } from './ISPFilePickerProps';
3
+ /**
4
+ * Ready-to-use SharePoint / OneDrive File Picker (SDK v8) control.
5
+ *
6
+ * Renders a trigger button that opens the Microsoft-hosted file picker inside a
7
+ * modal dialog (iframe) or a popup window, and returns the selected items via
8
+ * `onPicked`. Tokens are resolved through the SPFx `context`
9
+ * (`aadTokenProviderFactory`) or a custom `getToken`.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <SPFilePicker
14
+ * context={this.context}
15
+ * selectionMode="multiple"
16
+ * fileTypes={['docx', 'pdf']}
17
+ * onPicked={(items) => setFiles(items)}
18
+ * />
19
+ * ```
20
+ */
21
+ export declare const SPFilePicker: React.FunctionComponent<ISPFilePickerProps>;
22
+ //# sourceMappingURL=SPFilePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SPFilePicker.d.ts","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/SPFilePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAM/D;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAoHpE,CAAC"}
@@ -0,0 +1,83 @@
1
+ import * as React from 'react';
2
+ import { Button, Dialog, DialogSurface, mergeClasses, Spinner, } from '@fluentui/react-components';
3
+ import { useSPFilePicker } from './hooks/useSPFilePicker';
4
+ import { useSPFilePickerStyles } from './useSPFilePickerStyles';
5
+ import * as strings from 'ControlStrings';
6
+ var DEFAULT_WIDTH = 1080;
7
+ var DEFAULT_HEIGHT = 680;
8
+ /**
9
+ * Ready-to-use SharePoint / OneDrive File Picker (SDK v8) control.
10
+ *
11
+ * Renders a trigger button that opens the Microsoft-hosted file picker inside a
12
+ * modal dialog (iframe) or a popup window, and returns the selected items via
13
+ * `onPicked`. Tokens are resolved through the SPFx `context`
14
+ * (`aadTokenProviderFactory`) or a custom `getToken`.
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * <SPFilePicker
19
+ * context={this.context}
20
+ * selectionMode="multiple"
21
+ * fileTypes={['docx', 'pdf']}
22
+ * onPicked={(items) => setFiles(items)}
23
+ * />
24
+ * ```
25
+ */
26
+ export var SPFilePicker = function (props) {
27
+ var _a;
28
+ var context = props.context, baseUrl = props.baseUrl, entry = props.entry, _b = props.selectionMode, selectionMode = _b === void 0 ? 'single' : _b, _c = props.itemsMode, itemsMode = _c === void 0 ? 'files' : _c, fileTypes = props.fileTypes, locale = props.locale, authMode = props.authMode, app = props.app, scenario = props.scenario, _d = props.target, target = _d === void 0 ? 'iframe' : _d, getToken = props.getToken, onPicked = props.onPicked, onCancel = props.onCancel, onError = props.onError, trigger = props.trigger, _e = props.buttonText, buttonText = _e === void 0 ? strings.SPFilePickerButtonText : _e, _f = props.dialogTitle, dialogTitle = _f === void 0 ? strings.SPFilePickerDialogTitle : _f, _g = props.disabled, disabled = _g === void 0 ? false : _g, _h = props.dialogWidth, dialogWidth = _h === void 0 ? DEFAULT_WIDTH : _h, _j = props.dialogHeight, dialogHeight = _j === void 0 ? DEFAULT_HEIGHT : _j, className = props.className;
29
+ var resolvedBaseUrl = (_a = baseUrl !== null && baseUrl !== void 0 ? baseUrl : context.pageContext.web.absoluteUrl) !== null && _a !== void 0 ? _a : '';
30
+ var styles = useSPFilePickerStyles(dialogHeight);
31
+ var _k = useSPFilePicker({
32
+ context: context,
33
+ baseUrl: resolvedBaseUrl,
34
+ entry: entry,
35
+ selectionMode: selectionMode,
36
+ itemsMode: itemsMode,
37
+ fileTypes: fileTypes,
38
+ locale: locale,
39
+ authMode: authMode,
40
+ app: app,
41
+ scenario: scenario,
42
+ target: target,
43
+ getToken: getToken,
44
+ onPicked: onPicked,
45
+ onCancel: onCancel,
46
+ onError: onError,
47
+ }), isOpen = _k.isOpen, isLoading = _k.isLoading, iframeRef = _k.iframeRef, open = _k.open, close = _k.close, markLoaded = _k.markLoaded;
48
+ var renderTrigger = function () {
49
+ if (trigger) {
50
+ var triggerOnClick_1 = trigger.props.onClick;
51
+ return React.cloneElement(trigger, {
52
+ 'aria-disabled': disabled || undefined,
53
+ className: mergeClasses(trigger.props.className, className),
54
+ onClick: function (event) {
55
+ if (disabled) {
56
+ event.preventDefault();
57
+ return;
58
+ }
59
+ triggerOnClick_1 === null || triggerOnClick_1 === void 0 ? void 0 : triggerOnClick_1(event);
60
+ if (!event.defaultPrevented) {
61
+ open();
62
+ }
63
+ },
64
+ });
65
+ }
66
+ return (React.createElement(Button, { className: className, appearance: "primary", disabled: disabled || !resolvedBaseUrl, onClick: open }, buttonText));
67
+ };
68
+ return (React.createElement(React.Fragment, null,
69
+ renderTrigger(),
70
+ target === 'iframe' && (React.createElement(Dialog, { open: isOpen, modalType: "modal", onOpenChange: function (_event, data) {
71
+ if (!data.open) {
72
+ onCancel === null || onCancel === void 0 ? void 0 : onCancel();
73
+ close();
74
+ }
75
+ } },
76
+ React.createElement(DialogSurface, { className: styles.dialogSurface, style: { maxWidth: dialogWidth, width: dialogWidth } },
77
+ React.createElement("div", { className: styles.iframeWrapper },
78
+ isLoading && (React.createElement("div", { className: styles.spinnerOverlay },
79
+ React.createElement(Spinner, { size: "large" }))),
80
+ React.createElement("iframe", { ref: iframeRef, className: styles.iframe, title: dialogTitle, onLoad: markLoaded })))))));
81
+ };
82
+ SPFilePicker.displayName = 'SPFilePicker';
83
+ //# sourceMappingURL=SPFilePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SPFilePicker.js","sourceRoot":"","sources":["../../../src/controls/SPFilePicker/SPFilePicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ISPFilePickerEntry, ISPFilePickerRawConfiguration, SPFilePickerAuthMode, SPFilePickerItemsMode, SPFilePickerSelectionMode } from '../ISPFilePicker.types';
2
+ export interface IBuildSPFilePickerConfigurationOptions {
3
+ channelId: string;
4
+ parentOrigin: string;
5
+ entry?: ISPFilePickerEntry;
6
+ selectionMode: SPFilePickerSelectionMode;
7
+ itemsMode: SPFilePickerItemsMode;
8
+ fileTypes?: string[];
9
+ authMode: SPFilePickerAuthMode;
10
+ raw?: Partial<ISPFilePickerRawConfiguration>;
11
+ }
12
+ export interface ISPFilePickerInitializeEvent {
13
+ data: unknown;
14
+ origin: string;
15
+ source: MessageEvent['source'];
16
+ }
17
+ export declare function buildSPFilePickerConfiguration(options: IBuildSPFilePickerConfigurationOptions): ISPFilePickerRawConfiguration;
18
+ export declare function isExpectedPickerInitializeEvent(event: ISPFilePickerInitializeEvent, pickerWindow: Window, channelId: string, expectedOrigin: string): boolean;
19
+ export declare function requireAccessToken(accessToken: string, errorMessage: string): string;
20
+ //# sourceMappingURL=SPFilePicker.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SPFilePicker.helpers.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAIhC,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,aAAa,EAAE,yBAAyB,CAAC;IACzC,SAAS,EAAE,qBAAqB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CAChC;AAQD,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,sCAAsC,GAC9C,6BAA6B,CA6B/B;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,4BAA4B,EACnC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAWT;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMpF"}
@@ -0,0 +1,27 @@
1
+ import { __assign } from "tslib";
2
+ var SDK_VERSION = '8.0';
3
+ function isInitializeMessageData(value) {
4
+ return typeof value === 'object' && value !== null;
5
+ }
6
+ export function buildSPFilePickerConfiguration(options) {
7
+ var channelId = options.channelId, parentOrigin = options.parentOrigin, entry = options.entry, selectionMode = options.selectionMode, itemsMode = options.itemsMode, fileTypes = options.fileTypes, authMode = options.authMode, raw = options.raw;
8
+ var useCookies = authMode === 'cookie';
9
+ var configuration = __assign(__assign({ sdk: SDK_VERSION, entry: entry !== null && entry !== void 0 ? entry : { sharePoint: {} } }, (useCookies ? {} : { authentication: {} })), { messaging: __assign({ origin: parentOrigin, channelId: channelId }, (useCookies ? { identifyParent: true } : {})), selection: { mode: selectionMode }, typesAndSources: __assign({ mode: itemsMode }, (fileTypes && fileTypes.length > 0 ? { filters: fileTypes } : {})) });
10
+ return Object.assign(configuration, raw !== null && raw !== void 0 ? raw : {});
11
+ }
12
+ export function isExpectedPickerInitializeEvent(event, pickerWindow, channelId, expectedOrigin) {
13
+ if (!isInitializeMessageData(event.data)) {
14
+ return false;
15
+ }
16
+ return (event.origin === expectedOrigin &&
17
+ event.source === pickerWindow &&
18
+ event.data.type === 'initialize' &&
19
+ event.data.channelId === channelId);
20
+ }
21
+ export function requireAccessToken(accessToken, errorMessage) {
22
+ if (!accessToken) {
23
+ throw new Error(errorMessage);
24
+ }
25
+ return accessToken;
26
+ }
27
+ //# sourceMappingURL=SPFilePicker.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SPFilePicker.helpers.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.ts"],"names":[],"mappings":";AAQA,IAAM,WAAW,GAAG,KAAK,CAAC;AAmB1B,SAAS,uBAAuB,CAC9B,KAAc;IAEd,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,OAA+C;IAG7C,IAAA,SAAS,GAQP,OAAO,UARA,EACT,YAAY,GAOV,OAAO,aAPG,EACZ,KAAK,GAMH,OAAO,MANJ,EACL,aAAa,GAKX,OAAO,cALI,EACb,SAAS,GAIP,OAAO,UAJA,EACT,SAAS,GAGP,OAAO,UAHA,EACT,QAAQ,GAEN,OAAO,SAFD,EACR,GAAG,GACD,OAAO,IADN,CACO;IACZ,IAAM,UAAU,GAAG,QAAQ,KAAK,QAAQ,CAAC;IACzC,IAAM,aAAa,uBACjB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,UAAU,EAAE,EAAE,EAAE,IAC/B,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,KAC7C,SAAS,aACP,MAAM,EAAE,YAAY,EACpB,SAAS,WAAA,IACN,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAEjD,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAClC,eAAe,aACb,IAAI,EAAE,SAAS,IACZ,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAEvE,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAmC,EACnC,YAAoB,EACpB,SAAiB,EACjB,cAAsB;IAEtB,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,cAAc;QAC/B,KAAK,CAAC,MAAM,KAAK,YAAY;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;QAChC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAAoB;IAC1E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SPFilePicker.helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SPFilePicker.helpers.test.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/SPFilePicker.helpers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Return value of {@link useLogging}.
3
+ */
4
+ export interface IUseLoggingReturn {
5
+ /** Logs an informational message. */
6
+ info: (message: string) => void;
7
+ /** Logs a warning message. */
8
+ warn: (message: string) => void;
9
+ /** Logs an error (string message or `Error`). */
10
+ error: (message: string | Error) => void;
11
+ /** Logs a verbose/debug message. */
12
+ verbose: (message: string) => void;
13
+ }
14
+ /**
15
+ * Thin logging hook built on the SPFx {@link Log} API. It provides a stable,
16
+ * memoized logger scoped to a source name, with no external dependencies.
17
+ *
18
+ * @param source - Log source shown in the SPFx diagnostics. Defaults to `SPFilePicker`.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const { info, error } = useLogging();
23
+ * info('picker launched');
24
+ * error(new Error('token failed'));
25
+ * ```
26
+ */
27
+ export declare function useLogging(source?: string): IUseLoggingReturn;
28
+ //# sourceMappingURL=useLogging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogging.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useLogging.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC,8BAA8B;IAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhC,iDAAiD;IACjD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IAEzC,oCAAoC;IACpC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,MAAM,GAAE,MAAuB,GAAG,iBAAiB,CAW7E"}
@@ -0,0 +1,28 @@
1
+ import { useMemo } from 'react';
2
+ import { Log } from '@microsoft/sp-core-library';
3
+ var DEFAULT_SOURCE = 'SPFilePicker';
4
+ /**
5
+ * Thin logging hook built on the SPFx {@link Log} API. It provides a stable,
6
+ * memoized logger scoped to a source name, with no external dependencies.
7
+ *
8
+ * @param source - Log source shown in the SPFx diagnostics. Defaults to `SPFilePicker`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const { info, error } = useLogging();
13
+ * info('picker launched');
14
+ * error(new Error('token failed'));
15
+ * ```
16
+ */
17
+ export function useLogging(source) {
18
+ if (source === void 0) { source = DEFAULT_SOURCE; }
19
+ return useMemo(function () { return ({
20
+ info: function (message) { return Log.info(source, message); },
21
+ warn: function (message) { return Log.warn(source, message); },
22
+ error: function (message) {
23
+ return Log.error(source, message instanceof Error ? message : new Error(message));
24
+ },
25
+ verbose: function (message) { return Log.verbose(source, message); },
26
+ }); }, [source]);
27
+ }
28
+ //# sourceMappingURL=useLogging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLogging.js","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useLogging.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,4BAA4B,CAAC;AAEjD,IAAM,cAAc,GAAG,cAAc,CAAC;AAmBtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,MAA+B;IAA/B,uBAAA,EAAA,uBAA+B;IACxD,OAAO,OAAO,CACZ,cAAM,OAAA,CAAC;QACL,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,IAAI,EAAE,UAAC,OAAe,IAAK,OAAA,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAzB,CAAyB;QACpD,KAAK,EAAE,UAAC,OAAuB;YAC7B,OAAA,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAA1E,CAA0E;QAC5E,OAAO,EAAE,UAAC,OAAe,IAAK,OAAA,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAA5B,CAA4B;KAC3D,CAAC,EANI,CAMJ,EACF,CAAC,MAAM,CAAC,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,68 @@
1
+ import type { WebPartContext } from '@microsoft/sp-webpart-base';
2
+ import type { ISPFilePickerConfig, ISPFilePickerError, ISPFilePickerItem, SPFilePickerTarget, SPFilePickerTokenResolver } from '../ISPFilePicker.types';
3
+ /**
4
+ * Options accepted by {@link useSPFilePicker}.
5
+ */
6
+ export interface IUseSPFilePickerOptions extends ISPFilePickerConfig {
7
+ /** The SPFx web part context used for token acquisition. */
8
+ context: WebPartContext;
9
+ /** Where the picker is hosted. Defaults to `iframe`. */
10
+ target?: SPFilePickerTarget;
11
+ /**
12
+ * Optional custom token resolver. When omitted, the hook uses the SPFx
13
+ * `aadTokenProviderFactory` from `context` to acquire a token for the
14
+ * SharePoint host origin.
15
+ */
16
+ getToken?: SPFilePickerTokenResolver;
17
+ /** Fired with the picked items when the user confirms a selection. */
18
+ onPicked?: (items: ISPFilePickerItem[]) => void;
19
+ /** Fired when the picker is cancelled / closed without a selection. */
20
+ onCancel?: () => void;
21
+ /** Fired when an error occurs during the picker workflow. */
22
+ onError?: (error: ISPFilePickerError) => void;
23
+ }
24
+ /**
25
+ * Return value of {@link useSPFilePicker}.
26
+ */
27
+ export interface IUseSPFilePickerReturn {
28
+ /** Whether the picker surface is currently open. */
29
+ isOpen: boolean;
30
+ /** Whether the picker is currently being launched / loading. */
31
+ isLoading: boolean;
32
+ /** The last error, if any. */
33
+ error: ISPFilePickerError | undefined;
34
+ /**
35
+ * Ref to attach to the hosting `<iframe>` element when `target === 'iframe'`.
36
+ * The consumer must render the iframe (e.g. inside a dialog) while `isOpen`.
37
+ */
38
+ iframeRef: React.RefObject<HTMLIFrameElement>;
39
+ /** Opens the picker. */
40
+ open: () => void;
41
+ /** Closes the picker and tears down messaging. */
42
+ close: () => void;
43
+ /**
44
+ * Clears the loading state. Attach to the hosting `<iframe onLoad>` so the
45
+ * loading overlay is removed once the picker page has loaded.
46
+ */
47
+ markLoaded: () => void;
48
+ }
49
+ /**
50
+ * Reusable engine hook that drives the SharePoint / OneDrive File Picker (v8).
51
+ *
52
+ * It encapsulates the full workflow — building the configuration, POSTing the
53
+ * form into the iframe (or popup), establishing the `MessageChannel`, and
54
+ * responding to the `authenticate`, `pick` and `close` commands — so any
55
+ * control can offer a SharePoint file picker with just a few lines.
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * const { isOpen, open, close, iframeRef } = useSPFilePicker({
60
+ * baseUrl: context.pageContext.web.absoluteUrl,
61
+ * selectionMode: 'multiple',
62
+ * fileTypes: ['docx', 'pdf'],
63
+ * onPicked: (items) => console.info(items),
64
+ * });
65
+ * ```
66
+ */
67
+ export declare function useSPFilePicker(options: IUseSPFilePickerOptions): IUseSPFilePickerReturn;
68
+ //# sourceMappingURL=useSPFilePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSPFilePicker.d.ts","sourceRoot":"","sources":["../../../../src/controls/SPFilePicker/hooks/useSPFilePicker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAShC;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,4DAA4D;IAC5D,OAAO,EAAE,cAAc,CAAC;IAExB,wDAAwD;IACxD,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IAErC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IAEhD,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,MAAM,EAAE,OAAO,CAAC;IAEhB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IAEnB,8BAA8B;IAC9B,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAEtC;;;OAGG;IACH,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAE9C,wBAAwB;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB,kDAAkD;IAClD,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;;OAGG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAoBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CAiWxF"}