@webiny/app 5.23.1 → 5.25.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 (82) hide show
  1. package/apollo-client/InMemoryCache.d.ts +1 -1
  2. package/apollo-client/InMemoryCache.js.map +1 -0
  3. package/components/Image.js.map +1 -0
  4. package/components/Routes.js.map +1 -0
  5. package/components/View.js.map +1 -0
  6. package/components/index.js.map +1 -0
  7. package/config.js.map +1 -0
  8. package/contexts/Ui/index.d.ts +5 -4
  9. package/contexts/Ui/index.js.map +1 -0
  10. package/hooks/useAutocomplete/index.js.map +1 -0
  11. package/hooks/useAutocomplete/useAutocomplete.d.ts +6 -1
  12. package/hooks/useAutocomplete/useAutocomplete.js +1 -4
  13. package/hooks/useAutocomplete/useAutocomplete.js.map +1 -0
  14. package/hooks/useDataList/functions/getData.d.ts +1 -1
  15. package/hooks/useDataList/functions/getData.js.map +1 -0
  16. package/hooks/useDataList/functions/getError.d.ts +1 -1
  17. package/hooks/useDataList/functions/getError.js.map +1 -0
  18. package/hooks/useDataList/functions/getMeta.d.ts +1 -1
  19. package/hooks/useDataList/functions/getMeta.js.map +1 -0
  20. package/hooks/useDataList/functions/index.js.map +1 -0
  21. package/hooks/useDataList/functions/searchDataByKey.d.ts +1 -1
  22. package/hooks/useDataList/functions/searchDataByKey.js.map +1 -0
  23. package/hooks/useDataList/index.js.map +1 -0
  24. package/hooks/useDataList/useDataList.d.ts +4 -4
  25. package/hooks/useDataList/useDataList.js +5 -1
  26. package/hooks/useDataList/useDataList.js.map +1 -0
  27. package/hooks/useDataList/utils/index.js.map +1 -0
  28. package/hooks/useDataList/utils/prepareLoadListParams.d.ts +9 -3
  29. package/hooks/useDataList/utils/prepareLoadListParams.js +12 -7
  30. package/hooks/useDataList/utils/prepareLoadListParams.js.map +1 -0
  31. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.d.ts +13 -4
  32. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js +3 -3
  33. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js.map +1 -0
  34. package/hooks/useDataList/utils/types.js.map +1 -0
  35. package/hooks/useHandler.d.ts +11 -1
  36. package/hooks/useHandler.js +4 -0
  37. package/hooks/useHandler.js.map +1 -0
  38. package/hooks/useHandlers.d.ts +1 -1
  39. package/hooks/useHandlers.js +3 -0
  40. package/hooks/useHandlers.js.map +1 -0
  41. package/hooks/useUi.js.map +1 -0
  42. package/i18n/i18n.js.map +1 -0
  43. package/i18n/index.js.map +1 -0
  44. package/package.json +14 -13
  45. package/plugins/AddQuerySelectionPlugin.d.ts +1 -1
  46. package/plugins/AddQuerySelectionPlugin.js +17 -3
  47. package/plugins/AddQuerySelectionPlugin.js.map +1 -0
  48. package/plugins/ApolloCacheObjectIdPlugin.d.ts +6 -6
  49. package/plugins/ApolloCacheObjectIdPlugin.js.map +1 -0
  50. package/plugins/ApolloDynamicLink.d.ts +3 -2
  51. package/plugins/ApolloDynamicLink.js +2 -1
  52. package/plugins/ApolloDynamicLink.js.map +1 -0
  53. package/plugins/ApolloLinkPlugin.d.ts +4 -4
  54. package/plugins/ApolloLinkPlugin.js.map +1 -0
  55. package/plugins/ConsoleLinkPlugin.js +3 -2
  56. package/plugins/ConsoleLinkPlugin.js.map +1 -0
  57. package/plugins/LocaleHeaderLinkPlugin.d.ts +3 -2
  58. package/plugins/LocaleHeaderLinkPlugin.js.map +1 -0
  59. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.d.ts +13 -5
  60. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js +3 -3
  61. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js.map +1 -0
  62. package/plugins/NetworkErrorLinkPlugin/StyledComponents.d.ts +2 -2
  63. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js.map +1 -0
  64. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.d.ts +6 -4
  65. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js +3 -4
  66. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js.map +1 -0
  67. package/plugins/NetworkErrorLinkPlugin.js.map +1 -0
  68. package/plugins/OmitTypenameLinkPlugin.js.map +1 -0
  69. package/plugins/RoutePlugin.d.ts +2 -2
  70. package/plugins/RoutePlugin.js +4 -0
  71. package/plugins/RoutePlugin.js.map +1 -0
  72. package/plugins/TenantHeaderLinkPlugin.d.ts +3 -2
  73. package/plugins/TenantHeaderLinkPlugin.js.map +1 -0
  74. package/plugins/ViewPlugin.d.ts +4 -4
  75. package/plugins/ViewPlugin.js +4 -0
  76. package/plugins/ViewPlugin.js.map +1 -0
  77. package/plugins/image.js +19 -14
  78. package/plugins/image.js.map +1 -0
  79. package/plugins/index.js +11 -1
  80. package/plugins/index.js.map +1 -0
  81. package/types.d.ts +26 -6
  82. package/types.js.map +1 -0
@@ -4,10 +4,10 @@ interface ApolloLinkFactory {
4
4
  (): ApolloLink;
5
5
  }
