@webiny/app 5.24.0 → 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 (68) 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 +1 -1
  9. package/contexts/Ui/index.js.map +1 -0
  10. package/hooks/useAutocomplete/index.js.map +1 -0
  11. package/hooks/useAutocomplete/useAutocomplete.js.map +1 -0
  12. package/hooks/useDataList/functions/getData.d.ts +1 -1
  13. package/hooks/useDataList/functions/getData.js.map +1 -0
  14. package/hooks/useDataList/functions/getError.d.ts +1 -1
  15. package/hooks/useDataList/functions/getError.js.map +1 -0
  16. package/hooks/useDataList/functions/getMeta.d.ts +1 -1
  17. package/hooks/useDataList/functions/getMeta.js.map +1 -0
  18. package/hooks/useDataList/functions/index.js.map +1 -0
  19. package/hooks/useDataList/functions/searchDataByKey.js.map +1 -0
  20. package/hooks/useDataList/index.js.map +1 -0
  21. package/hooks/useDataList/useDataList.d.ts +4 -4
  22. package/hooks/useDataList/useDataList.js +1 -1
  23. package/hooks/useDataList/useDataList.js.map +1 -0
  24. package/hooks/useDataList/utils/index.js.map +1 -0
  25. package/hooks/useDataList/utils/prepareLoadListParams.d.ts +9 -3
  26. package/hooks/useDataList/utils/prepareLoadListParams.js +12 -7
  27. package/hooks/useDataList/utils/prepareLoadListParams.js.map +1 -0
  28. package/hooks/useDataList/utils/redirectToRouteWithQueryParams.js.map +1 -0
  29. package/hooks/useDataList/utils/types.js.map +1 -0
  30. package/hooks/useHandler.js.map +1 -0
  31. package/hooks/useHandlers.js.map +1 -0
  32. package/hooks/useUi.js.map +1 -0
  33. package/i18n/i18n.js.map +1 -0
  34. package/i18n/index.js.map +1 -0
  35. package/package.json +13 -13
  36. package/plugins/AddQuerySelectionPlugin.js +17 -3
  37. package/plugins/AddQuerySelectionPlugin.js.map +1 -0
  38. package/plugins/ApolloCacheObjectIdPlugin.d.ts +6 -6
  39. package/plugins/ApolloCacheObjectIdPlugin.js.map +1 -0
  40. package/plugins/ApolloDynamicLink.js +2 -1
  41. package/plugins/ApolloDynamicLink.js.map +1 -0
  42. package/plugins/ApolloLinkPlugin.d.ts +3 -3
  43. package/plugins/ApolloLinkPlugin.js.map +1 -0
  44. package/plugins/ConsoleLinkPlugin.js.map +1 -0
  45. package/plugins/LocaleHeaderLinkPlugin.d.ts +3 -2
  46. package/plugins/LocaleHeaderLinkPlugin.js.map +1 -0
  47. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.d.ts +10 -3
  48. package/plugins/NetworkErrorLinkPlugin/ErrorOverlay.js.map +1 -0
  49. package/plugins/NetworkErrorLinkPlugin/StyledComponents.d.ts +2 -2
  50. package/plugins/NetworkErrorLinkPlugin/StyledComponents.js.map +1 -0
  51. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.d.ts +4 -3
  52. package/plugins/NetworkErrorLinkPlugin/createErrorOverlay.js.map +1 -0
  53. package/plugins/NetworkErrorLinkPlugin.js.map +1 -0
  54. package/plugins/OmitTypenameLinkPlugin.js.map +1 -0
  55. package/plugins/RoutePlugin.d.ts +2 -2
  56. package/plugins/RoutePlugin.js +4 -0
  57. package/plugins/RoutePlugin.js.map +1 -0
  58. package/plugins/TenantHeaderLinkPlugin.d.ts +3 -2
  59. package/plugins/TenantHeaderLinkPlugin.js.map +1 -0
  60. package/plugins/ViewPlugin.d.ts +4 -4
  61. package/plugins/ViewPlugin.js +4 -0
  62. package/plugins/ViewPlugin.js.map +1 -0
  63. package/plugins/image.js +19 -14
  64. package/plugins/image.js.map +1 -0
  65. package/plugins/index.js +11 -1
  66. package/plugins/index.js.map +1 -0
  67. package/types.d.ts +8 -2
  68. package/types.js.map +1 -0
@@ -1,7 +1,7 @@
1
1
  import { InMemoryCache as BaseInMemoryCache, InMemoryCacheConfig } from "apollo-cache-inmemory";
2
2
  import { DocumentNode } from "graphql";
