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