6
6
  export declare class ApolloLinkPlugin extends Plugin {
7
- static readonly type = "apollo-link";
8
- readonly cacheKey: any;
9
- private factory;
10
- private cache;
7
+ static readonly type: string;
8
+ readonly cacheKey: string;
9
+ private readonly factory?;
10
+ private cache?;
11
11
  constructor(factory?: ApolloLinkFactory);
12
12
  createLink(): ApolloLink;
13
13
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ApolloLinkPlugin.ts"],"names":["nanoid","Plugin","ApolloLinkPlugin","factory","cacheKey","cache","Error","name"],"mappings":";;;;;;AACA,SAASA,MAAT,QAAuB,QAAvB;AACA,SAASC,MAAT,QAAuB,iBAAvB;AAMA,WAAaC,gBAAb;AAAA;;AAAA;;AAMI,4BAAYC,OAAZ,EAAyC;AAAA;;AAAA;;AACrC;;AADqC;;AAAA;;AAAA;;AAErC,UAAKA,OAAL,GAAeA,OAAf;AACA,UAAKC,QAAL,GAAgBJ,MAAM,EAAtB;AAHqC;AAIxC;;AAVL;AAAA;AAAA,WAYI,sBAAgC;AAC5B,UAAI,KAAKK,KAAT,EAAgB;AACZ,eAAO,KAAKA,KAAZ;AACH;;AAED,UAAI,OAAO,KAAKF,OAAZ,KAAwB,UAA5B,EAAwC;AACpC,aAAKE,KAAL,GAAa,KAAKF,OAAL,EAAb;AAEA,eAAO,KAAKE,KAAZ;AACH;;AAED,YAAMC,KAAK,iDACiC,KAAKC,IADtC,2HAAX;AAGH;AA1BL;;AAAA;AAAA,EAAsCN,MAAtC;;gBAAaC,gB,UACsC,a","sourcesContent":["import { ApolloLink } from \"apollo-link\";\nimport { nanoid } from \"nanoid\";\nimport { Plugin } from \"@webiny/plugins\";\n\ninterface ApolloLinkFactory {\n (): ApolloLink;\n}\n\nexport class ApolloLinkPlugin extends Plugin {\n public static override readonly type: string = \"apollo-link\";\n public readonly cacheKey;\n private readonly factory?: ApolloLinkFactory;\n private cache?: ApolloLink;\n\n constructor(factory?: ApolloLinkFactory) {\n super();\n this.factory = factory;\n this.cacheKey = nanoid();\n }\n\n public createLink(): ApolloLink {\n if (this.cache) {\n return this.cache;\n }\n\n if (typeof this.factory === \"function\") {\n this.cache = this.factory();\n\n return this.cache;\n }\n\n throw Error(\n `Missing ApolloLinkFactory in plugin \"${this.name}\"! Either pass a factory to ApolloLinkPlugin constructor or extend the class and override the \"createLink\" method.`\n );\n }\n}\n"]}
@@ -5,10 +5,10 @@ import _inherits from "@babel/runtime/helpers/inherits";
5
5
  import _createSuper from "@babel/runtime/helpers/createSuper";
6
6
  import { ApolloLink } from "apollo-link";
7
7
  import { ApolloLinkPlugin } from "./ApolloLinkPlugin";
8
+
8
9
  /**
9
10
  * This link checks for presence of `extensions.console` in the response and logs all items to browser console.
10
11
  */
11
-
12
12
  export var ConsoleLinkPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
13
13
  _inherits(ConsoleLinkPlugin, _ApolloLinkPlugin);
14
14
 
@@ -24,7 +24,8 @@ export var ConsoleLinkPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
24
24
  key: "createLink",