3
3
  export declare class InMemoryCache extends BaseInMemoryCache {
4
- private transformPlugins;
4
+ private readonly transformPlugins;
5
5
  constructor(config?: InMemoryCacheConfig);
6
6
  transformDocument(document: DocumentNode): DocumentNode;
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["InMemoryCache.ts"],"names":["InMemoryCache","BaseInMemoryCache","plugins","AddQuerySelectionPlugin","ApolloLinkPlugin","config","transformPlugins","byType","type","filter","pl","document","operationName","definitions","name","value","addSelectionToQuery"],"mappings":";;;;;;;;;AAAA,SAASA,aAAa,IAAIC,iBAA1B,QAAwE,uBAAxE;AAEA,SAASC,OAAT,QAAwB,iBAAxB;AACA,SAASC,uBAAT;AACA,SAASC,gBAAT;AAEA,WAAaJ,aAAb;AAAA;;AAAA;;AAGI,yBAAYK,MAAZ,EAA0C;AAAA;;AAAA;;AACtC,8BAAMA,MAAN;;AADsC;;AAGtC,UAAKC,gBAAL,GAAwBJ,OAAO,CAC1BK,MADmB,CACaH,gBAAgB,CAACI,IAD9B,EAEnBC,MAFmB,CAEZ,UAAAC,EAAE;AAAA,aAAIA,EAAE,YAAYP,uBAAlB;AAAA,KAFU,CAAxB;AAHsC;AAMzC;;AATL;AAAA;AAAA,WAWI,2BAAkCQ,QAAlC,EAAwE;AACpE;AACA,UAAMC,aAAa,GAAGD,QAAQ,CAACE,WAAT,CAAqB,CAArB,EAAwBC,IAAxB,CAA6BC,KAAnD;;AAFoE,iDAInD,KAAKT,gBAJ8C;AAAA;;AAAA;AAIpE,4DAAwC;AAAA,cAA7BI,EAA6B;AACpCA,UAAAA,EAAE,CAACM,mBAAH,CAAuBJ,aAAvB,EAAsCD,QAAtC;AACH;AANmE;AAAA;AAAA;AAAA;AAAA;;AAQpE,kGAA+BA,QAA/B;AACH;AApBL;;AAAA;AAAA,EAAmCV,iBAAnC","sourcesContent":["import { InMemoryCache as BaseInMemoryCache, InMemoryCacheConfig } from \"apollo-cache-inmemory\";\nimport { DocumentNode } from \"graphql\";\nimport { plugins } from \"@webiny/plugins\";\nimport { AddQuerySelectionPlugin } from \"../plugins/AddQuerySelectionPlugin\";\nimport { ApolloLinkPlugin } from \"../plugins/ApolloLinkPlugin\";\n\nexport class InMemoryCache extends BaseInMemoryCache {\n private readonly transformPlugins: AddQuerySelectionPlugin[];\n\n constructor(config?: InMemoryCacheConfig) {\n super(config);\n\n this.transformPlugins = plugins\n .byType<AddQuerySelectionPlugin>(ApolloLinkPlugin.type)\n .filter(pl => pl instanceof AddQuerySelectionPlugin);\n }\n\n public override transformDocument(document: DocumentNode): DocumentNode {\n // @ts-ignore\n const operationName = document.definitions[0].name.value;\n\n for (const pl of this.transformPlugins) {\n pl.addSelectionToQuery(operationName, document);\n }\n\n return super.transformDocument(document);\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Image.tsx"],"names":["invariant","plugins","Image","presetName","preset","props","plugin","byName","Error","transform","src","getImageSrc","render"],"mappings":";;;AACA,OAAOA,SAAP,MAAsB,WAAtB;AACA,SAASC,OAAT,QAAwB,iBAAxB;AAIA,OAAO,IAAMC,KAA2B,GAAG,SAA9BA,KAA8B,OAAsC;AAAA,MAA3BC,UAA2B,QAAnCC,MAAmC;AAAA,MAAZC,KAAY;;AAC7E,MAAMC,MAAM,GAAGL,OAAO,CAACM,MAAR,CAAqC,iBAArC,CAAf;;AACA,MAAI,CAACD,MAAL,EAAa;AACT,UAAM,IAAIE,KAAJ,kEAAN;AACH;;AAED,MAAIL,UAAJ,EAAgB;AACZ,QAAMC,MAAM,GAAG,KAAIE,MAAJ,oBAAuBH,UAAvB,EAAf;;AACAH,IAAAA,SAAS,CAACI,MAAD,+BAA8BD,UAA9B,mBAAT;AACAE,IAAAA,KAAK,CAACI,SAAN,GAAkBL,MAAlB;AACH;;AAED,MAAIC,KAAK,CAACI,SAAV,EAAqB;AACjBJ,IAAAA,KAAK,CAACK,GAAN,GAAYJ,MAAM,CAACK,WAAP,CAAmBN,KAAnB,CAAZ;AACH;;AAED,SAAOC,MAAM,CAACM,MAAP,CAAcP,KAAd,CAAP;AACH,CAjBM","sourcesContent":["import * as React from \"react\";\nimport invariant from \"invariant\";\nimport { plugins } from \"@webiny/plugins\";\nimport { get } from \"lodash\";\nimport { ImageComponentPlugin, ImageProps } from \"~/types\";\n\nexport const Image: React.FC<ImageProps> = ({ preset: presetName, ...props }) => {\n const plugin = plugins.byName<ImageComponentPlugin>(\"image-component\");\n if (!plugin) {\n throw new Error(`Image component plugin (type \"image-component\") not defined.`);\n }\n\n if (presetName) {\n const preset = get(plugin, `presets.${presetName}`);\n invariant(preset, `Transform preset \"${presetName}\" not found.`);\n props.transform = preset;\n }\n\n if (props.transform) {\n props.src = plugin.getImageSrc(props);\n }\n\n return plugin.render(props);\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Routes.tsx"],"names":["React","plugins","Switch","Routes","routes","byType","sort","a","b","pathA","route","props","path","pathB","includes","map","name","cloneElement","key"],"mappings":";AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,OAAT,QAAwB,iBAAxB;AACA,SAASC,MAAT,QAAuB,sBAAvB;AAGA,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;AACxB;AACA,MAAMC,MAAM,GAAG,mBAAIH,OAAO,CAACI,MAAR,CAA4B,OAA5B,CAAJ,EAA0CC,IAA1C,CAA+C,UAACC,CAAD,EAAIC,CAAJ,EAAU;AACpE,QAAMC,KAAK,GAAGF,CAAC,CAACG,KAAF,CAAQC,KAAR,CAAcC,IAAd,IAAsB,GAApC;AACA,QAAMC,KAAK,GAAGL,CAAC,CAACE,KAAF,CAAQC,KAAR,CAAcC,IAAd,IAAsB,GAApC,CAFoE,CAIpE;;AACA,QAAIH,KAAK,KAAK,GAAV,IAAiBI,KAAK,KAAK,GAA/B,EAAoC;AAChC,aAAO,CAAC,CAAR;AACH,KAPmE,CASpE;;;AACA,QAAIJ,KAAK,KAAK,GAAV,IAAiBA,KAAK,KAAK,GAA/B,EAAoC;AAChC,aAAO,CAAP;AACH,KAZmE,CAcpE;;;AACA,QAAI,CAAC,GAAD,EAAM,GAAN,EAAWK,QAAX,CAAoBD,KAApB,CAAJ,EAAgC;AAC5B,aAAO,CAAC,CAAR;AACH;;AAED,WAAO,CAAP;AACH,GApBc,CAAf;;AAsBA,sBACI,oBAAC,MAAD,QAAST,MAAM,CAACW,GAAP,CAAW;AAAA,QAAGL,KAAH,QAAGA,KAAH;AAAA,QAAUM,IAAV,QAAUA,IAAV;AAAA,wBAAqBhB,KAAK,CAACiB,YAAN,CAAmBP,KAAnB,EAA0B;AAAEQ,MAAAA,GAAG,EAAEF;AAAP,KAA1B,CAArB;AAAA,GAAX,CAAT,CADJ;AAGH,CA3BM","sourcesContent":["import React from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { Switch } from \"@webiny/react-router\";\nimport { RoutePlugin } from \"../types\";\n\nexport const Routes = () => {\n // We cannot call `sort` on the array returned by the `plugins.byType` call - it is read-only.\n const routes = [...plugins.byType<RoutePlugin>(\"route\")].sort((a, b) => {\n const pathA = a.route.props.path || \"*\";\n const pathB = b.route.props.path || \"*\";\n\n // This will sort paths at the very bottom of the list\n if (pathA === \"/\" && pathB === \"*\") {\n return -1;\n }\n\n // This will push * and / to the bottom of the list\n if (pathA === \"*\" || pathA === \"/\") {\n return 1;\n }\n\n // This will push * and / to the bottom of the list\n if ([\"*\", \"/\"].includes(pathB)) {\n return -1;\n }\n\n return 0;\n });\n\n return (\n <Switch>{routes.map(({ route, name }) => React.cloneElement(route, { key: name }))}</Switch>\n );\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["View.tsx"],"names":["React","Fragment","plugins","ViewPlugin","View","name","children","props","viewPlugins","byType","type","filter","pl","key","length","reduce","el","render"],"mappings":";AAAA,OAAOA,KAAP,IAAgBC,QAAhB,QAAgC,OAAhC;AACA,SAASC,OAAT,QAAwB,iBAAxB;AACA,SAASC,UAAT;AAQA,OAAO,IAAMC,IAAI,GAAG,SAAPA,IAAO,OAA2C;AAAA,MAAxCC,IAAwC,QAAxCA,IAAwC;AAAA,MAAlCC,QAAkC,QAAlCA,QAAkC;AAAA,wBAAxBC,KAAwB;AAAA,MAAxBA,KAAwB,2BAAhB,EAAgB;AAC3D,MAAMC,WAAW,GAAGN,OAAO,CAACO,MAAR,CAA2BN,UAAU,CAACO,IAAtC,EAA4CC,MAA5C,CAAmD,UAAAC,EAAE;AAAA,WAAIA,EAAE,CAACC,GAAH,KAAWR,IAAf;AAAA,GAArD,CAApB;;AAEA,MAAIG,WAAW,CAACM,MAAhB,EAAwB;AACpBR,IAAAA,QAAQ,GAAGE,WAAW,CAACO,MAAZ,CAAmB,UAACC,EAAD,EAAKJ,EAAL;AAAA,aAAYA,EAAE,CAACK,MAAH;AAAYX,QAAAA,QAAQ,EAAEU;AAAtB,SAA6BT,KAA7B,EAAZ;AAAA,KAAnB,EAAsED,QAAtE,CAAX;AACH;;AAED,sBAAO,oBAAC,QAAD,QAAWA,QAAQ,IAAI,IAAvB,CAAP;AACH,CARM","sourcesContent":["import React, { Fragment } from \"react\";\nimport { plugins } from \"@webiny/plugins\";\nimport { ViewPlugin } from \"../plugins/ViewPlugin\";\n\ninterface Props {\n name: string;\n props?: Record<string, any>;\n children?: React.ReactNode;\n}\n\nexport const View = ({ name, children, props = {} }: Props) => {\n const viewPlugins = plugins.byType<ViewPlugin>(ViewPlugin.type).filter(pl => pl.key === name);\n\n if (viewPlugins.length) {\n children = viewPlugins.reduce((el, pl) => pl.render({ children: el, ...props }), children);\n }\n\n return <Fragment>{children || null}</Fragment>;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["Image","Routes"],"mappings":"AAAA,SAASA,KAAT;AACA,SAASC,MAAT","sourcesContent":["export { Image } from \"./Image\";\nexport { Routes } from \"./Routes\";\n"]}
package/config.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["config.ts"],"names":["deepFreeze","obj","Object","keys","forEach","prop","isFrozen","freeze","createConfig","_config","set","config","get","getKey","key","defaultValue"],"mappings":"AAQA,IAAMA,UAAU,GAAG,SAAbA,UAAa,CAACC,GAAD,EAAmD;AAClEC,EAAAA,MAAM,CAACC,IAAP,CAAYF,GAAZ,EAAiBG,OAAjB,CAAyB,UAAAC,IAAI,EAAI;AAC7B,QAAI,OAAOJ,GAAG,CAACI,IAAD,CAAV,KAAqB,QAArB,IAAiC,CAACH,MAAM,CAACI,QAAP,CAAgBL,GAAG,CAACI,IAAD,CAAnB,CAAtC,EAAkE;AAC9DL,MAAAA,UAAU,CAACC,GAAG,CAACI,IAAD,CAAJ,CAAV;AACH;AACJ,GAJD;AAKA,SAAOH,MAAM,CAACK,MAAP,CAAcN,GAAd,CAAP;AACH,CAPD;;AASA,SAASO,YAAT,GAAmC;AAC/B,MAAIC,OAA4B,GAAG,EAAnC;AAEA,SAAO;AACHC,IAAAA,GADG,eACCC,MADD,EACiB;AAChBF,MAAAA,OAAO,GAAGT,UAAU,CAACW,MAAD,CAApB;AACH,KAHE;AAIHC,IAAAA,GAJG,iBAIG;AACF,aAAOH,OAAP;AACH,KANE;AAOHI,IAAAA,MAPG,kBAOIC,GAPJ,EAOSC,YAPT,EAOuB;AACtB,aAAOD,GAAG,IAAIL,OAAP,GAAiBA,OAAO,CAACK,GAAD,CAAxB,GAAgCC,YAAvC;AACH;AATE,GAAP;AAWH;;AAED,OAAO,IAAMJ,MAAM,GAAGH,YAAY,EAA3B","sourcesContent":["export type Config = Record<string, any>;\n\ninterface AppConfig {\n set(config: Config): void;\n get(): Config;\n getKey<T = string>(key: string, defaultValue: T): T;\n}\n\nconst deepFreeze = (obj: Record<string, any>): Record<string, any> => {\n Object.keys(obj).forEach(prop => {\n if (typeof obj[prop] === \"object\" && !Object.isFrozen(obj[prop])) {\n deepFreeze(obj[prop]);\n }\n });\n return Object.freeze(obj);\n};\n\nfunction createConfig(): AppConfig {\n let _config: Record<string, any> = {};\n\n return {\n set(config: Config) {\n _config = deepFreeze(config);\n },\n get() {\n return _config;\n },\n getKey(key, defaultValue) {\n return key in _config ? _config[key] : defaultValue;\n }\n };\n}\n\nexport const config = createConfig();\n"]}
@@ -18,7 +18,7 @@ export interface UiContextValue {
18
18
  }
