@dao42/d42paas-front 0.7.55 → 0.7.56
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/dist/DaoPaaS.es.js +11 -11
- package/dist/DaoPaaS.umd.js +1 -1
- package/package.json +1 -1
package/dist/DaoPaaS.es.js
CHANGED
|
@@ -44780,32 +44780,32 @@ class DaoPaaS {
|
|
|
44780
44780
|
this.messageAndErrorInjection();
|
|
44781
44781
|
}
|
|
44782
44782
|
messageAndErrorInjection() {
|
|
44783
|
-
dockerState.subscribe((state2) => state2, (
|
|
44784
|
-
this.trigger(lodash$2.exports.pick(
|
|
44785
|
-
this.trigger(lodash$2.exports.pick(
|
|
44783
|
+
dockerState.subscribe((state2) => state2, (next2, pre) => {
|
|
44784
|
+
this.trigger(lodash$2.exports.pick(next2, ["dockerStatus"]), lodash$2.exports.pick(next2, ["dockerStatus"]));
|
|
44785
|
+
this.trigger(lodash$2.exports.pick(next2, ["lan"]), lodash$2.exports.pick(next2, ["dockerStatus"]));
|
|
44786
44786
|
});
|
|
44787
|
-
oTStore.subscribe((state2) => state2, (
|
|
44788
|
-
this.trigger(lodash$2.exports.pick(
|
|
44789
|
-
this.trigger(lodash$2.exports.pick(
|
|
44787
|
+
oTStore.subscribe((state2) => state2, (next2, pre) => {
|
|
44788
|
+
this.trigger(lodash$2.exports.pick(next2, ["playgroundStatus"]), lodash$2.exports.pick(next2, ["playgroundStatus"]));
|
|
44789
|
+
this.trigger(lodash$2.exports.pick(next2.dockerInfo, ["language"]), lodash$2.exports.pick(next2.dockerInfo, ["language"]));
|
|
44790
44790
|
});
|
|
44791
44791
|
ErrorMsgState.subscribe((state2) => state2, (next2, pre) => {
|
|
44792
44792
|
this.trigger("error", lodash$2.exports.pick(next2, "message"));
|
|
44793
44793
|
});
|
|
44794
44794
|
userListStore.subscribe((next2, pre) => {
|
|
44795
|
-
this.trigger(lodash$2.exports.pick(
|
|
44795
|
+
this.trigger(lodash$2.exports.pick(next2, ["userList"]), lodash$2.exports.pick(next2, ["userList"]));
|
|
44796
44796
|
});
|
|
44797
44797
|
shadowUserStore.subscribe((next2, pre) => {
|
|
44798
44798
|
this.trigger({
|
|
44799
|
-
followingUser:
|
|
44799
|
+
followingUser: next2.shadowUser
|
|
44800
44800
|
}, {
|
|
44801
|
-
followingUser:
|
|
44801
|
+
followingUser: next2.shadowUser
|
|
44802
44802
|
});
|
|
44803
44803
|
});
|
|
44804
44804
|
followingUserStore.subscribe((next2, pre) => {
|
|
44805
44805
|
this.trigger({
|
|
44806
|
-
usersFollowYou:
|
|
44806
|
+
usersFollowYou: next2.followingUsers
|
|
44807
44807
|
}, {
|
|
44808
|
-
usersFollowYou:
|
|
44808
|
+
usersFollowYou: next2.followingUsers
|
|
44809
44809
|
});
|
|
44810
44810
|
});
|
|
44811
44811
|
}
|
package/dist/DaoPaaS.umd.js
CHANGED
|
@@ -871,7 +871,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
871
871
|
</div>
|
|
872
872
|
</div>
|
|
873
873
|
`}get _selectedIndex(){return this._selected?this._actionMatches.indexOf(this._selected):-1}_actionSelected(e){var t;if(this.dispatchEvent(new CustomEvent("selected",{detail:{search:this._search,action:e},bubbles:!0,composed:!0})),!!e){if(e.children&&((t=e.children)===null||t===void 0?void 0:t.length)>0&&(this._currentRoot=e.id,this._search=""),this._headerRef.value.setSearch(""),this._headerRef.value.focusSearch(),e.handler){const i=e.handler(e);(i==null?void 0:i.keepOpen)||this.close()}this._bump=!0}}async _handleInput(e){this._search=e.detail.search,await this.updateComplete,this.dispatchEvent(new CustomEvent("change",{detail:{search:this._search,actions:this._actionMatches},bubbles:!0,composed:!0}))}_overlayClick(e){var t;((t=e.target)===null||t===void 0?void 0:t.classList.contains("modal"))&&this.close()}};Uo.styles=[Ipt],ws([Ms({type:String})],Uo.prototype,"placeholder",void 0),ws([Ms({type:Boolean})],Uo.prototype,"disableHotkeys",void 0),ws([Ms({type:Boolean})],Uo.prototype,"hideBreadcrumbs",void 0),ws([Ms()],Uo.prototype,"openHotkey",void 0),ws([Ms()],Uo.prototype,"navigationUpHotkey",void 0),ws([Ms()],Uo.prototype,"navigationDownHotkey",void 0),ws([Ms()],Uo.prototype,"closeHotkey",void 0),ws([Ms()],Uo.prototype,"goBackHotkey",void 0),ws([Ms()],Uo.prototype,"selectHotkey",void 0),ws([Ms({type:Boolean})],Uo.prototype,"hotKeysJoinedView",void 0),ws([Ms({type:Boolean})],Uo.prototype,"noAutoLoadMdIcons",void 0),ws([Ms({type:Array,hasChanged(){return!0}})],Uo.prototype,"data",void 0),ws([l0()],Uo.prototype,"visible",void 0),ws([l0()],Uo.prototype,"_bump",void 0),ws([l0()],Uo.prototype,"_actionMatches",void 0),ws([l0()],Uo.prototype,"_search",void 0),ws([l0()],Uo.prototype,"_currentRoot",void 0),ws([l0()],Uo.prototype,"_flatData",void 0),ws([l0()],Uo.prototype,"breadcrumbs",null),ws([l0()],Uo.prototype,"_selected",void 0),Uo=ws([t8("ninja-keys")],Uo);const Apt=()=>{const n=O.exports.useRef(null),e=[{id:"active",title:"\u6FC0\u6D3B\u5BB9\u5668",hotkey:"a",mdIcon:"input",handler:()=>{var c,u;(u=(c=Ur.getState())==null?void 0:c.socket)==null||u.emit("active")}},{id:"disable editor",title:"\u7981\u7528/\u542F\u7528 \u7F16\u8F91\u5668",hotkey:"ed",mdIcon:"edit",handler:()=>{Zt.getState().setGlobalData({disableEditor:!Zt.getState().globalData.disableEditor})}},{id:"disable markdown",title:"\u7981\u7528/\u542F\u7528 Markdown",hotkey:"ed",mdIcon:"swap_horiz",handler:()=>{Zt.getState().setGlobalData({disableEditor:!Zt.getState().globalData.showMarkdown});const c=document.querySelector(".markdown-layout"),u=window.getComputedStyle(document.querySelector(".markdown-layout"));c.style.display=(u==null?void 0:u.display)==="none"?"block":"none"}},{id:"clearCache",title:"\u6E05\u9664\u7F13\u5B58",mdIcon:"autorenew",handler:()=>{qgt()}},{id:"replay",title:"\u56DE\u653E",hotkey:"r",mdIcon:"alarm",handler:()=>{l()}},{id:"GUI",title:"GUI",hotkey:"g",mdIcon:"build_circle",handler:()=>{const{showGUI:c,setShowGUI:u}=O1e.getState();u(!c)}},{id:"admClearCache",title:"\u6E05\u9664\u7F13\u5B58\u3010ADMIN_ONLY\u3011",mdIcon:"admin_panel_settings",handler:()=>{prompt("\u8BF7\u8F93\u5165\u5BC6\u7801")==="kuangsa183"&&Kgt()}},{id:"DOC",title:"\u6587\u6863",mdIcon:"desktop_windows",children:[{id:"tsdoc",title:"API \u6587\u6863",mdIcon:"highlight",handler:()=>{window.open("https://develop.1024paas.com/tsdoc")}},{id:"storybook",title:"Storybook",mdIcon:"description",handler:()=>{window.open("https://develop.1024paas.com/storybook")}}]}],[t,i]=O.exports.useState(!1),[r,o]=O.exports.useState(null),[s,a]=O.exports.useState(e);O.exports.useEffect(()=>{n.current&&(n.current.data=s)},[]),O.exports.useEffect(()=>{t||n.current.close()},[t]);const l=async c=>{o(await gle()),i(!0)};return xt(tit,{theme:"dark",children:[oe("ninja-keys",{ref:n,className:"dark"}),oe(Qgt,{drawerOpen:t,setDrawerOpen:i,replayList:r})]})},Npt=()=>{const{socket:n}=Ur.getState(),e=O1e(i=>i.showGUI),t=(i,r)=>{const o=new Set(Xw.getState().ignoreReplayers);r?o.add(i):o.delete(i),Xw.getState().setIgnoreReplayer(Array.from(o))};return jgt({syncCursor:{label:"\u5149\u6807\u540C\u6B65",value:Zt.getState().globalData.syncCursor,onChange:i=>{Zt.getState().setGlobalData({syncCursor:i}),n==null||n.emit("globalData",{syncCursor:i})},transient:!1},\u5C4F\u853D\u7EC4\u4EF6:k1e({Editor:{value:!1,onChange:i=>{t("editor",i)},transient:!1},Terminal:{value:!1,onChange:i=>{t("terminal",i)},transient:!1},File:{value:!1,onChange:i=>{t("file",i)},transient:!1}})}),xt(ns,{children:[oe(R1e,{hidden:!e}),oe(Apt,{})]})},S0e="staging";console.log("current branch",S0e);const Rpt=n0(async()=>(await Promise.resolve().then(function(){return aMt})).FileTree),Opt=n0(async()=>(await Promise.resolve().then(function(){return S3e})).Editor),Mpt=n0(async()=>(await Promise.resolve().then(function(){return rGt})).default),Ppt=n0(async()=>(await Promise.resolve().then(function(){return lGt})).default),Fpt=n0(async()=>(await Promise.resolve().then(function(){return cGt})).default),Bpt=n0(async()=>await Promise.resolve().then(function(){return $Gt}));window.MonacoEnvironment={getWorkerUrl(n,e){return e==="json"?"/assets/json.worker.bundle.js":e==="css"?"/assets/css.worker.bundle.js":e==="html"?"/assets/html.worker.bundle.js":e==="typescript"||e==="javascript"?"/assets/ts.worker.bundle.js":`data:text/javascript;charset=utf-8,${encodeURIComponent(`
|
|
874
|
-
importScripts('https://develop.1024paas.com/assets/editor.worker.43309ac9.js');`)}`}};class $pt{constructor({debug:e,mode:t,ticket:i,playgroundId:r,userId:o,tenantId:s,username:a,components:l,serviceWorkerOrigin:c,paasDomain:u,onMessage:d,onError:h}){cr(this,"shellDOM");cr(this,"editorDOM");cr(this,"pageDOM");cr(this,"storeProps");cr(this,"ticket");cr(this,"userId");cr(this,"tenantId");cr(this,"username");cr(this,"debug");cr(this,"userInfo",{});cr(this,"paasDomain");cr(this,"components");cr(this,"mode");cr(this,"playgroundId");cr(this,"serviceWorkerOrigin");cr(this,"onMessage");cr(this,"onError");this.mode=t,this.ticket=i,this.playgroundId=r,this.userId=o,this.tenantId=s,this.username=a||"",this.debug=e||!1,this.paasDomain=u,this.components=l,this.onMessage=d,this.onError=h,this.serviceWorkerOrigin=c,sessionStorage.setItem("playgroundId",r),this.init(),this.on=this.on.bind(this),this.trigger=this.trigger.bind(this)}get otstore(){return Zt.getState()}get socketIO(){return Ur.getState().socket}get playgroundStatus(){return this.otstore.playgroundStatus}get dockerStatus(){return this.otstore.dockerStatus}get ignoreReplayers(){return Xw.getState().ignoreReplayers}get userList(){return As.getState().userList}async init(){if(window.onerror=s=>{console.log("error"),s.includes("dError")&&this.trigger("error",{content:s.replace("Uncaught dError:","")})},this.mode==="tsdoc")return;const{setSocket:e}=Ur.getState(),t=document.createElement("div");t.className="init-class",document.body.appendChild(t);const{setUserInfo:i,userInfo:r}=Su.getState(),o={ticket:this.ticket,playgroundId:this.playgroundId,userId:this.userId,username:this.username,tenantId:this.tenantId,paasDomain:this.paasDomain?this.paasDomain:`${S0e}.1024paas.com`};try{const a=await(await fetch(`https://${o.paasDomain}/jssdk/ticket`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ticket:this.ticket})})).json();e(new ePe(_t(Pe({},o),{debug:this.debug,ioPath:`wss://${a.data}`})))}catch(s){throw console.log(s),s}if(!o.userId)throw"\u7F3A\u5C11userId";if(!o.playgroundId)throw"\u7F3A\u5C11playgroundId";if(!o.ticket)throw"\u7F3A\u5C11ticket";i(_t(Pe({},r),{uuid:o.userId,userId:o.userId})),cst(_t(Pe(Pe({},this.userInfo),o),{io:Ur.getState().socket,callback:()=>{this.components&&this.mapRender(this.components)}})),this.components&&this.mapRender(this.components),Nc.exports.render(oe(Npt,{}),document.querySelector(".init-class")),this.messageAndErrorInjection()}messageAndErrorInjection(){f3.subscribe(e=>e,(e,t)=>{this.trigger(Ir.exports.pick(e,["dockerStatus"]),Ir.exports.pick(
|
|
874
|
+
importScripts('https://develop.1024paas.com/assets/editor.worker.43309ac9.js');`)}`}};class $pt{constructor({debug:e,mode:t,ticket:i,playgroundId:r,userId:o,tenantId:s,username:a,components:l,serviceWorkerOrigin:c,paasDomain:u,onMessage:d,onError:h}){cr(this,"shellDOM");cr(this,"editorDOM");cr(this,"pageDOM");cr(this,"storeProps");cr(this,"ticket");cr(this,"userId");cr(this,"tenantId");cr(this,"username");cr(this,"debug");cr(this,"userInfo",{});cr(this,"paasDomain");cr(this,"components");cr(this,"mode");cr(this,"playgroundId");cr(this,"serviceWorkerOrigin");cr(this,"onMessage");cr(this,"onError");this.mode=t,this.ticket=i,this.playgroundId=r,this.userId=o,this.tenantId=s,this.username=a||"",this.debug=e||!1,this.paasDomain=u,this.components=l,this.onMessage=d,this.onError=h,this.serviceWorkerOrigin=c,sessionStorage.setItem("playgroundId",r),this.init(),this.on=this.on.bind(this),this.trigger=this.trigger.bind(this)}get otstore(){return Zt.getState()}get socketIO(){return Ur.getState().socket}get playgroundStatus(){return this.otstore.playgroundStatus}get dockerStatus(){return this.otstore.dockerStatus}get ignoreReplayers(){return Xw.getState().ignoreReplayers}get userList(){return As.getState().userList}async init(){if(window.onerror=s=>{console.log("error"),s.includes("dError")&&this.trigger("error",{content:s.replace("Uncaught dError:","")})},this.mode==="tsdoc")return;const{setSocket:e}=Ur.getState(),t=document.createElement("div");t.className="init-class",document.body.appendChild(t);const{setUserInfo:i,userInfo:r}=Su.getState(),o={ticket:this.ticket,playgroundId:this.playgroundId,userId:this.userId,username:this.username,tenantId:this.tenantId,paasDomain:this.paasDomain?this.paasDomain:`${S0e}.1024paas.com`};try{const a=await(await fetch(`https://${o.paasDomain}/jssdk/ticket`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({ticket:this.ticket})})).json();e(new ePe(_t(Pe({},o),{debug:this.debug,ioPath:`wss://${a.data}`})))}catch(s){throw console.log(s),s}if(!o.userId)throw"\u7F3A\u5C11userId";if(!o.playgroundId)throw"\u7F3A\u5C11playgroundId";if(!o.ticket)throw"\u7F3A\u5C11ticket";i(_t(Pe({},r),{uuid:o.userId,userId:o.userId})),cst(_t(Pe(Pe({},this.userInfo),o),{io:Ur.getState().socket,callback:()=>{this.components&&this.mapRender(this.components)}})),this.components&&this.mapRender(this.components),Nc.exports.render(oe(Npt,{}),document.querySelector(".init-class")),this.messageAndErrorInjection()}messageAndErrorInjection(){f3.subscribe(e=>e,(e,t)=>{this.trigger(Ir.exports.pick(e,["dockerStatus"]),Ir.exports.pick(e,["dockerStatus"])),this.trigger(Ir.exports.pick(e,["lan"]),Ir.exports.pick(e,["dockerStatus"]))}),Zt.subscribe(e=>e,(e,t)=>{this.trigger(Ir.exports.pick(e,["playgroundStatus"]),Ir.exports.pick(e,["playgroundStatus"])),this.trigger(Ir.exports.pick(e.dockerInfo,["language"]),Ir.exports.pick(e.dockerInfo,["language"]))}),OH.subscribe(e=>e,(e,t)=>{this.trigger("error",Ir.exports.pick(e,"message"))}),As.subscribe((e,t)=>{this.trigger(Ir.exports.pick(e,["userList"]),Ir.exports.pick(e,["userList"]))}),Td.subscribe((e,t)=>{this.trigger({followingUser:e.shadowUser},{followingUser:e.shadowUser})}),PH.subscribe((e,t)=>{this.trigger({usersFollowYou:e.followingUsers},{usersFollowYou:e.followingUsers})})}trigger(e,t){if(e==="error"){this.on(t,e);return}this.on(t)}clearIDB(e){indexedDB.deleteDatabase("daopaas").onsuccess=()=>{e&&e()}}followUser(e,t){const{switchShadowUser:i}=Td.getState();i(e),t&&t(this.userList.find(r=>r.userId===e))}unFollowUser(e,t){const{switchShadowUser:i}=Td.getState();i(),t&&t()}replay(e){uU(e)}setIgnoreReplayers(e){Xw.getState().setIgnoreReplayer(e)}activePlayground(){var e;(e=Ur.getState().socket)==null||e.emit("active")}runPlayground(){var e;(e=Ur.getState().socket)==null||e.emit("run")}stopPlayground(){var e;(e=Ur.getState().socket)==null||e.emit("stop")}onUploadFile(e){var t;(t=Ur.getState().socket)==null||t.emit("upload",e)}switchLspServer(e){this.otstore.setGlobalData({useLsp:!this.otstore.globalData.useLsp})}record(e){const{socket:t}=Ur.getState();if(e==="undefined"){this.otstore.setGlobalData({isRecording:!!e}),t==null||t.emit("globalData",{isRecording:!!e});return}this.otstore.setGlobalData({isRecording:!!e}),t==null||t.emit("globalData",{isRecording:!!e})}on(e,t){t==="error"?this.onError&&this.onError(e):this.onMessage&&this.onMessage(e)}mapRender(e){e==null||e.forEach((t,i)=>{const r=Ir.exports.omit(Pe({},t),["item","container"]);switch(t.item){case"Page":this.Page({container:t.container,props:t.props||r});break;case"Tree":this.Tree({container:t.container,props:t.props||r});break;case"Editor":this.Editor({container:t.container,props:_t(Pe({},t.props),{serviceWorkerOrigin:this.serviceWorkerOrigin})});break;case"Console":this.Console({container:t.container,props:t.props||r});break;case"Shell":this.Shell({container:t.container,props:t.props||r});break;case"Browser":this.Browser({container:t.container,props:t.props||r});break}})}Page({container:e,props:t}){this.pageDOM=e?fS(e):this.pageDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Bpt,_t(Pe({},t),{serviceWorkerOrigin:this.serviceWorkerOrigin}))}),this.pageDOM)}Editor({container:e,props:t}){this.editorDOM=e?fS(e):this.editorDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Opt,_t(Pe({},t),{serviceWorkerOrigin:this.serviceWorkerOrigin}))}),this.editorDOM)}Shell({container:e,props:t}){this.editorDOM=e?fS(e):this.editorDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Fpt,Pe({},t))}),this.editorDOM)}Tree({container:e,props:t}){this.editorDOM=e?fS(e):this.editorDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Rpt,Pe({},t))}),this.editorDOM)}Console({container:e,props:t}){this.editorDOM=e?fS(e):this.editorDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Mpt,Pe({},t))}),this.editorDOM)}Browser({container:e,props:t}){this.editorDOM=e?fS(e):this.editorDOM,Nc.exports.render(oe(O.exports.Suspense,{fallback:oe(Gw,{}),children:oe(Ppt,Pe({},t))}),this.editorDOM)}}function fS(n){return/HTMLDivElement|HTMLElement/.test(Object.prototype.toString.call(n))?n:document.querySelector(n)}var Uc=globalThis&&globalThis.__assign||function(){return Uc=Object.assign||function(n){for(var e,t=1,i=arguments.length;t<i;t++){e=arguments[t];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r])}return n},Uc.apply(this,arguments)},c0=function(){for(var n=[],e=0;e<arguments.length;e++)n[e]=arguments[e];return n.filter(function(t){return!!t}).join(" ")},Hpt=function(n){var e=Uc({renderItemTitle:function(t){var i=t.title,r=t.context,o=t.info;if(!o.isSearching||!r.isSearchMatching)return Ne.createElement(Ne.Fragment,null,i);var s=i.toLowerCase().indexOf(o.search.toLowerCase());return Ne.createElement(Ne.Fragment,null,s>0&&Ne.createElement("span",null,i.slice(0,s)),Ne.createElement("span",{className:"rct-tree-item-search-highlight"},i.slice(s,s+o.search.length)),s+o.search.length<i.length&&Ne.createElement("span",null,i.slice(s+o.search.length,i.length)))},renderItemArrow:function(t){var i=t.item,r=t.context;return Ne.createElement("div",Uc({className:c0(i.hasChildren&&"rct-tree-item-arrow-hasChildren","rct-tree-item-arrow")},r.arrowProps),i.hasChildren&&(r.isExpanded?Ne.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 16 16",enableBackground:"new 0 0 16 16",xmlSpace:"preserve"},Ne.createElement("g",null,Ne.createElement("g",null,Ne.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:`M12,5c-0.28,0-0.53,0.11-0.71,0.29L8,8.59L4.71,5.29C4.53,5.11,4.28,5,4,5
|
|
875
875
|
C3.45,5,3,5.45,3,6c0,0.28,0.11,0.53,0.29,0.71l4,4C7.47,10.89,7.72,11,8,11s0.53-0.11,0.71-0.29l4-4C12.89,6.53,13,6.28,13,6
|
|
876
876
|
C13,5.45,12.55,5,12,5z`,className:"rct-tree-item-arrow-path"})))):Ne.createElement("svg",{version:"1.1",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 16 16",enableBackground:"new 0 0 16 16",xmlSpace:"preserve"},Ne.createElement("g",null,Ne.createElement("g",null,Ne.createElement("path",{fillRule:"evenodd",clipRule:"evenodd",d:`M10.71,7.29l-4-4C6.53,3.11,6.28,3,6,3C5.45,3,5,3.45,5,4
|
|
877
877
|
c0,0.28,0.11,0.53,0.29,0.71L8.59,8l-3.29,3.29C5.11,11.47,5,11.72,5,12c0,0.55,0.45,1,1,1c0.28,0,0.53-0.11,0.71-0.29l4-4
|