25
25
  value: function createLink() {
26
26
  return new ApolloLink(function (operation, forward) {
27
- var isQuery = operation.query.definitions[0]["operation"] === "query";
27
+ var firstDefinition = operation.query.definitions[0];
28
+ var isQuery = firstDefinition["operation"] === "query";
28
29
  return forward(operation).map(function (data) {
29
30
  if (data.extensions && Array.isArray(data.extensions.console) && data.extensions.console.length) {
30
31
  var variables = isQuery ? JSON.stringify(operation.variables) : "{ see request details in the Network tab }";
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ConsoleLinkPlugin.ts"],"names":["ApolloLink","ApolloLinkPlugin","ConsoleLinkPlugin","operation","forward","firstDefinition","query","definitions","isQuery","map","data","extensions","Array","isArray","console","length","variables","JSON","stringify","groupCollapsed","operationName","forEach","log","method","args","groupEnd"],"mappings":";;;;;AAAA,SAASA,UAAT,QAA2D,aAA3D;AACA,SAASC,gBAAT;;AAcA;AACA;AACA;AACA,WAAaC,iBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,WACI,sBAA6B;AACzB,aAAO,IAAIF,UAAJ,CAAe,UAACG,SAAD,EAAYC,OAAZ,EAAwB;AAC1C,YAAMC,eAAe,GAAGF,SAAS,CAACG,KAAV,CAAgBC,WAAhB,CAA4B,CAA5B,CAAxB;AACA,YAAMC,OAAO,GAAGH,eAAe,CAAC,WAAD,CAAf,KAAiC,OAAjD;AAEA,eAAOD,OAAO,CAACD,SAAD,CAAP,CAAmBM,GAAnB,CAAuB,UAACC,IAAD,EAAuB;AACjD,cACIA,IAAI,CAACC,UAAL,IACAC,KAAK,CAACC,OAAN,CAAcH,IAAI,CAACC,UAAL,CAAgBG,OAA9B,CADA,IAEAJ,IAAI,CAACC,UAAL,CAAgBG,OAAhB,CAAwBC,MAH5B,EAIE;AACE,gBAAMC,SAAS,GAAGR,OAAO,GACnBS,IAAI,CAACC,SAAL,CAAef,SAAS,CAACa,SAAzB,CADmB,GAEnB,4CAFN;AAGAF,YAAAA,OAAO,CAACK,cAAR,4BACwBX,OAAO,GAAG,OAAH,GAAa,UAD5C,iBAEQL,SAAS,CAACiB,aAAV,IAA2B,qBAFnC,gBAGUJ,SAHV,SAII,gBAJJ,EAKI,gBALJ,EAMI,cANJ;AAQAN,YAAAA,IAAI,CAACC,UAAL,CAAgBG,OAAhB,CAAwBO,OAAxB,CAAgC,UAACC,GAAD,EAAc;AAAA;;AAC1C,0BAAAR,OAAO,EAACQ,GAAG,CAACC,MAAL,CAAP,oCAAuBD,GAAG,CAACE,IAA3B;AACH,aAFD;AAGAV,YAAAA,OAAO,CAACW,QAAR;AACH;;AAED,iBAAOf,IAAP;AACH,SAxBM,CAAP;AAyBH,OA7BM,CAAP;AA8BH;AAhCL;;AAAA;AAAA,EAAuCT,gBAAvC","sourcesContent":["import { ApolloLink, FetchResult as BaseFetchResult } from \"apollo-link\";\nimport { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\nimport { OperationDefinitionNode } from \"graphql/language/ast\";\n\ninterface Log {\n args: any[];\n method: \"error\" | \"info\" | \"log\" | \"warn\";\n}\n\ninterface FetchResult extends BaseFetchResult {\n extensions?: {\n console?: Log[];\n };\n}\n\n/**\n * This link checks for presence of `extensions.console` in the response and logs all items to browser console.\n */\nexport class ConsoleLinkPlugin extends ApolloLinkPlugin {\n public override createLink() {\n return new ApolloLink((operation, forward) => {\n const firstDefinition = operation.query.definitions[0] as OperationDefinitionNode;\n const isQuery = firstDefinition[\"operation\"] === \"query\";\n\n return forward(operation).map((data: FetchResult) => {\n if (\n data.extensions &&\n Array.isArray(data.extensions.console) &&\n data.extensions.console.length\n ) {\n const variables = isQuery\n ? JSON.stringify(operation.variables)\n : \"{ see request details in the Network tab }\";\n console.groupCollapsed(\n `Logs for graphQL ${isQuery ? \"query\" : \"mutation\"}: %c${\n operation.operationName || \"anonymous operation\"\n } %c${variables}%c`,\n \"color: #fa5a28\",\n \"color: #6b6b6b\",\n \"color: black\"\n );\n data.extensions.console.forEach((log: Log) => {\n console[log.method](...log.args);\n });\n console.groupEnd();\n }\n\n return data;\n });\n });\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ApolloLinkPlugin } from "./ApolloLinkPlugin";
2
+ import { ApolloLink } from "apollo-link";
2
3
  declare global {
3
4
  interface Window {
4
5
  __PS_RENDER_LOCALE__: string;
@@ -8,7 +9,7 @@ declare global {
8
9
  * Append `x-i18n-locale` header from URL query (necessary for prerendering service).
9
10
  */
10
11
  export declare class LocaleHeaderLinkPlugin extends ApolloLinkPlugin {
11
- private locale;
12
+ private readonly locale;
12
13
  constructor(locale?: string);
13
- createLink(): import("apollo-link").ApolloLink;
14
+ createLink(): ApolloLink;
14
15
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["LocaleHeaderLinkPlugin.ts"],"names":["setContext","ApolloLinkPlugin","LocaleHeaderLinkPlugin","locale","query","URLSearchParams","location","search","get","window","__PS_RENDER_LOCALE__","_","headers"],"mappings":";;;;;;;AAAA,SAASA,UAAT,QAA2B,qBAA3B;AACA,SAASC,gBAAT;;AASA;AACA;AACA;AACA,WAAaC,sBAAb;AAAA;;AAAA;;AAGI,kCAAYC,MAAZ,EAA6B;AAAA;;AAAA;;AACzB;;AADyB;;AAGzB,QAAI,CAACA,MAAL,EAAa;AACT,UAAMC,KAAK,GAAG,IAAIC,eAAJ,CAAoBC,QAAQ,CAACC,MAA7B,CAAd;AACAJ,MAAAA,MAAM,GAAGC,KAAK,CAACI,GAAN,CAAU,UAAV,KAAyBC,MAAM,CAACC,oBAAzC;AACH;;AAED,UAAKP,MAAL,GAAcA,MAAd;AARyB;AAS5B;;AAZL;AAAA;AAAA,WAcI,sBAAyC;AAAA;;AACrC,aAAOH,UAAU,CAAC,UAACW,CAAD,QAAoB;AAAA,YAAdC,OAAc,QAAdA,OAAc;;AAClC,YAAI,MAAI,CAACT,MAAT,EAAiB;AACb,iBAAO;AACHS,YAAAA,OAAO,kCACAA,OADA;AAEH,iDAA4B,MAAI,CAACT,MAAjC;AAFG;AADJ,WAAP;AAMH;;AAED,eAAO;AAAES,UAAAA,OAAO,EAAPA;AAAF,SAAP;AACH,OAXgB,CAAjB;AAYH;AA3BL;;AAAA;AAAA,EAA4CX,gBAA5C","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_LOCALE__: string;\n }\n}\n\n/**\n * Append `x-i18n-locale` header from URL query (necessary for prerendering service).\n */\nexport class LocaleHeaderLinkPlugin extends ApolloLinkPlugin {\n private readonly locale: string;\n\n constructor(locale?: string) {\n super();\n\n if (!locale) {\n const query = new URLSearchParams(location.search);\n locale = query.get(\"__locale\") || window.__PS_RENDER_LOCALE__;\n }\n\n this.locale = locale;\n }\n\n public override createLink(): ApolloLink {\n return setContext((_, { headers }) => {\n if (this.locale) {\n return {\n headers: {\n ...headers,\n \"x-i18n-locale\": `content:${this.locale};`\n }\n };\n }\n\n return { headers };\n });\n }\n}\n"]}
@@ -1,6 +1,14 @@
1
- /// <reference types="react" />
2
- declare const ErrorOverlay: ({ query, networkError }: {
3
- query: any;
4
- networkError: any;
5
- }) => JSX.Element;
1
+ import React from "react";
2
+ interface ErrorOverlayProps {
3
+ query: string;
4
+ networkError: {
5
+ message: string;
6
+ result?: {
7
+ error?: {
8
+ stack?: string;
9
+ };
10
+ };
11
+ };
12
+ }
13
+ declare const ErrorOverlay: React.FC<ErrorOverlayProps>;
6
14
  export default ErrorOverlay;
@@ -13,9 +13,9 @@ import { ReactComponent as CloseIcon } from "./assets/close_24px.svg";
13
13
  var t = i18n.ns("app/graphql/error-overlay");
14
14
  var ENVIRONMENT_VARIABLES_ARTICLE_LINK = "https://www.webiny.com/docs/how-to-guides/environment-variables";
15
15
 
16
- var ErrorOverlay = function ErrorOverlay(_ref) {
17
- var query = _ref.query,
18
- networkError = _ref.networkError;
16
+ var ErrorOverlay = function ErrorOverlay(props) {
17
+ var query = props.query,
18
+ networkError = props.networkError;
19
19
 
20
20
  var _useState = useState(true),
21
21
  _useState2 = _slicedToArray(_useState, 2),
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ErrorOverlay.tsx"],"names":["React","useState","get","IconButton","Typography","i18n","OverlayWrapper","Pre","ReactComponent","CloseIcon","t","ns","ENVIRONMENT_VARIABLES_ARTICLE_LINK","ErrorOverlay","props","query","networkError","open","setOpen","console","error","stackTrace","message","link"],"mappings":";;;;;AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,OAAOC,GAAP,MAAgB,YAAhB;AACA,SAASC,UAAT,QAA2B,mBAA3B;AACA,SAASC,UAAT,QAA2B,uBAA3B;AACA,SAASC,IAAT;AACA,SAASC,cAAT,EAAyBC,GAAzB;AACA,SAASC,cAAc,IAAIC,SAA3B;AAEA,IAAMC,CAAC,GAAGL,IAAI,CAACM,EAAL,CAAQ,2BAAR,CAAV;AAEA,IAAMC,kCAAkC,GACpC,iEADJ;;AAcA,IAAMC,YAAyC,GAAG,SAA5CA,YAA4C,CAAAC,KAAK,EAAI;AACvD,MAAQC,KAAR,GAAgCD,KAAhC,CAAQC,KAAR;AAAA,MAAeC,YAAf,GAAgCF,KAAhC,CAAeE,YAAf;;AACA,kBAAwBf,QAAQ,CAAC,IAAD,CAAhC;AAAA;AAAA,MAAOgB,IAAP;AAAA,MAAaC,OAAb,iBAFuD,CAGvD;;;AACAC,EAAAA,OAAO,CAACC,KAAR,CAAc;AAAEJ,IAAAA,YAAY,EAAZA;AAAF,GAAd;;AAEA,MAAI,CAACC,IAAL,EAAW;AACP,WAAO,IAAP;AACH;;AAED,MAAMI,UAAU,GAAGnB,GAAG,CAACc,YAAD,EAAe,oBAAf,CAAtB;AAEA,sBACI,oBAAC,cAAD,qBACI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE;AAAjB,KAA+BA,YAAY,CAACM,OAA5C,CADJ,CADJ,eAII;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD;AAAY,IAAA,IAAI,eAAE,oBAAC,SAAD,OAAlB;AAAiC,IAAA,OAAO,EAAE;AAAA,aAAMJ,OAAO,CAAC,KAAD,CAAb;AAAA;AAA1C,IADJ,CAJJ,CADJ,eASI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD;AACI,IAAA,GAAG,EAAE;AADT,KAEER,CAFF,+GADJ,eAII,oBAAC,GAAD,qBACI,kCAAOK,KAAP,CADJ,CAJJ,CADJ,EASKM,UAAU,iBACP;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE;AAAjB,KAA+BX,CAA/B,6FADJ,eAEI,oBAAC,GAAD,qBACI,kCAAOW,UAAP,CADJ,CAFJ,CAVR,CATJ,eA2BI;AAAK,IAAA,SAAS,EAAC;AAAf,kBACI,oBAAC,UAAD;AAAY,IAAA,GAAG,EAAE;AAAjB,KACKX,CAAC,kOAAD,CAEmC;AAChCY,IAAAA,OAAO,eAAE;AAAM,MAAA,SAAS,EAAE;AAAjB,gCADuB;AAEhCC,IAAAA,IAAI,eACA;AACI,MAAA,IAAI,EAAEX,kCADV;AAEI,MAAA,MAAM,EAAE,QAFZ;AAGI,MAAA,GAAG,EAAE;AAHT;AAH4B,GAFnC,CADL,eAeI,+BAfJ,EAgBKF,CAhBL,4IADJ,CA3BJ,CADJ,CADJ;AAoDH,CAhED;;AAkEA,eAAeG,YAAf","sourcesContent":["import React, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { IconButton } from \"@webiny/ui/Button\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport { i18n } from \"../../i18n\";\nimport { OverlayWrapper, Pre } from \"./StyledComponents\";\nimport { ReactComponent as CloseIcon } from \"./assets/close_24px.svg\";\n\nconst t = i18n.ns(\"app/graphql/error-overlay\");\n\nconst ENVIRONMENT_VARIABLES_ARTICLE_LINK =\n \"https://www.webiny.com/docs/how-to-guides/environment-variables\";\n\ninterface ErrorOverlayProps {\n query: string;\n networkError: {\n message: string;\n result?: {\n error?: {\n stack?: string;\n };\n };\n };\n}\nconst ErrorOverlay: React.FC<ErrorOverlayProps> = props => {\n const { query, networkError } = props;\n const [open, setOpen] = useState(true);\n // Log error in browser's developer console for further inspection.\n console.error({ networkError });\n\n if (!open) {\n return null;\n }\n\n const stackTrace = get(networkError, \"result.error.stack\");\n\n return (\n <OverlayWrapper>\n <div className=\"inner\">\n <div className=\"header\">\n <div className=\"header__title\">\n <Typography use={\"headline4\"}>{networkError.message}</Typography>\n </div>\n <div className=\"header__action\">\n <IconButton icon={<CloseIcon />} onClick={() => setOpen(false)} />\n </div>\n </div>\n <div className=\"body\">\n <div className=\"body__summary\">\n <Typography\n use={\"subtitle1\"}\n >{t`Error occurred while executing operation:`}</Typography>\n <Pre>\n <code>{query}</code>\n </Pre>\n </div>\n {stackTrace && (\n <div className=\"body__description\">\n <Typography use={\"subtitle1\"}>{t`Complete stack trace:`}</Typography>\n <Pre>\n <code>{stackTrace}</code>\n </Pre>\n </div>\n )}\n </div>\n <div className=\"footer\">\n <Typography use={\"body2\"}>\n {t`\n This screen is only visible if {message} environment variable is set.\n Read more about it in the {link}. `({\n message: <span className={\"highlight\"}>`REACT_APP_DEBUG=true`</span>,\n link: (\n <a\n href={ENVIRONMENT_VARIABLES_ARTICLE_LINK}\n target={\"_blank\"}\n rel={\"noreferrer noopener\"}\n >\n environment variables article\n </a>\n )\n })}\n <br />\n {t`Open your browser's developer console to further inspect this error.`}\n </Typography>\n </div>\n </div>\n </OverlayWrapper>\n );\n};\n\nexport default ErrorOverlay;\n"]}
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- export declare const OverlayWrapper: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "hidden" | "dir" | "slot" | "style" | "title" | "color" | "translate" | "children" | "defaultValue" | "id" | "className" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture">, object>;
3
- export declare const Pre: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, "hidden" | "dir" | "slot" | "style" | "title" | "color" | "translate" | "children" | "defaultValue" | "id" | "className" | "defaultChecked" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "contentEditable" | "contextMenu" | "draggable" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture">, object>;
2
+ export declare const OverlayWrapper: 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>;
3
+ export declare const Pre: import("@emotion/styled-base").StyledComponent<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLPreElement>, HTMLPreElement>, Pick<import("react").ClassAttributes<HTMLPreElement> & import("react").HTMLAttributes<HTMLPreElement>, keyof import("react").HTMLAttributes<HTMLPreElement>>, object>;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["StyledComponents.tsx"],"names":["styled","OverlayWrapper","Pre"],"mappings":"AAAA,OAAOA,MAAP,MAAmB,iBAAnB;AAEA,OAAO,IAAMC,cAAc,gBAAGD,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,4hCAApB;AAgDP,OAAO,IAAME,GAAG,gBAAGF,MAAH,CAAU,KAAV;AAAA;AAAA;AAAA,uYAAT","sourcesContent":["import styled from \"@emotion/styled\";\n\nexport const OverlayWrapper = styled(\"div\")(`\n width: 100vw;\n height: 100vh;\n position: fixed;\n top: 0;\n left: 0;\n z-index: 105; // The highest z-index value is 100 for Dialogs\n \n .inner {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: auto;\n background-color: white;\n padding: 1rem;\n }\n \n .header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 1rem;\n .header__title {\n color: var(--mdc-theme-error);\n }\n }\n \n .body {\n flex-grow: 1;\n .body__summary {\n margin-bottom: 1rem;\n }\n }\n \n .footer {\n color: var(--mdc-theme-text-secondary-on-background);\n \n .highlight {\n background-color: rgba(251, 245, 180, 0.5);\n padding: 0 4px;\n border-radius: 6px;\n font-family: monospace;\n }\n }\n`);\n\nexport const Pre = styled(\"pre\")(`\n position: relative;\n display: block;\n padding: 0.5em;\n margin-top: 0.5em;\n margin-bottom: 0.5em;\n overflow-x: auto;\n white-space: pre-wrap;\n border-radius: 0.25rem;\n background-color: rgba(251, 245, 180, 0.3);\n color: inherit;\n \n code {\n font-family: monospace;\n font-size: 0.85rem;\n line-height: 1rem;\n }\n`);\n"]}
@@ -1,5 +1,7 @@
1
- declare const createErrorOverlay: ({ query, networkError }: {
2
- query: any;
3
- networkError: any;
4
- }) => void;
1
+ import { ServerError, ServerParseError } from "apollo-link-http-common";
2
+ interface CreateErrorOverlayParams {
3
+ query: string;
4
+ networkError: Error | ServerError | ServerParseError;
5
+ }
6
+ declare const createErrorOverlay: (params: CreateErrorOverlayParams) => void;
5
7
  export default createErrorOverlay;
@@ -2,11 +2,10 @@ import React from "react";
2
2
  import { render } from "react-dom";
3
3
  import ErrorOverlay from "./ErrorOverlay";
4
4
 
5
- var createErrorOverlay = function createErrorOverlay(_ref) {
6
- var query = _ref.query,
7
- networkError = _ref.networkError;
5
+ var createErrorOverlay = function createErrorOverlay(params) {
6
+ var query = params.query,
7
+ networkError = params.networkError; // If the element already present in DOM, return immediately.
8
8
 
9
- // If the element already present in DOM, return immediately.
10
9
  if (document.getElementById("overlay-root")) {
11
10
  return;
12
11
  } // Create root element to hold React tree.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["createErrorOverlay.tsx"],"names":["React","render","ErrorOverlay","createErrorOverlay","params","query","networkError","document","getElementById","container","createElement","id","body","getElementsByTagName","appendChild"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAuB,WAAvB;AACA,OAAOC,YAAP;;AAOA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,MAAD,EAA4C;AACnE,MAAQC,KAAR,GAAgCD,MAAhC,CAAQC,KAAR;AAAA,MAAeC,YAAf,GAAgCF,MAAhC,CAAeE,YAAf,CADmE,CAEnE;;AACA,MAAIC,QAAQ,CAACC,cAAT,CAAwB,cAAxB,CAAJ,EAA6C;AACzC;AACH,GALkE,CAMnE;;;AACA,MAAMC,SAAyB,GAAGF,QAAQ,CAACG,aAAT,CAAuB,KAAvB,CAAlC;AACAD,EAAAA,SAAS,CAACE,EAAV,GAAe,cAAf,CARmE,CASnE;;AACA,MAAMC,IAAqB,GAAGL,QAAQ,CAACM,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,CAA9B;AACAD,EAAAA,IAAI,CAACE,WAAL,CAAiBL,SAAjB,EAXmE,CAYnE;;AACAR,EAAAA,MAAM,eAAC,oBAAC,YAAD;AAAc,IAAA,KAAK,EAAEI,KAArB;AAA4B,IAAA,YAAY,EAAEC;AAA1C,IAAD,EAA6DG,SAA7D,CAAN;AACH,CAdD;;AAgBA,eAAeN,kBAAf","sourcesContent":["import React from \"react\";\nimport { render } from \"react-dom\";\nimport ErrorOverlay from \"./ErrorOverlay\";\nimport { ServerError, ServerParseError } from \"apollo-link-http-common\";\n\ninterface CreateErrorOverlayParams {\n query: string;\n networkError: Error | ServerError | ServerParseError;\n}\nconst createErrorOverlay = (params: CreateErrorOverlayParams): void => {\n const { query, networkError } = params;\n // If the element already present in DOM, return immediately.\n if (document.getElementById(\"overlay-root\")) {\n return;\n }\n // Create root element to hold React tree.\n const container: HTMLDivElement = document.createElement(\"div\");\n container.id = \"overlay-root\";\n // Insert root element into body.\n const body: HTMLBodyElement = document.getElementsByTagName(\"body\")[0];\n body.appendChild(container);\n // Mount the ErrorOverlay component into root element.\n render(<ErrorOverlay query={query} networkError={networkError} />, container);\n};\n\nexport default createErrorOverlay;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["NetworkErrorLinkPlugin.ts"],"names":["ApolloLinkPlugin","onError","print","createErrorOverlay","boolean","config","appConfig","NetworkErrorLinkPlugin","networkError","operation","debug","getKey","process","env","REACT_APP_DEBUG","query"],"mappings":";;;;AAAA,SAASA,gBAAT;AACA,SAASC,OAAT,QAAwB,mBAAxB;AACA,SAASC,KAAT,QAAsB,kBAAtB;AACA,OAAOC,kBAAP;AACA,SAASC,OAAT,QAAwB,SAAxB;AACA,SAASC,MAAM,IAAIC,SAAnB;AAEA;AACA;AACA;;AACA,WAAaC,sBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,WACI,sBAA6B;AACzB,aAAON,OAAO,CAAC,gBAAiC;AAAA,YAA9BO,YAA8B,QAA9BA,YAA8B;AAAA,YAAhBC,SAAgB,QAAhBA,SAAgB;AAC5C,YAAMC,KAAK,GAAGJ,SAAS,CAACK,MAAV,CAAiB,OAAjB,EAA0BP,OAAO,CAACQ,OAAO,CAACC,GAAR,CAAYC,eAAb,CAAjC,CAAd;;AAEA,YAAIN,YAAY,IAAIE,KAApB,EAA2B;AACvBP,UAAAA,kBAAkB,CAAC;AAAEY,YAAAA,KAAK,EAAEb,KAAK,CAACO,SAAS,CAACM,KAAX,CAAd;AAAiCP,YAAAA,YAAY,EAAZA;AAAjC,WAAD,CAAlB;AACH,SAL2C,CAO5C;;AACH,OARa,CAAd;AASH;AAXL;;AAAA;AAAA,EAA4CR,gBAA5C","sourcesContent":["import { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\nimport { onError } from \"apollo-link-error\";\nimport { print } from \"graphql/language\";\nimport createErrorOverlay from \"./NetworkErrorLinkPlugin/createErrorOverlay\";\nimport { boolean } from \"boolean\";\nimport { config as appConfig } from \"~/config\";\n\n/**\n * This plugin creates an ApolloLink that checks for `NetworkError` and shows an ErrorOverlay in the browser.\n */\nexport class NetworkErrorLinkPlugin extends ApolloLinkPlugin {\n public override createLink() {\n return onError(({ networkError, operation }) => {\n const debug = appConfig.getKey(\"DEBUG\", boolean(process.env.REACT_APP_DEBUG));\n\n if (networkError && debug) {\n createErrorOverlay({ query: print(operation.query), networkError });\n }\n\n // TODO: also print graphQLErrors\n });\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["OmitTypenameLinkPlugin.ts"],"names":["ApolloLink","ApolloLinkPlugin","omitTypename","key","value","undefined","OmitTypenameLinkPlugin","operation","forward","variables","JSON","parse","stringify"],"mappings":";;;;AAAA,SAASA,UAAT,QAA2B,aAA3B;AACA,SAASC,gBAAT;;AAEA,SAASC,YAAT,CAAsBC,GAAtB,EAAmCC,KAAnC,EAAsE;AAClE,SAAOD,GAAG,KAAK,YAAR,GAAuBE,SAAvB,GAAmCD,KAA1C;AACH;AAED;AACA;AACA;;;AACA,WAAaE,sBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA,WACI,sBAAyC;AACrC,aAAO,IAAIN,UAAJ,CAAe,UAACO,SAAD,EAAYC,OAAZ,EAAwB;AAC1C,YAAID,SAAS,CAACE,SAAd,EAAyB;AACrBF,UAAAA,SAAS,CAACE,SAAV,GAAsBC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,SAAL,CAAeL,SAAS,CAACE,SAAzB,CAAX,EAAgDP,YAAhD,CAAtB;AACH;;AACD,eAAOM,OAAO,CAACD,SAAD,CAAd;AACH,OALM,CAAP;AAMH;AARL;;AAAA;AAAA,EAA4CN,gBAA5C","sourcesContent":["import { ApolloLink } from \"apollo-link\";\nimport { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\n\nfunction omitTypename(key: string, value: string): string | undefined {\n return key === \"__typename\" ? undefined : value;\n}\n\n/**\n * This link removes `__typename` from the variables being sent to the API.\n */\nexport class OmitTypenameLinkPlugin extends ApolloLinkPlugin {\n public override createLink(): ApolloLink {\n return new ApolloLink((operation, forward) => {\n if (operation.variables) {\n operation.variables = JSON.parse(JSON.stringify(operation.variables), omitTypename);\n }\n return forward(operation);\n });\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import * as React from "react";
2
2
  import { Plugin } from "@webiny/plugins";
3
3
  interface Config {
4
- route: React.ReactElement;
4
+ route: React.ReactElement | null;
5
5
  }
6
6
  export declare class RoutePlugin extends Plugin {
7
- static readonly type = "route";
7
+ static readonly type: string;
8
8
  private _config;
9
9
  constructor(config?: Config);
10
10
  get route(): Config["route"];
@@ -26,6 +26,10 @@ export var RoutePlugin = /*#__PURE__*/function (_Plugin) {
26
26
  _createClass(RoutePlugin, [{
27
27
  key: "route",
28
28
  get: function get() {
29
+ if (!this._config.route) {
30
+ return null;
31
+ }
32
+
29
33
  return this._config.route;
30
34
  }
31
35
  }]);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["RoutePlugin.tsx"],"names":["Plugin","RoutePlugin","config","_config","route"],"mappings":";;;;;;AACA,SAASA,MAAT,QAAuB,iBAAvB;AAMA,WAAaC,WAAb;AAAA;;AAAA;;AAII,uBAAYC,MAAZ,EAA6B;AAAA;;AAAA;;AACzB;;AADyB;;AAEzB,UAAKC,OAAL,GAAeD,MAAM,IAAI,EAAzB;AAFyB;AAG5B;;AAPL;AAAA;AAAA,SASI,eAA6B;AACzB,UAAI,CAAC,KAAKC,OAAL,CAAaC,KAAlB,EAAyB;AACrB,eAAO,IAAP;AACH;;AACD,aAAO,KAAKD,OAAL,CAAaC,KAApB;AACH;AAdL;;AAAA;AAAA,EAAiCJ,MAAjC;;gBAAaC,W,UACsC,O","sourcesContent":["import * as React from \"react\";\nimport { Plugin } from \"@webiny/plugins\";\n\ninterface Config {\n route: React.ReactElement | null;\n}\n\nexport class RoutePlugin extends Plugin {\n public static override readonly type: string = \"route\";\n private _config: Partial<Config>;\n\n constructor(config?: Config) {\n super();\n this._config = config || {};\n }\n\n get route(): Config[\"route\"] {\n if (!this._config.route) {\n return null;\n }\n return this._config.route;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { ApolloLinkPlugin } from "./ApolloLinkPlugin";
2
+ import { ApolloLink } from "apollo-link";
2
3
  declare global {
3
4
  interface Window {
4
5
  __PS_RENDER_TENANT__: string;
@@ -8,7 +9,7 @@ declare global {
8
9
  * Append `x-tenant` header from URL query (necessary for prerendering service).
9
10
  */
10
11
  export declare class TenantHeaderLinkPlugin extends ApolloLinkPlugin {
11
- private tenant;
12
+ private readonly tenant;
12
13
  constructor(tenant?: string);
13
- createLink(): import("apollo-link").ApolloLink;
14
+ createLink(): ApolloLink;
14
15
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["TenantHeaderLinkPlugin.ts"],"names":["setContext","ApolloLinkPlugin","TenantHeaderLinkPlugin","tenant","name","query","URLSearchParams","location","search","get","window","__PS_RENDER_TENANT__","_","headers"],"mappings":";;;;;;;AAAA,SAASA,UAAT,QAA2B,qBAA3B;AACA,SAASC,gBAAT;;AASA;AACA;AACA;AACA,WAAaC,sBAAb;AAAA;;AAAA;;AAGI,kCAAmBC,MAAnB,EAAoC;AAAA;;AAAA;;AAChC;;AADgC;;AAEhC,UAAKC,IAAL,GAAY,oBAAZ;;AAEA,QAAI,CAACD,MAAL,EAAa;AACT,UAAME,KAAK,GAAG,IAAIC,eAAJ,CAAoBC,QAAQ,CAACC,MAA7B,CAAd;AACAL,MAAAA,MAAM,GAAGE,KAAK,CAACI,GAAN,CAAU,UAAV,KAAyBC,MAAM,CAACC,oBAAzC;AACH;;AAED,UAAKR,MAAL,GAAcA,MAAd;AATgC;AAUnC;;AAbL;AAAA;AAAA,WAeI,sBAAyC;AAAA;;AACrC,aAAOH,UAAU,CAAC,UAACY,CAAD,QAAoB;AAAA,YAAdC,OAAc,QAAdA,OAAc;;AAClC;AACA,YAAIA,OAAO,IAAI,cAAcA,OAA7B,EAAsC;AAClC,iBAAO;AAAEA,YAAAA,OAAO,EAAPA;AAAF,WAAP;AACH;;AAED,YAAI,MAAI,CAACV,MAAT,EAAiB;AACb,iBAAO;AACHU,YAAAA,OAAO,kCACAA,OADA;AAEH,0BAAY,MAAI,CAACV;AAFd;AADJ,WAAP;AAMH;;AAED,eAAO;AAAEU,UAAAA,OAAO,EAAPA;AAAF,SAAP;AACH,OAhBgB,CAAjB;AAiBH;AAjCL;;AAAA;AAAA,EAA4CZ,gBAA5C","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"]}
@@ -5,10 +5,10 @@ interface Config<Props> {
5
5
  render(props: Props): React.ReactElement | null;
6
6
  }
7
7
  export declare class ViewPlugin<Props = any> extends Plugin {
8
- static readonly type = "view";
9
- private _config;
8
+ static readonly type: string;
9
+ private readonly _config;
10
10
  constructor(config?: Config<Props>);
11
- get key(): string;
12
- render(props: Props): React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)>) | (new (props: any) => React.Component<any, any, any>)>;
11
+ get key(): string | undefined;
12
+ render(props: Props): React.ReactElement<any, string | React.JSXElementConstructor<any>> | null;
13
13
  }
14
14
  export {};
@@ -31,6 +31,10 @@ export var ViewPlugin = /*#__PURE__*/function (_Plugin) {
31
31
  }, {
32
32
  key: "render",
33
33
  value: function render(props) {
34
+ if (!this._config.render) {
35
+ return null;
36
+ }
37
+
34
38
  return this._config.render(props);
35
39
  }
36
40
  }]);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ViewPlugin.ts"],"names":["Plugin","ViewPlugin","config","_config","name","props","render"],"mappings":";;;;;;AACA,SAASA,MAAT,QAAuB,iBAAvB;AAOA,WAAaC,UAAb;AAAA;;AAAA;;AAII,sBAAmBC,MAAnB,EAA2C;AAAA;;AAAA;;AACvC;;AADuC;;AAEvC,UAAKC,OAAL,GAAeD,MAAM,IAAI,EAAzB;AAFuC;AAG1C;;AAPL;AAAA;AAAA,SASI,eAAU;AACN,aAAO,KAAKC,OAAL,CAAaC,IAApB;AACH;AAXL;AAAA;AAAA,WAaI,gBAAcC,KAAd,EAA4B;AACxB,UAAI,CAAC,KAAKF,OAAL,CAAaG,MAAlB,EAA0B;AACtB,eAAO,IAAP;AACH;;AACD,aAAO,KAAKH,OAAL,CAAaG,MAAb,CAAoBD,KAApB,CAAP;AACH;AAlBL;;AAAA;AAAA,EAA6CL,MAA7C;;gBAAaC,U,UACsC,M","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"]}
package/plugins/image.js CHANGED
@@ -35,43 +35,48 @@ var getSupportedImageResizeWidth = function getSupportedImageResizeWidth(width)
35
35
 
36
36
  return output;
37
37
  };
38
+
38
39
  /**
39
40
  * Currently we only allow "width" as a transform option.
40
41
  * @param args
41
42
  */
42
-
43
-
44
43
  var sanitizeTransformArgs = function sanitizeTransformArgs(args) {
45
44
  var output = {};
46
45
 
47
- if (args) {
48
- var width = parseInt(args.width);
46
+ if (!args || args.width === undefined || args.width === null) {
47
+ return output;
48
+ }
49
+
50
+ var width = parseInt(args.width);
49
51
 
50
- if (width > 0) {
51
- output.width = getSupportedImageResizeWidth(width);
52
- }
52
+ if (width > 0) {
53
+ output.width = getSupportedImageResizeWidth(width);
53
54
  }
54
55
 
55
56
  return output;
56
57
  };
57
58
 
58
59
  var getSizes = function getSizes(width) {
59
- // Check if width was set as percentage, with "%" in the value.
60
- if (typeof width === "string" && width.endsWith("%")) {
60
+ if (typeof width !== "string") {
61
+ return undefined;
62
+ } // Check if width was set as percentage, with "%" in the value.
63
+
64
+
65
+ if (width.endsWith("%")) {
61
66
  return "".concat(parseInt(width), "vw");
62
67
  } // Check if width was set as viewport width, with "vw" in the value.
63
68
 
64
69
 
65
- if (typeof width === "string" && width.endsWith("vw")) {
70
+ if (width.endsWith("vw")) {
66
71
  return "".concat(parseInt(width), "vw");
67
72
  } // Check if width was set as relative, with "em" in the value.
68
73
 
69
74
 
70
- if (typeof width === "string" && width.endsWith("em")) {
75
+ if (width.endsWith("em")) {
71
76
  return "".concat(parseInt(width), "em");
72
77
  }
73
78
 
74
- return null;
79
+ return undefined;
75
80
  };
76
81
 
77
82
  var isFixedImageWidth = function isFixedImageWidth(width) {
@@ -125,8 +130,8 @@ export default (function () {
125
130
  return src;
126
131
  }
127
132
 
128
- var params = sanitizeTransformArgs(transform);
129
- params = convertTransformToQueryParams(params);
133
+ var sanitizedParams = sanitizeTransformArgs(transform);
134
+ var params = convertTransformToQueryParams(sanitizedParams);
130
135
  return src + "?" + params;
131
136
  },
132
137
  render: function render(props) {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["image.tsx"],"names":["React","Image","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"],"mappings":"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","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"]}
package/plugins/index.js CHANGED
@@ -53,7 +53,17 @@ export var renderPlugins = function renderPlugins(type) {
53
53
  return v;
54
54
  } : _options$filter,
55
55
  reverse = options.reverse;
56
- var content = plugins.byType(type).filter(filter).map(function (plugin) {
56
+ var content = plugins.byType(type).filter(function (pl) {
57
+ /**
58
+ * TODO @ts-refactor Problem with possibility of a different subtype.
59
+ */
60
+ // @ts-ignore
61
+ return filter(pl);
62
+ })
63
+ /**
64
+ * We cast as string because renderPlugin checks for the plugin.name
65
+ */
66
+ .map(function (plugin) {
57
67
  return renderPlugin(plugin.name, params, {
58
68
  wrapper: wrapper,
59
69
  fn: fn
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":["React","warning","plugins","imagePlugin","PluginComponent","props","children","PluginsComponent","renderPlugin","name","params","options","wrapper","fn","plugin","byName","content","cloneElement","key","renderPlugins","type","filter","v","reverse","byType","pl","map","Boolean"],"mappings":"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","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"]}
package/types.d.ts CHANGED
@@ -2,6 +2,20 @@ import * as React from "react";
2
2
  import { Plugin } from "@webiny/plugins/types";
3
3
  import { ApolloClient } from "apollo-client";
4
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
+ }
5
19
  export declare type WebinyInitPlugin = Plugin & {
6
20
  type: "webiny-init";
7
21
  init(): void;
@@ -15,14 +29,14 @@ export declare type UiStatePlugin = Plugin & {
15
29
  };
16
30
  export declare type FileUploaderPlugin = Plugin & {
17
31
  type: "file-uploader";
18
- upload(file: File, options: UploadOptions): Promise<any>;
32
+ upload(file: FileItem, options: UploadOptions): Promise<any>;
19
33
  };
20
34
  export declare type AppFileManagerStoragePlugin = Plugin & {
21
35
  type: "app-file-manager-storage";
22
- upload(file: File, options: UploadOptions): Promise<any>;
36
+ upload(file: FileItem, options: UploadOptions): Promise<any>;
23
37
  };
24
38
  export { Plugin };
25
- export declare type ImageProps = {
39
+ export interface ImageProps {
26
40
  src: string;
27
41
  preset?: string;
28
42
  transform?: {
@@ -35,7 +49,8 @@ export declare type ImageProps = {
35
49
  title?: string;
36
50
  alt?: string;
37
51
  style?: CSSProperties;
38
- };
52
+ width?: number;
53
+ }
39
54
  /**
40
55
  * "getImageSrc" has to be defined as a separate property, so its functionality can be reused outside of
41
56
  * the Image component. This is ideal in cases where manual creation of image src is needed.
@@ -43,7 +58,7 @@ export declare type ImageProps = {
43
58
  export declare type ImageComponentPlugin = Plugin & {
44
59
  type: "image-component";
45
60
  render: (props: ImageProps) => React.ReactElement;
46
- getImageSrc: (props?: Object) => string;
61
+ getImageSrc: (props?: Record<string, any>) => string;
47
62
  presets: {
48
63
  [key: string]: any;
49
64
  };
@@ -56,7 +71,12 @@ export declare type RoutePlugin = Plugin & {
56
71
  type: "route";
57
72
  route: React.ReactElement;
58
73
  };
74
+ interface CacheGetObjectIdPluginObj {
75
+ __typename: string;
76
+ modelId: string;
77
+ [key: string]: any;
78
+ }
59
79
  export declare type CacheGetObjectIdPlugin = Plugin & {
60
80
  type: "cache-get-object-id";
61
- getObjectId(obj: Record<string, any>): string | undefined;
81
+ getObjectId(obj: CacheGetObjectIdPluginObj): string | undefined;
62
82
  };
package/types.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["types.ts"],"names":["Plugin"],"mappings":"AACA,SAASA,MAAT,QAAuB,uBAAvB;AA6CA,SAASA,MAAT","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 WebinyInitPlugin = Plugin & {\n type: \"webiny-init\";\n init(): void;\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?: 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\ninterface CacheGetObjectIdPluginObj {\n __typename: string;\n modelId: string;\n [key: string]: any;\n}\nexport type CacheGetObjectIdPlugin = Plugin & {\n type: \"cache-get-object-id\";\n getObjectId(obj: CacheGetObjectIdPluginObj): string | undefined;\n};\n"]}