19
19
  export declare class UiProvider extends React.Component<Props, State> {
20
20
  state: State;
21
- setData: (setter: Function) => void;
21
+ private readonly setData;
22
22
  render(): JSX.Element;
23
23
  }
24
24
  export interface UiConsumerProps {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.tsx"],"names":["React","plugins","UiContext","createContext","UiProvider","ui","setter","setState","state","value","setData","uiStatePlugins","byType","map","pl","cloneElement","render","key","name","props","children","Component","UiConsumer"],"mappings":";;;;;;;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAEA,SAASC,OAAT,QAAwB,iBAAxB;AAEA,OAAO,IAAMC,SAAS,gBAAGF,KAAK,CAACG,aAAN,CAAoB,EAApB,CAAlB;AAqBP,WAAaC,UAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,4DACmC;AAC3BC,MAAAA,EAAE,EAAE;AADuB,KADnC;;AAAA,8DAK+B,UAACC,MAAD,EAA4B;AACnD,aAAO,MAAKC,QAAL,CAAc,UAACC,KAAD,EAAkB;AACnC,eAAO;AAAEH,UAAAA,EAAE,kCAAOG,KAAK,CAACH,EAAb,GAAoBC,MAAM,CAACE,KAAK,CAACH,EAAP,CAA1B;AAAJ,SAAP;AACH,OAFM,CAAP;AAGH,KATL;;AAAA;AAAA;;AAAA;AAAA;AAAA,WAWI,kBAAyB;AACrB,UAAMI,KAAqB,mCAAQ,KAAKD,KAAL,CAAWH,EAAnB;AAAuBE,QAAAA,QAAQ,EAAE,KAAKG;AAAtC,QAA3B;;AACA,UAAMC,cAAc,GAAGV,OAAO,CAACW,MAAR,CAA8B,UAA9B,CAAvB;AACA,0BACI,oBAAC,SAAD,CAAW,QAAX;AAAoB,QAAA,KAAK,EAAEH;AAA3B,SACKE,cAAc,CAACE,GAAf,CAAmB,UAAAC,EAAE;AAAA,4BAAId,KAAK,CAACe,YAAN,CAAmBD,EAAE,CAACE,MAAH,EAAnB,EAAgC;AAAEC,UAAAA,GAAG,EAAEH,EAAE,CAACI;AAAV,SAAhC,CAAJ;AAAA,OAArB,CADL,EAEK,KAAKC,KAAL,CAAWC,QAFhB,CADJ;AAMH;AApBL;;AAAA;AAAA,EAAgCpB,KAAK,CAACqB,SAAtC;AA0BA,OAAO,IAAMC,UAAqC,GAAG,SAAxCA,UAAwC,OAAkB;AAAA,MAAfF,QAAe,QAAfA,QAAe;AACnE,sBAAO,oBAAC,SAAD,CAAW,QAAX,QAAqB,UAAAf,EAAE;AAAA,wBAAIL,KAAK,CAACe,YAAN,CAAmBK,QAAnB,EAA6B;AAAEf,MAAAA,EAAE,EAAFA;AAAF,KAA7B,CAAJ;AAAA,GAAvB,CAAP;AACH,CAFM","sourcesContent":["import React from \"react\";\nimport { UiStatePlugin } from \"~/types\";\nimport { plugins } from \"@webiny/plugins\";\n\nexport const UiContext = React.createContext({});\n\ntype Props = {};\n\ntype State = {\n ui: { [key: string]: any };\n};\n\ninterface UiData {\n [key: string]: any;\n}\n\ninterface UiDataSetter {\n (ui: UiData): UiData;\n}\n\nexport interface UiContextValue {\n setState: (setter: UiDataSetter) => void;\n [key: string]: any;\n}\n\nexport class UiProvider extends React.Component<Props, State> {\n public override state: State = {\n ui: {}\n };\n\n private readonly setData = (setter: Function): void => {\n return this.setState((state: State) => {\n return { ui: { ...state.ui, ...setter(state.ui) } };\n });\n };\n\n public override render() {\n const value: UiContextValue = { ...this.state.ui, setState: this.setData };\n const uiStatePlugins = plugins.byType<UiStatePlugin>(\"ui-state\");\n return (\n <UiContext.Provider value={value}>\n {uiStatePlugins.map(pl => React.cloneElement(pl.render(), { key: pl.name }))}\n {this.props.children}\n </UiContext.Provider>\n );\n }\n}\n\nexport interface UiConsumerProps {\n children: React.ReactElement;\n}\nexport const UiConsumer: React.FC<UiConsumerProps> = ({ children }) => {\n return <UiContext.Consumer>{ui => React.cloneElement(children, { ui })}</UiContext.Consumer>;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["useAutocomplete"],"mappings":"AAAA,SAASA,eAAT","sourcesContent":["export { useAutocomplete } from \"./useAutocomplete\";\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useAutocomplete.ts"],"names":["useDataList","useAutocomplete","props","dataList","useRouter","options","data","onInput","query","search","setSearch"],"mappings":";;AAAA,SAASA,WAAT;AAcA,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD,EAAuC;AAClE,MAAMC,QAAQ,GAAGH,WAAW;AAAGI,IAAAA,SAAS,EAAE;AAAd,KAAwBF,KAAxB,EAA5B;AAEA,SAAO;AACHG,IAAAA,OAAO,EAAEF,QAAQ,CAACG,IAAT,IAAiB,EADvB;AAEHC,IAAAA,OAAO,EAAE,UAAS,UAAAC,KAAK,EAAI;AACvB,UAAI,CAACA,KAAL,EAAY;AACR;AACH;;AAED,UAAIC,MAAM,GAAGP,KAAK,CAACO,MAAN,IAAgBD,KAA7B;;AACA,UAAI,OAAOC,MAAP,KAAkB,UAAtB,EAAkC;AAC9BA,QAAAA,MAAM,GAAGA,MAAM,CAACD,KAAD,CAAf;AACH;;AAEDL,MAAAA,QAAQ,CAACO,SAAT,CAAmBD,MAAnB;AACH,KAXQ,EAWN,GAXM;AAFN,GAAP;AAeH,CAlBM","sourcesContent":["import { useDataList } from \"../useDataList\";\nimport { debounce } from \"lodash\";\nimport { DocumentNode } from \"graphql\";\n\ninterface UseAutocompleteHook {\n options: any[];\n onInput(value: string): void;\n}\n\ninterface Props {\n query: DocumentNode;\n search?: string | ((value: string) => string);\n}\n\nexport const useAutocomplete = (props: Props): UseAutocompleteHook => {\n const dataList = useDataList({ useRouter: false, ...props });\n\n return {\n options: dataList.data || [],\n onInput: debounce(query => {\n if (!query) {\n return;\n }\n\n let search = props.search || query;\n if (typeof search === \"function\") {\n search = search(query);\n }\n\n dataList.setSearch(search);\n }, 250)\n };\n};\n"]}
@@ -1,2 +1,2 @@
1
- declare const _default: (response: Record<string, string>) => string;
1
+ declare const _default: (response: Record<string, string>) => string | null;
2
2
  export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getData.ts"],"names":["searchDataByKey","response"],"mappings":"AAAA,OAAOA,eAAP;AAEA,gBAAe,UAACC,QAAD;AAAA,SAAsCD,eAAe,CAAC,MAAD,EAASC,QAAT,CAArD;AAAA,CAAf","sourcesContent":["import searchDataByKey from \"./searchDataByKey\";\n\nexport default (response: Record<string, string>) => searchDataByKey(\"data\", response);\n"]}
@@ -1,2 +1,2 @@
1
- declare const _default: (response: Record<string, string>) => string;
1
+ declare const _default: (response: Record<string, string>) => string | null;
2
2
  export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getError.ts"],"names":["searchDataByKey","response"],"mappings":"AAAA,OAAOA,eAAP;AAEA,gBAAe,UAACC,QAAD;AAAA,SAAsCD,eAAe,CAAC,OAAD,EAAUC,QAAV,CAArD;AAAA,CAAf","sourcesContent":["import searchDataByKey from \"./searchDataByKey\";\n\nexport default (response: Record<string, string>) => searchDataByKey(\"error\", response);\n"]}
