@webiny/app 0.0.0-ee-vpcs.549378cf03

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 (154) hide show
  1. package/App.d.ts +24 -0
  2. package/App.js +116 -0
  3. package/App.js.map +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +19 -0
  6. package/apollo-client/InMemoryCache.d.ts +7 -0
  7. package/apollo-client/InMemoryCache.js +79 -0
  8. package/apollo-client/InMemoryCache.js.map +1 -0
  9. package/components/Image.d.ts +3 -0
  10. package/components/Image.js +43 -0
  11. package/components/Image.js.map +1 -0
  12. package/components/Routes.d.ts +2 -0
  13. package/components/Routes.js +51 -0
  14. package/components/Routes.js.map +1 -0
  15. package/components/View.d.ts +8 -0
  16. package/components/View.js +41 -0
  17. package/components/View.js.map +1 -0
  18. package/components/index.d.ts +2 -0
  19. package/components/index.js +21 -0
  20. package/components/index.js.map +1 -0
  21. package/config.d.ts +8 -0
  22. package/config.js +33 -0
  23. package/config.js.map +1 -0
  24. package/contexts/Ui/index.d.ts +24 -0
  25. package/contexts/Ui/index.js +81 -0
  26. package/contexts/Ui/index.js.map +1 -0
  27. package/core/AddRoute.d.ts +3 -0
  28. package/core/AddRoute.js +26 -0
  29. package/core/AddRoute.js.map +1 -0
  30. package/core/DebounceRender.d.ts +11 -0
  31. package/core/DebounceRender.js +51 -0
  32. package/core/DebounceRender.js.map +1 -0
  33. package/core/Plugins.d.ts +8 -0
  34. package/core/Plugins.js +52 -0
  35. package/core/Plugins.js.map +1 -0
  36. package/core/Provider.d.ts +9 -0
  37. package/core/Provider.js +27 -0
  38. package/core/Provider.js.map +1 -0
  39. package/core/Routes.d.ts +6 -0
  40. package/core/Routes.js +49 -0
  41. package/core/Routes.js.map +1 -0
  42. package/core/createProviderPlugin.d.ts +8 -0
  43. package/core/createProviderPlugin.js +25 -0
  44. package/core/createProviderPlugin.js.map +1 -0
  45. package/hooks/useAutocomplete/index.d.ts +1 -0
  46. package/hooks/useAutocomplete/index.js +13 -0
  47. package/hooks/useAutocomplete/index.js.map +1 -0
  48. package/hooks/useAutocomplete/useAutocomplete.d.ts +11 -0
  49. package/hooks/useAutocomplete/useAutocomplete.js +38 -0
  50. package/hooks/useAutocomplete/useAutocomplete.js.map +1 -0
  51. package/hooks/useDataList/functions/getData.d.ts +2 -0
  52. package/hooks/useDataList/functions/getData.js +16 -0
  53. package/hooks/useDataList/functions/getData.js.map +1 -0
  54. package/hooks/useDataList/functions/getError.d.ts +2 -0
  55. package/hooks/useDataList/functions/getError.js +16 -0
  56. package/hooks/useDataList/functions/getError.js.map +1 -0
  57. package/hooks/useDataList/functions/getMeta.d.ts +2 -0
  58. package/hooks/useDataList/functions/getMeta.js +16 -0
  59. package/hooks/useDataList/functions/getMeta.js.map +1 -0
  60. package/hooks/useDataList/functions/index.d.ts +3 -0
  61. package/hooks/useDataList/functions/index.js +31 -0
  62. package/hooks/useDataList/functions/index.js.map +1 -0
  63. package/hooks/useDataList/functions/searchDataByKey.d.ts +2 -0
  64. package/hooks/useDataList/functions/searchDataByKey.js +29 -0
  65. package/hooks/useDataList/functions/searchDataByKey.js.map +1 -0
  66. package/hooks/useDataList/index.d.ts +1 -0
  67. package/hooks/useDataList/index.js +13 -0
  68. package/hooks/useDataList/index.js.map +1 -0
  69. package/hooks/useDataList/useDataList.d.ts +36 -0
  70. package/hooks/useDataList/useDataList.js +208 -0
  71. package/hooks/useDataList/useDataList.js.map +1 -0
  72. package/hooks/useDataList/utils/index.d.ts +2 -0
  73. package/hooks/useDataList/utils/index.js +23 -0
  74. package/hooks/useDataList/utils/index.js.map +1 -0
  75. package/hooks/useDataList/utils/prepareLoadListParams.d.ts +11 -0
  76. package/hooks/useDataList/utils/prepareLoadListParams.js +48 -0
  77. package/hooks/useDataList/utils/prepareLoadListParams.js.map +1 -0
  78. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.d.ts +14 -0
  79. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js +31 -0
  80. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js.map +1 -0
  81. package/hooks/useDataList/utils/types.d.ts +34 -0
  82. package/hooks/useDataList/utils/types.js +5 -0
  83. package/hooks/useDataList/utils/types.js.map +1 -0
  84. package/hooks/useHandler.d.ts +11 -0
  85. package/hooks/useHandler.js +20 -0
  86. package/hooks/useHandler.js.map +1 -0
  87. package/hooks/useHandlers.d.ts +11 -0
  88. package/hooks/useHandlers.js +30 -0
  89. package/hooks/useHandlers.js.map +1 -0
  90. package/hooks/useUi.d.ts +2 -0
  91. package/hooks/useUi.js +16 -0
  92. package/hooks/useUi.js.map +1 -0
  93. package/i18n/i18n.d.ts +2 -0
  94. package/i18n/i18n.js +21 -0
  95. package/i18n/i18n.js.map +1 -0
  96. package/i18n/index.d.ts +1 -0
  97. package/i18n/index.js +15 -0
  98. package/i18n/index.js.map +1 -0
  99. package/index.d.ts +13 -0
  100. package/index.js +141 -0
  101. package/index.js.map +1 -0
  102. package/package.json +78 -0
  103. package/plugins/AddQuerySelectionPlugin.d.ts +15 -0
  104. package/plugins/AddQuerySelectionPlugin.js +132 -0
  105. package/plugins/AddQuerySelectionPlugin.js.map +1 -0
  106. package/plugins/ApolloCacheObjectIdPlugin.d.ts +15 -0
  107. package/plugins/ApolloCacheObjectIdPlugin.js +53 -0
  108. package/plugins/ApolloCacheObjectIdPlugin.js.map +1 -0
  109. package/plugins/ApolloDynamicLink.d.ts +6 -0
  110. package/plugins/ApolloDynamicLink.js +83 -0
  111. package/plugins/ApolloDynamicLink.js.map +1 -0
  112. package/plugins/ApolloLinkPlugin.d.ts +13 -0
  113. package/plugins/ApolloLinkPlugin.js +63 -0
  114. package/plugins/ApolloLinkPlugin.js.map +1 -0
  115. package/plugins/ConsoleLinkPlugin.d.ts +8 -0
  116. package/plugins/ConsoleLinkPlugin.js +63 -0
  117. package/plugins/ConsoleLinkPlugin.js.map +1 -0
  118. package/plugins/LocaleHeaderLinkPlugin.d.ts +15 -0
  119. package/plugins/LocaleHeaderLinkPlugin.js +77 -0
  120. package/plugins/LocaleHeaderLinkPlugin.js.map +1 -0
  121. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.d.ts +14 -0
  122. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js +97 -0
  123. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js.map +1 -0
  124. package/plugins/NetworkErrorLinkPlugin/StyledComponents.d.ts +5 -0
  125. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js +21 -0
  126. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js.map +1 -0
  127. package/plugins/NetworkErrorLinkPlugin/assets/close_24px.svg +1 -0
  128. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.d.ts +7 -0
  129. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js +38 -0
  130. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js.map +1 -0
  131. package/plugins/NetworkErrorLinkPlugin.d.ts +7 -0
  132. package/plugins/NetworkErrorLinkPlugin.js +65 -0
  133. package/plugins/NetworkErrorLinkPlugin.js.map +1 -0
  134. package/plugins/OmitTypenameLinkPlugin.d.ts +8 -0
  135. package/plugins/OmitTypenameLinkPlugin.js +55 -0
  136. package/plugins/OmitTypenameLinkPlugin.js.map +1 -0
  137. package/plugins/RoutePlugin.d.ts +12 -0
  138. package/plugins/RoutePlugin.js +53 -0
  139. package/plugins/RoutePlugin.js.map +1 -0
  140. package/plugins/TenantHeaderLinkPlugin.d.ts +15 -0
  141. package/plugins/TenantHeaderLinkPlugin.js +85 -0
  142. package/plugins/TenantHeaderLinkPlugin.js.map +1 -0
  143. package/plugins/ViewPlugin.d.ts +14 -0
  144. package/plugins/ViewPlugin.js +58 -0
  145. package/plugins/ViewPlugin.js.map +1 -0
  146. package/plugins/image.d.ts +3 -0
  147. package/plugins/image.js +184 -0
  148. package/plugins/image.js.map +1 -0
  149. package/plugins/index.d.ts +20 -0
  150. package/plugins/index.js +110 -0
  151. package/plugins/index.js.map +1 -0
  152. package/types.d.ts +70 -0
  153. package/types.js +13 -0
  154. package/types.js.map +1 -0
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.TenantHeaderLinkPlugin = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _apolloLinkContext = require("apollo-link-context");
25
+
26
+ var _ApolloLinkPlugin2 = require("./ApolloLinkPlugin");
27
+
28
+ /**
29
+ * Append `x-tenant` header from URL query (necessary for prerendering service).
30
+ */
31
+ var TenantHeaderLinkPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
32
+ (0, _inherits2.default)(TenantHeaderLinkPlugin, _ApolloLinkPlugin);
33
+
34
+ var _super = (0, _createSuper2.default)(TenantHeaderLinkPlugin);
35
+
36
+ function TenantHeaderLinkPlugin(tenant) {
37
+ var _this;
38
+
39
+ (0, _classCallCheck2.default)(this, TenantHeaderLinkPlugin);
40
+ _this = _super.call(this);
41
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "tenant", void 0);
42
+ _this.name = "tenant-header-link";
43
+
44
+ if (!tenant) {
45
+ var query = new URLSearchParams(location.search);
46
+ tenant = query.get("__tenant") || window.__PS_RENDER_TENANT__;
47
+ }
48
+
49
+ _this.tenant = tenant;
50
+ return _this;
51
+ }
52
+
53
+ (0, _createClass2.default)(TenantHeaderLinkPlugin, [{
54
+ key: "createLink",
55
+ value: function createLink() {
56
+ var _this2 = this;
57
+
58
+ return (0, _apolloLinkContext.setContext)(function (_, _ref) {
59
+ var headers = _ref.headers;
60
+
61
+ // If tenant header is already set, do not overwrite it.
62
+ if (headers && "x-tenant" in headers) {
63
+ return {
64
+ headers: headers
65
+ };
66
+ }
67
+
68
+ if (_this2.tenant) {
69
+ return {
70
+ headers: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, headers), {}, {
71
+ "x-tenant": _this2.tenant
72
+ })
73
+ };
74
+ }
75
+
76
+ return {
77
+ headers: headers
78
+ };
79
+ });
80
+ }
81
+ }]);
82
+ return TenantHeaderLinkPlugin;
83
+ }(_ApolloLinkPlugin2.ApolloLinkPlugin);
84
+
85
+ exports.TenantHeaderLinkPlugin = TenantHeaderLinkPlugin;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TenantHeaderLinkPlugin","tenant","name","query","URLSearchParams","location","search","get","window","__PS_RENDER_TENANT__","setContext","_","headers","ApolloLinkPlugin"],"sources":["TenantHeaderLinkPlugin.ts"],"sourcesContent":["import { setContext } from \"apollo-link-context\";\nimport { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\nimport { ApolloLink } from \"apollo-link\";\n\ndeclare global {\n interface Window {\n __PS_RENDER_TENANT__: string;\n }\n}\n\n/**\n * Append `x-tenant` header from URL query (necessary for prerendering service).\n */\nexport class TenantHeaderLinkPlugin extends ApolloLinkPlugin {\n private readonly tenant: string;\n\n public constructor(tenant?: string) {\n super();\n this.name = \"tenant-header-link\";\n\n if (!tenant) {\n const query = new URLSearchParams(location.search);\n tenant = query.get(\"__tenant\") || window.__PS_RENDER_TENANT__;\n }\n\n this.tenant = tenant;\n }\n\n public override createLink(): ApolloLink {\n return setContext((_, { headers }) => {\n // If tenant header is already set, do not overwrite it.\n if (headers && \"x-tenant\" in headers) {\n return { headers };\n }\n\n if (this.tenant) {\n return {\n headers: {\n ...headers,\n \"x-tenant\": this.tenant\n }\n };\n }\n\n return { headers };\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AASA;AACA;AACA;IACaA,sB;;;;;EAGT,gCAAmBC,MAAnB,EAAoC;IAAA;;IAAA;IAChC;IADgC;IAEhC,MAAKC,IAAL,GAAY,oBAAZ;;IAEA,IAAI,CAACD,MAAL,EAAa;MACT,IAAME,KAAK,GAAG,IAAIC,eAAJ,CAAoBC,QAAQ,CAACC,MAA7B,CAAd;MACAL,MAAM,GAAGE,KAAK,CAACI,GAAN,CAAU,UAAV,KAAyBC,MAAM,CAACC,oBAAzC;IACH;;IAED,MAAKR,MAAL,GAAcA,MAAd;IATgC;EAUnC;;;;WAED,sBAAyC;MAAA;;MACrC,OAAO,IAAAS,6BAAA,EAAW,UAACC,CAAD,QAAoB;QAAA,IAAdC,OAAc,QAAdA,OAAc;;QAClC;QACA,IAAIA,OAAO,IAAI,cAAcA,OAA7B,EAAsC;UAClC,OAAO;YAAEA,OAAO,EAAPA;UAAF,CAAP;QACH;;QAED,IAAI,MAAI,CAACX,MAAT,EAAiB;UACb,OAAO;YACHW,OAAO,8DACAA,OADA;cAEH,YAAY,MAAI,CAACX;YAFd;UADJ,CAAP;QAMH;;QAED,OAAO;UAAEW,OAAO,EAAPA;QAAF,CAAP;MACH,CAhBM,CAAP;IAiBH;;;EAjCuCC,mC"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import { Plugin } from "@webiny/plugins";
3
+ interface Config<Props> {
4
+ name: string;
5
+ render(props: Props): React.ReactElement | null;
6
+ }
7
+ export declare class ViewPlugin<Props = any> extends Plugin {
8
+ static readonly type: string;
9
+ private readonly _config;
10
+ constructor(config?: Config<Props>);
11
+ get key(): string | undefined;
12
+ render(props: Props): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
13
+ }
14
+ export {};
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ViewPlugin = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+
20
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
+
22
+ var _plugins = require("@webiny/plugins");
23
+
24
+ var ViewPlugin = /*#__PURE__*/function (_Plugin) {
25
+ (0, _inherits2.default)(ViewPlugin, _Plugin);
26
+
27
+ var _super = (0, _createSuper2.default)(ViewPlugin);
28
+
29
+ function ViewPlugin(config) {
30
+ var _this;
31
+
32
+ (0, _classCallCheck2.default)(this, ViewPlugin);
33
+ _this = _super.call(this);
34
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "_config", void 0);
35
+ _this._config = config || {};
36
+ return _this;
37
+ }
38
+
39
+ (0, _createClass2.default)(ViewPlugin, [{
40
+ key: "key",
41
+ get: function get() {
42
+ return this._config.name;
43
+ }
44
+ }, {
45
+ key: "render",
46
+ value: function render(props) {
47
+ if (!this._config.render) {
48
+ return null;
49
+ }
50
+
51
+ return this._config.render(props);
52
+ }
53
+ }]);
54
+ return ViewPlugin;
55
+ }(_plugins.Plugin);
56
+
57
+ exports.ViewPlugin = ViewPlugin;
58
+ (0, _defineProperty2.default)(ViewPlugin, "type", "view");
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ViewPlugin","config","_config","name","props","render","Plugin"],"sources":["ViewPlugin.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins\";\n\ninterface Config<Props> {\n name: string;\n render(props: Props): React.ReactElement | null;\n}\n\nexport class ViewPlugin<Props = any> extends Plugin {\n public static override readonly type: string = \"view\";\n private readonly _config: Partial<Config<Props>>;\n\n public constructor(config?: Config<Props>) {\n super();\n this._config = config || {};\n }\n\n get key() {\n return this._config.name;\n }\n\n public render(props: Props) {\n if (!this._config.render) {\n return null;\n }\n return this._config.render(props);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;IAOaA,U;;;;;EAIT,oBAAmBC,MAAnB,EAA2C;IAAA;;IAAA;IACvC;IADuC;IAEvC,MAAKC,OAAL,GAAeD,MAAM,IAAI,EAAzB;IAFuC;EAG1C;;;;SAED,eAAU;MACN,OAAO,KAAKC,OAAL,CAAaC,IAApB;IACH;;;WAED,gBAAcC,KAAd,EAA4B;MACxB,IAAI,CAAC,KAAKF,OAAL,CAAaG,MAAlB,EAA0B;QACtB,OAAO,IAAP;MACH;;MACD,OAAO,KAAKH,OAAL,CAAaG,MAAb,CAAoBD,KAApB,CAAP;IACH;;;EAlBwCE,e;;;8BAAhCN,U,UACsC,M"}
@@ -0,0 +1,3 @@
1
+ import { ImageComponentPlugin } from "../types";
2
+ declare const _default: () => ImageComponentPlugin;
3
+ export default _default;
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
+
14
+ var _react = _interopRequireDefault(require("react"));
15
+
16
+ var _Image = require("@webiny/ui/Image");
17
+
18
+ var _excluded = ["transform", "srcSet"];
19
+ var SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];
20
+ /**
21
+ * Width of the image should not be just any random number. For optimization reasons,
22
+ * we only allow the ones listed in SUPPORTED_IMAGE_RESIZE_WIDTHS list (Webiny Cloud supports only these).
23
+ */
24
+
25
+ var getSupportedImageResizeWidth = function getSupportedImageResizeWidth(width) {
26
+ var output = SUPPORTED_IMAGE_RESIZE_WIDTHS[0];
27
+ var i = SUPPORTED_IMAGE_RESIZE_WIDTHS.length;
28
+
29
+ while (i >= 0) {
30
+ if (width === SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {
31
+ output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];
32
+ break;
33
+ }
34
+
35
+ if (width > SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {
36
+ // Use next larger width. If there isn't any, use current.
37
+ output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i + 1];
38
+
39
+ if (!output) {
40
+ output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];
41
+ }
42
+
43
+ break;
44
+ }
45
+
46
+ i--;
47
+ }
48
+
49
+ return output;
50
+ };
51
+
52
+ /**
53
+ * Currently we only allow "width" as a transform option.
54
+ * @param args
55
+ */
56
+ var sanitizeTransformArgs = function sanitizeTransformArgs(args) {
57
+ var output = {};
58
+
59
+ if (!args || args.width === undefined || args.width === null) {
60
+ return output;
61
+ }
62
+
63
+ var width = parseInt(args.width);
64
+
65
+ if (width > 0) {
66
+ output.width = getSupportedImageResizeWidth(width);
67
+ }
68
+
69
+ return output;
70
+ };
71
+
72
+ var getSizes = function getSizes(width) {
73
+ if (typeof width !== "string") {
74
+ return undefined;
75
+ } // Check if width was set as percentage, with "%" in the value.
76
+
77
+
78
+ if (width.endsWith("%")) {
79
+ return "".concat(parseInt(width), "vw");
80
+ } // Check if width was set as viewport width, with "vw" in the value.
81
+
82
+
83
+ if (width.endsWith("vw")) {
84
+ return "".concat(parseInt(width), "vw");
85
+ } // Check if width was set as relative, with "em" in the value.
86
+
87
+
88
+ if (width.endsWith("em")) {
89
+ return "".concat(parseInt(width), "em");
90
+ }
91
+
92
+ return undefined;
93
+ };
94
+
95
+ var isFixedImageWidth = function isFixedImageWidth(width) {
96
+ if (Number.isFinite(width)) {
97
+ return true;
98
+ }
99
+
100
+ if (typeof width === "string" && width.endsWith("px")) {
101
+ return true;
102
+ }
103
+
104
+ return false;
105
+ };
106
+
107
+ var getSrcSetAutoSizes = function getSrcSetAutoSizes(max) {
108
+ max = isFixedImageWidth(max) ? parseInt("" + max) : 2500;
109
+ var maxWidth = getSupportedImageResizeWidth(max);
110
+ return SUPPORTED_IMAGE_RESIZE_WIDTHS.filter(function (supportedWidth) {
111
+ return supportedWidth <= maxWidth;
112
+ });
113
+ };
114
+
115
+ var convertTransformToQueryParams = function convertTransformToQueryParams(transform) {
116
+ return Object.keys(transform).map(function (key) {
117
+ return "".concat(key, "=").concat(transform[key]);
118
+ }).join("&");
119
+ };
120
+
121
+ var _default = function _default() {
122
+ var imagePlugin = {
123
+ name: "image-component",
124
+ type: "image-component",
125
+ presets: {
126
+ avatar: {
127
+ width: 300
128
+ }
129
+ },
130
+ getImageSrc: function getImageSrc(props) {
131
+ if (!props) {
132
+ return "";
133
+ }
134
+
135
+ var src = props.src,
136
+ transform = props.transform;
137
+
138
+ if (!transform) {
139
+ return src;
140
+ }
141
+
142
+ if (!src || src.startsWith("data:") || src.endsWith("svg")) {
143
+ return src;
144
+ }
145
+
146
+ var sanitizedParams = sanitizeTransformArgs(transform);
147
+ var params = convertTransformToQueryParams(sanitizedParams);
148
+ return src + "?" + params;
149
+ },
150
+ render: function render(props) {
151
+ var transform = props.transform,
152
+ srcSetInitial = props.srcSet,
153
+ imageProps = (0, _objectWithoutProperties2.default)(props, _excluded);
154
+ var srcSet = srcSetInitial;
155
+ var sizes;
156
+ var src = imageProps.src;
157
+
158
+ if (srcSet && srcSet === "auto") {
159
+ srcSet = {}; // Check if image width was forced, and additionally if width was set as pixels, with "px" in the value.
160
+
161
+ var forcedWidth = props.width || props.style && props.style.width;
162
+ var srcSetAutoWidths = getSrcSetAutoSizes(forcedWidth);
163
+ srcSetAutoWidths.forEach(function (width) {
164
+ srcSet[width + "w"] = imagePlugin.getImageSrc({
165
+ src: src,
166
+ transform: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, transform), {}, {
167
+ width: width
168
+ })
169
+ });
170
+ });
171
+ sizes = getSizes(forcedWidth);
172
+ }
173
+
174
+ return /*#__PURE__*/_react.default.createElement(_Image.Image, Object.assign({}, imageProps, {
175
+ srcSet: srcSet,
176
+ src: src,
177
+ sizes: sizes
178
+ }));
179
+ }
180
+ };
181
+ return imagePlugin;
182
+ };
183
+
184
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SUPPORTED_IMAGE_RESIZE_WIDTHS","getSupportedImageResizeWidth","width","output","i","length","sanitizeTransformArgs","args","undefined","parseInt","getSizes","endsWith","isFixedImageWidth","Number","isFinite","getSrcSetAutoSizes","max","maxWidth","filter","supportedWidth","convertTransformToQueryParams","transform","Object","keys","map","key","join","imagePlugin","name","type","presets","avatar","getImageSrc","props","src","startsWith","sanitizedParams","params","render","srcSetInitial","srcSet","imageProps","sizes","forcedWidth","style","srcSetAutoWidths","forEach"],"sources":["image.tsx"],"sourcesContent":["import React from \"react\";\nimport { Image } from \"@webiny/ui/Image\";\nimport { ImageComponentPlugin } from \"~/types\";\n\nconst SUPPORTED_IMAGE_RESIZE_WIDTHS = [100, 300, 500, 750, 1000, 1500, 2500];\n\n/**\n * Width of the image should not be just any random number. For optimization reasons,\n * we only allow the ones listed in SUPPORTED_IMAGE_RESIZE_WIDTHS list (Webiny Cloud supports only these).\n */\nconst getSupportedImageResizeWidth = (width: number) => {\n let output = SUPPORTED_IMAGE_RESIZE_WIDTHS[0];\n let i = SUPPORTED_IMAGE_RESIZE_WIDTHS.length;\n while (i >= 0) {\n if (width === SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {\n output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n break;\n }\n\n if (width > SUPPORTED_IMAGE_RESIZE_WIDTHS[i]) {\n // Use next larger width. If there isn't any, use current.\n output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i + 1];\n if (!output) {\n output = SUPPORTED_IMAGE_RESIZE_WIDTHS[i];\n }\n break;\n }\n\n i--;\n }\n\n return output;\n};\n\ninterface SanitizeTransformArgsParams {\n width?: string;\n}\ninterface SanitizeTransformArgsResult {\n width?: number;\n}\n/**\n * Currently we only allow \"width\" as a transform option.\n * @param args\n */\nconst sanitizeTransformArgs = (args?: SanitizeTransformArgsParams): SanitizeTransformArgsResult => {\n const output: SanitizeTransformArgsResult = {};\n if (!args || args.width === undefined || args.width === null) {\n return output;\n }\n const width = parseInt(args.width);\n if (width > 0) {\n output.width = getSupportedImageResizeWidth(width);\n }\n\n return output;\n};\n\nconst getSizes = (width?: string | number): string | undefined => {\n if (typeof width !== \"string\") {\n return undefined;\n }\n // Check if width was set as percentage, with \"%\" in the value.\n if (width.endsWith(\"%\")) {\n return `${parseInt(width)}vw`;\n }\n // Check if width was set as viewport width, with \"vw\" in the value.\n if (width.endsWith(\"vw\")) {\n return `${parseInt(width)}vw`;\n }\n\n // Check if width was set as relative, with \"em\" in the value.\n if (width.endsWith(\"em\")) {\n return `${parseInt(width)}em`;\n }\n\n return undefined;\n};\n\nconst isFixedImageWidth = (width?: number | string) => {\n if (Number.isFinite(width)) {\n return true;\n }\n\n if (typeof width === \"string\" && width.endsWith(\"px\")) {\n return true;\n }\n return false;\n};\n\nconst getSrcSetAutoSizes = (max?: string | number) => {\n max = isFixedImageWidth(max) ? parseInt(\"\" + max) : 2500;\n const maxWidth = getSupportedImageResizeWidth(max);\n return SUPPORTED_IMAGE_RESIZE_WIDTHS.filter((supportedWidth: number) => {\n return supportedWidth <= maxWidth;\n });\n};\n\nconst convertTransformToQueryParams = (transform: Record<string, any>): string => {\n return Object.keys(transform)\n .map(key => `${key}=${transform[key]}`)\n .join(\"&\");\n};\n\nexport default () => {\n const imagePlugin: ImageComponentPlugin = {\n name: \"image-component\",\n type: \"image-component\",\n presets: {\n avatar: { width: 300 }\n },\n getImageSrc: (props?: Record<string, any>) => {\n if (!props) {\n return \"\";\n }\n\n const { src, transform } = props;\n if (!transform) {\n return src;\n }\n\n if (!src || src.startsWith(\"data:\") || src.endsWith(\"svg\")) {\n return src;\n }\n\n const sanitizedParams = sanitizeTransformArgs(transform);\n const params = convertTransformToQueryParams(sanitizedParams);\n return src + \"?\" + params;\n },\n render(props) {\n const { transform, srcSet: srcSetInitial, ...imageProps } = props;\n let srcSet: any = srcSetInitial;\n let sizes: string | undefined;\n const src = imageProps.src;\n if (srcSet && srcSet === \"auto\") {\n srcSet = {};\n\n // Check if image width was forced, and additionally if width was set as pixels, with \"px\" in the value.\n const forcedWidth = props.width || (props.style && props.style.width);\n const srcSetAutoWidths = getSrcSetAutoSizes(forcedWidth);\n srcSetAutoWidths.forEach(width => {\n srcSet[width + \"w\"] = imagePlugin.getImageSrc({\n src,\n transform: { ...transform, width }\n });\n });\n sizes = getSizes(forcedWidth);\n }\n\n return <Image {...imageProps} srcSet={srcSet} src={src} sizes={sizes} />;\n }\n };\n\n return imagePlugin;\n};\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from "react";
2
+ import { Plugin } from "@webiny/plugins/types";
3
+ import imagePlugin from "./image";
4
+ export { imagePlugin };
5
+ declare type RenderPluginOptions<T> = {
6
+ wrapper?: boolean;
7
+ fn?: string;
8
+ filter?: (value: T, index: number, array: T[]) => boolean;
9
+ reverse?: boolean;
10
+ };
11
+ interface RenderPlugin {
12
+ <T extends Plugin = Plugin>(name: string, params?: any, options?: RenderPluginOptions<T>): ReactNode | ReactNode[];
13
+ }
14
+ interface RenderPlugins {
15
+ <T extends Plugin = Plugin>(type: string, params?: any, options?: RenderPluginOptions<T>): ReactNode | ReactNode[];
16
+ }
17
+ export declare const renderPlugin: RenderPlugin;
18
+ export declare const renderPlugins: RenderPlugins;
19
+ declare const _default: (() => import("../types").ImageComponentPlugin)[];
20
+ export default _default;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ Object.defineProperty(exports, "imagePlugin", {
10
+ enumerable: true,
11
+ get: function get() {
12
+ return _image.default;
13
+ }
14
+ });
15
+ exports.renderPlugins = exports.renderPlugin = void 0;
16
+
17
+ var _react = _interopRequireDefault(require("react"));
18
+
19
+ var _warning = _interopRequireDefault(require("warning"));
20
+
21
+ var _plugins = require("@webiny/plugins");
22
+
23
+ var _image = _interopRequireDefault(require("./image"));
24
+
25
+ var PluginComponent = function PluginComponent(props) {
26
+ return props.children;
27
+ };
28
+
29
+ var PluginsComponent = function PluginsComponent(props) {
30
+ return props.children;
31
+ };
32
+
33
+ var renderPlugin = function renderPlugin(name) {
34
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
35
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
36
+ var _options$wrapper = options.wrapper,
37
+ wrapper = _options$wrapper === void 0 ? true : _options$wrapper,
38
+ _options$fn = options.fn,
39
+ fn = _options$fn === void 0 ? "render" : _options$fn;
40
+
41
+ var plugin = _plugins.plugins.byName(name);
42
+
43
+ (0, _warning.default)(plugin, "No such plugin \"".concat(name, "\""));
44
+
45
+ if (!plugin) {
46
+ return null;
47
+ }
48
+
49
+ var content = plugin[fn](params);
50
+
51
+ if (content) {
52
+ return wrapper ? /*#__PURE__*/_react.default.createElement(PluginComponent, {
53
+ key: plugin.name,
54
+ name: name,
55
+ params: params,
56
+ fn: fn
57
+ }, content) : /*#__PURE__*/_react.default.cloneElement(content, {
58
+ key: plugin.name
59
+ });
60
+ }
61
+
62
+ return null;
63
+ };
64
+
65
+ exports.renderPlugin = renderPlugin;
66
+
67
+ var renderPlugins = function renderPlugins(type) {
68
+ var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
69
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
70
+ var _options$wrapper2 = options.wrapper,
71
+ wrapper = _options$wrapper2 === void 0 ? true : _options$wrapper2,
72
+ _options$fn2 = options.fn,
73
+ fn = _options$fn2 === void 0 ? "render" : _options$fn2,
74
+ _options$filter = options.filter,
75
+ filter = _options$filter === void 0 ? function (v) {
76
+ return v;
77
+ } : _options$filter,
78
+ reverse = options.reverse;
79
+
80
+ var content = _plugins.plugins.byType(type).filter(function (pl) {
81
+ /**
82
+ * TODO @ts-refactor Problem with possibility of a different subtype.
83
+ */
84
+ // @ts-ignore
85
+ return filter(pl);
86
+ })
87
+ /**
88
+ * We cast as string because renderPlugin checks for the plugin.name
89
+ */
90
+ .map(function (plugin) {
91
+ return renderPlugin(plugin.name, params, {
92
+ wrapper: wrapper,
93
+ fn: fn
94
+ });
95
+ }).filter(Boolean);
96
+
97
+ if (reverse) {
98
+ content.reverse();
99
+ }
100
+
101
+ return wrapper ? /*#__PURE__*/_react.default.createElement(PluginsComponent, {
102
+ type: type,
103
+ params: params,
104
+ fn: fn
105
+ }, content) : content;
106
+ };
107
+
108
+ exports.renderPlugins = renderPlugins;
109
+ var _default = [_image.default];
110
+ exports.default = _default;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PluginComponent","props","children","PluginsComponent","renderPlugin","name","params","options","wrapper","fn","plugin","plugins","byName","warning","content","React","cloneElement","key","renderPlugins","type","filter","v","reverse","byType","pl","map","Boolean","imagePlugin"],"sources":["index.tsx"],"sourcesContent":["import React, { ReactNode } from \"react\";\nimport warning from \"warning\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport imagePlugin from \"./image\";\n\nexport { imagePlugin };\n\ntype RenderPluginOptions<T> = {\n wrapper?: boolean;\n fn?: string;\n filter?: (value: T, index: number, array: T[]) => boolean;\n reverse?: boolean;\n};\n\ninterface RenderPlugin {\n <T extends Plugin = Plugin>(name: string, params?: any, options?: RenderPluginOptions<T>):\n | ReactNode\n | ReactNode[];\n}\n\ninterface RenderPlugins {\n <T extends Plugin = Plugin>(type: string, params?: any, options?: RenderPluginOptions<T>):\n | ReactNode\n | ReactNode[];\n}\n\ninterface PluginComponentProps {\n name: string;\n params: Record<string, any>;\n fn: string;\n}\nconst PluginComponent: React.FC<PluginComponentProps> = props => {\n return props.children as React.ReactElement;\n};\ninterface PluginsComponentProps {\n type: string;\n params: Record<string, any>;\n fn: string;\n}\nconst PluginsComponent: React.FC<PluginsComponentProps> = props => {\n return props.children as React.ReactElement;\n};\n\nexport const renderPlugin: RenderPlugin = (name, params = {}, options = {}) => {\n const { wrapper = true, fn = \"render\" } = options;\n\n const plugin = plugins.byName(name);\n warning(plugin, `No such plugin \"${name}\"`);\n\n if (!plugin) {\n return null;\n }\n\n const content = plugin[fn](params);\n if (content) {\n return wrapper ? (\n <PluginComponent key={plugin.name} name={name} params={params} fn={fn}>\n {content}\n </PluginComponent>\n ) : (\n React.cloneElement(content, { key: plugin.name })\n );\n }\n return null;\n};\n\nexport const renderPlugins: RenderPlugins = (type, params = {}, options = {}) => {\n const { wrapper = true, fn = \"render\", filter = v => v, reverse } = options;\n\n const content = plugins\n .byType(type)\n .filter(pl => {\n /**\n * TODO @ts-refactor Problem with possibility of a different subtype.\n */\n // @ts-ignore\n return filter(pl);\n })\n /**\n * We cast as string because renderPlugin checks for the plugin.name\n */\n .map(plugin => renderPlugin(plugin.name as string, params, { wrapper, fn }))\n .filter(Boolean);\n\n if (reverse) {\n content.reverse();\n }\n\n return wrapper ? (\n <PluginsComponent type={type} params={params} fn={fn}>\n {content}\n </PluginsComponent>\n ) : (\n content\n );\n};\n\nexport default [imagePlugin];\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AA4BA,IAAMA,eAA+C,GAAG,SAAlDA,eAAkD,CAAAC,KAAK,EAAI;EAC7D,OAAOA,KAAK,CAACC,QAAb;AACH,CAFD;;AAQA,IAAMC,gBAAiD,GAAG,SAApDA,gBAAoD,CAAAF,KAAK,EAAI;EAC/D,OAAOA,KAAK,CAACC,QAAb;AACH,CAFD;;AAIO,IAAME,YAA0B,GAAG,SAA7BA,YAA6B,CAACC,IAAD,EAAqC;EAAA,IAA9BC,MAA8B,uEAArB,EAAqB;EAAA,IAAjBC,OAAiB,uEAAP,EAAO;EAC3E,uBAA0CA,OAA1C,CAAQC,OAAR;EAAA,IAAQA,OAAR,iCAAkB,IAAlB;EAAA,kBAA0CD,OAA1C,CAAwBE,EAAxB;EAAA,IAAwBA,EAAxB,4BAA6B,QAA7B;;EAEA,IAAMC,MAAM,GAAGC,gBAAA,CAAQC,MAAR,CAAeP,IAAf,CAAf;;EACA,IAAAQ,gBAAA,EAAQH,MAAR,6BAAmCL,IAAnC;;EAEA,IAAI,CAACK,MAAL,EAAa;IACT,OAAO,IAAP;EACH;;EAED,IAAMI,OAAO,GAAGJ,MAAM,CAACD,EAAD,CAAN,CAAWH,MAAX,CAAhB;;EACA,IAAIQ,OAAJ,EAAa;IACT,OAAON,OAAO,gBACV,6BAAC,eAAD;MAAiB,GAAG,EAAEE,MAAM,CAACL,IAA7B;MAAmC,IAAI,EAAEA,IAAzC;MAA+C,MAAM,EAAEC,MAAvD;MAA+D,EAAE,EAAEG;IAAnE,GACKK,OADL,CADU,gBAKVC,cAAA,CAAMC,YAAN,CAAmBF,OAAnB,EAA4B;MAAEG,GAAG,EAAEP,MAAM,CAACL;IAAd,CAA5B,CALJ;EAOH;;EACD,OAAO,IAAP;AACH,CArBM;;;;AAuBA,IAAMa,aAA4B,GAAG,SAA/BA,aAA+B,CAACC,IAAD,EAAqC;EAAA,IAA9Bb,MAA8B,uEAArB,EAAqB;EAAA,IAAjBC,OAAiB,uEAAP,EAAO;EAC7E,wBAAoEA,OAApE,CAAQC,OAAR;EAAA,IAAQA,OAAR,kCAAkB,IAAlB;EAAA,mBAAoED,OAApE,CAAwBE,EAAxB;EAAA,IAAwBA,EAAxB,6BAA6B,QAA7B;EAAA,sBAAoEF,OAApE,CAAuCa,MAAvC;EAAA,IAAuCA,MAAvC,gCAAgD,UAAAC,CAAC;IAAA,OAAIA,CAAJ;EAAA,CAAjD;EAAA,IAAwDC,OAAxD,GAAoEf,OAApE,CAAwDe,OAAxD;;EAEA,IAAMR,OAAO,GAAGH,gBAAA,CACXY,MADW,CACJJ,IADI,EAEXC,MAFW,CAEJ,UAAAI,EAAE,EAAI;IACV;AACZ;AACA;IACY;IACA,OAAOJ,MAAM,CAACI,EAAD,CAAb;EACH,CARW;EASZ;AACR;AACA;EAXoB,CAYXC,GAZW,CAYP,UAAAf,MAAM;IAAA,OAAIN,YAAY,CAACM,MAAM,CAACL,IAAR,EAAwBC,MAAxB,EAAgC;MAAEE,OAAO,EAAPA,OAAF;MAAWC,EAAE,EAAFA;IAAX,CAAhC,CAAhB;EAAA,CAZC,EAaXW,MAbW,CAaJM,OAbI,CAAhB;;EAeA,IAAIJ,OAAJ,EAAa;IACTR,OAAO,CAACQ,OAAR;EACH;;EAED,OAAOd,OAAO,gBACV,6BAAC,gBAAD;IAAkB,IAAI,EAAEW,IAAxB;IAA8B,MAAM,EAAEb,MAAtC;IAA8C,EAAE,EAAEG;EAAlD,GACKK,OADL,CADU,GAKVA,OALJ;AAOH,CA7BM;;;eA+BQ,CAACa,cAAD,C"}
package/types.d.ts ADDED
@@ -0,0 +1,70 @@
1
+ import * as React from "react";
2
+ import { Plugin } from "@webiny/plugins/types";
3
+ import { ApolloClient } from "apollo-client";
4
+ import { CSSProperties } from "react";
5
+ export interface FileItem {
6
+ id: string;
7
+ name: string;
8
+ key: string;
9
+ src: string;
10
+ size: number;
11
+ type: string;
12
+ tags: string[];
13
+ createdOn: string;
14
+ createdBy: {
15
+ id: string;
16
+ };
17
+ [key: string]: any;
18
+ }
19
+ export declare type UploadOptions = {
20
+ apolloClient: ApolloClient<object>;
21
+ };
22
+ export declare type UiStatePlugin = Plugin & {
23
+ type: "ui-state";
24
+ render(): React.ReactElement;
25
+ };
26
+ export declare type FileUploaderPlugin = Plugin & {
27
+ type: "file-uploader";
28
+ upload(file: FileItem, options: UploadOptions): Promise<any>;
29
+ };
30
+ export declare type AppFileManagerStoragePlugin = Plugin & {
31
+ type: "app-file-manager-storage";
32
+ upload(file: FileItem, options: UploadOptions): Promise<any>;
33
+ };
34
+ export { Plugin };
35
+ export interface ImageProps {
36
+ src: string;
37
+ preset?: string;
38
+ transform?: {
39
+ [key: string]: any;
40
+ };
41
+ srcSet?: {
42
+ [key: string]: any;
43
+ } | "auto";
44
+ className?: string;
45
+ title?: string;
46
+ alt?: string;
47
+ style?: CSSProperties;
48
+ width?: string | number;
49
+ height?: string | number;
50
+ }
51
+ /**
52
+ * "getImageSrc" has to be defined as a separate property, so its functionality can be reused outside of
53
+ * the Image component. This is ideal in cases where manual creation of image src is needed.
54
+ */
55
+ export declare type ImageComponentPlugin = Plugin & {
56
+ type: "image-component";
57
+ render: (props: ImageProps) => React.ReactElement;
58
+ getImageSrc: (props?: Record<string, any>) => string;
59
+ presets: {
60
+ [key: string]: any;
61
+ };
62
+ };
63
+ /**
64
+ * Enables registering new routes.
65
+ * @see https://docs.webiny.com/docs/webiny-apps/admin/development/plugins-reference/app#route
66
+ */
67
+ export declare type RoutePlugin = Plugin & {
68
+ type: "route";
69
+ route: React.ReactElement;
70
+ };
package/types.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Plugin", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _types.Plugin;
10
+ }
11
+ });
12
+
13
+ var _types = require("@webiny/plugins/types");
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins/types\";\nimport { ApolloClient } from \"apollo-client\";\nimport { CSSProperties } from \"react\";\n\nexport interface FileItem {\n id: string;\n name: string;\n key: string;\n src: string;\n size: number;\n type: string;\n tags: string[];\n createdOn: string;\n createdBy: {\n id: string;\n };\n [key: string]: any;\n}\n\nexport type UploadOptions = {\n apolloClient: ApolloClient<object>;\n};\n\nexport type UiStatePlugin = Plugin & {\n type: \"ui-state\";\n render(): React.ReactElement;\n};\n\nexport type FileUploaderPlugin = Plugin & {\n type: \"file-uploader\";\n // TODO: @adrian define type for the returned object\n upload(file: FileItem, options: UploadOptions): Promise<any>;\n};\n\nexport type AppFileManagerStoragePlugin = Plugin & {\n type: \"app-file-manager-storage\";\n // TODO: @adrian define type for the returned object\n upload(file: FileItem, options: UploadOptions): Promise<any>;\n};\n\nexport { Plugin };\n\nexport interface ImageProps {\n src: string;\n preset?: string;\n transform?: {\n [key: string]: any;\n };\n // \"auto\" is a special keyword - if present, plugins insert their own srcSet.\n srcSet?: { [key: string]: any } | \"auto\";\n className?: string;\n title?: string;\n alt?: string;\n style?: CSSProperties;\n width?: string | number;\n height?: string | number;\n}\n\n/**\n * \"getImageSrc\" has to be defined as a separate property, so its functionality can be reused outside of\n * the Image component. This is ideal in cases where manual creation of image src is needed.\n */\nexport type ImageComponentPlugin = Plugin & {\n type: \"image-component\";\n render: (props: ImageProps) => React.ReactElement;\n getImageSrc: (props?: Record<string, any>) => string;\n presets: { [key: string]: any };\n};\n\n/**\n * Enables registering new routes.\n * @see https://docs.webiny.com/docs/webiny-apps/admin/development/plugins-reference/app#route\n */\nexport type RoutePlugin = Plugin & {\n type: \"route\";\n route: React.ReactElement;\n};\n"],"mappings":";;;;;;;;;;;;AACA"}