@corva/ui 3.76.0-9 → 3.76.0-rc.1

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 (42) hide show
  1. package/MCP_README.md +86 -36
  2. package/README.md +8 -5
  3. package/cjs-bundle/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js +1 -1
  4. package/cjs-bundle/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js.map +1 -1
  5. package/cjs-bundle/componentsV2/AppPanel/AppPanelDisplay.js +1 -1
  6. package/cjs-bundle/componentsV2/AppPanel/AppPanelDisplay.js.map +1 -1
  7. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  8. package/cjs-bundle/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  9. package/cjs-bundle/componentsV2/DatePicker/utils.js +1 -1
  10. package/cjs-bundle/componentsV2/DatePicker/utils.js.map +1 -1
  11. package/cjs-bundle/componentsV2/Modal/Modal.js +1 -1
  12. package/cjs-bundle/componentsV2/Modal/Modal.js.map +1 -1
  13. package/cjs-bundle/componentsV2/TemplatesControl/Store/hooks/useInitialize.js +1 -1
  14. package/cjs-bundle/componentsV2/TemplatesControl/Store/hooks/useInitialize.js.map +1 -1
  15. package/cjs-bundle/effects/useDevCenterApp.js +1 -1
  16. package/cjs-bundle/effects/useDevCenterApp.js.map +1 -1
  17. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.d.ts.map +1 -1
  18. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js +1 -1
  19. package/components/DevCenter/DevCenterRouterContext/UniversalLink/UniversalLink.js.map +1 -1
  20. package/componentsV2/AppHeader/__tests__/AppHeaderEmbedded.test.d.ts +2 -0
  21. package/componentsV2/AppHeader/__tests__/AppHeaderEmbedded.test.d.ts.map +1 -0
  22. package/componentsV2/AppPanel/AppPanelDisplay.d.ts.map +1 -1
  23. package/componentsV2/AppPanel/AppPanelDisplay.js +1 -1
  24. package/componentsV2/AppPanel/AppPanelDisplay.js.map +1 -1
  25. package/componentsV2/DatePicker/TimePicker/TimePicker.js +1 -1
  26. package/componentsV2/DatePicker/TimePicker/TimePicker.js.map +1 -1
  27. package/componentsV2/DatePicker/utils.js +1 -1
  28. package/componentsV2/DatePicker/utils.js.map +1 -1
  29. package/componentsV2/Modal/Modal.d.ts.map +1 -1
  30. package/componentsV2/Modal/Modal.js +1 -1
  31. package/componentsV2/Modal/Modal.js.map +1 -1
  32. package/componentsV2/TemplatesControl/Store/hooks/useInitialize.d.ts.map +1 -1
  33. package/componentsV2/TemplatesControl/Store/hooks/useInitialize.js +1 -1
  34. package/componentsV2/TemplatesControl/Store/hooks/useInitialize.js.map +1 -1
  35. package/effects/useDevCenterApp.d.ts.map +1 -1
  36. package/effects/useDevCenterApp.js +1 -1
  37. package/effects/useDevCenterApp.js.map +1 -1
  38. package/mcp-server/server.mjs +10 -10
  39. package/package.json +1 -1
  40. package/styles/common.scss +0 -14
  41. package/styles/mixins.scss +0 -14
  42. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/toConsumableArray";import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import s from"@babel/runtime/regenerator";import{useState as i,useEffect as o}from"react";import{isEqual as a}from"lodash";import{dataFormatter as p,findTemplate as c,ensureTemplateSettings as m,processLoadedTemplates as l}from"../utils.js";import{perPage as u,baseFields as f}from"../Store.js";import{useGet as d}from"./sharedHooks.js";import{getAppSettingsTemplates as b}from"../../../../clients/jsonApi/index.js";import j from"../../../../permissions/usePermissions.js";import{PERMISSIONS as v}from"../../../../permissions/constants/index.js";import"../../../../permissions/withPermissionsHOC.js";import"../../../../permissions/ProvidePermissions.js";import"../../../../permissions/PermissionsContext.js";import"../../../../utils/index.js";import{showErrorNotification as g}from"../../../../utils/notificationToasts.js";function h(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function O(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?h(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var y=function(){var h=d("get"),y=d("set"),P=i(!1),x=n(P,2),w=x[0],k=x[1],T=i(),S=n(T,2),C=S[0],D=S[1],A={canPublish:v.userCreate},E=j(A);o((function(){var e=Object.entries(E).reduce((function(e,r){var s=n(r,2),i=s[0],o=s[1],a=o.loading,p=o.active;return{loaded:e.loaded&&!a,permissions:O(O({},e.permissions),{},t({},i,p))}}),{loaded:!0,permissions:{}}),r=e.loaded,s=e.permissions;r&&(y({permissions:s}),k(!0))}),[E,y]),o((function(){var e=function(){var e=r(s.mark((function e(){var r,t,n;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,r=h(),t=r.appKey,e.t0=p,e.next=5,b(t,{per_page:u,fields:f});case 5:e.t1=e.sent,n=e.t0.deserialize.call(e.t0,e.t1),D(n),e.next=14;break;case 10:e.prev=10,e.t2=e.catch(0),g("Error loading app templates"),console.error(e.t2);case 14:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}();e()}),[h,y]),o((function(){var t=function(){var t=r(s.mark((function r(){var t,n,i,o,p,u,f,d,b,j,v;return s.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(w&&C){r.next=2;break}return r.abrupt("return");case 2:return t=h(),n=t.currentTemplateId,i=t.templateSettings,o=t.onChange,p=t.hooks.getDefaultTemplate,r.next=5,l(h,C);case 5:if(u=r.sent,y(u),f=c(h,n),!(d=(null==p?void 0:p([].concat(e(h().presetTemplates),e(h().loadedTemplates)),{currentTemplateId:n,templateSettings:i,event:"loadList"}))||f)){r.next=16;break}return r.next=12,m(h,y,d);case 12:b=r.sent,j=!f&&!!d,v=!a(b.settings,null==f?void 0:f.settings),(j||v)&&o&&(y({templateSettings:b.settings}),o(b,"initialLoad"));case 16:y({isInitialized:!0});case 17:case"end":return r.stop()}}),r)})));return function(){return t.apply(this,arguments)}}();t()}),[C,h,w,y])};export{y as useInitialize};