@@ -1,2 +1,2 @@
1
- declare const _default: (response: Record<string, string>) => string;
1
+ declare const _default: (response: Record<string, string>) => string | null;
2
2
  export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["getMeta.ts"],"names":["searchDataByKey","response"],"mappings":"AAAA,OAAOA,eAAP;AAEA,gBAAe,UAACC,QAAD;AAAA,SAAsCD,eAAe,CAAC,MAAD,EAASC,QAAT,CAArD;AAAA,CAAf","sourcesContent":["import searchDataByKey from \"./searchDataByKey\";\n\nexport default (response: Record<string, string>) => searchDataByKey(\"meta\", response);\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["default","getData","getError","getMeta"],"mappings":"AAAA,SAASA,OAAO,IAAIC,OAApB;AACA,SAASD,OAAO,IAAIE,QAApB;AACA,SAASF,OAAO,IAAIG,OAApB","sourcesContent":["export { default as getData } from \"./getData\";\nexport { default as getError } from \"./getError\";\nexport { default as getMeta } from \"./getMeta\";\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["searchDataByKey.ts"],"names":["searchDataByKey","searchKey","object","key","value"],"mappings":"AAAA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAACC,SAAD,EAAoBC,MAApB,EAAmE;AACvF,MAAI,CAACA,MAAD,IAAW,OAAOA,MAAP,KAAkB,QAAjC,EAA2C;AACvC,WAAO,IAAP;AACH;;AAED,MAAIA,MAAM,CAACD,SAAD,CAAV,EAAuB;AACnB,WAAOC,MAAM,CAACD,SAAD,CAAb;AACH;;AAED,OAAK,IAAME,GAAX,IAAkBD,MAAlB,EAA0B;AACtB,QAAME,KAAK,GAAGJ,eAAe,CAACC,SAAD,EAAYC,MAAM,CAACC,GAAD,CAAlB,CAA7B;;AACA,QAAIC,KAAJ,EAAW;AACP,aAAOA,KAAP;AACH;AACJ;;AAED,SAAO,IAAP;AACH,CAjBD;;AAmBA,eAAeJ,eAAf","sourcesContent":["const searchDataByKey = (searchKey: string, object: Record<string, any>): string | null => {\n if (!object || typeof object !== \"object\") {\n return null;\n }\n\n if (object[searchKey]) {\n return object[searchKey];\n }\n\n for (const key in object) {\n const value = searchDataByKey(searchKey, object[key]);\n if (value) {\n return value;\n }\n }\n\n return null;\n};\n\nexport default searchDataByKey;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["useDataList"],"mappings":"AAAA,SAASA,WAAT","sourcesContent":["export { useDataList } from \"./useDataList\";\n"]}
@@ -1,6 +1,6 @@
1
1
  import { DocumentNode } from "graphql";
2
2
  import { ApolloClient } from "apollo-client";
3
- export declare type UseDataListParams = {
3
+ export interface UseDataListParams {
4
4
  useRouter?: boolean;
5
5
  variables?: ((params: UseDataListParams) => any) | object;
6
6
  client?: ApolloClient<any>;
@@ -8,8 +8,8 @@ export declare type UseDataListParams = {
8
8
  getData?: (data: any) => any;
9
9
  getMeta?: (data: any) => any;
10
10
  getError?: (data: any) => any;
11
- };
12
- export declare type DataListProps = {
11
+ }
12
+ export interface DataListProps {
13
13
  __loadParams: any;
14
14
  refresh: (params?: any) => void;
15
15
  data: any[];
@@ -31,6 +31,6 @@ export declare type DataListProps = {
31
31
  setNextPage: (cursor: string) => void;
32
32
  multiSelect: (items: string | string[], value?: boolean) => void;
33
33
  init: () => void;
34
- };
34
+ }
35
35
  declare const useDataList: (params: UseDataListParams) => DataListProps;
36
36
  export { useDataList };
@@ -39,7 +39,7 @@ var useDataList = function useDataList(params) {
39
39
  client: params.client,
40
40
  variables: _objectSpread(_objectSpread({}, variables), prepareLoadListParams(location))
41
41
  };
42
- }, undefined);
42
+ }, []);
43
43
  var queryData = useQuery(params.query, getQueryOptions());
44
44
  var prevLoadParamsRef = useRef({});
45
45
  var dataListProps = {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useDataList.ts"],"names":["useState","useEffect","useRef","useCallback","useQuery","useRouter","prepareLoadListParams","getData","getError","getMeta","useDataList","params","multiSelectedItems","multiSelect","history","location","routerHook","getQueryOptions","variables","client","queryData","query","prevLoadParamsRef","dataListProps","data","meta","error","loading","init","refresh","refetch","__loadParams","setPerPage","perPage","preparedParams","limit","parseInt","after","undefined","before","setNextPage","cursor","setPreviousPage","setSearch","search","setWhere","where","setSorters","sort","items","value","Array","isArray","returnItems","forEach","item","includes","splice","indexOf","push","isSelected","URLSearchParams","get","id","select","set","toString","isMultiSelected","isNoneMultiSelected","length","getMultiSelected","multiSelectAll","isAllMultiSelected","prev","current"],"mappings":"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","sourcesContent":["import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { useQuery } from \"@apollo/react-hooks\";\nimport { useRouter } from \"@webiny/react-router\";\nimport { get, isEqual } from \"lodash\";\nimport { prepareLoadListParams } from \"./utils\";\nimport { getData, getError, getMeta } from \"./functions\";\n\nimport { DocumentNode } from \"graphql\";\nimport { ApolloClient } from \"apollo-client\";\n\nexport interface UseDataListParams {\n useRouter?: boolean;\n variables?: ((params: UseDataListParams) => any) | object;\n client?: ApolloClient<any>;\n query: DocumentNode;\n getData?: (data: any) => any;\n getMeta?: (data: any) => any;\n getError?: (data: any) => any;\n}\n\nexport interface DataListProps {\n __loadParams: any;\n refresh: (params?: any) => void;\n data: any[];\n meta: any;\n error: any;\n loading: boolean;\n isSelected: (item: any) => boolean;\n select: (item: any) => void;\n isMultiSelected: (item: any) => boolean;\n isNoneMultiSelected: () => boolean;\n isAllMultiSelected: () => boolean;\n multiSelectAll: (value: boolean) => void;\n getMultiSelected: () => any[];\n setSearch: (search: any) => void;\n setWhere: (where: any) => void;\n setSorters: (sort: any) => void;\n setPerPage: (perPage: number) => void;\n setPreviousPage: (cursor: string) => void;\n setNextPage: (cursor: string) => void;\n multiSelect: (items: string | string[], value?: boolean) => void;\n init: () => void;\n}\n\nconst useDataList = (params: UseDataListParams) => {\n const [multiSelectedItems, multiSelect] = useState<string[]>([]);\n\n let history = null;\n /**\n * TODO: figure out the location type.\n */\n let location: any = null;\n const routerHook = useRouter();\n\n if (params.useRouter !== false) {\n history = routerHook.history;\n location = routerHook.location;\n }\n\n const getQueryOptions = useCallback(() => {\n let variables = params.variables;\n if (typeof variables === \"function\") {\n variables = variables(params);\n }\n\n return {\n client: params.client,\n variables: {\n ...variables,\n ...prepareLoadListParams(location)\n }\n };\n }, []);\n\n const queryData = useQuery(params.query, getQueryOptions());\n const prevLoadParamsRef = useRef({});\n\n const dataListProps: DataListProps = {\n data: get(params, \"getData\", getData)(queryData.data),\n meta: get(params, \"getMeta\", getMeta)(queryData.data),\n error: get(params, \"getError\", getError)(queryData.data),\n\n loading: queryData.loading,\n init() {\n this.refresh();\n },\n refresh(params = null): void {\n // Refresh multi select first.\n multiSelect([]);\n\n if (!params) {\n queryData.refetch(dataListProps.__loadParams);\n return;\n }\n\n // if (history) {\n // redirectToRouteWithQueryParams(params, { history, location });\n // return;\n // }\n\n queryData.refetch(params);\n },\n setPerPage(perPage: number): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n limit: parseInt(\"\" + perPage),\n after: undefined,\n before: undefined\n };\n this.refresh(preparedParams);\n },\n setNextPage(cursor: string): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n after: cursor,\n before: undefined\n };\n this.refresh(preparedParams);\n },\n setPreviousPage(cursor: string): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n after: undefined,\n before: cursor\n };\n this.refresh(preparedParams);\n },\n setSearch(search): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n search,\n after: undefined,\n before: undefined\n };\n this.refresh(preparedParams);\n },\n setWhere(where): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n where,\n after: undefined,\n before: undefined\n };\n this.refresh(preparedParams);\n },\n setSorters(sort): void {\n const preparedParams = {\n ...dataListProps.__loadParams,\n sort,\n after: undefined,\n before: undefined\n };\n this.refresh(preparedParams);\n },\n multiSelect(items, value): void {\n if (!Array.isArray(items)) {\n items = [items];\n }\n\n const returnItems = [...multiSelectedItems];\n\n items.forEach(item => {\n if (value === undefined) {\n returnItems.includes(item)\n ? returnItems.splice(returnItems.indexOf(item), 1)\n : returnItems.push(item);\n } else {\n if (value === true) {\n !returnItems.includes(item) && returnItems.push(item);\n } else {\n returnItems.includes(item) &&\n returnItems.splice(returnItems.indexOf(item), 1);\n }\n }\n });\n\n multiSelect(returnItems);\n },\n isSelected(item) {\n const query = new URLSearchParams(location.search);\n return query.get(\"id\") === item.id;\n },\n select(item) {\n const query = new URLSearchParams(location.search);\n query.set(\"id\", item.id);\n history.push({ search: query.toString() });\n },\n isMultiSelected(item) {\n if (!Array.isArray(multiSelectedItems)) {\n return false;\n }\n\n return multiSelectedItems.includes(item);\n },\n isNoneMultiSelected() {\n return multiSelectedItems.length === 0;\n },\n getMultiSelected() {\n return multiSelectedItems;\n },\n multiSelectAll(value: boolean): void {\n const { data } = dataListProps;\n if (Array.isArray(data)) {\n dataListProps.multiSelect(data, value);\n } else {\n dataListProps.multiSelect([], value);\n }\n },\n isAllMultiSelected(): boolean {\n const { data } = dataListProps;\n\n return Array.isArray(data) && multiSelectedItems.length === data.length;\n },\n\n __loadParams: prepareLoadListParams(location)\n };\n\n useEffect(() => {\n const params = {\n prev: prevLoadParamsRef.current,\n current: dataListProps.__loadParams\n };\n\n if (!isEqual(params.prev, params.current)) {\n dataListProps.init();\n }\n\n prevLoadParamsRef.current = params.current;\n });\n\n return dataListProps;\n};\n\nexport { useDataList };\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["default","prepareLoadListParams","redirectToRouteWithQueryParams"],"mappings":"AAAA,SAASA,OAAO,IAAIC,qBAApB;AACA,SAASD,OAAO,IAAIE,8BAApB","sourcesContent":["export { default as prepareLoadListParams } from \"./prepareLoadListParams\";\nexport { default as redirectToRouteWithQueryParams } from \"./redirectToRouteWithQueryParams\";\n"]}
