1import"./Angular.Animate-3XR63S8M-chunk.js";const e=()=>{angular.module("treeControl",[]).directive("treecontrol",["$compile",function(e){function n(e,n){return e?n?'class="'+e+'"':e:""}function t(e,n,t){e.hasOwnProperty(n)||(e[n]=t)}return{restrict:"EA",require:"treecontrol",transclude:!0,scope:{treeModel:"=",selectedNode:"=?",expandedNodes:"=?",onSelection:"&",onEdit:"&",onDelete:"&",onCreateDirectory:"&",isEditingDisabled:"@",onUpload:"&",onNodeToggle:"&",options:"=?",reverseOrder:"@"},controller:["$scope",function(o){o.options=o.options||{},t(o.options,"nodeChildren","children"),t(o.options,"dirSelectable","true"),t(o.options,"injectClasses",{}),t(o.options.injectClasses,"ul",""),t(o.options.injectClasses,"li",""),t(o.options.injectClasses,"liSelected",""),t(o.options.injectClasses,"iExpanded",""),t(o.options.injectClasses,"iCollapsed",""),t(o.options.injectClasses,"iLeaf",""),t(o.options.injectClasses,"label",""),t(o.options.injectClasses,"labelSelected",""),t(o.options,"equality",function(e,n){return void 0!==e&&void 0!==n&&((e=angular.copy(e))[o.options.nodeChildren]=[],(n=angular.copy(n))[o.options.nodeChildren]=[],angular.equals(e,n))}),t(o.options,"isLeaf",function(e){return!e[o.options.nodeChildren]||0===e[o.options.nodeChildren].length}),o.expandedNodes=o.expandedNodes||[],o.expandedNodesMap={};for(var a=0;a<o.expandedNodes.length;a++)o.expandedNodesMap[""+a]=o.expandedNodes[a];o.parentScopeOfTree=o.$parent,o.headClass=function(e){var t=n(o.options.injectClasses.liSelected,!1),a="";return t&&o.options.equality(this.node,o.selectedNode)&&(a=" "+t),o.options.isLeaf(e)?"tree-leaf"+a:o.expandedNodesMap[this.$id]?"tree-expanded"+a:"tree-collapsed"+a},o.iBranchClass=function(){return o.expandedNodesMap[this.$id]?n(o.options.injectClasses.iExpanded):n(o.options.injectClasses.iCollapsed)},o.nodeExpanded=function(){return!!o.expandedNodesMap[this.$id]},o.selectNodeHead=function(){if(!(void 0===this.$parent.$parent.node)||!o.expandedNodesMap[this.$id]){var e=void 0===o.expandedNodesMap[this.$id];if(o.expandedNodesMap[this.$id]=e?this.node:void 0,e)o.expandedNodes.push(this.node);else{for(var n,t=0;t<o.expandedNodes.length&&!n;t++)o.options.equality(o.expandedNodes[t],this.node)&&(n=t);null!=n&&o.expandedNodes.splice(n,1)}o.onNodeToggle&&o.onNodeToggle({node:this.node,expanded:e})}},o.selectNodeLabel=function(e){e[o.options.nodeChildren]&&o.options.dirSelectable?this.selectNodeHead():(o.selectedNode!=e?o.selectedNode=e:o.selectedNode=void 0,o.onSelection&&o.onSelection({node:o.selectedNode}),window.location=e.downloadPath)},o.handleKeyDown=function(e,n){switch(n.keyCode){case 13:case 32:n.preventDefault(),n.stopPropagation(),o.options.isLeaf(e)?this.selectNodeLabel(e):this.selectNodeHead();break;case 37:n.preventDefault(),this.nodeExpanded()&&this.selectNodeHead();break;case 39:n.preventDefault(),o.options.isLeaf(e)||this.nodeExpanded()||this.selectNodeHead();break;case 38:n.preventDefault(),setTimeout(function(){const e=document.activeElement,n=Array.from(document.querySelectorAll('.line-item[tabindex="0"]')),t=n.indexOf(e);t>0&&n[t-1].focus()},0);break;case 40:n.preventDefault(),setTimeout(function(){const e=document.activeElement,n=Array.from(document.querySelectorAll('.line-item[tabindex="0"]')),t=n.indexOf(e);t<n.length-1&&n[t+1].focus()},0)}}
1,o.handleSelection=function(e,n){n.preventDefault(),n.stopPropagation(),o.options.isLeaf(e)?this.selectNodeLabel(e):this.selectNodeHead()};const d=`\n <ul ${n(o.options.injectClasses.ul,!0)} role="tree" aria-label="File system navigation">\n <li ng-repeat="node in node.${o.options.nodeChildren}"\n ng-class="headClass(node)" \n ${n(o.options.injectClasses.li,!0)}\n role="treeitem"\n aria-expanded="{{nodeExpanded()}}">\n <div class="line-item" \n ng-class="selectedClass()" \n tabindex="0"\n role="presentation"\n ng-click="handleSelection(node, $event)"\n ng-keydown="handleKeyDown(node, $event)"\n aria-label="{{node.name}}">\n <span class="folder-arrow folder-plus" \n data-ng-if="node.children !== null && !nodeExpanded(node)" \n >\n </span>\n <span class="folder-arrow folder-minus" \n data-ng-if="(node.children === null || nodeExpanded(node)) && !options.isLeaf(node)" \n >\n </span>\n <i class="tree-branch-head" \n ng-class="iBranchClass()">\n </i>\n <i class="tree-leaf-head ${n(o.options.injectClasses.iLeaf,!1)}"></i>\n <div class="tree-label ${n(o.options.injectClasses.label,!1)}" \n tree-transclude>\n </div>\n <span class="tree-menu">\n <a ng-if="node.children == null" \n data-ng-href="{{node.downloadPath}}"\n title="Download {{node.name}}">\n <i class="glyphicon glyphicon-download"></i>\n </a>\n <span ng-hide="isEditingDisabled">\n <a ng-hide="node.children === null" \n href="javascript:return false" \n title="Upload fil" \n data-ng-click="uploadFile(node)">\n <i class="glyphicon glyphicon-cloud-upload"></i>\n </a>\n <a ng-hide="node.children === null" \n href="javascript:return false" \n title="Tilføj mappe" \n ng-click="createDirectory(node)">\n <i class="glyphicon glyphicon-plus"></i>\n </a>\n <a href="javascript:return false" \n title="Ãndre Navn" \n ng-hide="node.isRoot" \n ng-click="edit(node)">\n <i class="glyphicon glyphicon-pencil"></i>\n </a>\n <a href="javascript:return false" \n title="Slet" \n ng-hide="node.isRoot" \n ng-click="deleteNode(node)">\n <i class="glyphicon glyphicon-trash"></i>\n </a>\n </span>\n </span>\n </div>\n <div data-treeitem="" data-ng-if="nodeExpanded()"></div>\n </li>\n </ul>\n `;return{template:e(d)}}],compile:function(e,n,t){return function(e,n,o,a){e.$watch("treeModel",function(n){if(null!==n)if(angular.isArray(n)){if(angular.isDefined(e.node)&&angular.equals(e.node[e.options.nodeChildren],n))return;e.node={},e.synteticRoot=e.node,e.node[e.options.nodeChildren]=n}else{if(angular.equals(e.node,n))return;
1e.node=n}}),e.$watchCollection("expandedNodes",function(t){var o=0,a={},d=n.find("li"),i=[];angular.forEach(d,function(e){var n=angular.element(e).scope();i.push(n)}),angular.forEach(t,function(n){for(var t=!1,d=0;d<i.length&&!t;d++){var l=i[d];e.options.equality(n,l.node)&&(a[l.$id]=l.node,t=!0)}t||(a[o++]=n)}),e.expandedNodesMap=a}),a.template(e,function(e){n.html("").append(e)}),e.$treeTransclude=t}}}}]).directive("treeitem",function(){return{restrict:"EA",require:"^treecontrol",link:function(e,n,t,o){o.template(e,function(e){n.html("").append(e)})}}}).directive("treeTransclude",function(){return{link:function(e,n,t,o){e.options.isLeaf(e.node)||angular.forEach(e.expandedNodesMap,function(n,t){e.options.equality(n,e.node)&&(e.expandedNodesMap[e.$id]=e.node,e.expandedNodesMap[t]=void 0)}),e.options.equality(e.node,e.selectedNode)&&e.selectNodeLabel(e.node),e.transcludeScope=e.parentScopeOfTree.$new(),e.transcludeScope.node=e.node,e.transcludeScope.$parentNode=e.$parent.node===e.synteticRoot?null:e.$parent.node,e.transcludeScope.$index=e.$index,e.transcludeScope.$first=e.$first,e.transcludeScope.$middle=e.$middle,e.transcludeScope.$last=e.$last,e.transcludeScope.$odd=e.$odd,e.transcludeScope.$even=e.$even,e.$on("$destroy",function(){e.transcludeScope.$destroy()}),e.$treeTransclude(e.transcludeScope,function(e){n.empty(),n.append(e)})}}})},n=e=>{var n,t,o=angular.module("fileManager",["treeControl","mgcrea.ngStrap","ngUpload"]);n="/api/FileManagerBlock/",o.factory("fileManagerService",["$http",function(e){return{getFiles:function(t){return e.get(n+"FileList/"+t)},renameNode:function(t,o,a){return e.post(n+"RenameNode",{node:t,newName:o,hashKey:a})},createDirectory:function(t,o){return e.post(n+"CreateDirectory",{id:t,directoryName:o})},downloadFilePath:function(e,t){return n+"DownloadFile?id="+t.id+"&filename="+t.name},deleteNode:function(t,o){return e.post(n+"DeleteNode",{node:t,hashKey:o})}}}]),o.controller("fileManagerController",["$scope","fileManagerService","$modal",function(e,n,t){e.blockId=-1,e.rootName="root",e.loadFiles=function(){n.getFiles(e.blockId).then(function(n){var t=document.documentElement.lang||"da";l(n.data.children,t),r(n.data.children),n.data.name=e.rootName,e.treeData=[n.data],e.expandedNodes.push(n.data)})},e.treeData=null,e.expandedNodes=[],e.treeOptions={nodeChildren:"children",dirSelectable:!0,isLeaf:function(e){return!e.isDirectory}},e.showSelected=function(n){e.selectedNode=n},e.edit=function(t,a){a.length>0&&(null!=o&&$(".modal-footer > button").addClass("disabled"),n.renameNode(t,a,t.$$hashKey).then(function(n){var t=e.treeData[0],a=n.data.hashKey,d=n.data.newNode;s(t,a,function(e,n,t){n.name=d.name,n.pathToSelf=d.pathToSelf}),null!=o&&(o.hide(),o=null,$(".modal-footer > button").removeClass("disabled"))}))},e.newNodeName="";var o=null;e.showEditModal=function(n){e.selectedNode=n,e.newNodeName=n.name,o=t({scope:e,backdrop:"static",template:"editModal",show:!0})},e.deleteNode=function(t){null!=a&&$(".modal-footer > button").addClass("disabled"),n.deleteNode(t,t.$$hashKey).then(function(n){s(e.treeData[0],n.data.hashKey,function(e,n,t){e.children.splice(t,1)}),null!=a&&($(".modal-footer > button").removeClass("disabled"),a.hide(),a=null)})};var a=null;e.showDeleteModal=function(n){e.selectedNode=n,a=t({scope:e,backdrop:"static",template:"deleteConfirmModal",show:!0})},e.newDirectoryName="Ny Mappe";var d=null;e.createDirectory=function(t){t.length>0&&(null!=d&&$(".modal-footer > button").addClass("disabled"),n.createDirectory(e.selectedNode.id,t).then(function(n){var t=n.data;e.selectedNode.children.splice(0,0,t),null!=d&&($(".modal-footer > button").removeClass("disabled"),d.hide(),d=null)}))},e.showCreateDirectoryModal=function(n){e.selectedNode=n,d=t({scope:e,backdrop:"static",template:"creatDirectoryModal",show:!0})};var i=null;function l(n,t){n&&(n.sort(function(n,o){return"-name"===e.orderBy?o.name.localeCompare(n.name,t,{sensitivity:"base"}):n.name.localeCompare(o.name,t,{sensitivity:"base"})}),n.forEach(function(e){e.children&&e.children.length>0&&l(e.children,t)}))}function r(t){null!=t&&t.length>0&&angular.forEach(t,function(t){t.isDirective||(t.downloadPath=n.downloadFilePath(e.blockId,t)),r(t.children)})}function s(e,n,t){if(e.$$hashKey!=n)for(var o=0;o<e.children.length;o++){var a=e.children[o];if(a.$$hashKey===n)return void t(e,a,o);a.isDirectory&&s(a,n,t)}else t(e,e,0)}
1e.showUploadModal=function(n){e.selectedNode=n,i=t({scope:e,backdrop:"static",template:"uploadFileModal",show:!0})},e.uploadStarted=function(){$(".modal-footer > button").addClass("disabled")},e.uploadComplete=function(t){var o=t.newNode;o.downloadPath=n.downloadFilePath(e.blockId,o),function(e,n){e.$$phase||e.$root.$$phase?n():e.$apply(n)}(e,function(){e.selectedNode.children.push(o)}),null!=i&&(i.hide(),i=null,$(".modal-footer > button").removeClass("disabled"))},e.setFiles=function(n){e.$apply(function(e){if(e.files=[],n.files)for(var t=0;t<n.files.length;t++){var o=n.files[t];e.files.push(o)}else e.files.push(n.value)})}}]),(t=angular).module("ngUpload",[]).directive("uploadSubmit",["$parse",function(e){function n(e,o){var a=(e=t.element(e)).parent();return o=o.toLowerCase(),a&&a[0].tagName.toLowerCase()===o?a:a?n(a,o):null}return{restrict:"AC",link:function(e,t,o){t.bind("click",function(e){if(e&&(e.preventDefault(),e.stopPropagation()),!t.attr("disabled")){var o=n(t,"form");o.triggerHandler("submit"),o[0].submit()}})}}}]).directive("ngUpload",["$log","$parse","$document",function(e,n,o){var a=1;function d(e){var n,a=o.find("head");return t.forEach(a.find("meta"),function(t){t.getAttribute("name")===e&&(n=t)}),t.element(n)}return{restrict:"AC",link:function(o,i,l){function r(e){o.$isUploading=e}a++;var s={},c=l.ngUpload?n(l.ngUpload):null,p=l.ngUploadLoading?n(l.ngUploadLoading):null;l.hasOwnProperty("uploadOptionsConvertHidden")&&(s.convertHidden="false"!=l.uploadOptionsConvertHidden),l.hasOwnProperty("uploadOptionsEnableRailsCsrf")&&(s.enableRailsCsrf="false"!=l.uploadOptionsEnableRailsCsrf),l.hasOwnProperty("uploadOptionsBeforeSubmit")&&(s.beforeSubmit=n(l.uploadOptionsBeforeSubmit)),i.attr({target:"upload-iframe-"+a,method:"post",enctype:"multipart/form-data",encoding:"multipart/form-data"});var u=t.element('<iframe name="upload-iframe-'+a+'" border="0" width="0" height="0" style="width:0px;height:0px;border:none;display:none">');if(s.enableRailsCsrf){var f=t.element("<input />");f.attr("class","upload-csrf-token"),f.attr("type","hidden"),f.attr("name",d("csrf-param").attr("content")),f.val(d("csrf-token").attr("content")),i.append(f)}function h(){u.unbind("load"),o.$$phase?r(!1):o.$apply(function(){r(!1)});var n,a=(u[0].contentDocument||u[0].contentWindow.document).body;try{n=t.fromJson(a.innerText||a.textContent)}catch(d){n=a.innerHTML,e.warn("Response is not valid JSON")}o.$$phase?c(o,{content:n}):o.$apply(function(){c(o,{content:n})})}i.after(u),r(!1),i.bind("submit",function(){var e=o[l.name];return(!e||!e.$invalid)&&(s.beforeSubmit?s.beforeSubmit():(u.bind("load",h),s.convertHidden&&t.forEach(i.find("input"),function(e){var n=t.element(e);n.attr("ng-model")&&n.attr("type")&&"hidden"==n.attr("type")&&n.attr("value",o.$eval(n.attr("ng-model")))}),void(o.$$phase?(p&&p(o),r(!0)):o.$apply(function(){p&&p(o),r(!0)}))))})}}}]),$(function(){try{angular.bootstrap(e,["fileManager"])}catch(n){}})};class t{constructor(t){e(),n(t)}}export{t as FileManager};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.