1
+ import e from"@babel/runtime/helpers/toConsumableArray";import r from"@babel/runtime/helpers/asyncToGenerator";import t from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import s from"@babel/runtime/regenerator";import{useState as i,useEffect as o}from"react";import{isEqual as a}from"lodash";import{dataFormatter as p,findTemplate as c,ensureTemplateSettings as m,processLoadedTemplates as l}from"../utils.js";import{perPage as u,baseFields as f}from"../Store.js";import{useGet as d}from"./sharedHooks.js";import{getAppSettingsTemplates as b}from"../../../../clients/jsonApi/index.js";import j from"../../../../permissions/usePermissions.js";import{PERMISSIONS as v}from"../../../../permissions/constants/index.js";import"../../../../permissions/withPermissionsHOC.js";import"../../../../permissions/ProvidePermissions.js";import"../../../../permissions/PermissionsContext.js";import"../../../../utils/index.js";import{showErrorNotification as g}from"../../../../utils/notificationToasts.js";function h(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function O(e){for(var r=1;r<arguments.length;r++){var n=null!=arguments[r]?arguments[r]:{};r%2?h(Object(n),!0).forEach((function(r){t(e,r,n[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))}))}return e}var y=function(){var h=d("get"),y=d("set"),P=i(!1),x=n(P,2),w=x[0],k=x[1],T=i(),S=n(T,2),C=S[0],D=S[1],A={canPublish:v.userCreate},E=j(A);o((function(){var e=Object.entries(E).reduce((function(e,r){var s=n(r,2),i=s[0],o=s[1],a=o.loading,p=o.active;return{loaded:e.loaded&&!a,permissions:O(O({},e.permissions),{},t({},i,p))}}),{loaded:!0,permissions:{}}),r=e.loaded,s=e.permissions;r&&(a(h().permissions,s)||y({permissions:s}),k(!0))}),[E,h,y]),o((function(){var e=function(){var e=r(s.mark((function e(){var r,t,n;return s.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,r=h(),t=r.appKey,e.t0=p,e.next=5,b(t,{per_page:u,fields:f});case 5:e.t1=e.sent,n=e.t0.deserialize.call(e.t0,e.t1),D(n),e.next=14;break;case 10:e.prev=10,e.t2=e.catch(0),g("Error loading app templates"),console.error(e.t2);case 14:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}();e()}),[h,y]),o((function(){var t=function(){var t=r(s.mark((function r(){var t,n,i,o,p,u,f,d,b,j,v;return s.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(w&&C){r.next=2;break}return r.abrupt("return");case 2:return t=h(),n=t.currentTemplateId,i=t.templateSettings,o=t.onChange,p=t.hooks.getDefaultTemplate,r.next=5,l(h,C);case 5:if(u=r.sent,y(u),f=c(h,n),!(d=(null==p?void 0:p([].concat(e(h().presetTemplates),e(h().loadedTemplates)),{currentTemplateId:n,templateSettings:i,event:"loadList"}))||f)){r.next=16;break}return r.next=12,m(h,y,d);case 12:b=r.sent,j=!f&&!!d,v=!a(b.settings,null==f?void 0:f.settings),(j||v)&&o&&(y({templateSettings:b.settings}),o(b,"initialLoad"));case 16:y({isInitialized:!0});case 17:case"end":return r.stop()}}),r)})));return function(){return t.apply(this,arguments)}}();t()}),[C,h,w,y])};export{y as useInitialize};
2
2
  //# sourceMappingURL=useInitialize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInitialize.js","sources":["../../../../../src/componentsV2/TemplatesControl/Store/hooks/useInitialize.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { isEqual } from 'lodash';\n\nimport { Store, Template, TemplateData } from '../../types';\nimport {\n dataFormatter,\n ensureTemplateSettings,\n findTemplate,\n processLoadedTemplates,\n} from '../utils';\nimport { baseFields, perPage } from '../Store';\n\nimport { useGet } from './sharedHooks';\n\nimport { getAppSettingsTemplates } from '~/clients/jsonApi';\nimport { PERMISSIONS, usePermissions } from '~/permissions';\nimport { StringifiedPermission } from '~/permissions/utils';\nimport { showErrorNotification } from '~/utils';\n\nexport const useInitialize = <T extends TemplateData>() => {\n const get = useGet<T, 'get'>('get');\n const set = useGet<T, 'set'>('set');\n\n const [permissionsLoaded, setPermissionsLoaded] = useState(false);\n const [baseLoadedTemplates, setBaseLoadedTemplates] = useState<Template<T>[]>();\n\n const permissionMap: Record<keyof Store['permissions'], StringifiedPermission> = {\n canPublish: PERMISSIONS.userCreate,\n };\n\n const permissionRecordsMap = usePermissions(permissionMap);\n\n // Permissions\n useEffect(() => {\n const { loaded, permissions } = Object.entries(permissionRecordsMap).reduce(\n (acc, [key, { loading, active }]) => ({\n loaded: acc.loaded && !loading,\n permissions: {\n ...acc.permissions,\n [key]: active,\n },\n }),\n {\n loaded: true,\n permissions: {},\n } as {\n loaded: boolean;\n permissions: Record<keyof Store['permissions'], boolean>;\n }\n );\n\n if (loaded) {\n set({ permissions });\n setPermissionsLoaded(true);\n }\n }, [permissionRecordsMap, set]);\n\n // Data load\n useEffect(() => {\n const loader = async () => {\n try {\n const { appKey } = get();\n\n const templates = dataFormatter.deserialize(\n await getAppSettingsTemplates(appKey, {\n per_page: perPage,\n fields: baseFields,\n })\n ) as Template<T>[];\n\n setBaseLoadedTemplates(templates);\n } catch (e) {\n showErrorNotification('Error loading app templates');\n console.error(e);\n }\n };\n\n loader();\n }, [get, set]);\n\n useEffect(() => {\n const onLoadedEverything = async () => {\n if (!permissionsLoaded || !baseLoadedTemplates) {\n return;\n }\n\n const {\n currentTemplateId,\n templateSettings,\n onChange,\n hooks: { getDefaultTemplate },\n } = get();\n\n const templatesData = await processLoadedTemplates(get, baseLoadedTemplates);\n set(templatesData);\n\n // Handling currently selected template\n const currentTemplate = findTemplate(get, currentTemplateId);\n\n const selectedTemplate =\n getDefaultTemplate?.([...get().presetTemplates, ...get().loadedTemplates], {\n currentTemplateId,\n templateSettings,\n event: 'loadList',\n }) || currentTemplate;\n\n // Case when data from app is outdated (other app instance)\n if (selectedTemplate) {\n const templateWithSettings = await ensureTemplateSettings(get, set, selectedTemplate);\n\n const noInitialSelectedTemplate = !currentTemplate && !!selectedTemplate;\n const isOwnOutdatedTemplate = !isEqual(\n templateWithSettings.settings,\n currentTemplate?.settings\n );\n\n if ((noInitialSelectedTemplate || isOwnOutdatedTemplate) && onChange) {\n set({ templateSettings: templateWithSettings.settings });\n onChange(templateWithSettings, 'initialLoad');\n }\n }\n\n set({ isInitialized: true });\n };\n\n onLoadedEverything();\n }, [baseLoadedTemplates, get, permissionsLoaded, set]);\n};\n"],"names":["useInitialize","get","useGet","set","useState","_useState2","_slicedToArray","_useState","permissionsLoaded","setPermissionsLoaded","_useState3","_useState4","baseLoadedTemplates","setBaseLoadedTemplates","permissionMap","canPublish","PERMISSIONS","userCreate","permissionRecordsMap","usePermissions","useEffect","Object","entries","reduce","acc","_ref","_ref2","key","_ref2$","loading","active","loaded","permissions","loader","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_get","appKey","templates","wrap","_context","prev","next","t0","dataFormatter","getAppSettingsTemplates","per_page","perPage","fields","baseFields","t1","sent","deserialize","call","t2","showErrorNotification","console","error","stop","apply","this","arguments","onLoadedEverything","_ref4","_callee2","_get2","currentTemplateId","templateSettings","onChange","getDefaultTemplate","templatesData","currentTemplate","selectedTemplate","templateWithSettings","noInitialSelectedTemplate","isOwnOutdatedTemplate","_context2","abrupt","hooks","processLoadedTemplates","findTemplate","concat","_toConsumableArray","presetTemplates","loadedTemplates","event","ensureTemplateSettings","isEqual","settings","isInitialized"],"mappings":"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"}
1
+ {"version":3,"file":"useInitialize.js","sources":["../../../../../src/componentsV2/TemplatesControl/Store/hooks/useInitialize.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { isEqual } from 'lodash';\n\nimport { Store, Template, TemplateData } from '../../types';\nimport {\n dataFormatter,\n ensureTemplateSettings,\n findTemplate,\n processLoadedTemplates,\n} from '../utils';\nimport { baseFields, perPage } from '../Store';\n\nimport { useGet } from './sharedHooks';\n\nimport { getAppSettingsTemplates } from '~/clients/jsonApi';\nimport { PERMISSIONS, usePermissions } from '~/permissions';\nimport { StringifiedPermission } from '~/permissions/utils';\nimport { showErrorNotification } from '~/utils';\n\nexport const useInitialize = <T extends TemplateData>() => {\n const get = useGet<T, 'get'>('get');\n const set = useGet<T, 'set'>('set');\n\n const [permissionsLoaded, setPermissionsLoaded] = useState(false);\n const [baseLoadedTemplates, setBaseLoadedTemplates] = useState<Template<T>[]>();\n\n const permissionMap: Record<keyof Store['permissions'], StringifiedPermission> = {\n canPublish: PERMISSIONS.userCreate,\n };\n\n const permissionRecordsMap = usePermissions(permissionMap);\n\n // Permissions\n useEffect(() => {\n const { loaded, permissions } = Object.entries(permissionRecordsMap).reduce(\n (acc, [key, { loading, active }]) => ({\n loaded: acc.loaded && !loading,\n permissions: {\n ...acc.permissions,\n [key]: active,\n },\n }),\n {\n loaded: true,\n permissions: {},\n } as {\n loaded: boolean;\n permissions: Record<keyof Store['permissions'], boolean>;\n }\n );\n\n if (loaded) {\n // usePermissions returns a fresh object every render, so this effect re-runs on every\n // render; writing unconditionally notified the store's subscribers each time, which\n // re-rendered and re-ran the effect until React gave up.\n if (!isEqual(get().permissions, permissions)) {\n set({ permissions });\n }\n setPermissionsLoaded(true);\n }\n }, [permissionRecordsMap, get, set]);\n\n // Data load\n useEffect(() => {\n const loader = async () => {\n try {\n const { appKey } = get();\n\n const templates = dataFormatter.deserialize(\n await getAppSettingsTemplates(appKey, {\n per_page: perPage,\n fields: baseFields,\n })\n ) as Template<T>[];\n\n setBaseLoadedTemplates(templates);\n } catch (e) {\n showErrorNotification('Error loading app templates');\n console.error(e);\n }\n };\n\n loader();\n }, [get, set]);\n\n useEffect(() => {\n const onLoadedEverything = async () => {\n if (!permissionsLoaded || !baseLoadedTemplates) {\n return;\n }\n\n const {\n currentTemplateId,\n templateSettings,\n onChange,\n hooks: { getDefaultTemplate },\n } = get();\n\n const templatesData = await processLoadedTemplates(get, baseLoadedTemplates);\n set(templatesData);\n\n // Handling currently selected template\n const currentTemplate = findTemplate(get, currentTemplateId);\n\n const selectedTemplate =\n getDefaultTemplate?.([...get().presetTemplates, ...get().loadedTemplates], {\n currentTemplateId,\n templateSettings,\n event: 'loadList',\n }) || currentTemplate;\n\n // Case when data from app is outdated (other app instance)\n if (selectedTemplate) {\n const templateWithSettings = await ensureTemplateSettings(get, set, selectedTemplate);\n\n const noInitialSelectedTemplate = !currentTemplate && !!selectedTemplate;\n const isOwnOutdatedTemplate = !isEqual(\n templateWithSettings.settings,\n currentTemplate?.settings\n );\n\n if ((noInitialSelectedTemplate || isOwnOutdatedTemplate) && onChange) {\n set({ templateSettings: templateWithSettings.settings });\n onChange(templateWithSettings, 'initialLoad');\n }\n }\n\n set({ isInitialized: true });\n };\n\n onLoadedEverything();\n }, [baseLoadedTemplates, get, permissionsLoaded, set]);\n};\n"],"names":["useInitialize","get","useGet","set","useState","_useState2","_slicedToArray","_useState","permissionsLoaded","setPermissionsLoaded","_useState3","_useState4","baseLoadedTemplates","setBaseLoadedTemplates","permissionMap","canPublish","PERMISSIONS","userCreate","permissionRecordsMap","usePermissions","useEffect","Object","entries","reduce","acc","_ref","_ref2","key","_ref2$","loading","active","loaded","permissions","isEqual","loader","_ref3","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_get","appKey","templates","wrap","_context","prev","next","t0","dataFormatter","getAppSettingsTemplates","per_page","perPage","fields","baseFields","t1","sent","deserialize","call","t2","showErrorNotification","console","error","stop","apply","this","arguments","onLoadedEverything","_ref4","_callee2","_get2","currentTemplateId","templateSettings","onChange","getDefaultTemplate","templatesData","currentTemplate","selectedTemplate","templateWithSettings","noInitialSelectedTemplate","isOwnOutdatedTemplate","_context2","abrupt","hooks","processLoadedTemplates","findTemplate","concat","_toConsumableArray","presetTemplates","loadedTemplates","event","ensureTemplateSettings","settings","isInitialized"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDevCenterApp.d.ts","sourceRoot":"","sources":["../../src/effects/useDevCenterApp.js"],"names":[],"mappings":"AASA,QAAA,MAAM,eAAe;;;;;;;;;CAiFpB,CAAC;eAEa,eAAe"}
1
+ {"version":3,"file":"useDevCenterApp.d.ts","sourceRoot":"","sources":["../../src/effects/useDevCenterApp.js"],"names":[],"mappings":"AASA,QAAA,MAAM,eAAe;;;;;;;;;CA0FpB,CAAC;eAEa,eAAe"}
@@ -1,2 +1,2 @@
1
- import n from"@babel/runtime/helpers/slicedToArray";import{useState as o,useEffect as t}from"react";import{getAppIdentifier as e}from"../utils/devcenter.js";var i={},r={},p=function(p){var u,l=p.CLIAppComponent,a=p.CLIAppSettings,c=p.app,s=p.version,d=c.app.app_key,f=process.env.REACT_APP_DEBUG_DC_APP_KEY===d,m=f?"http://127.0.0.1:3000/app.js":null==c||null===(u=c.package)||void 0===u?void 0:u.url,v=e({appKey:d,version:s,isLocalDebugMode:f}),A=o(!1),C=n(A,2),g=C[0],_=C[1],b=i[v],h=l||(null==b?void 0:b.component)||null,E=a||(null==b?void 0:b.settings)||null,w=function(){_(!1),(r[v]||[]).forEach((function(n){return n()})),delete r[v]};return t((function(){v in r&&(_(!0),r[v].push((function(){_(!1)})))}),[]),t((function(){if(!(!m||!v||h&&E||v in r)){if(!l&&!b||null!=b&&b.component){if(_(!0),!b||!b.script){var n=document.createElement("script");n.src=m,n.onload=function(){i[v]=window[v]&&window[v].default,w()},i[v]={component:null,script:n},setTimeout((function(){return document.body.appendChild(n)}))}var o=i[v].script;if(o.onload){var t=o.onload;o.onload=function(){t(),w()}}o.onabort=w,o.error=w}r[v]=[function(){return _(!1)}]}}),[m]),{isLoading:g,AppComponent:h,AppSettings:E}};export{p as default};
1
+ import n from"@babel/runtime/helpers/slicedToArray";import{useState as o,useEffect as r}from"react";import{getAppIdentifier as t}from"../utils/devcenter.js";var e={},i={},l=function(l){var p,u=l.CLIAppComponent,a=l.CLIAppSettings,c=l.app,s=l.version,d=c.app.app_key,f=process.env.REACT_APP_DEBUG_DC_APP_KEY===d,v=f?"http://127.0.0.1:3000/app.js":null==c||null===(p=c.package)||void 0===p?void 0:p.url,m=t({appKey:d,version:s,isLocalDebugMode:f}),A=o(null),C=n(A,2),g=C[0],_=C[1],b=e[m],h=u||(null==b?void 0:b.component)||null,E=a||(null==b?void 0:b.settings)||null,y=function(){_(null),(i[m]||[]).forEach((function(n){return n()})),delete i[m]};r((function(){m in i&&(_(m),i[m].push((function(){_(null)})))}),[m]),r((function(){if(!(!v||!m||h&&E||m in i)){if(!u&&!b||null!=b&&b.component){if(_(m),!b||!b.script){var n=document.createElement("script");n.src=v,n.onload=function(){var n;e[m]=(null===(n=window[m])||void 0===n?void 0:n.default)||{error:!0},y()},e[m]={component:null,script:n},setTimeout((function(){return document.body.appendChild(n)}))}var o=e[m].script;if(o.onload){var r=o.onload;o.onload=function(){r(),y()}}var t=function(){e[m]={error:!0},y()};o.onabort=t,o.onerror=t}i[m]=[function(){return _(null)}]}}),[m,v]);var L=g===m,P=!(!v||b&&!b.script);return{isLoading:!u&&(L||P),AppComponent:h,AppSettings:E}};export{l as default};
2
2
  //# sourceMappingURL=useDevCenterApp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDevCenterApp.js","sources":["../../src/effects/useDevCenterApp.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nimport { getAppIdentifier } from '~/utils/devcenter';\n\nconst COMPONENTS = {};\nconst FINISH_LOADING_HANLDERS_BY_APP_NAME = {};\n\nconst LOCAL_DEBUG_URL = 'http://127.0.0.1:3000/app.js';\n\nconst useDevCenterApp = ({ CLIAppComponent, CLIAppSettings, app, version }) => {\n const appKey = app.app.app_key;\n\n const isLocalDebugMode = process.env.REACT_APP_DEBUG_DC_APP_KEY === appKey;\n const url = isLocalDebugMode ? LOCAL_DEBUG_URL : app?.package?.url;\n\n const appName = getAppIdentifier({ appKey, version, isLocalDebugMode });\n const [isLoading, setIsLoading] = useState(false);\n\n const appSource = COMPONENTS[appName];\n const AppComponent = CLIAppComponent || appSource?.component || null;\n const AppSettings = CLIAppSettings || appSource?.settings || null;\n\n const finishLoading = () => {\n setIsLoading(false);\n (FINISH_LOADING_HANLDERS_BY_APP_NAME[appName] || []).forEach(handler => handler());\n delete FINISH_LOADING_HANLDERS_BY_APP_NAME[appName];\n };\n\n useEffect(() => {\n if (appName in FINISH_LOADING_HANLDERS_BY_APP_NAME) {\n setIsLoading(true);\n FINISH_LOADING_HANLDERS_BY_APP_NAME[appName].push(() => {\n setIsLoading(false);\n });\n }\n }, []);\n\n useEffect(() => {\n if (\n !url ||\n !appName ||\n (AppComponent && AppSettings) ||\n appName in FINISH_LOADING_HANLDERS_BY_APP_NAME\n )\n return;\n\n if ((!CLIAppComponent && !appSource) || appSource?.component) {\n setIsLoading(true);\n\n if (!appSource || !appSource.script) {\n const scriptFile = document.createElement('script');\n\n scriptFile.src = url;\n\n scriptFile.onload = () => {\n COMPONENTS[appName] = window[appName] && window[appName].default;\n finishLoading();\n };\n\n COMPONENTS[appName] = {\n component: null,\n script: scriptFile,\n };\n\n setTimeout(() => document.body.appendChild(scriptFile));\n }\n\n const { script } = COMPONENTS[appName];\n\n if (script.onload) {\n const loaderCallback = script.onload;\n script.onload = () => {\n loaderCallback();\n finishLoading();\n };\n }\n\n script.onabort = finishLoading;\n\n script.error = finishLoading;\n }\n\n FINISH_LOADING_HANLDERS_BY_APP_NAME[appName] = [() => setIsLoading(false)];\n }, [url]);\n\n return {\n isLoading,\n AppComponent,\n AppSettings,\n };\n};\n\nexport default useDevCenterApp;\n"],"names":["COMPONENTS","FINISH_LOADING_HANLDERS_BY_APP_NAME","useDevCenterApp","_ref","_app$package","CLIAppComponent","CLIAppSettings","app","version","appKey","app_key","isLocalDebugMode","process","env","REACT_APP_DEBUG_DC_APP_KEY","url","package","appName","getAppIdentifier","useState","_useState2","_slicedToArray","_useState","isLoading","setIsLoading","appSource","AppComponent","component","AppSettings","settings","finishLoading","forEach","handler","useEffect","push","script","scriptFile","document","createElement","src","onload","window","default","setTimeout","body","appendChild","loaderCallback","onabort","error"],"mappings":"6JAIA,IAAMA,EAAa,CAAA,EACbC,EAAsC,CAAA,EAItCC,EAAkB,SAAuDC,GAAA,IAAAC,EAApDC,IAAAA,gBAAiBC,IAAAA,eAAgBC,IAAAA,IAAKC,IAAAA,QACzDC,EAASF,EAAIA,IAAIG,QAEjBC,EAAmBC,QAAQC,IAAIC,6BAA+BL,EAC9DM,EAAMJ,EANU,+BAM2BJ,SAAY,UAAZA,EAAKS,eAAO,IAAAZ,SAAZA,EAAcW,IAEzDE,EAAUC,EAAiB,CAAET,OAAAA,EAAQD,QAAAA,EAASG,iBAAAA,IAClBQ,EAAAA,GAAS,GAAMC,EAAAC,EAAAC,EAAA,GAA1CC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAExBK,EAAYzB,EAAWiB,GACvBS,EAAerB,IAAmBoB,aAAS,EAATA,EAAWE,YAAa,KAC1DC,EAActB,IAAkBmB,aAAS,EAATA,EAAWI,WAAY,KAEvDC,EAAgB,WACpBN,GAAa,IACZvB,EAAoCgB,IAAY,IAAIc,SAAQ,SAAAC,GAAO,OAAIA,cACjE/B,EAAoCgB,IA4D7C,OAzDAgB,GAAU,WACJhB,KAAWhB,IACbuB,GAAa,GACbvB,EAAoCgB,GAASiB,MAAK,WAChDV,GAAa,EACf,IAEH,GAAE,IAEHS,GAAU,WACR,MACGlB,IACAE,GACAS,GAAgBE,GACjBX,KAAWhB,GAJb,CAQA,IAAMI,IAAoBoB,GAAcA,SAAAA,EAAWE,UAAW,CAG5D,GAFAH,GAAa,IAERC,IAAcA,EAAUU,OAAQ,CACnC,IAAMC,EAAaC,SAASC,cAAc,UAE1CF,EAAWG,IAAMxB,EAEjBqB,EAAWI,OAAS,WAClBxC,EAAWiB,GAAWwB,OAAOxB,IAAYwB,OAAOxB,GAASyB,QACzDZ,KAGF9B,EAAWiB,GAAW,CACpBU,UAAW,KACXQ,OAAQC,GAGVO,YAAW,WAAA,OAAMN,SAASO,KAAKC,YAAYT,KAC7C,CAEA,IAAQD,EAAWnC,EAAWiB,GAAtBkB,OAER,GAAIA,EAAOK,OAAQ,CACjB,IAAMM,EAAiBX,EAAOK,OAC9BL,EAAOK,OAAS,WACdM,IACAhB,IAEJ,CAEAK,EAAOY,QAAUjB,EAEjBK,EAAOa,MAAQlB,CACjB,CAEA7B,EAAoCgB,GAAW,CAAC,WAAA,OAAMO,GAAa,IAtCjE,CAuCJ,GAAG,CAACT,IAEG,CACLQ,UAAAA,EACAG,aAAAA,EACAE,YAAAA,EAEJ"}
1
+ {"version":3,"file":"useDevCenterApp.js","sources":["../../src/effects/useDevCenterApp.js"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nimport { getAppIdentifier } from '~/utils/devcenter';\n\nconst COMPONENTS = {};\nconst FINISH_LOADING_HANLDERS_BY_APP_NAME = {};\n\nconst LOCAL_DEBUG_URL = 'http://127.0.0.1:3000/app.js';\n\nconst useDevCenterApp = ({ CLIAppComponent, CLIAppSettings, app, version }) => {\n const appKey = app.app.app_key;\n\n const isLocalDebugMode = process.env.REACT_APP_DEBUG_DC_APP_KEY === appKey;\n const url = isLocalDebugMode ? LOCAL_DEBUG_URL : app?.package?.url;\n\n const appName = getAppIdentifier({ appKey, version, isLocalDebugMode });\n const [loadingAppName, setLoadingAppName] = useState(null);\n\n const appSource = COMPONENTS[appName];\n const AppComponent = CLIAppComponent || appSource?.component || null;\n const AppSettings = CLIAppSettings || appSource?.settings || null;\n\n const finishLoading = () => {\n setLoadingAppName(null);\n (FINISH_LOADING_HANLDERS_BY_APP_NAME[appName] || []).forEach(handler => handler());\n delete FINISH_LOADING_HANLDERS_BY_APP_NAME[appName];\n };\n\n useEffect(() => {\n if (appName in FINISH_LOADING_HANLDERS_BY_APP_NAME) {\n setLoadingAppName(appName);\n FINISH_LOADING_HANLDERS_BY_APP_NAME[appName].push(() => {\n setLoadingAppName(null);\n });\n }\n }, [appName]);\n\n useEffect(() => {\n if (\n !url ||\n !appName ||\n (AppComponent && AppSettings) ||\n appName in FINISH_LOADING_HANLDERS_BY_APP_NAME\n )\n return;\n\n if ((!CLIAppComponent && !appSource) || appSource?.component) {\n setLoadingAppName(appName);\n\n if (!appSource || !appSource.script) {\n const scriptFile = document.createElement('script');\n\n scriptFile.src = url;\n\n scriptFile.onload = () => {\n COMPONENTS[appName] = window[appName]?.default || { error: true };\n finishLoading();\n };\n\n COMPONENTS[appName] = {\n component: null,\n script: scriptFile,\n };\n\n setTimeout(() => document.body.appendChild(scriptFile));\n }\n\n const { script } = COMPONENTS[appName];\n\n if (script.onload) {\n const loaderCallback = script.onload;\n script.onload = () => {\n loaderCallback();\n finishLoading();\n };\n }\n\n const failLoading = () => {\n COMPONENTS[appName] = { error: true };\n finishLoading();\n };\n\n script.onabort = failLoading;\n script.onerror = failLoading;\n }\n\n FINISH_LOADING_HANLDERS_BY_APP_NAME[appName] = [() => setLoadingAppName(null)];\n }, [appName, url]);\n\n const isCurrentAppLoading = loadingAppName === appName;\n // The bundle is pending before the loading effect runs and while its script is loading.\n const isAppBundlePending = !!url && (!appSource || !!appSource.script);\n const isLoading = !CLIAppComponent && (isCurrentAppLoading || isAppBundlePending);\n\n return {\n isLoading,\n AppComponent,\n AppSettings,\n };\n};\n\nexport default useDevCenterApp;\n"],"names":["COMPONENTS","FINISH_LOADING_HANLDERS_BY_APP_NAME","useDevCenterApp","_ref","_app$package","CLIAppComponent","CLIAppSettings","app","version","appKey","app_key","isLocalDebugMode","process","env","REACT_APP_DEBUG_DC_APP_KEY","url","package","appName","getAppIdentifier","useState","_useState2","_slicedToArray","_useState","loadingAppName","setLoadingAppName","appSource","AppComponent","component","AppSettings","settings","finishLoading","forEach","handler","useEffect","push","script","scriptFile","document","createElement","src","onload","_window$appName","window","default","error","setTimeout","body","appendChild","loaderCallback","failLoading","onabort","onerror","isCurrentAppLoading","isAppBundlePending","isLoading"],"mappings":"6JAIA,IAAMA,EAAa,CAAA,EACbC,EAAsC,CAAA,EAItCC,EAAkB,SAAuDC,GAAA,IAAAC,EAApDC,IAAAA,gBAAiBC,IAAAA,eAAgBC,IAAAA,IAAKC,IAAAA,QACzDC,EAASF,EAAIA,IAAIG,QAEjBC,EAAmBC,QAAQC,IAAIC,6BAA+BL,EAC9DM,EAAMJ,EANU,+BAM2BJ,SAAY,UAAZA,EAAKS,eAAO,IAAAZ,SAAZA,EAAcW,IAEzDE,EAAUC,EAAiB,CAAET,OAAAA,EAAQD,QAAAA,EAASG,iBAAAA,IACRQ,EAAAA,EAAS,MAAKC,EAAAC,EAAAC,EAAA,GAAnDC,EAAcH,EAAA,GAAEI,EAAiBJ,EAAA,GAElCK,EAAYzB,EAAWiB,GACvBS,EAAerB,IAAmBoB,aAAS,EAATA,EAAWE,YAAa,KAC1DC,EAActB,IAAkBmB,aAAS,EAATA,EAAWI,WAAY,KAEvDC,EAAgB,WACpBN,EAAkB,OACjBvB,EAAoCgB,IAAY,IAAIc,SAAQ,SAAAC,GAAO,OAAIA,cACjE/B,EAAoCgB,IAG7CgB,GAAU,WACJhB,KAAWhB,IACbuB,EAAkBP,GAClBhB,EAAoCgB,GAASiB,MAAK,WAChDV,EAAkB,KACpB,IAEJ,GAAG,CAACP,IAEJgB,GAAU,WACR,MACGlB,IACAE,GACAS,GAAgBE,GACjBX,KAAWhB,GAJb,CAQA,IAAMI,IAAoBoB,GAAcA,SAAAA,EAAWE,UAAW,CAG5D,GAFAH,EAAkBP,IAEbQ,IAAcA,EAAUU,OAAQ,CACnC,IAAMC,EAAaC,SAASC,cAAc,UAE1CF,EAAWG,IAAMxB,EAEjBqB,EAAWI,OAAS,WAAM,IAAAC,EACxBzC,EAAWiB,IAA0B,QAAfyB,EAAAA,OAAOzB,UAAQ,IAAAwB,OAAA,EAAfA,EAAiBE,UAAW,CAAEC,OAAO,GAC3Dd,KAGF9B,EAAWiB,GAAW,CACpBU,UAAW,KACXQ,OAAQC,GAGVS,YAAW,WAAA,OAAMR,SAASS,KAAKC,YAAYX,KAC7C,CAEA,IAAQD,EAAWnC,EAAWiB,GAAtBkB,OAER,GAAIA,EAAOK,OAAQ,CACjB,IAAMQ,EAAiBb,EAAOK,OAC9BL,EAAOK,OAAS,WACdQ,IACAlB,IAEJ,CAEA,IAAMmB,EAAc,WAClBjD,EAAWiB,GAAW,CAAE2B,OAAO,GAC/Bd,KAGFK,EAAOe,QAAUD,EACjBd,EAAOgB,QAAUF,CACnB,CAEAhD,EAAoCgB,GAAW,CAAC,WAAA,OAAMO,EAAkB,OA1CtE,CA2CJ,GAAG,CAACP,EAASF,IAEb,IAAMqC,EAAsB7B,IAAmBN,EAEzCoC,KAAuBtC,GAASU,IAAeA,EAAUU,QAG/D,MAAO,CACLmB,WAHiBjD,IAAoB+C,GAAuBC,GAI5D3B,aAAAA,EACAE,YAAAA,EAEJ"}