ant-design-x-vue-next
Version:
Ant Design X for Vue — community continuation aligned with @ant-design/x
2 lines (1 loc) • 3.6 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("vue"),m=require("./Card.v0.8.js"),I=require("./context.js"),A=require("./format.js"),_=require("./resolveProps.js"),h=require("./utils.js"),B=d.defineComponent({name:"AXXCard",__name:"Card",props:{id:null},setup(x){const f=x,p=d.inject(I.boxContextKey);if(!p)throw new Error("[XCard.Card] must be used inside XCard.Box");const v=A.createComponentTransformer(),y=d.ref(null),c=d.ref({}),C=d.ref("v0.8"),g=d.ref(!1),V=d.computed(()=>{const t=p.surfaceCatalogMap.get(f.id);return t?p.catalogMap.get(t):void 0});d.watch(()=>p.commandQueue,t=>{if(!t.length)return;const o=t.filter(e=>"createSurface"in e?e.createSurface.surfaceId===f.id:"updateComponents"in e?e.updateComponents.surfaceId===f.id:"updateDataModel"in e?e.updateDataModel.surfaceId===f.id:"deleteSurface"in e?e.deleteSurface.surfaceId===f.id:"surfaceUpdate"in e?e.surfaceUpdate.surfaceId===f.id:"dataModelUpdate"in e?e.dataModelUpdate.surfaceId===f.id:"beginRendering"in e?e.beginRendering.surfaceId===f.id:!1);if(!o.length)return;let n=c.value,r=y.value,l=C.value,i=!1,a=!1,s=!1;for(const e of o){if("version"in e&&e.version==="v0.9"){if(l="v0.9",s=!0,"createSurface"in e&&!g.value&&(r=null,n={},a=!0,i=!0),"updateComponents"in e){const u=v.transform(e.updateComponents.components,"v0.9");u&&(r=u,g.value=!0,a=!0)}"updateDataModel"in e&&(n=_.applyDataModelUpdateV09(n,e.updateDataModel.path,e.updateDataModel.value),i=!0),"deleteSurface"in e&&(r=null,n={},g.value=!1,a=!0,i=!0,v.reset());continue}if(l="v0.8",s=!0,"surfaceUpdate"in e&&(v.transform(e.surfaceUpdate.components,"v0.8"),g.value)){const u=v.getById("root");u&&(r=u,a=!0)}if("dataModelUpdate"in e&&(n=m.applyDataModelUpdateV08(n,e.dataModelUpdate.contents),i=!0),"beginRendering"in e){const u=v.getById(e.beginRendering.root);u&&(r=u,g.value=!0,a=!0)}"deleteSurface"in e&&(r=null,n={},g.value=!1,a=!0,i=!0,v.reset())}s&&(C.value=l),a&&(y.value=r),i&&(c.value=n)},{deep:!0,immediate:!0});function P(t,o,n){var i;if(!t)return o;const r=(i=t==null?void 0:t.event)==null?void 0:i.context;if(r&&typeof r=="object"&&!Array.isArray(r)){const a={};for(const[s,e]of Object.entries(r))if(h.isPathObject(e)){const u=h.getValueByPath(n,e.path),{path:S,...b}=e;a[s]={...b,value:u}}else a[s]=e;return{...a,...o}}const l=t==null?void 0:t.context;if(Array.isArray(l)){const a={};for(const s of l){const{key:e,value:u}=s;e!==void 0&&(h.isPathObject(u)?a[e]={value:h.getValueByPath(n,u.path)}:a[e]=u)}return{...a,...o}}return o}function D(t,o,n){var a;const r=C.value==="v0.9"?_.extractDataUpdatesV09(n,o):m.extractDataUpdatesV08(n,o);let l=c.value;r.length>0&&(l=r.reduce((s,{path:e,value:u})=>h.setValueByPath(s,e,u),c.value),c.value=l);const i=P(n,o,l);(a=p.onAction)==null||a.call(p,{name:t,surfaceId:f.id,context:i})}function U(t,o){c.value=h.setValueByPath(c.value,t,o)}function M(t){const o=h.validateComponentAgainstCatalog(V.value,t.type,t.props);o.valid||o.errors.forEach(a=>console.warn(a));const n=p.components[t.type];if(!n)return console.warn(`Component "${t.type}" is not registered. Provide it via Box components prop.`),null;const r=C.value==="v0.9"?_.resolvePropsV09(t.props,c.value):m.resolvePropsV08(t.props,c.value),l=t.props.value;typeof l=="string"&&l.startsWith("/")&&(r.valuePath=l),r.onAction=(a,s)=>{D(a,s,r.action)},r.onDataChange=U;const i=(t.children||[]).map(a=>{const s=v.getById(a);return s?M(s):null}).filter(Boolean);return d.h(n,r,()=>i)}return()=>y.value?d.createVNode("div",{class:"ant-x-card"},[M(y.value)]):null}});exports.default=B;