@sap/ux-ui5-tooling 1.10.6 → 1.11.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.
- package/CHANGELOG.md +4 -1
- package/dist/cli/index.js +12140 -8630
- package/dist/middlewares/fiori-tools-appreload.js +379 -132
- package/dist/middlewares/fiori-tools-preview.js +9025 -6539
- package/dist/middlewares/fiori-tools-proxy.js +12453 -6845
- package/dist/middlewares/fiori-tools-servestatic.js +331 -140
- package/dist/tasks/cf-deploy/index.js +8975 -6490
- package/dist/tasks/deploy/index.js +11200 -6690
- package/dist/templates/control-property-editor/app.css +1 -1
- package/dist/templates/control-property-editor/app.js +117 -301
- package/dist/templates/control-property-editor/ui5-adaptation.js +1 -1
- package/package.json +10 -10
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var k="post-message-action";function de(t){return t.type===k&&typeof t.action=="object"}function R(t,e){function o(){return typeof t=="function"?t():t}function n(i){let s=o();!s||i.origin!==s.origin||i.source!==s||(de(i.data)?e(i.data.action):console.warn("Unknown message received",i.data))}function a(){window.removeEventListener("message",n)}function r(i){let s=o();if(!s)return;let p={type:k,action:i};s.postMessage(p,s.origin)}return window.addEventListener("message",n),{dispose:a,sendAction:r}}var V="boolean",L="integer",j="float",w="string",b="input",B="dropdown",Y="checkbox";function ye(t){return function(o){return(o==null?void 0:o.type)===t}}function ge(t){return function(o){let n=[t,o].join(" ");function a(r){return{type:n,payload:r}}return a.type=n,a.match=ye(n),a}}var ue="[ext]",g=ge(ue),H=g("icons-loaded"),x=g("control-selected"),J=g("select-control"),W=g("delete-property-changes"),z=g("outline-changed"),G=g("change-property"),$=g("property-changed"),X=g("change-property-failed"),N=g("change-stack-modified");function I(t){let e;return t.getElementInstance?e=t.getElementInstance():e=t.getElement(),e}async function K(t){return new Promise(e=>{let o=t.replace(/\./g,"/");sap.ui.require([o],function(n){let a=n.getMetadata();if(a&&a.getLibraryName){let r=a.getLibraryName();e(r)}else e("")})})}var Q=new Map;async function Z(){Promise.all([await v("sap.m"),await v("sap.ui.comp"),await v("sap.ui.core"),await v("sap.f")]).then(e=>{e.forEach(o=>{Q.set(o.library,o)})})}async function v(t){let e="/test-resources/"+t.split(".").join("/")+"/designtime/api.json";return fetch(e).then(o=>o.json())}async function ee(t,e){let o;try{o=await te(t,e,Q)}catch{console.error(`Error in getting documentation for ${e}`)}return o}async function te(t,e,o){let n=await me(t,e,o);if(n){let a=n.baseType;if(a&&(e=await K(a),e)){let r=await te(a,e,o);return Object.assign({},r,n.properties)}return Object.assign(Object.assign({},n.properties))}else return}async function me(t,e,o){let n,a=o.get(e);if(a)n=q(a,t);else{let r=await v(e);o.set(e,r),n=q(r,t)}return n}function q(t,e){let o={baseType:"",doc:"",properties:{}},n=t.symbols.find(a=>a.name===e);if(n){o.baseType=n.extends,o.doc=n.description;let a=n["ui5-metadata"].properties;a&&a.forEach(r=>{r.description=fe(r.description)||"",r.propertyName=r.name,r.propertyType=r.type,(r.defaultValue===null||r.defaultValue==="")&&(r.defaultValue="-"),o.properties[r.name]={...r}})}return o}function fe(t){let e=(t||"").split("<"),o="";for(let n of e)if(!o)o=n;else{let a=n.indexOf(">");o+=a>=0?n.substring(a+1):`<${n}`}return o}var ne=t=>{let e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1)};function he(t){let e=(t||"").toLowerCase();return e.indexOf("src")>=0||e.startsWith("icon")||e.endsWith("icon")}function Ce(t){let e={primitiveType:"any",ui5Type:null,enumValues:null,isArray:!1};if(!t)return;let o=t.getType();if(!o)return;let n=o.getName();if(!!n){if(n.indexOf("[]")>0)e.primitiveType=n.substring(0,n.indexOf("[]")),e.isArray=!0;else if(n==="void"||n==="object")e.primitiveType=n;else if(n==="any")e.primitiveType="any";else if(n==="boolean"||n==="string"||n==="int"||n==="float")e.primitiveType=n;else{let a=window.sap.ui.base.DataType,r=a.getType(n);if(r&&!(r instanceof a))return e;let i=Object.getPrototypeOf(r).getName();i?e.primitiveType=i:e.primitiveType="enum",e.ui5Type=n,e.primitiveType==="enum"&&(e.enumValues=jQuery.sap.getObject(e.ui5Type))}return e}}function Pe(t){return!(t.isArray||t.primitiveType==="any")}function Te(t){if(typeof t=="object"&&t instanceof Object&&!Array.isArray(t))try{return JSON.stringify(t)}catch(e){return e instanceof Error&&e.message.toLowerCase().includes("converting circular structure to json")?"<Circular JSON cannot be displayed>":t}else return typeof t=="function"?"":t}async function f(t,e,o=!0){let n=t.getMetadata(),a=n.getName(),r=n.getLibraryName(),i=sap.ui.fl.Utils.checkControlId(t),s=e?e.getDesignTimeMetadata().getData().properties:void 0,p=n.getAllProperties(),c=Object.keys(p),l=[],y=o?await ee(a,r):{};for(let u of c){let d=p[u],m=Ce(d);if(!m)continue;let F=!1;s&&s[d.name]&&(F=s[d.name].ignore);let A={id:t.getId(),name:d.name,newValue:t.getProperty(d.name)},E=t.getBindingInfo(A.name);(E==null?void 0:E.bindingString)!==void 0&&(A.newValue=E.bindingString);let h=((e==null?void 0:e.isSelectable())??!1)&&Pe(m)&&i&&!F,C=Te(A.newValue),ce=he(d.name)&&a!=="sap.m.Image"&&m.ui5Type==="sap.ui.core.URI",P=y&&y[d.name]?y[d.name]:{defaultValue:d.defaultValue||"-",description:"",propertyName:d.name,type:m.ui5Type,propertyType:m.ui5Type},T=ne(d.name);switch(m.primitiveType){case"enum":{let _=m.enumValues??{},le=Object.keys(_).map(U=>({key:U,text:_[U]}));l.push({type:w,editor:B,name:d.name,readableName:T,value:C,isEnabled:h,options:le,documentation:P});break}case"string":{l.push({type:w,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,isIcon:ce,documentation:P});break}case"int":{l.push({type:L,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}case"float":{l.push({type:j,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}case"boolean":{l.push({type:V,editor:Y,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}}}return{id:t.getId(),type:a,properties:l.sort((u,d)=>u.name>d.name?1:-1),name:a}}var oe=async(t="")=>{let e=!1,o=sap.ui.getCore().byId(t);if(o){let n=sap.ui.dt.OverlayRegistry.getOverlay(o);if((!n||!n.getDomRef())&&(n=sap.ui.dt.OverlayUtil.getClosestOverlayFor(o)),n){let a=I(n);e=(await f(a,n,!1)).properties.find(s=>s.isEnabled===!0)!==void 0}}else{let n=sap.ui.getCore().getComponent(t);if(n){let r=(await f(n,void 0,!1)).properties.find(i=>i.isEnabled===!0);e=!1}}return e};async function D(t,e){let o=[...t],n=[];for(;o.length;){let a=o.shift(),r=await oe(a==null?void 0:a.id);if((a==null?void 0:a.type)==="element"){let i=(a.elements??[]).flatMap(c=>c.type==="aggregation"?c.elements??[]:[]),{text:s}=e(a.id),p={controlId:a.id,controlType:a.technicalName,name:s??a.technicalName.split(".").slice(-1)[0],editable:r,visible:a.visible??!0,children:await D(i,e)};n.push(p)}}return n}async function re(t,e){let o=await t.getService("outline");async function n(){let a=await o.get(),r=await D(a,i=>{let s=sap.ui.getCore().byId(i);if(s&&s.getMetadata().getProperty("text")){let p=s.getProperty("text");return typeof p=="string"&&p.trim()!==""?{text:p}:{}}return{}});e(z(r))}o.attachEvent("update",n)}function ae(){return{getControlById:ve,getIcons:Ie,getComponent:Ee,getOverlay:be,getClosestOverlayFor:xe}}function ve(t){return sap.ui.getCore().byId(t)}function Ee(t){return sap.ui.getCore().getComponent(t)}function be(t){return sap.ui.dt.OverlayRegistry.getOverlay(t)}function xe(t){return sap.ui.dt.OverlayUtil.getClosestOverlayFor(t)}function Ie(){return sap.ui.core.IconPool.getIconNames("undefined").map(t=>{let e=sap.ui.core.IconPool.getIconInfo(t);return{name:t.toLowerCase(),content:e.content,fontFamily:e.fontFamily}}).sort((t,e)=>t.name<e.name?-1:t.name>e.name?1:0)}function M(t){let e={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)};fetch("./control-property-editor/report-telemetry",e).then(async o=>{console.log(o)}).catch(o=>{console.error("There was an error!",o)})}var O=class{constructor(e,o){this.rta=e;this.ui5=o;this.appliedChangeCache=new Map;this.activeChangeHandlers=new Set}init(e,o){let n=new Set;this.rta.attachSelectionChange(this.createOnSelectionChangeHandler(e,n)),o(async a=>{if(J.match(a)){let r=a.payload,i=this.ui5.getControlById(r);if(!i){let c=this.ui5.getComponent(r);if(c){let l=await f(c),y=x(l);e(y)}return}n.add("outline");let s=this.ui5.getOverlay(i),p=this.rta.getSelection();if(p.length>0)for(let c=0;c<p.length;c++)p[c].setSelected(!1);if((!s||!s.getDomRef())&&(s=this.ui5.getClosestOverlayFor(i)),s&&s.isSelectable())s.setSelected(!0);else{let c=await f(i),l=x(c);e(l)}}})}applyControlPropertyChange(e,o){let n=ie(e,o);this.appliedChangeCache.set(n,Date.now())}createOnSelectionChangeHandler(e,o){return async n=>{let a=n.getParameter("selection");for(let r of this.activeChangeHandlers)r();if(this.activeChangeHandlers.clear(),Array.isArray(a)&&a.length===1){let r=this.ui5.getControlById(a[0].getId());if(r){let i=I(r),s=i.getMetadata().getName();this.handlePropertyChanges(i,e);try{let p=o.has("outline"),c=s.toLowerCase().startsWith("sap")?s:"Other Control Types";p?M({category:"Outline Selection",controlName:c}):M({category:"Overlay Selection",controlName:c})}catch(p){console.error("Error in reporting telemetry",p)}finally{let p=await f(i,r),c=x(p);e(c),o.delete("outline")}}}}}handlePropertyChanges(e,o){let n=a=>{let r=a.getParameter("name"),i=a.getParameter("id"),s=ie(i,r);if(this.appliedChangeCache.get(s)){this.appliedChangeCache.delete(s);return}let c=e.getBindingInfo(r),l=(c==null?void 0:c.bindingString)??a.getParameter("newValue"),y=$({controlId:i,propertyName:r,newValue:l});o(y)};e.attachEvent("_change",n),this.activeChangeHandlers.add(()=>{try{e.detachEvent("_change",n)}catch{}})}};function ie(t,e){return[t,e].join(",")}var Oe="FE_FROM_SCRATCH";async function pe(t,e){let{layer:o,componentId:n,rta:a,generator:r}=t,i=sap.ui.getCore().byId(e.controlId);if(!i)return;let s={layer:o,developerMode:!0,baseId:n,projectId:"",scenario:Oe,generator:r},p=typeof e.value=="string"&&se(e.value)?"BindProperty":"Property",c=typeof e.value=="string"&&se(e.value)?{generator:r,propertyName:e.propertyName,newBinding:e.value}:{generator:r,propertyName:e.propertyName,newValue:e.value},l=await sap.ui.rta.command.CommandFactory.getCommandFor(i,p,c,null,s);await a.getCommandStack().pushAndExecute(l)}function se(t){return t.includes("{")&&t.includes("}")}var S=class{constructor(e,o,n){this.options=e;this.ui5=o;this.selectionService=n;this.savedChanges=[]}async init(e,o){o(async r=>{if(G.match(r))try{this.selectionService.applyControlPropertyChange(r.payload.controlId,r.payload.propertyName),await pe(this.options,r.payload)}catch(i){let s="",p=r.payload.controlId||"",c=this.ui5.getControlById(p);c&&(s=c.getMetadata().getName());let y=Se(i==null?void 0:i.toString(),p,s)||`RTA Exception applying expression "${r.payload.value}"`,u=X({...r.payload,errorMessage:y});e(u)}else W.match(r)&&await this.deleteChange(r.payload.controlId,r.payload.propertyName,r.payload.fileName)});let n=await fetch(`/FioriTools/api/getChanges?_=${Date.now()}`).then(r=>r.json()).catch(console.error),a=Object.keys(n??{}).map(r=>{let i=n[r];try{if(Ae(["fileName","selector.id","content.property","creation"],i),[i.content.newValue,i.content.newBinding].every(s=>s==null))throw new Error("Invalid change, missing new value in the change file");return{type:"saved",kind:"valid",fileName:i.fileName,controlId:i.selector.id,propertyName:i.content.property,value:i.content.newValue??i.content.newBinding,timestamp:new Date(i.creation).getTime(),controlName:i.selector.type.split(".").pop()}}catch(s){if(i.fileName){let p={type:"saved",kind:"unknown",fileName:i.fileName};return i.creation&&(p.timestamp=new Date(i.creation).getTime()),p}console.error(s);return}}).filter(r=>!!r).sort((r,i)=>i.timestamp-r.timestamp);this.savedChanges=a,e(N({saved:a,pending:[]})),this.options.rta.attachUndoRedoStackModified(this.createOnStackChangeHandler(e))}async deleteChange(e,o,n){let a=this.savedChanges.filter(r=>n?n===r.fileName:r.controlId===e&&r.propertyName===o).map(r=>fetch("/FioriTools/api/removeChanges",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileName:r.fileName})}));await Promise.all(a).catch(console.error)}createOnStackChangeHandler(e){return async()=>{let o=this.options.rta.getCommandStack(),n=o.getCommands(),a=o.getAllExecutedCommands(),r=n.length-a.length,i=n.map(function(s,p){try{let c=s.getProperty("selector"),l=s.getProperty("changeType"),y="";switch(l){case"propertyChange":y=s.getProperty("newValue");break;case"propertyBindingChange":y=s.getProperty("newBinding");break}return{type:"pending",controlId:c.id,propertyName:s.getProperty("propertyName"),isActive:p>=r,value:y,controlName:s.getElement().getMetadata().getName().split(".").pop()??""}}catch(c){console.error(c)}}).filter(s=>!!s);e(N({saved:this.savedChanges,pending:i}))}}};function Se(t,e,o){return t.replace("Error: Applying property changes failed:","").replace(`${o}#${e}`,"")}function Ae(t,e){for(let o of t){let n=we(o,e);if(n==null)throw new Error(`Invalid change, missing ${o} in the change file`)}}function we(t,e){let o=t.split("."),n=e;for(let a of o)n=n[a];return n}function Ne(t){console.log("Initializing Control Property Editor");let{rta:e}=t,o=ae(),n=[];function a(p){n.push(p)}let r=new O(e,o),i=new S(t,o,r),s=[r,i];try{Z();let{sendAction:p}=R(window.parent,async function(y){for(let u of n)try{await u(y)}catch(d){console.error(d)}});for(let l of s)l.init(p,a);re(e,p);let c=o.getIcons();p(H(c))}catch(p){console.error("Error during initialization of Control Property Editor",p)}}export{Ne as init};
|
|
1
|
+
var k="post-message-action";function de(t){return t.type===k&&typeof t.action=="object"}function R(t,e){function o(){return typeof t=="function"?t():t}function n(i){let s=o();!s||i.origin!==s.origin||i.source!==s||(de(i.data)?e(i.data.action):console.warn("Unknown message received",i.data))}function a(){window.removeEventListener("message",n)}function r(i){let s=o();if(!s)return;let p={type:k,action:i};s.postMessage(p,s.origin)}return window.addEventListener("message",n),{dispose:a,sendAction:r}}var V="boolean",L="integer",j="float",w="string",b="input",B="dropdown",Y="checkbox";function ye(t){return function(o){return(o==null?void 0:o.type)===t}}function ge(t){return function(o){let n=[t,o].join(" ");function a(r){return{type:n,payload:r}}return a.type=n,a.match=ye(n),a}}var ue="[ext]",g=ge(ue),H=g("icons-loaded"),x=g("control-selected"),J=g("select-control"),W=g("delete-property-changes"),z=g("outline-changed"),G=g("change-property"),$=g("property-changed"),X=g("change-property-failed"),N=g("change-stack-modified");function I(t){let e;return t.getElementInstance?e=t.getElementInstance():e=t.getElement(),e}async function K(t){return new Promise(e=>{let o=t.replace(/\./g,"/");sap.ui.require([o],function(n){let a=n.getMetadata();if(a&&a.getLibraryName){let r=a.getLibraryName();e(r)}else e("")})})}var Q=new Map;async function Z(){Promise.all([await v("sap.m"),await v("sap.ui.comp"),await v("sap.ui.core"),await v("sap.f")]).then(e=>{e.forEach(o=>{Q.set(o.library,o)})})}async function v(t){let e="/test-resources/"+t.split(".").join("/")+"/designtime/api.json";return fetch(e).then(o=>o.json())}async function ee(t,e){let o;try{o=await te(t,e,Q)}catch{console.error(`Error in getting documentation for ${e}`)}return o}async function te(t,e,o){let n=await me(t,e,o);if(n){let a=n.baseType;if(a&&(e=await K(a),e)){let r=await te(a,e,o);return Object.assign({},r,n.properties)}return Object.assign(Object.assign({},n.properties))}else return}async function me(t,e,o){let n,a=o.get(e);if(a)n=q(a,t);else{let r=await v(e);o.set(e,r),n=q(r,t)}return n}function q(t,e){let o={baseType:"",doc:"",properties:{}},n=t.symbols.find(a=>a.name===e);if(n){o.baseType=n.extends,o.doc=n.description;let a=n["ui5-metadata"].properties;a&&a.forEach(r=>{r.description=fe(r.description)||"",r.propertyName=r.name,r.propertyType=r.type,(r.defaultValue===null||r.defaultValue==="")&&(r.defaultValue="-"),o.properties[r.name]={...r}})}return o}function fe(t){let e=(t||"").split("<"),o="";for(let n of e)if(!o)o=n;else{let a=n.indexOf(">");o+=a>=0?n.substring(a+1):`<${n}`}return o}var ne=t=>{let e=t.replace(/([A-Z])/g," $1");return e.charAt(0).toUpperCase()+e.slice(1)};function he(t){let e=(t||"").toLowerCase();return e.indexOf("src")>=0||e.startsWith("icon")||e.endsWith("icon")}function Ce(t){let e={primitiveType:"any",ui5Type:null,enumValues:null,isArray:!1};if(!t)return;let o=t.getType();if(!o)return;let n=o.getName();if(n){if(n.indexOf("[]")>0)e.primitiveType=n.substring(0,n.indexOf("[]")),e.isArray=!0;else if(n==="void"||n==="object")e.primitiveType=n;else if(n==="any")e.primitiveType="any";else if(n==="boolean"||n==="string"||n==="int"||n==="float")e.primitiveType=n;else{let a=window.sap.ui.base.DataType,r=a.getType(n);if(r&&!(r instanceof a))return e;let i=Object.getPrototypeOf(r).getName();i?e.primitiveType=i:e.primitiveType="enum",e.ui5Type=n,e.primitiveType==="enum"&&(e.enumValues=jQuery.sap.getObject(e.ui5Type))}return e}}function Pe(t){return!(t.isArray||t.primitiveType==="any")}function Te(t){if(typeof t=="object"&&t instanceof Object&&!Array.isArray(t))try{return JSON.stringify(t)}catch(e){return e instanceof Error&&e.message.toLowerCase().includes("converting circular structure to json")?"<Circular JSON cannot be displayed>":t}else return typeof t=="function"?"":t}async function f(t,e,o=!0){let n=t.getMetadata(),a=n.getName(),r=n.getLibraryName(),i=sap.ui.fl.Utils.checkControlId(t),s=e?e.getDesignTimeMetadata().getData().properties:void 0,p=n.getAllProperties(),c=Object.keys(p),l=[],y=o?await ee(a,r):{};for(let u of c){let d=p[u],m=Ce(d);if(!m)continue;let F=!1;s&&s[d.name]&&(F=s[d.name].ignore);let A={id:t.getId(),name:d.name,newValue:t.getProperty(d.name)},E=t.getBindingInfo(A.name);(E==null?void 0:E.bindingString)!==void 0&&(A.newValue=E.bindingString);let h=((e==null?void 0:e.isSelectable())??!1)&&Pe(m)&&i&&!F,C=Te(A.newValue),ce=he(d.name)&&a!=="sap.m.Image"&&m.ui5Type==="sap.ui.core.URI",P=y&&y[d.name]?y[d.name]:{defaultValue:d.defaultValue||"-",description:"",propertyName:d.name,type:m.ui5Type,propertyType:m.ui5Type},T=ne(d.name);switch(m.primitiveType){case"enum":{let _=m.enumValues??{},le=Object.keys(_).map(U=>({key:U,text:_[U]}));l.push({type:w,editor:B,name:d.name,readableName:T,value:C,isEnabled:h,options:le,documentation:P});break}case"string":{l.push({type:w,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,isIcon:ce,documentation:P});break}case"int":{l.push({type:L,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}case"float":{l.push({type:j,editor:b,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}case"boolean":{l.push({type:V,editor:Y,name:d.name,readableName:T,value:C,isEnabled:h,documentation:P});break}}}return{id:t.getId(),type:a,properties:l.sort((u,d)=>u.name>d.name?1:-1),name:a}}var oe=async(t="")=>{let e=!1,o=sap.ui.getCore().byId(t);if(o){let n=sap.ui.dt.OverlayRegistry.getOverlay(o);if((!n||!n.getDomRef())&&(n=sap.ui.dt.OverlayUtil.getClosestOverlayFor(o)),n){let a=I(n);e=(await f(a,n,!1)).properties.find(s=>s.isEnabled===!0)!==void 0}}else{let n=sap.ui.getCore().getComponent(t);if(n){let r=(await f(n,void 0,!1)).properties.find(i=>i.isEnabled===!0);e=!1}}return e};async function D(t,e){let o=[...t],n=[];for(;o.length;){let a=o.shift(),r=await oe(a==null?void 0:a.id);if((a==null?void 0:a.type)==="element"){let i=(a.elements??[]).flatMap(c=>c.type==="aggregation"?c.elements??[]:[]),{text:s}=e(a.id),p={controlId:a.id,controlType:a.technicalName,name:s??a.technicalName.split(".").slice(-1)[0],editable:r,visible:a.visible??!0,children:await D(i,e)};n.push(p)}}return n}async function re(t,e){let o=await t.getService("outline");async function n(){let a=await o.get(),r=await D(a,i=>{let s=sap.ui.getCore().byId(i);if(s&&s.getMetadata().getProperty("text")){let p=s.getProperty("text");return typeof p=="string"&&p.trim()!==""?{text:p}:{}}return{}});e(z(r))}o.attachEvent("update",n)}function ae(){return{getControlById:ve,getIcons:Ie,getComponent:Ee,getOverlay:be,getClosestOverlayFor:xe}}function ve(t){return sap.ui.getCore().byId(t)}function Ee(t){return sap.ui.getCore().getComponent(t)}function be(t){return sap.ui.dt.OverlayRegistry.getOverlay(t)}function xe(t){return sap.ui.dt.OverlayUtil.getClosestOverlayFor(t)}function Ie(){return sap.ui.core.IconPool.getIconNames("undefined").map(t=>{let e=sap.ui.core.IconPool.getIconInfo(t);return{name:t.toLowerCase(),content:e.content,fontFamily:e.fontFamily}}).sort((t,e)=>t.name<e.name?-1:t.name>e.name?1:0)}function M(t){let e={method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(t)};fetch("./control-property-editor/report-telemetry",e).then(async o=>{console.log(o)}).catch(o=>{console.error("There was an error!",o)})}var O=class{constructor(e,o){this.rta=e;this.ui5=o;this.appliedChangeCache=new Map;this.activeChangeHandlers=new Set}init(e,o){let n=new Set;this.rta.attachSelectionChange(this.createOnSelectionChangeHandler(e,n)),o(async a=>{if(J.match(a)){let r=a.payload,i=this.ui5.getControlById(r);if(!i){let c=this.ui5.getComponent(r);if(c){let l=await f(c),y=x(l);e(y)}return}n.add("outline");let s=this.ui5.getOverlay(i),p=this.rta.getSelection();if(p.length>0)for(let c=0;c<p.length;c++)p[c].setSelected(!1);if((!s||!s.getDomRef())&&(s=this.ui5.getClosestOverlayFor(i)),s&&s.isSelectable())s.setSelected(!0);else{let c=await f(i),l=x(c);e(l)}}})}applyControlPropertyChange(e,o){let n=ie(e,o);this.appliedChangeCache.set(n,Date.now())}createOnSelectionChangeHandler(e,o){return async n=>{let a=n.getParameter("selection");for(let r of this.activeChangeHandlers)r();if(this.activeChangeHandlers.clear(),Array.isArray(a)&&a.length===1){let r=this.ui5.getControlById(a[0].getId());if(r){let i=I(r),s=i.getMetadata().getName();this.handlePropertyChanges(i,e);try{let p=o.has("outline"),c=s.toLowerCase().startsWith("sap")?s:"Other Control Types";p?M({category:"Outline Selection",controlName:c}):M({category:"Overlay Selection",controlName:c})}catch(p){console.error("Error in reporting telemetry",p)}finally{let p=await f(i,r),c=x(p);e(c),o.delete("outline")}}}}}handlePropertyChanges(e,o){let n=a=>{let r=a.getParameter("name"),i=a.getParameter("id"),s=ie(i,r);if(this.appliedChangeCache.get(s)){this.appliedChangeCache.delete(s);return}let c=e.getBindingInfo(r),l=(c==null?void 0:c.bindingString)??a.getParameter("newValue"),y=$({controlId:i,propertyName:r,newValue:l});o(y)};e.attachEvent("_change",n),this.activeChangeHandlers.add(()=>{try{e.detachEvent("_change",n)}catch{}})}};function ie(t,e){return[t,e].join(",")}var Oe="FE_FROM_SCRATCH";async function pe(t,e){let{layer:o,componentId:n,rta:a,generator:r}=t,i=sap.ui.getCore().byId(e.controlId);if(!i)return;let s={layer:o,developerMode:!0,baseId:n,projectId:"",scenario:Oe,generator:r},p=typeof e.value=="string"&&se(e.value)?"BindProperty":"Property",c=typeof e.value=="string"&&se(e.value)?{generator:r,propertyName:e.propertyName,newBinding:e.value}:{generator:r,propertyName:e.propertyName,newValue:e.value},l=await sap.ui.rta.command.CommandFactory.getCommandFor(i,p,c,null,s);await a.getCommandStack().pushAndExecute(l)}function se(t){return t.includes("{")&&t.includes("}")}var S=class{constructor(e,o,n){this.options=e;this.ui5=o;this.selectionService=n;this.savedChanges=[]}async init(e,o){o(async r=>{if(G.match(r))try{this.selectionService.applyControlPropertyChange(r.payload.controlId,r.payload.propertyName),await pe(this.options,r.payload)}catch(i){let s="",p=r.payload.controlId||"",c=this.ui5.getControlById(p);c&&(s=c.getMetadata().getName());let y=Se(i==null?void 0:i.toString(),p,s)||`RTA Exception applying expression "${r.payload.value}"`,u=X({...r.payload,errorMessage:y});e(u)}else W.match(r)&&await this.deleteChange(r.payload.controlId,r.payload.propertyName,r.payload.fileName)});let n=await fetch(`/FioriTools/api/getChanges?_=${Date.now()}`).then(r=>r.json()).catch(console.error),a=Object.keys(n??{}).map(r=>{let i=n[r];try{if(Ae(["fileName","selector.id","content.property","creation"],i),[i.content.newValue,i.content.newBinding].every(s=>s==null))throw new Error("Invalid change, missing new value in the change file");return{type:"saved",kind:"valid",fileName:i.fileName,controlId:i.selector.id,propertyName:i.content.property,value:i.content.newValue??i.content.newBinding,timestamp:new Date(i.creation).getTime(),controlName:i.selector.type.split(".").pop()}}catch(s){if(i.fileName){let p={type:"saved",kind:"unknown",fileName:i.fileName};return i.creation&&(p.timestamp=new Date(i.creation).getTime()),p}console.error(s);return}}).filter(r=>!!r).sort((r,i)=>i.timestamp-r.timestamp);this.savedChanges=a,e(N({saved:a,pending:[]})),this.options.rta.attachUndoRedoStackModified(this.createOnStackChangeHandler(e))}async deleteChange(e,o,n){let a=this.savedChanges.filter(r=>n?n===r.fileName:r.controlId===e&&r.propertyName===o).map(r=>fetch("/FioriTools/api/removeChanges",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileName:r.fileName})}));await Promise.all(a).catch(console.error)}createOnStackChangeHandler(e){return async()=>{let o=this.options.rta.getCommandStack(),n=o.getCommands(),a=o.getAllExecutedCommands(),r=n.length-a.length,i=n.map(function(s,p){try{let c=s.getProperty("selector"),l=s.getProperty("changeType"),y="";switch(l){case"propertyChange":y=s.getProperty("newValue");break;case"propertyBindingChange":y=s.getProperty("newBinding");break}return{type:"pending",controlId:c.id,propertyName:s.getProperty("propertyName"),isActive:p>=r,value:y,controlName:s.getElement().getMetadata().getName().split(".").pop()??""}}catch(c){console.error(c)}}).filter(s=>!!s);e(N({saved:this.savedChanges,pending:i}))}}};function Se(t,e,o){return t.replace("Error: Applying property changes failed:","").replace(`${o}#${e}`,"")}function Ae(t,e){for(let o of t){let n=we(o,e);if(n==null)throw new Error(`Invalid change, missing ${o} in the change file`)}}function we(t,e){let o=t.split("."),n=e;for(let a of o)n=n[a];return n}function Ne(t){console.log("Initializing Control Property Editor");let{rta:e}=t,o=ae(),n=[];function a(p){n.push(p)}let r=new O(e,o),i=new S(t,o,r),s=[r,i];try{Z();let{sendAction:p}=R(window.parent,async function(y){for(let u of n)try{await u(y)}catch(d){console.error(d)}});for(let l of s)l.init(p,a);re(e,p);let c=o.getIcons();p(H(c))}catch(p){console.error("Error during initialization of Control Property Editor",p)}}export{Ne as init};
|
|
2
2
|
//# sourceMappingURL=ui5-adaptation.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap/ux-ui5-tooling",
|
|
3
3
|
"displayName": "SAP Fiori Tools – UI5 Tooling",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.11.0",
|
|
5
5
|
"description": "SAP Fiori Tools – UI5 Tooling",
|
|
6
6
|
"publisher": "SAPSE",
|
|
7
7
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -52,18 +52,18 @@
|
|
|
52
52
|
"@sap-ux/btp-utils": "0.11.6",
|
|
53
53
|
"@sap-ux/deploy-tooling": "0.9.6",
|
|
54
54
|
"@sap-ux/logger": "0.3.6",
|
|
55
|
-
"@sap-ux/project-access": "1.13.
|
|
55
|
+
"@sap-ux/project-access": "1.13.2",
|
|
56
56
|
"@sap-ux/store": "0.3.11",
|
|
57
57
|
"@sap-ux/ui5-config": "0.19.0",
|
|
58
58
|
"@sap-ux/ui5-proxy-middleware": "1.1.31",
|
|
59
|
-
"@sap/ux-app-templates": "1.
|
|
60
|
-
"@sap/ux-cds": "1.
|
|
61
|
-
"@sap/ux-common-utils": "1.
|
|
62
|
-
"@sap/ux-control-property-editor": "1.
|
|
63
|
-
"@sap/ux-odata-client": "1.
|
|
64
|
-
"@sap/ux-telemetry": "1.
|
|
65
|
-
"@sap/ux-ui5-info": "1.
|
|
66
|
-
"@sapux/project-spec": "1.
|
|
59
|
+
"@sap/ux-app-templates": "1.11.0",
|
|
60
|
+
"@sap/ux-cds": "1.11.0",
|
|
61
|
+
"@sap/ux-common-utils": "1.11.0",
|
|
62
|
+
"@sap/ux-control-property-editor": "1.11.0",
|
|
63
|
+
"@sap/ux-odata-client": "1.11.0",
|
|
64
|
+
"@sap/ux-telemetry": "1.11.0",
|
|
65
|
+
"@sap/ux-ui5-info": "1.11.0",
|
|
66
|
+
"@sapux/project-spec": "1.11.0",
|
|
67
67
|
"@types/marked": "4.0.1",
|
|
68
68
|
"@types/prompts": "2.0.14",
|
|
69
69
|
"@types/supertest": "2.0.12",
|