@corva/ui 3.76.0-14 → 3.76.0-16
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.
- package/cjs-bundle/componentsV2/TemplatesControl/Store/hooks/useInitialize.js +1 -1
- package/cjs-bundle/componentsV2/TemplatesControl/Store/hooks/useInitialize.js.map +1 -1
- package/componentsV2/TemplatesControl/Store/hooks/useInitialize.d.ts.map +1 -1
- package/componentsV2/TemplatesControl/Store/hooks/useInitialize.js +1 -1
- package/componentsV2/TemplatesControl/Store/hooks/useInitialize.js.map +1 -1
- package/mcp-server/server.mjs +1 -1
- package/package.json +1 -1
- package/styles/common.scss +0 -14
- package/styles/mixins.scss +0 -14
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/toConsumableArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/defineProperty"),s=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),i=require("react"),a=require("lodash"),u=require("../utils.js"),o=require("../Store.js"),l=require("./sharedHooks.js"),c=require("../../../../clients/jsonApi/index.js"),p=require("../../../../permissions/usePermissions.js"),f=require("../../../../permissions/constants/index.js");require("../../../../permissions/withPermissionsHOC.js"),require("../../../../permissions/ProvidePermissions.js"),require("../../../../permissions/PermissionsContext.js"),require("../../../../utils/index.js");var d=require("../../../../utils/notificationToasts.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var b=m(e),j=m(t),v=m(r),g=m(s),O=m(n);function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,s)}return r}function
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/toConsumableArray"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/defineProperty"),s=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),i=require("react"),a=require("lodash"),u=require("../utils.js"),o=require("../Store.js"),l=require("./sharedHooks.js"),c=require("../../../../clients/jsonApi/index.js"),p=require("../../../../permissions/usePermissions.js"),f=require("../../../../permissions/constants/index.js");require("../../../../permissions/withPermissionsHOC.js"),require("../../../../permissions/ProvidePermissions.js"),require("../../../../permissions/PermissionsContext.js"),require("../../../../utils/index.js");var d=require("../../../../utils/notificationToasts.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var b=m(e),j=m(t),v=m(r),g=m(s),O=m(n);function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,s)}return r}function q(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?h(Object(r),!0).forEach((function(t){v.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}exports.useInitialize=function(){var e=l.useGet("get"),t=l.useGet("set"),r=i.useState(!1),s=g.default(r,2),n=s[0],m=s[1],h=i.useState(),y=g.default(h,2),P=y[0],x=y[1],S={canPublish:f.PERMISSIONS.userCreate},w=p(S);i.useEffect((function(){var r=Object.entries(w).reduce((function(e,t){var r=g.default(t,2),s=r[0],n=r[1],i=n.loading,a=n.active;return{loaded:e.loaded&&!i,permissions:q(q({},e.permissions),{},v.default({},s,a))}}),{loaded:!0,permissions:{}}),s=r.loaded,n=r.permissions;s&&(a.isEqual(e().permissions,n)||t({permissions:n}),m(!0))}),[w,e,t]),i.useEffect((function(){var t=function(){var t=j.default(O.default.mark((function t(){var r,s,n;return O.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r=e(),s=r.appKey,t.t0=u.dataFormatter,t.next=5,c.getAppSettingsTemplates(s,{per_page:o.perPage,fields:o.baseFields});case 5:t.t1=t.sent,n=t.t0.deserialize.call(t.t0,t.t1),x(n),t.next=14;break;case 10:t.prev=10,t.t2=t.catch(0),d.showErrorNotification("Error loading app templates"),console.error(t.t2);case 14:case"end":return t.stop()}}),t,null,[[0,10]])})));return function(){return t.apply(this,arguments)}}();t()}),[e,t]),i.useEffect((function(){var r=function(){var r=j.default(O.default.mark((function r(){var s,i,o,l,c,p,f,d,m,j,v;return O.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(n&&P){r.next=2;break}return r.abrupt("return");case 2:return s=e(),i=s.currentTemplateId,o=s.templateSettings,l=s.onChange,c=s.hooks.getDefaultTemplate,r.next=5,u.processLoadedTemplates(e,P);case 5:if(p=r.sent,t(p),f=u.findTemplate(e,i),!(d=(null==c?void 0:c([].concat(b.default(e().presetTemplates),b.default(e().loadedTemplates)),{currentTemplateId:i,templateSettings:o,event:"loadList"}))||f)){r.next=16;break}return r.next=12,u.ensureTemplateSettings(e,t,d);case 12:m=r.sent,j=!f&&!!d,v=!a.isEqual(m.settings,null==f?void 0:f.settings),(j||v)&&l&&(t({templateSettings:m.settings}),l(m,"initialLoad"));case 16:t({isInitialized:!0});case 17:case"end":return r.stop()}}),r)})));return function(){return r.apply(this,arguments)}}();r()}),[P,e,n,t])};
|
|
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":["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","
|
|
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":["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":"useInitialize.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/TemplatesControl/Store/hooks/useInitialize.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB5D,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,YAAY,
|
|
1
|
+
{"version":3,"file":"useInitialize.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/TemplatesControl/Store/hooks/useInitialize.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,YAAY,EAAE,MAAM,aAAa,CAAC;AAgB5D,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,YAAY,WAiHnD,CAAC"}
|
|
@@ -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","
|
|
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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"}
|
package/mcp-server/server.mjs
CHANGED
package/package.json
CHANGED
package/styles/common.scss
CHANGED
|
@@ -180,17 +180,3 @@ $AppContainer-ContainerName: CorvaUI-AppContainer-root;
|
|
|
180
180
|
transform: translate(-50%, -50%) rotate(-45deg);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
-
|
|
184
|
-
// The attachment strip's scroll arrows are centred on their host's border (12px overhang, see
|
|
185
|
-
// AttachmentPreview.scss). Every clipping ancestor between the strip and that border must allow
|
|
186
|
-
// the overhang: `clip` keeps rounded-corner/max-height clipping while clip-margin adds the
|
|
187
|
-
// slack. Browsers without clip-margin (Safari) clip at the border; the arrows fall back to a
|
|
188
|
-
// flush-inside placement there. The margin applies on all four sides — nothing else may rely
|
|
189
|
-
// on painting into that band.
|
|
190
|
-
$attachment-arrow-overhang: 12px;
|
|
191
|
-
|
|
192
|
-
@mixin clip-with-arrow-room {
|
|
193
|
-
overflow: hidden;
|
|
194
|
-
overflow: clip;
|
|
195
|
-
overflow-clip-margin: $attachment-arrow-overhang;
|
|
196
|
-
}
|
package/styles/mixins.scss
CHANGED
|
@@ -65,17 +65,3 @@
|
|
|
65
65
|
transform: translate(-50%, -50%) rotate(-45deg);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
|
|
69
|
-
// The attachment strip's scroll arrows are centred on their host's border (12px overhang, see
|
|
70
|
-
// AttachmentPreview.scss). Every clipping ancestor between the strip and that border must allow
|
|
71
|
-
// the overhang: `clip` keeps rounded-corner/max-height clipping while clip-margin adds the
|
|
72
|
-
// slack. Browsers without clip-margin (Safari) clip at the border; the arrows fall back to a
|
|
73
|
-
// flush-inside placement there. The margin applies on all four sides — nothing else may rely
|
|
74
|
-
// on painting into that band.
|
|
75
|
-
$attachment-arrow-overhang: 12px;
|
|
76
|
-
|
|
77
|
-
@mixin clip-with-arrow-room {
|
|
78
|
-
overflow: hidden;
|
|
79
|
-
overflow: clip;
|
|
80
|
-
overflow-clip-margin: $attachment-arrow-overhang;
|
|
81
|
-
}
|