meeting-pane
Version:
Solid-compatible Panes: meeting collaborative tool
1 lines • 20.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("UI"),require("$rdf"),require("SolidLogic")):"function"==typeof define&&define.amd?define(["UI","$rdf","SolidLogic"],t):"object"==typeof exports?exports.MeetingPane=t(require("UI"),require("$rdf"),require("SolidLogic")):e.MeetingPane=t(e.UI,e.$rdf,e.SolidLogic)}(this,(e,t,n)=>(()=>{"use strict";var i={264(e){e.exports=t},663(e){e.exports=n},426(t){t.exports=e}},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={exports:{}};return i[e](n,n.exports,a),n.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};a.r(s),a.d(s,{default:()=>p});var r=a(426),l=a(264),d=a(663);const{typeIndex:c}=d.solidLogicSingleton,{loadTypeIndexesFor:u}=c,m=r.ns,p={icon:r.icons.iconBase+"noun_66617.svg",name:"meeting",audience:[m.solid("PowerUser")],label:function(e,t){const n=t.session.store,i=r.ns;return n.holds(e,i.rdf("type"),i.meeting("Meeting"))?"Meeting":null},mintClass:r.ns.meeting("Meeting"),mintNew:function(e,t){return new Promise(function(n,i){const o=e.session.store,a=r.ns;t.newInstance=t.newInstance||o.sym(t.newBase+"index.ttl#this");const s=t.newInstance,c=s.doc(),u=d.authn.currentUser();u&&o.add(s,a.dc("author"),u,c),o.add(s,a.rdf("type"),a.meeting("Meeting"),c),o.add(s,a.dc("created"),new Date,c),o.add(s,a.ui("backgroundColor"),new l.Literal("#ddddcc",void 0,a.xsd("color")),c);const m=new l.Collection;o.add(s,a.meeting("toolList"),m,c),m.elements.push(s),o.updater.put(c,o.statementsMatching(void 0,void 0,void 0,c),"text/turtle",function(e,o,a){o?n(t):i(new Error("Error writing meeting configuration: "+a))})})},render:function(e,t){const n=t.dom,i=t.session.store,o=r.ns,a=i.updater,s=this,c=function(e,t){console.log(e);const i=n.createElement("pre");i.setAttribute("style","background-color: "+t||0),h.appendChild(i),i.appendChild(n.createTextNode(e))},m=function(e,t){e||c(t)},p=e,g=e.doc(),f=e.dir().uri,h=n.createElement("div"),b=h.appendChild(n.createElement("table"));b.style="width: 100%; height: 100%; margin:0;";const w=b.appendChild(n.createElement("tr"));w.appendChild(n.createElement("div"));const y=b.appendChild(n.createElement("tr")),v=b.appendChild(n.createElement("td")).appendChild(n.createElement("table")).appendChild(n.createElement("tr"));w.setAttribute("style","height: 2em;");let C=null;const x=function(){a.put(g,i.statementsMatching(void 0,void 0,void 0,g),"text/turtle",function(e,t,n){t?($.refresh(),z()):c(n="FAILED to save new thing at: "+g+" : "+n)})},k=function(e,t,n){const s=t.doc();n&&i.add(p,n,t,s),i.add(t,o.meeting("parentMeeting"),p,s),a.put(s,i.statementsMatching(void 0,void 0,void 0,s),"text/turtle",function(e,n,i){n?x():c("FAILED to save new tool at: "+t+" : "+i)})},T=function(e,t,n,a){t&&i.add(p,t,e,g);const s=r.widgets.newThing(g);return n&&i.add(s,o.rdfs("label"),n,g),a&&i.add(s,o.meeting("icon"),i.sym(a),g),i.add(s,o.rdf("type"),o.meeting("Tool"),g),i.add(s,o.meeting("target"),e,g),i.the(p,o.meeting("toolList")).elements.push(s),s};function A(e){const t=/https:\/\/www\.google\..*\/maps\//,n="https://www.google.com/maps/embed/v1/",i=e.uri;if(!i.match(t))return e;if(i.startsWith(n))return e;const o=i.replace(t,n)+"&key=AIzaSyB8aaT6bY9tcLCmc2oPCkdUYLmTOWM8R54";return console.log("Converted Google Map URI! "+o),l.sym(o)}const E=function(n){Promise.all(n.map(function(n){return function(n){return new Promise(function(a){console.log("Dropped on thing "+n);const s=n.uri;if(s.startsWith("http:")&&s.indexOf("#")<0)return function(n){const a=o.wf("attachment");i.add(e,a,n,e.doc()),P({icon:"noun_160581.svg",limit:1,shareTab:!0},{newInstance:e,pane:t.session.paneRegistry.byName("link"),predicate:o.meeting("attachmentTool"),tabTitle:"Links",view:"link",noIndexHTML:!0})}(n),a(n);i.fetcher.nowOrWhenFetched(n,function(e,t){function d(e){e=A(e),console.log("make web page attachement tab "+e);const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);return i.add(t,r.ns.meeting("view"),"iframe",g),a(e)}if(e){const e=n,t=i.findTypeURIs(e);for(const e in t)console.log(" drop object type includes: "+e);if(o.vcard("Individual").uri in t||o.foaf("Person").uri in t||o.foaf("Agent").uri in t)return function(e){const t=i.any(e,o.foaf("preferredURI")),n=t?i.sym(t):e,a=i.any(p,o.meeting("attendeeGroup")),s=function(e,t){const n=[l.st(t,r.ns.vcard("hasMember"),e,t.doc())],a=i.any(e,o.vcard("fn"))||i.any(e,o.foaf("name"));a&&n.push(l.st(e,r.ns.vcard("fn"),a,t.doc())),i.fetcher.nowOrWhenFetched(t.doc(),void 0,function(o,a){o?i.updater.update([],n,function(t,n,i){m(n,i),n&&console.log("Addded to particpants OK: "+e)}):c("Can't read group to add person"+t)})};a?s(n,a):I().then(function(e){const t=e.newInstance;s(n,t),i.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(e){console.log("Particiants Group created: "+t)})}).catch(function(e){c(e)})}(n),a(n);if(s.startsWith("https:")&&s.indexOf("#")<0){const e=i.fetcher.getHeader(n,"x-frame-options");let t=!0;if(e)for(let n=0;n<e.length;n++)console.log("x-frame-options: "+e[n]),e[n].indexOf("sameorigin")<0&&(t=!1),e[n].indexOf("deny")<0&&(t=!1);if(t)return function(e){const t=T(e,r.ns.wf("attachment"),r.utils.label(e),null);i.add(t,r.ns.meeting("view"),"iframe",g)}(n=A(n)),a(n)}return console.log("Default: assume web page attachement "+n),d(n)}return console.log("Error looking up dropped thing, will just add it anyway. "+n+": "+t),d(n)})})}(l.sym(n))})).then(function(e){x()})},F=function(e){r.widgets.uploadFiles(i.fetcher,e,p.dir().uri+"Files",p.dir().uri+"Pictures",function(e,t){e.type.startsWith("image/")?L("Files"):M("Pictures")})},L=function(e){return P({icon:"noun_598334.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+e+"/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("pictures"),shareTab:!0,tabTitle:e,view:"slideshow",noIndexHTML:!0})},M=function(e){return P({icon:"noun_681601.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Files/"),pane:t.session.paneRegistry.byName("folder"),predicate:o.meeting("materialsFolder"),tabTitle:"Materials",noIndexHTML:!0})},I=function(){return P({icon:"noun_339237.svg",limit:1,shareTab:!0},{newInstance:i.sym(p.dir().uri+"Attendees/index.ttl#this"),pane:t.session.paneRegistry.byName("contact"),predicate:o.meeting("attendeeGroup"),tabTitle:"Attendees",instanceClass:o.vcard("Group"),instanceName:r.utils.label(e)+" attendees",noIndexHTML:!0})};function P(e,n){return new Promise(function(i,o){const a=t.session.store;if(!n.useExisting){const t=a.any(p,n.predicate);if(t){if(e.limit&&1===e.limit&&!e.shareTab)return c("Already have "+t+" as "+r.utils.label(n.predicate)),c("Cant have two"),i(null);if(e.shareTab)return console.log("Using existing "+t+" as "+r.utils.label(n.predicate)),i({me:C,newInstance:t,instanceClass:n.instanceClass})}}C||n.me||o(new Error("Username not defined for new tool")),n.me=n.me||C,n.newInstance=n.useExisting||n.newInstance||a.sym(n.newBase+"index.ttl#this"),n.pane.mintNew(t,n).then(function(e){const t=T(e.newInstance,e.predicate,e.tabTitle,e.pane.icon);e.view&&a.add(t,r.ns.meeting("view"),e.view,g),x(),a.fetcher.putBack(g,{contentType:"text/turtle"}).then(function(t){i(e)}).catch(function(e){o(e)})}).catch(function(e){c(e),o(e)})})}const _=function(){const e=r.login.selectWorkspace(n,{noun:"meeting"},function(i,o){s.mintNew(t,{newBase:o}).then(function(t){const i=t.newInstance;R.removeChild(e);const o=R.appendChild(n.createElement("p"));o.setAttribute("style","font-size: 140%;"),o.innerHTML="Your <a target='_blank' href='"+i.uri+"'><b>new meeting</b></a> is ready to be set up. <br/><br/><a target='_blank' href='"+i.uri+"'>Go to your new meeting.</a>"}).catch(function(t){R.removeChild(e),R.appendChild(r.widgets.errorMessageBlock(n,t))})});R.appendChild(e)},S=[{icon:"noun_339237.svg",maker:function(e){const n=f+"Group/",i=t.session.store;let a=i.any(p,o.meeting("particpants"));a||(a=l.sym(n+"index.ttl#this")),console.log("Participant group: "+a);const s=T(a,o.meeting("particpants"),"Particpants",r.icons.iconBase+"noun_339237.svg");i.add(s,r.ns.meeting("view"),"peoplePicker",g),x()},hint:"Make a group of people",limit:1},{icon:"noun_346777.svg",maker:function(e){return P(e,{useExisting:p,pane:t.session.paneRegistry.byName("schedule"),view:"schedule",tabTitle:"Schedule poll",noIndexHTML:!0})},hint:"Make a poll to schedule the meeting"},{icon:"noun_48218.svg",maker:function(e){},limit:1,hint:"Add an agenda list",disabled:!0},{icon:"noun_79217.svg",maker:function(e){return P(e,{newBase:f+"SharedNotes/",predicate:r.ns.meeting("sharedNotes"),tabTitle:"Shared Notes",pane:t.session.paneRegistry.byName("pad")})},hint:"Add a shared notepad"},{icon:"noun_346319.svg",maker:function(e){const n=f+"Chat/",i=t.session.store;if(i.holds(p,o.meeting("chat")))return void console.log("Ignored - already have chat");const a=i.sym(n+"chat.ttl");i.add(a,o.rdf("type"),o.meeting("Chat"),a),T(a,o.meeting("chat"),"Chat",r.icons.iconBase+"noun_346319.svg"),k(0,a,o.meeting("chat"))},limit:1,hint:"Add a chat channel for the meeting"},{icon:"noun_17020.svg",maker:function(e){const n=f+"Actions/",i=t.session.store;if(i.holds(p,o.meeting("actions")))return void console.log("Ignored - already have actions");const a=i.sym(n+"config.ttl"),s=i.sym(n+"config.ttl#this"),l=i.sym(n+"state.ttl");i.add(s,o.dc("title"),(i.anyValue(p,o.cal("summary"))||"Meeting ")+" actions",a),i.add(s,o.wf("issueClass"),o.wf("Task"),a),i.add(s,o.wf("initialState"),o.wf("Open"),a),i.add(s,o.wf("stateStore"),l,a),i.add(s,o.wf("assigneeClass"),o.foaf("Person"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),i.add(s,o.rdf("type"),o.wf("Tracker"),a),T(s,o.meeting("actions"),"Actions",r.icons.iconBase+"noun_17020.svg"),k(0,s,o.meeting("actions"))},limit:1,hint:"Add a list of action items"},{icon:"noun_260227.svg",maker:function(e){const n=t.session.store,i=l.sym("https://meet.jit.si/"+r.utils.genUuid());if(n.holds(p,o.meeting("videoCallPage")))return void console.log("Ignored - already have a videoCallPage");n.add(i,o.rdf("type"),o.meeting("VideoCallPage"),g);const a=T(i,o.meeting("videoCallPage"),"Video call",r.icons.iconBase+"noun_260227.svg");n.add(a,o.meeting("view"),"iframe",g),x()},limit:1,hint:"Add a video call for the meeting"},{icon:"noun_25830.svg",maker:function(e){r.widgets.askName(n,i,R,o.log("uri"),r.ns.rdf("Resource")).then(function(e){if(!e)return z();const n=t.session.store,i=r.ns,o=n.sym(e),a=T(o,i.wf("attachment"),r.utils.label(o),null);n.add(a,i.meeting("view"),"iframe",g),x()}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Attach meeting materials",disabled:!1},{icon:"noun_123691.svg",maker:function(e){const n=t.session.store,i=r.ns,o=p.dir();if(e.limit&&1===e.limit&&n.holds(p,i.wf("sharingControl")))return void c("Ignored - already have "+r.utils.label(V.predicate));const a=T(o,i.wf("sharingControl"),"Sharing",r.icons.iconBase+"noun_123691.svg");n.add(a,i.meeting("view"),"sharing",g),x()},limit:1,hint:"Control Sharing",disabled:!1},{icon:"noun_66617.svg",maker:function(e){r.widgets.askName(n,i,R,o.foaf("name"),r.ns.meeting("Meeting")).then(function(n){if(!n)return z();const i=encodeURIComponent(n),o={newBase:f+i+"/",predicate:r.ns.meeting("subMeeting"),tabTitle:n,pane:t.session.paneRegistry.byName("meeting")};return P(e,o)}).catch(function(e){c("Error making new sub-meeting: "+e)})},hint:"Make a sub meeting",disabled:!1}],N=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");l.parse('@prefix : <http://www.w3.org/ns/ui#> .\n@prefix f: <#> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix cal: <http://www.w3.org/2002/12/cal/ical#>.\n@prefix meeting: <http://www.w3.org/ns/pim/meeting#>.\n@prefix ns: <http://www.w3.org/2006/vcard/ns#> .\n@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .\n@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n@prefix te: <http://purl.org/dc/terms/> .\n@prefix dc: <http://purl.org/dc/elements/1.1/>.\n@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n@prefix ui: <http://www.w3.org/ns/ui#>.\n\n f:main a :Form;\n cal:summary "Meeting Details";\n :part f:titleField, f:locationField, f:startField,\n f:endField, f:eventComment, f:colorField .\n\n f:titleField a :SingleLineTextField;\n :maxLength 256;\n :property cal:summary;\n :label "Name of meeting";\n :size 80 .\n\n f:locationField a :SingleLineTextField;\n :maxLength 128;\n :property cal:location;\n :size 40 .\n\n f:startField a :DateField;\n :label "Start";\n :property cal:dtstart .\n\n f:endField a :DateField;\n :label "End";\n :property cal:dtend .\n\n f:colorField a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:eventComment\n a ui:MultiLineTextField;\n # ui:maxLength\n # "1048";\n # ui:size\n # "40".\n ui:property\n cal:comment.\n\n###################################################\n\nf:settings a :Form;\n dc:title "Tab settings";\n :part f:labelField, f:targetField, f:viewField.\n\n f:labelField a :SingleLineTextField;\n :maxLength 128;\n :property rdfs:label;\n :label "Label on tab";\n :size 40 .\n\n f:targetField a :NamedNodeURIField;\n :maxLength 1024; # Longer?\n :property meeting:target;\n :label "URL of resource";\n :size 80 .\n\n f:colorField2 a :ColorField;\n :label "Tab color";\n # :default "#ddddcc"^^xsd:color;\n :property ui:backgroundColor .\n\n f:viewField a :SingleLineTextField;\n :maxLength 128;\n :property meeting:view;\n :label "View mode (experts only)";\n :size 40 .\n\n#\n',i,N.doc().uri,"text/turtle");const B="padding: 1em; width: 3em; height: 3em;",U=v.appendChild(n.createElement("td")),R=v.appendChild(n.createElement("td")),D=U.appendChild(n.createElement("img"));let O=!1;D.setAttribute("src",r.icons.iconBase+"noun_19460_green.svg"),D.setAttribute("style",B+"opacity: 50%;"),D.setAttribute("title","Add another tool to the meeting");const j=function(e){O=!O,D.setAttribute("style",B+(O?"background-color: yellow;":"")),H(O?"":"display: none;")};let G;d.authn.checkUser().then(e=>{if(e)return C=e,D.addEventListener("click",j),void D.setAttribute("style",B);G=r.login.loginStatusBox(n,e=>{e?(C=i.sym(e),R.removeChild(G),D.addEventListener("click",j),D.setAttribute("style",B)):(console.log("(Logged out)"),C=null)}),G.setAttribute("style","margin: 0.5em 1em;"),R.appendChild(G)});const W=[];for(let e=0;e<S.length;e++)(function(){const t=S[e],i=U.appendChild(n.createElement("img"));i.setAttribute("src",r.icons.iconBase+t.icon),i.setAttribute("style",B+"display: none;"),W.push(i),i.tool=t;const o=t.maker;t.disabled||i.addEventListener("click",function(e){q(i),o(t)})})();const H=function(e){for(let t=0;t<W.length;t++){let n=B+e;S[t].disabled&&(n+="opacity: 0.3;"),W[t].setAttribute("style",n)}},z=function(){H("display: none;"),D.setAttribute("style",B)},q=function(e){H("display: none;"),e.setAttribute("style",B+"background-color: yellow;")},V={dom:n};V.predicate=o.meeting("toolList"),V.subject=e,V.ordered=!0,V.orientation=1,V.renderMain=function(e,a){let s,m=null,f=null;e.innerHTML="";const h=function(t,n){t||(e.textContent=""+n)},b=function(){e.appendChild(n.createElement("h3")).textContent="Details of meeting";const t=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#main");r.widgets.appendForm(document,e,{},p,t,p.doc(),h),e.appendChild(function(){const e=n.createElement("div"),t=e.appendChild(n.createElement("p"));return t.setAttribute("style","margin: 0em; padding:3em; color: #888;"),t.textContent="Tip: Drag URL-bar icons of web pages into the tab bar on the left to add new meeting materials.",e}()),C=d.authn.currentUser(),C&&i.add(p,o.dc("author"),C,g);const a={noun:"meeting",me:C,statusArea:e,div:e,dom:n};r.login.registrationControl(a,p,o.meeting("Meeting")).then(function(e){console.log("Registration control finsished.")}),r.pad.manageParticipation(n,e,g,p,C,{});const s="height: 2em; width: 2em; margin:0.5em;",c=e.appendChild(n.createElement("div")),u=c.appendChild(n.createElement("img"));u.setAttribute("src",r.icons.iconBase+"noun_145978.svg"),u.setAttribute("title","Make a fresh new meeting"),u.addEventListener("click",_),u.setAttribute("style",s);const m=c.appendChild(n.createElement("a"));m.setAttribute("href","https://github.com/solid/solid-panes"),m.setAttribute("target","_blank");const f=m.appendChild(n.createElement("img"));f.setAttribute("src",r.icons.iconBase+"noun_368567.svg"),f.setAttribute("title","Fork me on github"),f.setAttribute("style",s+"opacity: 50%;")};if(i.holds(a,o.rdf("type"),o.meeting("Tool"))){const g=i.any(a,o.meeting("target"));if(g.sameTerm(p)&&!i.any(a,o.meeting("view")))b();else{let h=i.any(a,o.meeting("view"));h=h?h.value:null,"details"===h?b():"peoplePicker"===h?function(){const t={div:e,dom:n};e.appendChild(n.createElement("h4")).textContent="Meeting Participants";const a=function(e){const t=[l.st(p,o.meeting("particpantGroup"),e,p.doc())];i.updater.update([],t,function(t,n,i){n?f=e:c("Cant save participants group: "+i)})};f=i.any(p,o.meeting("particpantGroup")),d.authn.checkUser().then(e=>{e&&u(i.sym(e)).then(function(){const e={defaultNewGroupName:"Meeting Participants",selectedGroup:f};new r.widgets.PeoplePicker(t.div,t.index.private[0],a,e).render()})})}():"iframe"===h?function(t){const i=e.appendChild(n.createElement("iframe"));i.setAttribute("src",t.uri),i.setAttribute("style","border: none; margin: 0; padding: 0; height: 100%; width: 100%;"),i.setAttribute("allow","microphone camera"),i.setAttribute("name","disable-x-frame-options"),e.style.padding=0}(g):(m=h?t.session.paneRegistry.byName(h):null,s=e.appendChild(n.createElement("table")),s.style.width="100%",t.getOutliner(n).GotoSubject(g,!0,m,!1,void 0,s))}}else a.sameTerm(p)?b():(!a.sameTerm(a.doc())||i.holds(a,r.ns.rdf("type"),r.ns.meeting("Chat"))||i.holds(a,r.ns.rdf("type"),r.ns.meeting("PaneView")))&&(s=e.appendChild(n.createElement("table")),t.getOutliner(n).GotoSubject(a,!0,void 0,!1,void 0,s))},V.renderTab=function(e,t){if(i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=i.any(t,o.meeting("target"));let s=i.any(t,o.rdfs("label"));s=s?s.value:r.utils.label(a);const l=e.appendChild(n.createElement("div"));l.textContent=s,l.setAttribute("style","margin-left: 0.7em");const d=i.any(t,o.meeting("icon"));if(d){const t=e.appendChild(n.createElement("table")).appendChild(n.createElement("tr")),i=t.appendChild(n.createElement("td")),o=t.appendChild(n.createElement("td")),a=i.appendChild(n.createElement("img"));a.setAttribute("src",d.uri),a.setAttribute("style","width: 1.5em; height: 1.5em;"),a.setAttribute("title",s),o.appendChild(l)}else e.appendChild(l)}else e.textContent=r.utils.label(t)},V.renderTabSettings=function(e,t){if(e.innerHTML="",e.style+="border-color: #eed;",e.appendChild(n.createElement("h3")).textContent="Adjust this tab",i.holds(t,o.rdf("type"),o.meeting("Tool"))){const a=l.sym("https://solid.github.io/solid-panes/meeting/meetingDetailsForm.ttl#settings");r.widgets.appendForm(document,e,{},t,a,p.doc(),m),r.widgets.deleteButtonWithCheck(n,e,"tab",function(){const e=i.the(p,o.meeting("toolList"));for(let n=0;n<e.elements.length;n++)if(e.elements[n].sameTerm(t)){e.elements.splice(n,1);break}const n=i.any(t,o.meeting("target")),a=i.statementsMatching(t).concat(i.statementsMatching(void 0,void 0,t)).concat(i.statementsMatching(p,void 0,n));i.remove(a),x()}).setAttribute("style","width: 1.5em; height: 1.5em;")}else e.appendChild(n.createElement("h4")).textContent="(No adjustments available)"},V.backgroundColor=i.anyValue(e,o.ui("backgroundColor"))||"#ddddcc";const $=y.appendChild(r.tabs.tabWidget(V));return r.aclControl.preventBrowserDropEvents(n),r.widgets.makeDropTarget($.tabContainer,E,F),r.widgets.makeDropTarget(U,E,F),h}};return s})());