@webiny/app-admin 5.32.0 → 5.33.0-beta.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 (35) hide show
  1. package/components/FileManager/FileManagerContext.d.ts +8 -2
  2. package/components/FileManager/FileManagerContext.js +2 -8
  3. package/components/FileManager/FileManagerContext.js.map +1 -1
  4. package/components/FileManager/FileManagerView.d.ts +4 -4
  5. package/components/FileManager/FileManagerView.js +6 -3
  6. package/components/FileManager/FileManagerView.js.map +1 -1
  7. package/components/FileManager/outputFileSelectionError.d.ts +2 -2
  8. package/components/FileManager/outputFileSelectionError.js +3 -3
  9. package/components/FileManager/outputFileSelectionError.js.map +1 -1
  10. package/components/FileManager/types.d.ts +3 -1
  11. package/components/FileManager/types.js.map +1 -1
  12. package/components/FileManager.d.ts +60 -19
  13. package/components/FileManager.js +88 -110
  14. package/components/FileManager.js.map +1 -1
  15. package/components/OverlayLayout/OverlayLayout.d.ts +1 -1
  16. package/components/OverlayLayout/OverlayLayout.js.map +1 -1
  17. package/components/OverlayLayout/index.d.ts +1 -1
  18. package/components/OverlayLayout/index.js +12 -7
  19. package/components/OverlayLayout/index.js.map +1 -1
  20. package/components/RichTextEditor/RichTextEditor.js +2 -2
  21. package/components/RichTextEditor/RichTextEditor.js.map +1 -1
  22. package/components/SingleImageUpload.d.ts +42 -6
  23. package/components/SingleImageUpload.js +68 -73
  24. package/components/SingleImageUpload.js.map +1 -1
  25. package/index.d.ts +4 -0
  26. package/index.js +50 -0
  27. package/index.js.map +1 -1
  28. package/package.json +16 -15
  29. package/plugins/fileManager/fileImage/DeleteAction.d.ts +2 -2
  30. package/plugins/fileManager/fileImage/DeleteAction.js.map +1 -1
  31. package/plugins/fileManager/fileImage/EditAction.js +2 -2
  32. package/plugins/fileManager/fileImage/EditAction.js.map +1 -1
  33. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js +9 -11
  34. package/ui/elements/form/FileManagerElement/FileManagerElementRenderer.js.map +1 -1
  35. package/ui/elements/form/FileManagerElement/styled.d.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":["ImageUploadWrapper","styled","position","opacity","pointerEvents","transform","top","left","color","SingleImageUpload","props","className","onChange","value","validation","label","description","accept","onChangePick","maxSize","multipleMaxCount","multipleMaxSize","imagePreviewProps","round","validationIsValid","isValid","validationMessage","message","showFileManager","renderImageProps","width","height","React","Component"],"sources":["SingleImageUpload.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Image } from \"@webiny/app/components/Image\";\nimport * as Ui from \"@webiny/ui/ImageUpload\";\nimport { FileManager } from \"./FileManager\";\nimport { FormComponentProps } from \"@webiny/ui/types\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport styled from \"@emotion/styled\";\n\nconst ImageUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-floating-label--float-above\": {\n transform: \"scale(0.75)\",\n top: 10,\n left: 10,\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\nexport interface SingleImageUploadProps extends FormComponentProps {\n // Accept types\n accept?: string[];\n\n // Component label.\n label?: string;\n\n // Is component disabled?\n disabled?: boolean;\n\n // Description beneath the image.\n description?: React.ReactNode;\n\n // A className for the root element.\n className?: string;\n\n // Define file's max allowed size (default is \"10mb\").\n // Uses \"bytes\" (https://www.npmjs.com/package/bytes) library to convert string notation to actual number.\n maxSize?: number | string;\n\n // Max number of files in a single batch.\n multipleMaxCount?: number;\n\n // Max size of files in a single batch.\n multipleMaxSize?: number | string;\n\n // onChange callback.\n onChange?: (value: any) => void;\n\n // Optional custom props, passed to the preview image.\n imagePreviewProps?: any;\n\n // Is the wrapper round?\n round?: boolean;\n\n // Define the needed properties that are returned on file(s) selection.\n onChangePick?: string[];\n}\n\nexport default class SingleImageUpload extends React.Component<SingleImageUploadProps> {\n public override render() {\n const {\n className,\n onChange,\n value,\n validation,\n label,\n description,\n accept,\n onChangePick,\n maxSize,\n multipleMaxCount,\n multipleMaxSize,\n imagePreviewProps,\n round\n } = this.props;\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n return (\n <ImageUploadWrapper className={className}>\n {label && (\n <div className=\"mdc-floating-label mdc-floating-label--float-above\">\n {label}\n </div>\n )}\n\n <FileManager\n onChange={onChange}\n onChangePick={onChangePick}\n accept={accept}\n images={!accept}\n maxSize={maxSize}\n multipleMaxCount={multipleMaxCount}\n multipleMaxSize={multipleMaxSize}\n >\n {({ showFileManager }) => (\n <Ui.Image\n renderImagePreview={renderImageProps => (\n <Image {...renderImageProps} {...imagePreviewProps} />\n )}\n style={{ width: \"100%\", height: \"auto\" }}\n value={value}\n uploadImage={showFileManager}\n removeImage={onChange}\n round={round}\n />\n )}\n </FileManager>\n\n {validationIsValid === false && (\n <FormElementMessage error>{validationMessage}</FormElementMessage>\n )}\n {validationIsValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </ImageUploadWrapper>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA,IAAMA,kBAAkB,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACrCC,QAAQ,EAAE,UAD2B;EAErC,aAAa;IACTC,OAAO,EAAE,IADA;IAETC,aAAa,EAAE;EAFN,CAFwB;EAMrC,oCAAoC;IAChCC,SAAS,EAAE,aADqB;IAEhCC,GAAG,EAAE,EAF2B;IAGhCC,IAAI,EAAE,EAH0B;IAIhCC,KAAK,EAAE;EAJyB,CANC;EAYrC,+BAA+B;IAC3BA,KAAK,EAAE;EADoB;AAZM,CAAjB,CAAxB;;IAwDqBC,iB;;;;;;;;;;;;WACjB,kBAAyB;MACrB,kBAcI,KAAKC,KAdT;MAAA,IACIC,SADJ,eACIA,SADJ;MAAA,IAEIC,QAFJ,eAEIA,QAFJ;MAAA,IAGIC,KAHJ,eAGIA,KAHJ;MAAA,IAIIC,UAJJ,eAIIA,UAJJ;MAAA,IAKIC,KALJ,eAKIA,KALJ;MAAA,IAMIC,WANJ,eAMIA,WANJ;MAAA,IAOIC,MAPJ,eAOIA,MAPJ;MAAA,IAQIC,YARJ,eAQIA,YARJ;MAAA,IASIC,OATJ,eASIA,OATJ;MAAA,IAUIC,gBAVJ,eAUIA,gBAVJ;MAAA,IAWIC,eAXJ,eAWIA,eAXJ;MAAA,IAYIC,iBAZJ,eAYIA,iBAZJ;MAAA,IAaIC,KAbJ,eAaIA,KAbJ;;MAgBA,WAAmET,UAAU,IAAI,EAAjF;MAAA,IAAiBU,iBAAjB,QAAQC,OAAR;MAAA,IAA6CC,iBAA7C,QAAoCC,OAApC;;MAEA,oBACI,oBAAC,kBAAD;QAAoB,SAAS,EAAEhB;MAA/B,GACKI,KAAK,iBACF;QAAK,SAAS,EAAC;MAAf,GACKA,KADL,CAFR,eAOI,oBAAC,wBAAD;QACI,QAAQ,EAAEH,QADd;QAEI,YAAY,EAAEM,YAFlB;QAGI,MAAM,EAAED,MAHZ;QAII,MAAM,EAAE,CAACA,MAJb;QAKI,OAAO,EAAEE,OALb;QAMI,gBAAgB,EAAEC,gBANtB;QAOI,eAAe,EAAEC;MAPrB,GASK;QAAA,IAAGO,eAAH,SAAGA,eAAH;QAAA,oBACG,oBAAC,EAAD,CAAI,KAAJ;UACI,kBAAkB,EAAE,4BAAAC,gBAAgB;YAAA,oBAChC,oBAAC,YAAD,oBAAWA,gBAAX,EAAiCP,iBAAjC,EADgC;UAAA,CADxC;UAII,KAAK,EAAE;YAAEQ,KAAK,EAAE,MAAT;YAAiBC,MAAM,EAAE;UAAzB,CAJX;UAKI,KAAK,EAAElB,KALX;UAMI,WAAW,EAAEe,eANjB;UAOI,WAAW,EAAEhB,QAPjB;UAQI,KAAK,EAAEW;QARX,EADH;MAAA,CATL,CAPJ,EA8BKC,iBAAiB,KAAK,KAAtB,iBACG,oBAAC,sCAAD;QAAoB,KAAK;MAAzB,GAA2BE,iBAA3B,CA/BR,EAiCKF,iBAAiB,KAAK,KAAtB,IAA+BR,WAA/B,iBACG,oBAAC,sCAAD,QAAqBA,WAArB,CAlCR,CADJ;IAuCH;;;EA3D0CgB,KAAK,CAACC,S"}