@@ -1,4 +1,10 @@
1
- declare const _default: (location: Location) => {
2
- [key: string]: any;
3
- };
1
+ interface Params {
2
+ after?: string;
3
+ before?: string;
4
+ limit?: number;
5
+ sort?: string;
6
+ where?: Record<string, any>;
7
+ search?: string;
8
+ }
9
+ declare const _default: (location: Location) => Params;
4
10
  export default _default;
@@ -1,3 +1,4 @@
1
+ var keys = ["sort", "where", "search"];
1
2
  export default (function (location) {
2
3
  var params = {};
3
4
 
@@ -19,13 +20,17 @@ export default (function (location) {
19
20
  params.limit = parseInt(limit);
20
21
  }
21
22
 
22
- ["sort", "where", "search"].forEach(function (key) {
23
- if (typeof query.get(key) === "string") {
24
- try {
25
- params[key] = JSON.parse(query.get(key));
26
- } catch (e) {
27
- params[key] = query.get(key);
28
- }
23
+ keys.forEach(function (key) {
24
+ var value = query.get(key);
25
+
26
+ if (typeof value !== "string") {
27
+ return;
28
+ }
29
+
30
+ try {
31
+ params[key] = JSON.parse(value);
32
+ } catch (e) {
33
+ params[key] = value;
29
34
  }
30
35
  });
31
36
  }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["prepareLoadListParams.ts"],"names":["keys","location","params","query","URLSearchParams","search","after","get","before","limit","parseInt","forEach","key","value","JSON","parse","e"],"mappings":"AASA,IAAMA,IAAsB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAA/B;AAEA,gBAAe,UAACC,QAAD,EAAgC;AAC3C,MAAMC,MAAc,GAAG,EAAvB;;AAEA,MAAID,QAAJ,EAAc;AACV,QAAME,KAAK,GAAG,IAAIC,eAAJ,CAAoBH,QAAQ,CAACI,MAA7B,CAAd;AAEA,QAAMC,KAAK,GAAGH,KAAK,CAACI,GAAN,CAAU,OAAV,CAAd;AACA,QAAMC,MAAM,GAAGL,KAAK,CAACI,GAAN,CAAU,QAAV,CAAf;AACA,QAAME,KAAK,GAAGN,KAAK,CAACI,GAAN,CAAU,OAAV,CAAd;;AAEA,QAAID,KAAJ,EAAW;AACPJ,MAAAA,MAAM,CAACI,KAAP,GAAeA,KAAf;AACH;;AAED,QAAIE,MAAJ,EAAY;AACRN,MAAAA,MAAM,CAACM,MAAP,GAAgBA,MAAhB;AACH;;AAED,QAAIC,KAAJ,EAAW;AACPP,MAAAA,MAAM,CAACO,KAAP,GAAeC,QAAQ,CAACD,KAAD,CAAvB;AACH;;AAEDT,IAAAA,IAAI,CAACW,OAAL,CAAa,UAAAC,GAAG,EAAI;AAChB,UAAMC,KAAK,GAAGV,KAAK,CAACI,GAAN,CAAUK,GAAV,CAAd;;AACA,UAAI,OAAOC,KAAP,KAAiB,QAArB,EAA+B;AAC3B;AACH;;AACD,UAAI;AACAX,QAAAA,MAAM,CAACU,GAAD,CAAN,GAAcE,IAAI,CAACC,KAAL,CAAWF,KAAX,CAAd;AACH,OAFD,CAEE,OAAOG,CAAP,EAAU;AACRd,QAAAA,MAAM,CAACU,GAAD,CAAN,GAAcC,KAAd;AACH;AACJ,KAVD;AAWH;;AAED,SAAOX,MAAP;AACH,CApCD","sourcesContent":["interface Params {\n after?: string;\n before?: string;\n limit?: number;\n sort?: string;\n where?: Record<string, any>;\n search?: string;\n}\n\nconst keys: (keyof Params)[] = [\"sort\", \"where\", \"search\"];\n\nexport default (location: Location): Params => {\n const params: Params = {};\n\n if (location) {\n const query = new URLSearchParams(location.search);\n\n const after = query.get(\"after\");\n const before = query.get(\"before\");\n const limit = query.get(\"limit\");\n\n if (after) {\n params.after = after;\n }\n\n if (before) {\n params.before = before;\n }\n\n if (limit) {\n params.limit = parseInt(limit);\n }\n\n keys.forEach(key => {\n const value = query.get(key);\n if (typeof value !== \"string\") {\n return;\n }\n try {\n params[key] = JSON.parse(value);\n } catch (e) {\n params[key] = value as any;\n }\n });\n }\n\n return params as Params;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["redirectToRouteWithQueryParams.ts"],"names":["params","options","history","location","paramsClone","Object","assign","forEach","key","JSON","stringify","keys","query","URLSearchParams","search","set","delete","push","toString"],"mappings":"AAYA,gBAAe,UAACA,MAAD,EAAiBC,OAAjB,EAA4C;AACvD,MAAQC,OAAR,GAA8BD,OAA9B,CAAQC,OAAR;AAAA,MAAiBC,QAAjB,GAA8BF,OAA9B,CAAiBE,QAAjB;AACA,MAAMC,WAAgC,GAAGC,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBN,MAAlB,CAAzC;AAEA,GAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,EAA4BO,OAA5B,CAAoC,UAAAC,GAAG,EAAI;AACvC,QAAI,OAAOJ,WAAW,CAACI,GAAD,CAAlB,KAA4B,QAAhC,EAA0C;AACtCJ,MAAAA,WAAW,CAACI,GAAD,CAAX,GAAmBC,IAAI,CAACC,SAAL,CAAeN,WAAW,CAACI,GAAD,CAA1B,CAAnB;AACH;AACJ,GAJD;AAMA,MAAMG,IAAc,GAAG,CAAC,OAAD,EAAU,OAAV,EAAmB,QAAnB,EAA6B,OAA7B,EAAsC,QAAtC,EAAgD,MAAhD,CAAvB;AAEA,MAAMC,KAAK,GAAG,IAAIC,eAAJ,CAAoBV,QAAQ,CAACW,MAA7B,CAAd;AACAH,EAAAA,IAAI,CAACJ,OAAL,CAAa,UAAAC,GAAG,EAAI;AAChB,QAAI,OAAOJ,WAAW,CAACI,GAAD,CAAlB,KAA4B,WAAhC,EAA6C;AACzCI,MAAAA,KAAK,CAACG,GAAN,CAAUP,GAAV,EAAeJ,WAAW,CAACI,GAAD,CAA1B;AACH,KAFD,MAEO;AACHI,MAAAA,KAAK,CAACI,MAAN,CAAaR,GAAb;AACH;AACJ,GAND;AAQAN,EAAAA,OAAO,CAACe,IAAR,CAAa;AAAEH,IAAAA,MAAM,EAAEF,KAAK,CAACM,QAAN;AAAV,GAAb;AACH,CAtBD","sourcesContent":["interface Params {\n sort: string;\n search: string;\n where: Record<string, any>;\n}\ninterface Location {\n search: string;\n}\ninterface Options {\n history: Location[];\n location: Location;\n}\nexport default (params: Params, options: Options): void => {\n const { history, location } = options;\n const paramsClone: Record<string, any> = Object.assign({}, params);\n\n [\"sort\", \"search\", \"where\"].forEach(key => {\n if (typeof paramsClone[key] === \"object\") {\n paramsClone[key] = JSON.stringify(paramsClone[key]);\n }\n });\n\n const keys: string[] = [\"limit\", \"after\", \"before\", \"where\", \"search\", \"sort\"];\n\n const query = new URLSearchParams(location.search);\n keys.forEach(key => {\n if (typeof paramsClone[key] !== \"undefined\") {\n query.set(key, paramsClone[key]);\n } else {\n query.delete(key);\n }\n });\n\n history.push({ search: query.toString() });\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useHandler.ts"],"names":["useRef","useEffect","useHandler","props","factory","propsRef","handlerRef","handler","current"],"mappings":"AAAA,SAASA,MAAT,EAAiBC,SAAjB,QAAkC,OAAlC;AAEA;AACA;AACA;;AAOA,OAAO,SAASC,UAAT,CAAoBC,KAApB,EAAkCC,OAAlC,EAAoD;AACvD,MAAMC,QAAQ,GAAGL,MAAM,CAACG,KAAD,CAAvB;AAEA,MAAMG,UAAU,GAAGN,MAAM,CAAC,YAAkB;AACxC,QAAMO,OAAO,GAAGH,OAAO,CAACC,QAAQ,CAACG,OAAV,CAAvB;AACA,WAAOD,OAAO,MAAP,mBAAP;AACH,GAHwB,CAAzB;AAKAN,EAAAA,SAAS,CAAC,YAAM;AACZI,IAAAA,QAAQ,CAACG,OAAT,GAAmBL,KAAnB;AACH,GAFQ,CAAT;AAIA,SAAOG,UAAU,CAACE,OAAlB;AACH","sourcesContent":["import { useRef, useEffect } from \"react\";\n\n/**\n * TODO: figure out any types.\n */\ninterface Props {\n [key: string]: any;\n}\ninterface Factory {\n (...args: any): any;\n}\nexport function useHandler(props: Props, factory: Factory) {\n const propsRef = useRef(props);\n\n const handlerRef = useRef((...args: any) => {\n const handler = factory(propsRef.current);\n return handler(...args);\n });\n\n useEffect(() => {\n propsRef.current = props;\n });\n\n return handlerRef.current;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useHandlers.ts"],"names":["useRef","useEffect","useHandlers","props","factories","propsRef","handlersRef","names","Object","keys","reduce","handlers","name","handler","current"],"mappings":"AAAA,SAASA,MAAT,EAAiBC,SAAjB,QAAkC,OAAlC;AAQA,OAAO,SAASC,WAAT,CAAmCC,KAAnC,EAAwDC,SAAxD,EAAqF;AACxF,MAAMC,QAAQ,GAAGL,MAAM,CAACG,KAAD,CAAvB;AAEA,MAAMG,WAAW,GAAGN,MAAM,CACrB,YAAM;AACH,QAAMO,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYL,SAAZ,CAAd;AACA,WAAOG,KAAK,CAACG,MAAN,CAAa,UAACC,QAAD,EAAWC,IAAX,EAAoB;AACpC;AAChB;AACA;AACgBD,MAAAA,QAAQ,CAACC,IAAD,CAAR,GAAiB,YAAkB;AAC/B,YAAMC,OAAO,GAAGT,SAAS,CAACQ,IAAD,CAAT,CAAgBP,QAAQ,CAACS,OAAzB,CAAhB;AACA,eAAOD,OAAO,MAAP,mBAAP;AACH,OAHD;;AAIA,aAAOF,QAAP;AACH,KATM,EASJ,EATI,CAAP;AAUH,GAZD,EADsB,CAA1B;AAgBAV,EAAAA,SAAS,CAAC,YAAM;AACZI,IAAAA,QAAQ,CAACS,OAAT,GAAmBX,KAAnB;AACH,GAFQ,CAAT;AAIA,SAAOG,WAAW,CAACQ,OAAnB;AACH","sourcesContent":["import { useRef, useEffect } from \"react\";\n\ntype HandlerProps = { [key: string]: any };\ntype HandlerFactories = { [key: string]: (props: HandlerProps) => (...params: any[]) => any };\ntype Handlers = {\n [K in keyof HandlerFactories]: (...params: any[]) => any;\n};\n\nexport function useHandlers<H = Handlers>(props: HandlerProps, factories: HandlerFactories) {\n const propsRef = useRef(props);\n\n const handlersRef = useRef(\n (() => {\n const names = Object.keys(factories);\n return names.reduce((handlers, name) => {\n /**\n * TODO: figure out args types\n */\n handlers[name] = (...args: any) => {\n const handler = factories[name](propsRef.current);\n return handler(...args);\n };\n return handlers;\n }, {} as Record<string, any>);\n })()\n );\n\n useEffect(() => {\n propsRef.current = props;\n });\n\n return handlersRef.current as H;\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useUi.ts"],"names":["useContext","UiContext","useUi"],"mappings":"AAAA,SAASA,UAAT,QAA2B,OAA3B;AACA,SAASC,SAAT;AAEA,OAAO,IAAMC,KAAK,GAAG,SAARA,KAAQ,GAAM;AACvB,SAAOF,UAAU,CAACC,SAAD,CAAjB;AACH,CAFM","sourcesContent":["import { useContext } from \"react\";\nimport { UiContext, UiContextValue } from \"./../contexts/Ui\";\n\nexport const useUi = () => {\n return useContext(UiContext) as UiContextValue;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["i18n.ts"],"names":["i18n","defaultProcessor","defaultModifiers","reactProcessor","registerProcessors","registerModifiers"],"mappings":"AAAA,OAAOA,IAAP,IAAeC,gBAAf,EAAiCC,gBAAjC,QAAyD,cAAzD;AACA,OAAOC,cAAP,MAA2B,oBAA3B;AAEAH,IAAI,CAACI,kBAAL,CAAwB,CAACH,gBAAD,EAAmBE,cAAnB,CAAxB;AACAH,IAAI,CAACK,iBAAL,CAAuBH,gBAAvB;AAEA,eAAeF,IAAf","sourcesContent":["import i18n, { defaultProcessor, defaultModifiers } from \"@webiny/i18n\";\nimport reactProcessor from \"@webiny/i18n-react\";\n\ni18n.registerProcessors([defaultProcessor, reactProcessor]);\ni18n.registerModifiers(defaultModifiers);\n\nexport default i18n;\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.ts"],"names":["default","i18n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,IAApB","sourcesContent":["export { default as i18n } from \"./i18n\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app",
3
- "version": "5.24.0",
3
+ "version": "5.25.0-beta.0",
4
4
  "main": "index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,14 +15,14 @@
15
15
  "license": "MIT",
16
16
  "dependencies": {
17
17
  "@apollo/react-hooks": "3.1.5",
18
- "@babel/runtime": "7.16.7",
18
+ "@babel/runtime": "7.17.2",
19
19
  "@emotion/styled": "10.3.0",
20
20
  "@types/react": "16.14.2",
21
- "@webiny/i18n": "5.24.0",
22
- "@webiny/i18n-react": "5.24.0",
23
- "@webiny/plugins": "5.24.0",
24
- "@webiny/react-router": "5.24.0",
25
- "@webiny/ui": "5.24.0",
21
+ "@webiny/i18n": "5.25.0-beta.0",
22
+ "@webiny/i18n-react": "5.25.0-beta.0",
23
+ "@webiny/plugins": "5.25.0-beta.0",
24
+ "@webiny/react-router": "5.25.0-beta.0",
25
+ "@webiny/ui": "5.25.0-beta.0",
26
26
  "apollo-cache": "1.3.5",
27
27
  "apollo-cache-inmemory": "1.6.6",
28
28
  "apollo-client": "2.6.10",
@@ -30,11 +30,11 @@
30
30
  "apollo-link-context": "1.0.20",
31
31
  "apollo-link-error": "1.1.13",
32
32
  "apollo-utilities": "1.3.4",
33
- "boolean": "3.1.4",
33
+ "boolean": "3.2.0",
34
34
  "graphql": "15.8.0",
35
35
  "invariant": "2.2.4",
36
36
  "lodash": "4.17.21",
37
- "nanoid": "3.2.0",
37
+ "nanoid": "3.3.1",
38
38
  "react": "16.14.0",
39
39
  "react-dom": "16.14.0",
40
40
  "warning": "4.0.3"
@@ -47,11 +47,11 @@
47
47
  "@babel/preset-react": "^7.16.0",
48
48
  "@babel/preset-typescript": "^7.16.0",
49
49
  "@types/warning": "^3.0.0",
50
- "@webiny/cli": "^5.24.0",
51
- "@webiny/project-utils": "^5.24.0",
50
+ "@webiny/cli": "^5.25.0-beta.0",
51
+ "@webiny/project-utils": "^5.25.0-beta.0",
52
52
  "babel-plugin-lodash": "^3.3.4",
53
53
  "rimraf": "^3.0.2",
54
- "typescript": "^4.1.3"
54
+ "typescript": "4.5.5"
55
55
  },
56
56
  "publishConfig": {
57
57
  "access": "public",
@@ -68,5 +68,5 @@
68
68
  ]
69
69
  }
70
70
  },
71
- "gitHead": "be0cbfcaa9247c658c44179af7943cc5d6d71bc7"
71
+ "gitHead": "2d3e7833575e88fde77d84e5490e746933a5ec28"
72
72
  }
@@ -53,9 +53,16 @@ export var AddQuerySelectionPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
53
53
  var _this$config = this.config,
54
54
  addSelection = _this$config.addSelection,
55
55
  selectionPath = _this$config.selectionPath; // TODO: check if the selection is already in the query and don't add it again if not necessary.
56
- // @ts-ignore
57
56
 
58
- var tree = query.definitions[0].selectionSet.selections;
57
+ var firstQueryDefinition = query.definitions[0];
58
+
59
+ if (!firstQueryDefinition) {
60
+ return;
61
+ } else if (!firstQueryDefinition.selectionSet) {
62
+ return;
63
+ }
64
+
65
+ var tree = firstQueryDefinition.selectionSet.selections;
59
66
  var fields = selectionPath.split(".");
60
67
 
61
68
  var _iterator = _createForOfIteratorHelper(fields),
@@ -72,6 +79,10 @@ export var AddQuerySelectionPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
72
79
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
73
80
  var selection = _step2.value;
74
81
 
82
+ if (!selection.selectionSet) {
83
+ continue;
84
+ }
85
+
75
86
  if (selection.name.value === field) {
76
87
  tree = selection.selectionSet.selections;
77
88
  continue fieldLoop;
@@ -90,7 +101,10 @@ export var AddQuerySelectionPlugin = /*#__PURE__*/function (_ApolloLinkPlugin) {
90
101
  _iterator.e(err);
91
102
  } finally {
92
103
  _iterator.f();
93
- } // @ts-ignore
104
+ }
105
+ /**
106
+ * We must cast because there are a lot of types that are not intertwined and TS is complaining
107
+ */
94
108
 
95
109
 
96
110
  (_tree = tree).push.apply(_tree, _toConsumableArray(addSelection.definitions[0].selectionSet.selections));
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["AddQuerySelectionPlugin.ts"],"names":["ApolloLink","ApolloLinkPlugin","AddQuerySelectionPlugin","config","operation","forward","operationName","addSelectionToQuery","query","addSelection","selectionPath","firstQueryDefinition","definitions","selectionSet","tree","selections","fields","split","fieldLoop","field","selection","name","value","push"],"mappings":";;;;;;;;AAAA,SAASA,UAAT,QAA2B,aAA3B;AAEA,SAASC,gBAAT;AASA,WAAaC,uBAAb;AAAA;;AAAA;;AAGI,mCAAYC,MAAZ,EAA4B;AAAA;;AAAA;;AACxB;;AADwB;;AAExB,UAAKA,MAAL,GAAcA,MAAd;AAFwB;AAG3B;;AANL;AAAA;AAAA,WAQI,sBAAyC;AAAA;;AACrC,aAAO,IAAIH,UAAJ,CAAe,UAACI,SAAD,EAAYC,OAAZ,EAAwB;AAC1C,YAAID,SAAS,CAACE,aAAV,KAA4B,MAAI,CAACH,MAAL,CAAYG,aAA5C,EAA2D;AACvD,iBAAOD,OAAO,CAACD,SAAD,CAAd;AACH;;AAED,QAAA,MAAI,CAACG,mBAAL,CAAyBH,SAAS,CAACE,aAAnC,EAAkDF,SAAS,CAACI,KAA5D;;AAEA,eAAOH,OAAO,CAACD,SAAD,CAAd;AACH,OARM,CAAP;AASH;AAlBL;AAAA;AAAA,WAoBI,6BAA2BE,aAA3B,EAAkDE,KAAlD,EAA6E;AAAA;;AACzE,UAAIF,aAAa,KAAK,KAAKH,MAAL,CAAYG,aAAlC,EAAiD;AAC7C;AACH;;AAED,yBAAwC,KAAKH,MAA7C;AAAA,UAAQM,YAAR,gBAAQA,YAAR;AAAA,UAAsBC,aAAtB,gBAAsBA,aAAtB,CALyE,CAOzE;;AAEA,UAAMC,oBAAoB,GAAGH,KAAK,CAACI,WAAN,CAAkB,CAAlB,CAA7B;;AACA,UAAI,CAACD,oBAAL,EAA2B;AACvB;AACH,OAFD,MAEO,IAAI,CAACA,oBAAoB,CAACE,YAA1B,EAAwC;AAC3C;AACH;;AAED,UAAIC,IAAI,GAAGH,oBAAoB,CAACE,YAArB,CAAkCE,UAA7C;AACA,UAAMC,MAAM,GAAGN,aAAa,CAACO,KAAd,CAAoB,GAApB,CAAf;;AAjByE,iDAmB1CD,MAnB0C;AAAA;;AAAA;AAmBzEE,QAAAA,SAnByE,EAmB9D,oDAA4B;AAAA,cAAjBC,KAAiB;;AAAA,sDACXL,IADW;AAAA;;AAAA;AACnC,mEAA8B;AAAA,kBAAnBM,SAAmB;;AAC1B,kBAAI,CAACA,SAAS,CAACP,YAAf,EAA6B;AACzB;AACH;;AACD,kBAAIO,SAAS,CAACC,IAAV,CAAeC,KAAf,KAAyBH,KAA7B,EAAoC;AAChCL,gBAAAA,IAAI,GAAGM,SAAS,CAACP,YAAV,CAAuBE,UAA9B;AACA,yBAASG,SAAT;AACH;AACJ,aATkC,CAUnC;;AAVmC;AAAA;AAAA;AAAA;AAAA;;AAWnC;AACH;AA/BwE;AAAA;AAAA;AAAA;AAAA;AAgCzE;AACR;AACA;;;AACQ,eAAAJ,IAAI,EAACS,IAAL,iCACSd,YAAY,CAACG,WAAb,CAAyB,CAAzB,CAAD,CAA0DC,YAA1D,CACCE,UAFT;AAIH;AA3DL;;AAAA;AAAA,EAA6Cd,gBAA7C","sourcesContent":["import { ApolloLink } from \"apollo-link\";\nimport { DocumentNode } from \"graphql\";\nimport { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\nimport { ExecutableDefinitionNode, FieldNode } from \"graphql/language/ast\";\n\ninterface Config {\n operationName: string;\n selectionPath: string;\n addSelection: DocumentNode;\n}\n\nexport class AddQuerySelectionPlugin extends ApolloLinkPlugin {\n private readonly config: Config;\n\n constructor(config: Config) {\n super();\n this.config = config;\n }\n\n public override createLink(): ApolloLink {\n return new ApolloLink((operation, forward) => {\n if (operation.operationName !== this.config.operationName) {\n return forward(operation);\n }\n\n this.addSelectionToQuery(operation.operationName, operation.query);\n\n return forward(operation);\n });\n }\n\n public addSelectionToQuery(operationName: string, query: DocumentNode): void {\n if (operationName !== this.config.operationName) {\n return;\n }\n\n const { addSelection, selectionPath } = this.config;\n\n // TODO: check if the selection is already in the query and don't add it again if not necessary.\n\n const firstQueryDefinition = query.definitions[0] as ExecutableDefinitionNode;\n if (!firstQueryDefinition) {\n return;\n } else if (!firstQueryDefinition.selectionSet) {\n return;\n }\n\n let tree = firstQueryDefinition.selectionSet.selections as FieldNode[];\n const fields = selectionPath.split(\".\");\n\n fieldLoop: for (const field of fields) {\n for (const selection of tree) {\n if (!selection.selectionSet) {\n continue;\n }\n if (selection.name.value === field) {\n tree = selection.selectionSet.selections as FieldNode[];\n continue fieldLoop;\n }\n }\n // If we get here, it means we didn't find the necessary selection\n return;\n }\n /**\n * We must cast because there are a lot of types that are not intertwined and TS is complaining\n */\n tree.push(\n ...((addSelection.definitions[0] as ExecutableDefinitionNode).selectionSet\n .selections as FieldNode[])\n );\n }\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  import { Plugin } from "@webiny/plugins";
2
- export interface Object {
2
+ export interface ApolloCacheObject {
3
3
  __typename?: string;
4
4
  [key: string]: any;
5
5
  }
6
- interface Callable<T> {
6
+ interface ApolloCacheObjectIdPluginCallable<T> {
7
7
  (data: T): any;
8
8
  }
9
- export declare class ApolloCacheObjectIdPlugin<T extends Object = Object> extends Plugin {
10
- static readonly type = "cache-get-object-id";
11
- private readonly _getObjectId;
12
- constructor(getObjectId?: Callable<T>);
9
+ export declare class ApolloCacheObjectIdPlugin<T extends ApolloCacheObject = ApolloCacheObject> extends Plugin {
10
+ static readonly type: string;
11
+ private readonly _getObjectId?;
12
+ constructor(getObjectId?: ApolloCacheObjectIdPluginCallable<T>);
13
13
  getObjectId(data: T): any;
14
14
  }
15
15
  export {};
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ApolloCacheObjectIdPlugin.ts"],"names":["Plugin","ApolloCacheObjectIdPlugin","getObjectId","_getObjectId","data","Error"],"mappings":";;;;;;AAAA,SAASA,MAAT,QAAuB,iBAAvB;AAYA,WAAaC,yBAAb;AAAA;;AAAA;;AAMI,qCAAmBC,WAAnB,EAAuE;AAAA;;AAAA;;AACnE;;AADmE;;AAEnE,UAAKC,YAAL,GAAoBD,WAApB;AAFmE;AAGtE;;AATL;AAAA;AAAA,WAWI,qBAAmBE,IAAnB,EAA4B;AACxB,UAAI,OAAO,KAAKD,YAAZ,KAA6B,UAAjC,EAA6C;AACzC,cAAME,KAAK,kHAAX;AAGH;;AAED,aAAO,KAAKF,YAAL,CAAkBC,IAAlB,CAAP;AACH;AAnBL;;AAAA;AAAA,EAEUJ,MAFV;;gBAAaC,yB,UAGsC,qB","sourcesContent":["import { Plugin } from \"@webiny/plugins\";\n\nexport interface ApolloCacheObject {\n __typename?: string;\n [key: string]: any;\n}\n\ninterface ApolloCacheObjectIdPluginCallable<T> {\n // TODO @ts-refactor probably a string but @pavel check it out\n (data: T): any;\n}\n\nexport class ApolloCacheObjectIdPlugin<\n T extends ApolloCacheObject = ApolloCacheObject\n> extends Plugin {\n public static override readonly type: string = \"cache-get-object-id\";\n private readonly _getObjectId?: ApolloCacheObjectIdPluginCallable<T>;\n\n public constructor(getObjectId?: ApolloCacheObjectIdPluginCallable<T>) {\n super();\n this._getObjectId = getObjectId;\n }\n\n public getObjectId(data: T) {\n if (typeof this._getObjectId !== \"function\") {\n throw Error(\n `You must provide a \"getObjectId\" callable to the plugin constructor or extend the ApolloCacheObjectIdPlugin.`\n );\n }\n\n return this._getObjectId(data);\n }\n}\n"]}
@@ -56,7 +56,8 @@ export var ApolloDynamicLink = /*#__PURE__*/function (_ApolloLink) {
56
56
  /**
57
57
  * We filter out falsy items from the linkPlugins because there might be some error while creating link.
58
58
  */
59
- this.cache.set(cacheKey, ApolloLink.from(linkPlugins.map(createLink).filter(Boolean)));
59
+ var links = linkPlugins.map(createLink).filter(Boolean);
60
+ this.cache.set(cacheKey, ApolloLink.from(links));
60
61
  }
61
62
 
62
63
  return this.cache.get(cacheKey).request(operation, forward);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ApolloDynamicLink.ts"],"names":["ApolloLink","plugins","createLink","plugin","e","console","error","ApolloDynamicLink","Map","operation","forward","linkPlugins","byType","length","cacheKey","map","pl","join","cache","has","links","filter","Boolean","set","from","get","request"],"mappings":";;;;;;AAAA,SAASA,UAAT,QAAqC,aAArC;AACA,SAASC,OAAT,QAAwB,iBAAxB;;AAIA,SAASC,UAAT,CAAoBC,MAApB,EAA8C;AAC1C,MAAI;AACA,WAAOA,MAAM,CAACD,UAAP,EAAP;AACH,GAFD,CAEE,OAAOE,CAAP,EAAU;AACRC,IAAAA,OAAO,CAACC,KAAR,6DAAwEH,MAAxE;AACAE,IAAAA,OAAO,CAACC,KAAR,CAAcF,CAAd;AACH;;AACD,SAAO,IAAP;AACH;;AAED,WAAaG,iBAAb;AAAA;;AAAA;;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA,4DACoB,IAAIC,GAAJ,EADpB;;AAAA;AAAA;;AAAA;AAAA;AAAA,WAGI,iBAAwBC,SAAxB,EAA8CC,OAA9C,EAAiE;AAC7D,UAAMC,WAAW,GAAGV,OAAO,CAACW,MAAR,CAAiC,aAAjC,CAApB;;AAEA,UAAI,CAACD,WAAW,CAACE,MAAjB,EAAyB;AACrB,eAAOH,OAAO,CAACD,SAAD,CAAd;AACH;;AAED,UAAMK,QAAQ,GAAGH,WAAW,CAACI,GAAZ,CAAgB,UAAAC,EAAE;AAAA,eAAIA,EAAE,CAACF,QAAP;AAAA,OAAlB,EAAmCG,IAAnC,CAAwC,GAAxC,CAAjB;;AAEA,UAAI,CAAC,KAAKC,KAAL,CAAWC,GAAX,CAAeL,QAAf,CAAL,EAA+B;AAC3B;AACZ;AACA;AACY,YAAMM,KAAK,GAAGT,WAAW,CAACI,GAAZ,CAAgBb,UAAhB,EAA4BmB,MAA5B,CAAmCC,OAAnC,CAAd;AACA,aAAKJ,KAAL,CAAWK,GAAX,CAAeT,QAAf,EAAyBd,UAAU,CAACwB,IAAX,CAAgBJ,KAAhB,CAAzB;AACH;;AAED,aAAO,KAAKF,KAAL,CAAWO,GAAX,CAAeX,QAAf,EAAyBY,OAAzB,CAAiCjB,SAAjC,EAA4CC,OAA5C,CAAP;AACH;AArBL;;AAAA;AAAA,EAAuCV,UAAvC","sourcesContent":["import { ApolloLink, NextLink } from \"apollo-link\";\nimport { plugins } from \"@webiny/plugins\";\nimport { ApolloLinkPlugin } from \"./ApolloLinkPlugin\";\nimport { Operation } from \"apollo-link/lib/types\";\n\nfunction createLink(plugin: ApolloLinkPlugin) {\n try {\n return plugin.createLink();\n } catch (e) {\n console.error(`Caught an error while executing \"createLink\" on plugin`, plugin);\n console.error(e);\n }\n return null;\n}\n\nexport class ApolloDynamicLink extends ApolloLink {\n private cache = new Map();\n\n public override request(operation: Operation, forward: NextLink) {\n const linkPlugins = plugins.byType<ApolloLinkPlugin>(\"apollo-link\");\n\n if (!linkPlugins.length) {\n return forward(operation);\n }\n\n const cacheKey = linkPlugins.map(pl => pl.cacheKey).join(\",\");\n\n if (!this.cache.has(cacheKey)) {\n /**\n * We filter out falsy items from the linkPlugins because there might be some error while creating link.\n */\n const links = linkPlugins.map(createLink).filter(Boolean) as ApolloLink[];\n this.cache.set(cacheKey, ApolloLink.from(links));\n }\n\n return this.cache.get(cacheKey).request(operation, forward);\n }\n}\n"]}
@@ -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";
7
+ static readonly type: string;
8
8
  readonly cacheKey: string;
9
- private readonly factory;
10
- private cache;
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"]}
@@ -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,7 +1,14 @@
1
1
  import React from "react";
2
- interface Props {
2
+ interface ErrorOverlayProps {
3
3
  query: string;
4
- networkError: Record<string, any>;
4
+ networkError: {
5
+ message: string;
6
+ result?: {
7
+ error?: {
8
+ stack?: string;
9
+ };
10
+ };
11
+ };
5
12
  }
6
- declare const ErrorOverlay: React.FC<Props>;
13
+ declare const ErrorOverlay: React.FC<ErrorOverlayProps>;
7
14
  export default ErrorOverlay;
@@ -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,6 +1,7 @@
1
- interface Params {
1
+ import { ServerError, ServerParseError } from "apollo-link-http-common";
2
+ interface CreateErrorOverlayParams {
2
3
  query: string;
3
- networkError: Record<string, any>;
4
+ networkError: Error | ServerError | ServerParseError;
4
5
  }
5
- declare const createErrorOverlay: (params: Params) => void;
6
+ declare const createErrorOverlay: (params: CreateErrorOverlayParams) => void;
6
7
  export default createErrorOverlay;
@@ -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
@@ -49,6 +49,7 @@ export interface ImageProps {
49
49
  title?: string;
50
50
  alt?: string;
51
51
  style?: CSSProperties;
52
+ width?: number;
52
53
  }
53
54
  /**
54
55
  * "getImageSrc" has to be defined as a separate property, so its functionality can be reused outside of
@@ -57,7 +58,7 @@ export interface ImageProps {
57
58
  export declare type ImageComponentPlugin = Plugin & {
58
59
  type: "image-component";
59
60
  render: (props: ImageProps) => React.ReactElement;
60
- getImageSrc: (props?: Object) => string;
61
+ getImageSrc: (props?: Record<string, any>) => string;
61
62
  presets: {
62
63
  [key: string]: any;
63
64
  };
@@ -70,7 +71,12 @@ export declare type RoutePlugin = Plugin & {
70
71
  type: "route";
71
72
  route: React.ReactElement;
72
73
  };
74
+ interface CacheGetObjectIdPluginObj {
75
+ __typename: string;
76
+ modelId: string;
77
+ [key: string]: any;
78
+ }
73
79
  export declare type CacheGetObjectIdPlugin = Plugin & {
74
80
  type: "cache-get-object-id";
75
- getObjectId(obj: Record<string, any>): string | undefined;
81
+ getObjectId(obj: CacheGetObjectIdPluginObj): string | undefined;
76
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"]}