1
+ {"version":3,"names":["ImageUploadWrapper","styled","position","opacity","pointerEvents","transform","top","left","color","SingleImageUpload","props","className","value","validation","label","description","accept","includeFileMeta","maxSize","imagePreviewProps","round","validationIsValid","isValid","validationMessage","message","onChange","useCallback","id","src","showFileManager","renderImageProps","width","height"],"sources":["SingleImageUpload.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Image } from \"@webiny/app/components/Image\";\nimport * as Ui from \"@webiny/ui/ImageUpload\";\nimport { FileManager, FileManagerFileItem } from \"./FileManager\";\nimport { FormComponentProps } from \"@webiny/ui/types\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport styled from \"@emotion/styled\";\nimport { useCallback } from \"react\";\n\nconst ImageUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-floating-label--float-above\": {\n transform: \"scale(0.75)\",\n top: 10,\n left: 10,\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\nexport interface SingleImageUploadProps extends FormComponentProps {\n /**\n * Accept types\n */\n accept?: string[];\n\n /**\n * Component label.\n */\n label?: string;\n\n /**\n * Is component disabled?\n */\n disabled?: boolean;\n\n /**\n * Description beneath the image.\n */\n description?: React.ReactNode;\n\n /**\n * A className for the root element.\n */\n className?: string;\n\n /**\n * Define file's max allowed size (default is \"10mb\").\n * Uses \"bytes\" (https://www.npmjs.com/package/bytes) library to convert string notation to actual number.\n */\n maxSize?: number | string;\n\n /**\n * onChange callback when a file is set or unset.\n * It is marked as `optional` because this component is often used in conjunction with <Bind>, which injects the\n * `onChange` into its child element. In that case, that prop is not passed by the developer.\n */\n onChange?: (value: FileManagerFileItem | null) => void;\n\n /**\n * Optional custom props, passed to the preview image.\n */\n imagePreviewProps?: any;\n\n /**\n * By default, file meta is not included in the data passed to `onChange`. If you need it, set this flag to true.\n */\n includeFileMeta?: boolean;\n\n /**\n * Is the wrapper round?\n */\n round?: boolean;\n\n /**\n * Define the properties that are returned on file(s) selection.\n * @deprecated Pick the desired file attributes in the `onChange` callback, or `beforeChange` on the `<Bind>` element.\n */\n onChangePick?: string[];\n}\n\nconst SingleImageUpload: React.FC<SingleImageUploadProps> = props => {\n const {\n className,\n value,\n validation,\n label,\n description,\n accept,\n includeFileMeta = false,\n maxSize,\n imagePreviewProps,\n round\n } = props;\n\n const { isValid: validationIsValid, message: validationMessage } = validation || {};\n\n const onChange = useCallback(\n (value: FileManagerFileItem | null) => {\n if (!props.onChange) {\n return;\n }\n\n if (value && !includeFileMeta) {\n props.onChange({ id: value.id, src: value.src });\n return;\n }\n\n if (value && includeFileMeta) {\n props.onChange(value);\n return;\n }\n\n props.onChange(null);\n },\n [props.onChange]\n );\n\n return (\n <ImageUploadWrapper className={className}>\n {label && (\n <div className=\"mdc-floating-label mdc-floating-label--float-above\">{label}</div>\n )}\n\n <FileManager\n onChange={onChange}\n accept={accept}\n images={!accept}\n maxSize={maxSize}\n render={({ showFileManager }) => (\n <Ui.Image\n renderImagePreview={renderImageProps => (\n <Image {...renderImageProps} {...imagePreviewProps} />\n )}\n style={{ width: \"100%\", height: \"auto\" }}\n value={value}\n uploadImage={showFileManager}\n removeImage={() => onChange(null)}\n round={round}\n />\n )}\n />\n\n {validationIsValid === false && (\n <FormElementMessage error>{validationMessage}</FormElementMessage>\n )}\n {validationIsValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </ImageUploadWrapper>\n );\n};\n\nexport default SingleImageUpload;\n"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -25,6 +25,10 @@ export * from "./base/plugins/AddGraphQLQuerySelection";
25
25
  export * from "./plugins/FileManagerFileTypePlugin";
26
26
  export * from "./plugins/PermissionRendererPlugin";
27
27
  export { AppInstaller } from "./components/AppInstaller";
28
+ export { OverlayLayout, OverlayLayoutProps } from "./components/OverlayLayout";
29
+ export { default as SingleImageUpload, SingleImageUploadProps } from "./components/SingleImageUpload";
30
+ export { FileManager, FileManagerRenderer } from "./components/FileManager";
31
+ export type { FileManagerProps, FileManagerRendererProps, FileManagerFileItem } from "./components/FileManager";
28
32
  export * from "./hooks/useSnackbar";
29
33
  export * from "./hooks/useConfirmationDialog";
30
34
  export * from "./hooks/useDialog";
package/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,6 +9,12 @@ var _exportNames = {
7
9
  Admin: true,
8
10
  useViewComposition: true,
9
11
  AppInstaller: true,
12
+ OverlayLayout: true,
13
+ OverlayLayoutProps: true,
14
+ SingleImageUpload: true,
15
+ SingleImageUploadProps: true,
16
+ FileManager: true,
17
+ FileManagerRenderer: true,
10
18
  useWcp: true
11
19
  };
12
20
  Object.defineProperty(exports, "Admin", {
@@ -21,6 +29,42 @@ Object.defineProperty(exports, "AppInstaller", {
21
29
  return _AppInstaller.AppInstaller;
22
30
  }
23
31
  });
32
+ Object.defineProperty(exports, "FileManager", {
33
+ enumerable: true,
34
+ get: function get() {
35
+ return _FileManager.FileManager;
36
+ }
37
+ });
38
+ Object.defineProperty(exports, "FileManagerRenderer", {
39
+ enumerable: true,
40
+ get: function get() {
41
+ return _FileManager.FileManagerRenderer;
42
+ }
43
+ });
44
+ Object.defineProperty(exports, "OverlayLayout", {
45
+ enumerable: true,
46
+ get: function get() {
47
+ return _OverlayLayout.OverlayLayout;
48
+ }
49
+ });
50
+ Object.defineProperty(exports, "OverlayLayoutProps", {
51
+ enumerable: true,
52
+ get: function get() {
53
+ return _OverlayLayout.OverlayLayoutProps;
54
+ }
55
+ });
56
+ Object.defineProperty(exports, "SingleImageUpload", {
57
+ enumerable: true,
58
+ get: function get() {
59
+ return _SingleImageUpload.default;
60
+ }
61
+ });
62
+ Object.defineProperty(exports, "SingleImageUploadProps", {
63
+ enumerable: true,
64
+ get: function get() {
65
+ return _SingleImageUpload.SingleImageUploadProps;
66
+ }
67
+ });
24
68
  Object.defineProperty(exports, "useViewComposition", {
25
69
  enumerable: true,
26
70
  get: function get() {
@@ -278,6 +322,12 @@ Object.keys(_PermissionRendererPlugin).forEach(function (key) {
278
322
 
279
323
  var _AppInstaller = require("./components/AppInstaller");
280
324
 
325
+ var _OverlayLayout = require("./components/OverlayLayout");
326
+
327
+ var _SingleImageUpload = _interopRequireWildcard(require("./components/SingleImageUpload"));
328
+
329
+ var _FileManager = require("./components/FileManager");
330
+
281
331
  var _useSnackbar = require("./hooks/useSnackbar");
282
332
 
283
333
  Object.keys(_useSnackbar).forEach(function (key) {
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"@webiny/app-admin-core\";\nexport type { HigherOrderComponent, ProviderProps, ComposeProps } from \"@webiny/app-admin-core\";\n// UI components\nexport * from \"./base/ui/Tags\";\nexport * from \"./base/ui/Menu\";\nexport * from \"./base/ui/Layout\";\nexport * from \"./base/ui/LocaleSelector\";\nexport type { LayoutProps } from \"./base/ui/Layout\";\nexport * from \"./base/ui/Navigation\";\nexport type { MenuItemsProps } from \"./base/ui/Navigation\";\nexport * from \"./base/ui/Brand\";\nexport * from \"./base/ui/Logo\";\nexport * from \"./base/ui/Search\";\nexport type { SearchOptionData, SearchOptionProps } from \"./base/ui/Search\";\nexport * from \"./base/ui/UserMenu\";\nexport type { UserMenuItemProps } from \"./base/ui/UserMenu\";\nexport * from \"./base/ui/LoginScreen\";\nexport * from \"./base/ui/CenteredView\";\nexport * from \"./base/ui/Dashboard\";\nexport * from \"./base/ui/NotFound\";\n\n// Base admin app\nexport { Admin } from \"./base/Admin\";\nexport type { AdminProps } from \"./base/Admin\";\nexport { useViewComposition } from \"./base/providers/ViewCompositionProvider\";\nexport type { ViewCompositionContext, ViewElement } from \"./base/providers/ViewCompositionProvider\";\n\n// Plugins\nexport * from \"./base/plugins/AddGraphQLQuerySelection\";\nexport * from \"./plugins/FileManagerFileTypePlugin\";\nexport * from \"./plugins/PermissionRendererPlugin\";\n\n// Components\nexport { AppInstaller } from \"./components/AppInstaller\";\n\n// Hooks\nexport * from \"./hooks/useSnackbar\";\nexport * from \"./hooks/useConfirmationDialog\";\nexport * from \"./hooks/useDialog\";\nexport { useWcp } from \"@webiny/app-wcp\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAEA;;AAIA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAGA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA"}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"@webiny/app-admin-core\";\nexport type { HigherOrderComponent, ProviderProps, ComposeProps } from \"@webiny/app-admin-core\";\n// UI components\nexport * from \"./base/ui/Tags\";\nexport * from \"./base/ui/Menu\";\nexport * from \"./base/ui/Layout\";\nexport * from \"./base/ui/LocaleSelector\";\nexport type { LayoutProps } from \"./base/ui/Layout\";\nexport * from \"./base/ui/Navigation\";\nexport type { MenuItemsProps } from \"./base/ui/Navigation\";\nexport * from \"./base/ui/Brand\";\nexport * from \"./base/ui/Logo\";\nexport * from \"./base/ui/Search\";\nexport type { SearchOptionData, SearchOptionProps } from \"./base/ui/Search\";\nexport * from \"./base/ui/UserMenu\";\nexport type { UserMenuItemProps } from \"./base/ui/UserMenu\";\nexport * from \"./base/ui/LoginScreen\";\nexport * from \"./base/ui/CenteredView\";\nexport * from \"./base/ui/Dashboard\";\nexport * from \"./base/ui/NotFound\";\n\n// Base admin app\nexport { Admin } from \"./base/Admin\";\nexport type { AdminProps } from \"./base/Admin\";\nexport { useViewComposition } from \"./base/providers/ViewCompositionProvider\";\nexport type { ViewCompositionContext, ViewElement } from \"./base/providers/ViewCompositionProvider\";\n\n// Plugins\nexport * from \"./base/plugins/AddGraphQLQuerySelection\";\nexport * from \"./plugins/FileManagerFileTypePlugin\";\nexport * from \"./plugins/PermissionRendererPlugin\";\n\n// Components\nexport { AppInstaller } from \"./components/AppInstaller\";\nexport { OverlayLayout, OverlayLayoutProps } from \"./components/OverlayLayout\";\nexport {\n default as SingleImageUpload,\n SingleImageUploadProps\n} from \"./components/SingleImageUpload\";\n\nexport { FileManager, FileManagerRenderer } from \"./components/FileManager\";\nexport type {\n FileManagerProps,\n FileManagerRendererProps,\n FileManagerFileItem\n} from \"./components/FileManager\";\n\n// Hooks\nexport * from \"./hooks/useSnackbar\";\nexport * from \"./hooks/useConfirmationDialog\";\nexport * from \"./hooks/useDialog\";\nexport { useWcp } from \"@webiny/app-wcp\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAEA;;AAIA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AACA;;AACA;;AAKA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-admin",
3
- "version": "5.32.0",
3
+ "version": "5.33.0-beta.0",
4
4
  "main": "index.js",
5
5
  "description": "A collection of plugins that together form a complete admin interface, customizable and extensible with Webiny apps and plugins.",
6
6
  "repository": {
@@ -20,17 +20,18 @@
20
20
  "@svgr/webpack": "6.3.1",
21
21
  "@types/mime": "2.0.3",
22
22
  "@types/react": "17.0.39",
23
- "@webiny/app": "5.32.0",
24
- "@webiny/app-admin-core": "5.32.0",
25
- "@webiny/app-security": "5.32.0",
26
- "@webiny/app-wcp": "5.32.0",
27
- "@webiny/form": "5.32.0",
28
- "@webiny/plugins": "5.32.0",
29
- "@webiny/react-router": "5.32.0",
30
- "@webiny/telemetry": "5.32.0",
31
- "@webiny/ui": "5.32.0",
32
- "@webiny/ui-composer": "5.32.0",
33
- "@webiny/validation": "5.32.0",
23
+ "@webiny/app": "5.33.0-beta.0",
24
+ "@webiny/app-admin-core": "5.33.0-beta.0",
25
+ "@webiny/app-security": "5.33.0-beta.0",
26
+ "@webiny/app-wcp": "5.33.0-beta.0",
27
+ "@webiny/form": "5.33.0-beta.0",
28
+ "@webiny/plugins": "5.33.0-beta.0",
29
+ "@webiny/react-composition": "5.33.0-beta.0",
30
+ "@webiny/react-router": "5.33.0-beta.0",
31
+ "@webiny/telemetry": "5.33.0-beta.0",
32
+ "@webiny/ui": "5.33.0-beta.0",
33
+ "@webiny/ui-composer": "5.33.0-beta.0",
34
+ "@webiny/validation": "5.33.0-beta.0",
34
35
  "apollo-cache": "1.3.5",
35
36
  "apollo-client": "2.6.10",
36
37
  "apollo-link": "1.2.14",
@@ -70,8 +71,8 @@
70
71
  "@types/bytes": "^3.1.1",
71
72
  "@types/graphlib": "^2.1.8",
72
73
  "@types/store": "^2.0.2",
73
- "@webiny/cli": "^5.32.0",
74
- "@webiny/project-utils": "^5.32.0",
74
+ "@webiny/cli": "^5.33.0-beta.0",
75
+ "@webiny/project-utils": "^5.33.0-beta.0",
75
76
  "babel-plugin-emotion": "^9.2.8",
76
77
  "babel-plugin-lodash": "^3.3.4",
77
78
  "rimraf": "^3.0.2",
@@ -98,5 +99,5 @@
98
99
  ]
99
100
  }
100
101
  },
101
- "gitHead": "1227aa53c68afa4ccd518c8a4344195a2b8e354b"
102
+ "gitHead": "8809a70796e5117e92416d6859c1f5dcae2a8c98"
102
103
  }
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { FileItem } from "../../../components/FileManager/types";
2
+ import { FileManagerFileItem } from "../../../components/FileManager";
3
3
  interface DeleteActionProps {
4
- file: FileItem;
4
+ file: FileManagerFileItem;
5
5
  }
6
6
  declare const DeleteAction: React.FC<DeleteActionProps>;
7
7
  export default DeleteAction;
@@ -1 +1 @@
1
- {"version":3,"names":["t","i18n","ns","DeleteAction","props","file","useSnackbar","showSnackbar","useMutation","DELETE_FILE","variables","id","deleteFile","margin"],"sources":["DeleteAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { useMutation } from \"@apollo/react-hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { FileItem } from \"~/components/FileManager/types\";\nconst t = i18n.ns(\"app-admin/file-manager/files/delete-action\");\n\nimport { ReactComponent as DeleteIcon } from \"../../../components/FileManager/icons/delete.svg\";\nimport { DELETE_FILE } from \"~/components/FileManager/graphql\";\n\ninterface DeleteActionProps {\n file: FileItem;\n}\nconst DeleteAction: React.FC<DeleteActionProps> = props => {\n const { file } = props;\n const { showSnackbar } = useSnackbar();\n const [deleteFile] = useMutation(DELETE_FILE, {\n variables: {\n id: file.id\n }\n });\n\n return (\n <>\n <Tooltip content={<span>Edit image</span>} placement={\"bottom\"}>\n <IconButton\n icon={<DeleteIcon style={{ margin: \"0 8px 0 0\" }} />}\n onClick={async () => {\n await deleteFile();\n showSnackbar(t`File deleted.`);\n }}\n />\n </Tooltip>\n </>\n );\n};\n\nexport default DeleteAction;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;;;AAHA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,4CAAR,CAAV;;AAQA,IAAMC,YAAyC,GAAG,SAA5CA,YAA4C,CAAAC,KAAK,EAAI;EACvD,IAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,mBAAqB,IAAAC,uBAAA,EAAYC,oBAAZ,EAAyB;IAC1CC,SAAS,EAAE;MACPC,EAAE,EAAEN,IAAI,CAACM;IADF;EAD+B,CAAzB,CAArB;EAAA;EAAA,IAAOC,UAAP;;EAMA,oBACI,yEACI,6BAAC,gBAAD;IAAS,OAAO,eAAE,wDAAlB;IAA2C,SAAS,EAAE;EAAtD,gBACI,6BAAC,kBAAD;IACI,IAAI,eAAE,6BAAC,sBAAD;MAAY,KAAK,EAAE;QAAEC,MAAM,EAAE;MAAV;IAAnB,EADV;IAEI,OAAO,sGAAE;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACCD,UAAU,EADX;;YAAA;cAELL,YAAY,CAACP,CAAD,iGAAZ;;YAFK;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAF;EAFX,EADJ,CADJ,CADJ;AAaH,CAtBD;;eAwBeG,Y"}
1
+ {"version":3,"names":["t","i18n","ns","DeleteAction","props","file","useSnackbar","showSnackbar","useMutation","DELETE_FILE","variables","id","deleteFile","margin"],"sources":["DeleteAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { useMutation } from \"@apollo/react-hooks\";\nimport { i18n } from \"@webiny/app/i18n\";\nimport { FileManagerFileItem } from \"~/components/FileManager\";\nconst t = i18n.ns(\"app-admin/file-manager/files/delete-action\");\n\nimport { ReactComponent as DeleteIcon } from \"../../../components/FileManager/icons/delete.svg\";\nimport { DELETE_FILE } from \"~/components/FileManager/graphql\";\n\ninterface DeleteActionProps {\n file: FileManagerFileItem;\n}\nconst DeleteAction: React.FC<DeleteActionProps> = props => {\n const { file } = props;\n const { showSnackbar } = useSnackbar();\n const [deleteFile] = useMutation(DELETE_FILE, {\n variables: {\n id: file.id\n }\n });\n\n return (\n <>\n <Tooltip content={<span>Edit image</span>} placement={\"bottom\"}>\n <IconButton\n icon={<DeleteIcon style={{ margin: \"0 8px 0 0\" }} />}\n onClick={async () => {\n await deleteFile();\n showSnackbar(t`File deleted.`);\n }}\n />\n </Tooltip>\n </>\n );\n};\n\nexport default DeleteAction;\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;;;AAHA,IAAMA,CAAC,GAAGC,UAAA,CAAKC,EAAL,CAAQ,4CAAR,CAAV;;AAQA,IAAMC,YAAyC,GAAG,SAA5CA,YAA4C,CAAAC,KAAK,EAAI;EACvD,IAAQC,IAAR,GAAiBD,KAAjB,CAAQC,IAAR;;EACA,mBAAyB,IAAAC,yBAAA,GAAzB;EAAA,IAAQC,YAAR,gBAAQA,YAAR;;EACA,mBAAqB,IAAAC,uBAAA,EAAYC,oBAAZ,EAAyB;IAC1CC,SAAS,EAAE;MACPC,EAAE,EAAEN,IAAI,CAACM;IADF;EAD+B,CAAzB,CAArB;EAAA;EAAA,IAAOC,UAAP;;EAMA,oBACI,yEACI,6BAAC,gBAAD;IAAS,OAAO,eAAE,wDAAlB;IAA2C,SAAS,EAAE;EAAtD,gBACI,6BAAC,kBAAD;IACI,IAAI,eAAE,6BAAC,sBAAD;MAAY,KAAK,EAAE;QAAEC,MAAM,EAAE;MAAV;IAAnB,EADV;IAEI,OAAO,sGAAE;MAAA;QAAA;UAAA;YAAA;cAAA;cAAA,OACCD,UAAU,EADX;;YAAA;cAELL,YAAY,CAACP,CAAD,iGAAZ;;YAFK;YAAA;cAAA;UAAA;QAAA;MAAA;IAAA,CAAF;EAFX,EADJ,CADJ,CADJ;AAaH,CAtBD;;eAwBeG,Y"}
@@ -29,7 +29,7 @@ var _Tooltip = require("@webiny/ui/Tooltip");
29
29
 
30
30
  var _Button = require("@webiny/ui/Button");
31
31
 
32
- var _outputFileSelectionError = _interopRequireDefault(require("../../../components/FileManager/outputFileSelectionError"));
32
+ var _outputFileSelectionError = require("../../../components/FileManager/outputFileSelectionError");
33
33
 
34
34
  var _useSnackbar2 = require("../../../hooks/useSnackbar");
35
35
 
@@ -162,7 +162,7 @@ var EditAction = function EditAction(props) {
162
162
  * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError
163
163
  */
164
164
  // @ts-ignore
165
- showSnackbar((0, _outputFileSelectionError.default)(errors));
165
+ showSnackbar((0, _outputFileSelectionError.outputFileSelectionError)(errors));
166
166
  } else {
167
167
  blob.name = file.name;
168
168
  uploadFile(blob);
@@ -1 +1 @@
1
- {"version":3,"names":["toDataUrl","url","Promise","resolve","xhr","window","XMLHttpRequest","onload","reader","FileReader","onloadend","result","readAsDataURL","response","open","responseType","send","initialState","showImageEditor","dataUrl","reducer","state","action","next","type","EditAction","props","file","uploadFile","validateFiles","canEdit","React","useReducer","dispatch","useSnackbar","showSnackbar","margin","src","blob","dataURLtoBlob","errors","length","outputFileSelectionError","name"],"sources":["EditAction.tsx"],"sourcesContent":["import * as React from \"react\";\n/**\n * Package react-hotkeyz has no types.\n */\n// @ts-ignore\nimport { Hotkeys } from \"react-hotkeyz\";\n/**\n * Package dataurl-to-blob has no types.\n */\n// @ts-ignore\nimport dataURLtoBlob from \"dataurl-to-blob\";\nimport { ImageEditorDialog } from \"@webiny/ui/ImageUpload\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport outputFileSelectionError from \"../../../components/FileManager/outputFileSelectionError\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { ReactComponent as EditIcon } from \"../icons/edit.svg\";\nimport { FileItem } from \"~/components/FileManager/types\";\n\nfunction toDataUrl(url: string): Promise<string> {\n return new Promise((resolve: (value: string) => void) => {\n const xhr = new window.XMLHttpRequest();\n xhr.onload = function () {\n const reader = new window.FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n });\n}\ninterface State {\n showImageEditor: boolean;\n dataUrl: string | null;\n}\ninterface Action {\n type: \"setDataUrl\" | \"hideImageEditor\";\n dataUrl?: string | null;\n}\nconst initialState: State = {\n showImageEditor: false,\n dataUrl: null\n};\nconst reducer = (state: State, action: Action): State => {\n const next: State = { ...state };\n\n switch (action.type) {\n case \"setDataUrl\":\n next.dataUrl = action.dataUrl as string;\n next.showImageEditor = true;\n break;\n case \"hideImageEditor\":\n next.dataUrl = null;\n next.showImageEditor = false;\n break;\n }\n\n return next;\n};\n\ninterface EditActionProps {\n file: FileItem;\n uploadFile: (file: FileItem) => void;\n validateFiles: (blobs: any[]) => Error[];\n canEdit: (file: FileItem) => boolean;\n}\n\nconst EditAction: React.FC<EditActionProps> = props => {\n const { file, uploadFile, validateFiles, canEdit } = props;\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const { showSnackbar } = useSnackbar();\n // Render nothing if the user don't have required permission for \"edit\".\n if (!canEdit(file)) {\n return null;\n }\n\n return (\n <>\n <Tooltip content={<span>Edit image</span>} placement={\"bottom\"}>\n <IconButton\n data-testid={\"fm-edit-image-button\"}\n icon={<EditIcon style={{ margin: \"0 8px 0 0\" }} />}\n onClick={async () => {\n const dataUrl = await toDataUrl(file.src);\n dispatch({ type: \"setDataUrl\", dataUrl });\n }}\n />\n </Tooltip>\n <Hotkeys zIndex={60} disabled={!state.dataUrl}>\n <ImageEditorDialog\n data-testid={\"fm-image-editor-dialog\"}\n dialogZIndex={100}\n open={state.showImageEditor}\n src={state.dataUrl as string}\n onClose={() => dispatch({ type: \"hideImageEditor\" })}\n onAccept={src => {\n const blob = dataURLtoBlob(src);\n const errors = validateFiles([blob]);\n\n if (errors.length) {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n showSnackbar(outputFileSelectionError(errors));\n } else {\n blob.name = file.name;\n uploadFile(blob);\n }\n\n dispatch({ type: \"hideImageEditor\" });\n }}\n />\n </Hotkeys>\n </>\n );\n};\n\nexport default EditAction;\n"],"mappings":"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"}
1
+ {"version":3,"names":["toDataUrl","url","Promise","resolve","xhr","window","XMLHttpRequest","onload","reader","FileReader","onloadend","result","readAsDataURL","response","open","responseType","send","initialState","showImageEditor","dataUrl","reducer","state","action","next","type","EditAction","props","file","uploadFile","validateFiles","canEdit","React","useReducer","dispatch","useSnackbar","showSnackbar","margin","src","blob","dataURLtoBlob","errors","length","outputFileSelectionError","name"],"sources":["EditAction.tsx"],"sourcesContent":["import * as React from \"react\";\n/**\n * Package react-hotkeyz has no types.\n */\n// @ts-ignore\nimport { Hotkeys } from \"react-hotkeyz\";\n/**\n * Package dataurl-to-blob has no types.\n */\n// @ts-ignore\nimport dataURLtoBlob from \"dataurl-to-blob\";\nimport { ImageEditorDialog } from \"@webiny/ui/ImageUpload\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { outputFileSelectionError } from \"~/components/FileManager/outputFileSelectionError\";\nimport { useSnackbar } from \"~/hooks/useSnackbar\";\nimport { ReactComponent as EditIcon } from \"../icons/edit.svg\";\nimport { FileItem } from \"~/components/FileManager/types\";\n\nfunction toDataUrl(url: string): Promise<string> {\n return new Promise((resolve: (value: string) => void) => {\n const xhr = new window.XMLHttpRequest();\n xhr.onload = function () {\n const reader = new window.FileReader();\n reader.onloadend = function () {\n resolve(reader.result as string);\n };\n reader.readAsDataURL(xhr.response);\n };\n xhr.open(\"GET\", url);\n xhr.responseType = \"blob\";\n xhr.send();\n });\n}\ninterface State {\n showImageEditor: boolean;\n dataUrl: string | null;\n}\ninterface Action {\n type: \"setDataUrl\" | \"hideImageEditor\";\n dataUrl?: string | null;\n}\nconst initialState: State = {\n showImageEditor: false,\n dataUrl: null\n};\nconst reducer = (state: State, action: Action): State => {\n const next: State = { ...state };\n\n switch (action.type) {\n case \"setDataUrl\":\n next.dataUrl = action.dataUrl as string;\n next.showImageEditor = true;\n break;\n case \"hideImageEditor\":\n next.dataUrl = null;\n next.showImageEditor = false;\n break;\n }\n\n return next;\n};\n\ninterface EditActionProps {\n file: FileItem;\n uploadFile: (file: FileItem) => void;\n validateFiles: (blobs: any[]) => Error[];\n canEdit: (file: FileItem) => boolean;\n}\n\nconst EditAction: React.FC<EditActionProps> = props => {\n const { file, uploadFile, validateFiles, canEdit } = props;\n const [state, dispatch] = React.useReducer(reducer, initialState);\n const { showSnackbar } = useSnackbar();\n // Render nothing if the user don't have required permission for \"edit\".\n if (!canEdit(file)) {\n return null;\n }\n\n return (\n <>\n <Tooltip content={<span>Edit image</span>} placement={\"bottom\"}>\n <IconButton\n data-testid={\"fm-edit-image-button\"}\n icon={<EditIcon style={{ margin: \"0 8px 0 0\" }} />}\n onClick={async () => {\n const dataUrl = await toDataUrl(file.src);\n dispatch({ type: \"setDataUrl\", dataUrl });\n }}\n />\n </Tooltip>\n <Hotkeys zIndex={60} disabled={!state.dataUrl}>\n <ImageEditorDialog\n data-testid={\"fm-image-editor-dialog\"}\n dialogZIndex={100}\n open={state.showImageEditor}\n src={state.dataUrl as string}\n onClose={() => dispatch({ type: \"hideImageEditor\" })}\n onAccept={src => {\n const blob = dataURLtoBlob(src);\n const errors = validateFiles([blob]);\n\n if (errors.length) {\n /**\n * TODO @ts-refactor\n * Figure out if incoming errors var is wrong or the one in the outputFileSelectionError\n */\n // @ts-ignore\n showSnackbar(outputFileSelectionError(errors));\n } else {\n blob.name = file.name;\n uploadFile(blob);\n }\n\n dispatch({ type: \"hideImageEditor\" });\n }}\n />\n </Hotkeys>\n </>\n );\n};\n\nexport default EditAction;\n"],"mappings":"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"}
@@ -89,20 +89,18 @@ var FileManagerElementRenderer = /*#__PURE__*/function (_UIRenderer) {
89
89
  className: "mdc-floating-label mdc-floating-label--float-above"
90
90
  }, label), /*#__PURE__*/_react.default.createElement(_components.FileManager, {
91
91
  onChange: onChange,
92
- onChangePick: element.getOnChangePickAttributes(),
93
92
  accept: accept,
94
93
  images: !accept,
95
94
  maxSize: element.getMaxSize(),
96
- multipleMaxCount: element.getMultipleMaxCount(),
97
- multipleMaxSize: element.getMultipleMaxSize()
98
- }, function (_ref3) {
99
- var showFileManager = _ref3.showFileManager;
100
- return element.getEmptyStateElement().render((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
101
- fileManagerElement: element,
102
- showFileManager: showFileManager,
103
- value: value,
104
- onChange: onChange
105
- }));
95
+ render: function render(_ref3) {
96
+ var showFileManager = _ref3.showFileManager;
97
+ return element.getEmptyStateElement().render((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
98
+ fileManagerElement: element,
99
+ showFileManager: showFileManager,
100
+ value: value,
101
+ onChange: onChange
102
+ }));
103
+ }
106
104
  }), validation.isValid === false && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, {
107
105
  error: true
108
106
  }, validation.message), validation.isValid !== false && description && /*#__PURE__*/_react.default.createElement(_FormElementMessage.FormElementMessage, null, description));
@@ -1 +1 @@
1
- {"version":3,"names":["ImageUploadWrapper","styled","position","opacity","pointerEvents","transform","top","left","color","FileManagerElementRenderer","element","props","formProps","Error","Bind","accept","getAccept","label","getLabel","description","getDescription","getName","getValidators","getDefaultValue","value","cb","onBeforeChange","form","onAfterChange","onChange","validation","getOnChangePickAttributes","getMaxSize","getMultipleMaxCount","getMultipleMaxSize","showFileManager","getEmptyStateElement","render","fileManagerElement","isValid","message","UIRenderer"],"sources":["FileManagerElementRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { UIRenderer, UIRenderParams } from \"~/ui/UIRenderer\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { FileManagerElement } from \"~/ui/elements/form/FileManagerElement\";\nimport { FileManager } from \"~/components\";\nimport { FormFieldElementRenderProps } from \"~/ui/elements/form/FormFieldElement\";\n\nconst ImageUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-floating-label--float-above\": {\n transform: \"scale(0.75)\",\n top: 10,\n left: 10,\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\nexport interface FileManagerElementRenderProps extends FormFieldElementRenderProps {\n fileManagerElement: FileManagerElement;\n value: any;\n showFileManager: () => void;\n onChange: (value: any) => void;\n}\n\nexport class FileManagerElementRenderer extends UIRenderer<\n FileManagerElement,\n FormFieldElementRenderProps\n> {\n public override render({\n element,\n props\n }: UIRenderParams<FileManagerElement, FormFieldElementRenderProps>): React.ReactNode {\n if (!props.formProps) {\n throw Error(`FileManagerElement must be placed inside of a FormElement.`);\n }\n\n const { Bind } = props.formProps;\n\n const accept = element.getAccept();\n const label = element.getLabel(props);\n const description = element.getDescription(props);\n\n return (\n <Bind\n name={element.getName()}\n validators={element.getValidators(props)}\n defaultValue={element.getDefaultValue(props)}\n beforeChange={(value: string, cb) => element.onBeforeChange(value, cb)}\n afterChange={(value: string, form) => element.onAfterChange(value, form)}\n >\n {({ value, onChange, validation }) => (\n <ImageUploadWrapper>\n {label && (\n <div className=\"mdc-floating-label mdc-floating-label--float-above\">\n {label}\n </div>\n )}\n\n <FileManager\n onChange={onChange}\n onChangePick={element.getOnChangePickAttributes()}\n accept={accept}\n images={!accept}\n maxSize={element.getMaxSize()}\n multipleMaxCount={element.getMultipleMaxCount()}\n multipleMaxSize={element.getMultipleMaxSize()}\n >\n {({ showFileManager }) =>\n element.getEmptyStateElement().render({\n ...props,\n fileManagerElement: element,\n showFileManager,\n value,\n onChange\n })\n }\n </FileManager>\n\n {validation.isValid === false && (\n <FormElementMessage error>{validation.message}</FormElementMessage>\n )}\n {validation.isValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </ImageUploadWrapper>\n )}\n </Bind>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAGA,IAAMA,kBAAkB,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACrCC,QAAQ,EAAE,UAD2B;EAErC,aAAa;IACTC,OAAO,EAAE,IADA;IAETC,aAAa,EAAE;EAFN,CAFwB;EAMrC,oCAAoC;IAChCC,SAAS,EAAE,aADqB;IAEhCC,GAAG,EAAE,EAF2B;IAGhCC,IAAI,EAAE,EAH0B;IAIhCC,KAAK,EAAE;EAJyB,CANC;EAYrC,+BAA+B;IAC3BA,KAAK,EAAE;EADoB;AAZM,CAAjB,CAAxB;;IAwBaC,0B;;;;;;;;;;;;WAIT,sBAGqF;MAAA,IAFjFC,OAEiF,QAFjFA,OAEiF;MAAA,IADjFC,KACiF,QADjFA,KACiF;;MACjF,IAAI,CAACA,KAAK,CAACC,SAAX,EAAsB;QAClB,MAAMC,KAAK,8DAAX;MACH;;MAED,IAAQC,IAAR,GAAiBH,KAAK,CAACC,SAAvB,CAAQE,IAAR;MAEA,IAAMC,MAAM,GAAGL,OAAO,CAACM,SAAR,EAAf;MACA,IAAMC,KAAK,GAAGP,OAAO,CAACQ,QAAR,CAAiBP,KAAjB,CAAd;MACA,IAAMQ,WAAW,GAAGT,OAAO,CAACU,cAAR,CAAuBT,KAAvB,CAApB;MAEA,oBACI,6BAAC,IAAD;QACI,IAAI,EAAED,OAAO,CAACW,OAAR,EADV;QAEI,UAAU,EAAEX,OAAO,CAACY,aAAR,CAAsBX,KAAtB,CAFhB;QAGI,YAAY,EAAED,OAAO,CAACa,eAAR,CAAwBZ,KAAxB,CAHlB;QAII,YAAY,EAAE,sBAACa,KAAD,EAAgBC,EAAhB;UAAA,OAAuBf,OAAO,CAACgB,cAAR,CAAuBF,KAAvB,EAA8BC,EAA9B,CAAvB;QAAA,CAJlB;QAKI,WAAW,EAAE,qBAACD,KAAD,EAAgBG,IAAhB;UAAA,OAAyBjB,OAAO,CAACkB,aAAR,CAAsBJ,KAAtB,EAA6BG,IAA7B,CAAzB;QAAA;MALjB,GAOK;QAAA,IAAGH,KAAH,SAAGA,KAAH;QAAA,IAAUK,QAAV,SAAUA,QAAV;QAAA,IAAoBC,UAApB,SAAoBA,UAApB;QAAA,oBACG,6BAAC,kBAAD,QACKb,KAAK,iBACF;UAAK,SAAS,EAAC;QAAf,GACKA,KADL,CAFR,eAOI,6BAAC,uBAAD;UACI,QAAQ,EAAEY,QADd;UAEI,YAAY,EAAEnB,OAAO,CAACqB,yBAAR,EAFlB;UAGI,MAAM,EAAEhB,MAHZ;UAII,MAAM,EAAE,CAACA,MAJb;UAKI,OAAO,EAAEL,OAAO,CAACsB,UAAR,EALb;UAMI,gBAAgB,EAAEtB,OAAO,CAACuB,mBAAR,EANtB;UAOI,eAAe,EAAEvB,OAAO,CAACwB,kBAAR;QAPrB,GASK;UAAA,IAAGC,eAAH,SAAGA,eAAH;UAAA,OACGzB,OAAO,CAAC0B,oBAAR,GAA+BC,MAA/B,6DACO1B,KADP;YAEI2B,kBAAkB,EAAE5B,OAFxB;YAGIyB,eAAe,EAAfA,eAHJ;YAIIX,KAAK,EAALA,KAJJ;YAKIK,QAAQ,EAARA;UALJ,GADH;QAAA,CATL,CAPJ,EA2BKC,UAAU,CAACS,OAAX,KAAuB,KAAvB,iBACG,6BAAC,sCAAD;UAAoB,KAAK;QAAzB,GAA2BT,UAAU,CAACU,OAAtC,CA5BR,EA8BKV,UAAU,CAACS,OAAX,KAAuB,KAAvB,IAAgCpB,WAAhC,iBACG,6BAAC,sCAAD,QAAqBA,WAArB,CA/BR,CADH;MAAA,CAPL,CADJ;IA8CH;;;EAhE2CsB,uB"}
1
+ {"version":3,"names":["ImageUploadWrapper","styled","position","opacity","pointerEvents","transform","top","left","color","FileManagerElementRenderer","element","props","formProps","Error","Bind","accept","getAccept","label","getLabel","description","getDescription","getName","getValidators","getDefaultValue","value","cb","onBeforeChange","form","onAfterChange","onChange","validation","getMaxSize","showFileManager","getEmptyStateElement","render","fileManagerElement","isValid","message","UIRenderer"],"sources":["FileManagerElementRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport styled from \"@emotion/styled\";\nimport { UIRenderer, UIRenderParams } from \"~/ui/UIRenderer\";\nimport { FormElementMessage } from \"@webiny/ui/FormElementMessage\";\nimport { FileManagerElement } from \"~/ui/elements/form/FileManagerElement\";\nimport { FileManager } from \"~/components\";\nimport { FormFieldElementRenderProps } from \"~/ui/elements/form/FormFieldElement\";\n\nconst ImageUploadWrapper = styled(\"div\")({\n position: \"relative\",\n \".disabled\": {\n opacity: 0.75,\n pointerEvents: \"none\"\n },\n \".mdc-floating-label--float-above\": {\n transform: \"scale(0.75)\",\n top: 10,\n left: 10,\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n },\n \".mdc-text-field-helper-text\": {\n color: \"var(--mdc-theme-text-secondary-on-background)\"\n }\n});\n\nexport interface FileManagerElementRenderProps extends FormFieldElementRenderProps {\n fileManagerElement: FileManagerElement;\n value: any;\n showFileManager: () => void;\n onChange: (value: any) => void;\n}\n\nexport class FileManagerElementRenderer extends UIRenderer<\n FileManagerElement,\n FormFieldElementRenderProps\n> {\n public override render({\n element,\n props\n }: UIRenderParams<FileManagerElement, FormFieldElementRenderProps>): React.ReactNode {\n if (!props.formProps) {\n throw Error(`FileManagerElement must be placed inside of a FormElement.`);\n }\n\n const { Bind } = props.formProps;\n\n const accept = element.getAccept();\n const label = element.getLabel(props);\n const description = element.getDescription(props);\n\n return (\n <Bind\n name={element.getName()}\n validators={element.getValidators(props)}\n defaultValue={element.getDefaultValue(props)}\n beforeChange={(value: string, cb) => element.onBeforeChange(value, cb)}\n afterChange={(value: string, form) => element.onAfterChange(value, form)}\n >\n {({ value, onChange, validation }) => (\n <ImageUploadWrapper>\n {label && (\n <div className=\"mdc-floating-label mdc-floating-label--float-above\">\n {label}\n </div>\n )}\n\n <FileManager\n onChange={onChange}\n accept={accept}\n images={!accept}\n maxSize={element.getMaxSize()}\n render={({ showFileManager }) =>\n element.getEmptyStateElement().render({\n ...props,\n fileManagerElement: element,\n showFileManager,\n value,\n onChange\n })\n }\n />\n\n {validation.isValid === false && (\n <FormElementMessage error>{validation.message}</FormElementMessage>\n )}\n {validation.isValid !== false && description && (\n <FormElementMessage>{description}</FormElementMessage>\n )}\n </ImageUploadWrapper>\n )}\n </Bind>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAGA,IAAMA,kBAAkB,oBAAGC,eAAH,EAAU,KAAV;EAAA;EAAA;AAAA,GAAiB;EACrCC,QAAQ,EAAE,UAD2B;EAErC,aAAa;IACTC,OAAO,EAAE,IADA;IAETC,aAAa,EAAE;EAFN,CAFwB;EAMrC,oCAAoC;IAChCC,SAAS,EAAE,aADqB;IAEhCC,GAAG,EAAE,EAF2B;IAGhCC,IAAI,EAAE,EAH0B;IAIhCC,KAAK,EAAE;EAJyB,CANC;EAYrC,+BAA+B;IAC3BA,KAAK,EAAE;EADoB;AAZM,CAAjB,CAAxB;;IAwBaC,0B;;;;;;;;;;;;WAIT,sBAGqF;MAAA,IAFjFC,OAEiF,QAFjFA,OAEiF;MAAA,IADjFC,KACiF,QADjFA,KACiF;;MACjF,IAAI,CAACA,KAAK,CAACC,SAAX,EAAsB;QAClB,MAAMC,KAAK,8DAAX;MACH;;MAED,IAAQC,IAAR,GAAiBH,KAAK,CAACC,SAAvB,CAAQE,IAAR;MAEA,IAAMC,MAAM,GAAGL,OAAO,CAACM,SAAR,EAAf;MACA,IAAMC,KAAK,GAAGP,OAAO,CAACQ,QAAR,CAAiBP,KAAjB,CAAd;MACA,IAAMQ,WAAW,GAAGT,OAAO,CAACU,cAAR,CAAuBT,KAAvB,CAApB;MAEA,oBACI,6BAAC,IAAD;QACI,IAAI,EAAED,OAAO,CAACW,OAAR,EADV;QAEI,UAAU,EAAEX,OAAO,CAACY,aAAR,CAAsBX,KAAtB,CAFhB;QAGI,YAAY,EAAED,OAAO,CAACa,eAAR,CAAwBZ,KAAxB,CAHlB;QAII,YAAY,EAAE,sBAACa,KAAD,EAAgBC,EAAhB;UAAA,OAAuBf,OAAO,CAACgB,cAAR,CAAuBF,KAAvB,EAA8BC,EAA9B,CAAvB;QAAA,CAJlB;QAKI,WAAW,EAAE,qBAACD,KAAD,EAAgBG,IAAhB;UAAA,OAAyBjB,OAAO,CAACkB,aAAR,CAAsBJ,KAAtB,EAA6BG,IAA7B,CAAzB;QAAA;MALjB,GAOK;QAAA,IAAGH,KAAH,SAAGA,KAAH;QAAA,IAAUK,QAAV,SAAUA,QAAV;QAAA,IAAoBC,UAApB,SAAoBA,UAApB;QAAA,oBACG,6BAAC,kBAAD,QACKb,KAAK,iBACF;UAAK,SAAS,EAAC;QAAf,GACKA,KADL,CAFR,eAOI,6BAAC,uBAAD;UACI,QAAQ,EAAEY,QADd;UAEI,MAAM,EAAEd,MAFZ;UAGI,MAAM,EAAE,CAACA,MAHb;UAII,OAAO,EAAEL,OAAO,CAACqB,UAAR,EAJb;UAKI,MAAM,EAAE;YAAA,IAAGC,eAAH,SAAGA,eAAH;YAAA,OACJtB,OAAO,CAACuB,oBAAR,GAA+BC,MAA/B,6DACOvB,KADP;cAEIwB,kBAAkB,EAAEzB,OAFxB;cAGIsB,eAAe,EAAfA,eAHJ;cAIIR,KAAK,EAALA,KAJJ;cAKIK,QAAQ,EAARA;YALJ,GADI;UAAA;QALZ,EAPJ,EAuBKC,UAAU,CAACM,OAAX,KAAuB,KAAvB,iBACG,6BAAC,sCAAD;UAAoB,KAAK;QAAzB,GAA2BN,UAAU,CAACO,OAAtC,CAxBR,EA0BKP,UAAU,CAACM,OAAX,KAAuB,KAAvB,IAAgCjB,WAAhC,iBACG,6BAAC,sCAAD,QAAqBA,WAArB,CA3BR,CADH;MAAA,CAPL,CADJ;IA0CH;;;EA5D2CmB,uB"}
@@ -7,14 +7,14 @@ export declare const AddImageWrapperRound: import("@emotion/styled-base").Styled
7
7
  theme?: object | undefined;
8
8
  } & {
9
9
  children?: import("react").ReactNode;
10
- }, "key" | "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
10
+ }, "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "theme"> & {
11
11
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
12
12
  }, Pick<Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & Pick<Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, keyof import("react").HTMLAttributes<HTMLDivElement>> & {
13
13
  theme?: object | undefined;
14
14
  } & {
15
15
  children?: import("react").ReactNode;
16
- }, "key" | "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>> & {
16
+ }, "key" | keyof import("react").HTMLAttributes<HTMLDivElement> | "theme"> & {
17
17
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
18
- }, "theme" | keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
18
+ }, keyof import("react").HTMLAttributes<HTMLDivElement> | "theme">, object>;
19
19
  export declare const RemoveImage: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;
20
20
  export declare const FilePreviewWrapper: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement>, keyof import("react").HTMLAttributes<HTMLDivElement>>, object>;