main
HerrHase 3 years ago
parent 8e5b1e5bbe
commit ddbe23067f

@ -1,8 +1,8 @@
{
"/public/js/spritemap.js": "/public/js/spritemap.js?id=2dda73ecee3bb668b395026efda6524c",
"/public/js/app.js": "/public/js/app.js?id=39ef7cf2ac3e6e0bbe9216057c0c83db",
"/public/js/hub.js": "/public/js/hub.js?id=95df7e59663f51cd22f28582c9816866",
"/public/css/styles.css": "/public/css/styles.css?id=87a9399e6a5ef7045066b025166b8827",
"/public/js/app.js": "/public/js/app.js?id=7dd81b9f69f11ea14b1634ecb4016d68",
"/public/js/hub.js": "/public/js/hub.js?id=f08eb580c27c4f486b8e47cb4dc43a89",
"/public/css/styles.css": "/public/css/styles.css?id=1745381d5fcd3d5c010f916af8e6eec3",
"/public/css/demo.html": "/public/css/demo.html?id=a54a5d205e3152fb64b33dda63ffa555",
"/public/css/IBMPlexMono-Bold.eot": "/public/css/IBMPlexMono-Bold.eot?id=ef1fadf711db80a00542b202ab14f7ee",
"/public/css/IBMPlexMono-Bold.ttf": "/public/css/IBMPlexMono-Bold.ttf?id=e46cace25a93f48a2ec32800717827cb",

@ -0,0 +1,5 @@
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
<title>back</title>
<path d="M12.48 11.25q6.094 0.879 9.404 4.658t4.365 9.111q-4.512-6.387-13.77-6.387v5.098l-8.73-8.73 8.73-8.73v4.98z"></path>
</svg>

After

Width:  |  Height:  |  Size: 283 B

@ -0,0 +1,5 @@
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
<title>checkbox</title>
<path d="M23.73 3.75q0.996 0 1.758 0.762t0.762 1.758v17.461q0 0.996-0.762 1.758t-1.758 0.762h-17.461q-0.996 0-1.758-0.762t-0.762-1.758v-17.461q0-0.996 0.762-1.758t1.758-0.762h17.461zM23.73 6.27h-17.461v17.461h17.461v-17.461z"></path>
</svg>

After

Width:  |  Height:  |  Size: 396 B

@ -0,0 +1,5 @@
<!-- Generated by IcoMoon.io -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30">
<title>checkbox_checked</title>
<path d="M12.48 21.27l11.25-11.25-1.758-1.816-9.492 9.492-4.453-4.453-1.758 1.758zM23.73 3.75q1.055 0 1.787 0.732t0.732 1.787v17.461q0 1.055-0.732 1.787t-1.787 0.732h-17.461q-1.055 0-1.787-0.732t-0.732-1.787v-17.461q0-1.055 0.732-1.787t1.787-0.732h17.461z"></path>
</svg>

After

Width:  |  Height:  |  Size: 435 B

@ -0,0 +1,90 @@
<app-file-files>
<div>
<!-- show parent only if path is set -->
<app-file-parent handleClick={ (event) => handleParentClick(evnet) } if={ state.path.length > 0 }></app-file-parent>
<div class="file__table">
<div class="{ rowClasses(file) }" each={ (file, index) in state.files }>
<!-- marked -->
<div class="file__table-column file__table-column--select" onchange={ (event) => { handleMarked(event, file) } }>
<input id="marked_{ index }" type="checkbox" value="true" />
<label for="marked_{ index }">
<svg class="icon checked" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-checkbox_checked"></use>
</svg>
<svg class="icon unchecked" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-checkbox"></use>
</svg>
</label>
</div>
<!-- show name of file, and icon if directory-->
<div if={ !file.is_directory } class="file__table-column file__table-column--filename">
{ file.name }
</div>
<div if={ file.is_directory } class="file__table-column file__table-column--filename" onclick={ (event) => { handleDirectoryClick(event, file) } }>
<svg class="icon m-right-2" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-folder"></use>
</svg>
{ file.name }
</div>
<!-- -->
<div class="file__table-column file__table-column--size">
<div if={ !file.is_directory } class="w-100">{ file.size }</div>
</div>
<div class="file__table-column file__table-column--date">
<div class="w-100 right">{ file.updated_at }</div>
</div>
<!-- actions -->
<div class="file__table-column file__table-column--actions">
<div class="w-100 right">
<button class="button m-bottom-0 p-2 m-right-3" type="button" onclick={ (event) => { handleDownload(event, file) } }>
<svg class="icon fill-success" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-download"></use>
</svg>
</button>
<button class="button m-bottom-0 p-2" type="button" onclick={ (event) => { handleDelete(event, file) } }>
<svg class="icon fill-danger" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-delete"></use>
</svg>
</button>
</div>
</div>
</div>
</div>
</div>
<script>
import filesMixin from './../../mixins/file.js'
export default () => {
return {
...filesMixin, // adding basic funtion for sidebar
rowClasses(file) {
const classes = [
'file__table-row'
]
if (this.isFileInArray(file)) {
classes.push('file__table-row--selected')
}
return classes.join(' ')
}
}
}
</script>
</app-file-files>

@ -1,18 +1,25 @@
<app-file-index>
<div class="view">
<div class="view m-top-4">
<div class="file">
<div class="file__item m-bottom-3" each={ file in state.files }>
<a href="/file/{ file.name }">
{ file.name }
</a>
<div class="panel">
<div class="bar">
<div class="tabs tabs--contrast">
<a class="{ tabClasses(type) }" onclick={ (event) => { handleTabClick(event, type) } } each={ type in state.types }>
{ type }
</a>
</div>
</div>
<app-file-files hub-id={ props.hubId } if={ state.view === 'files' }></app-file-files>
<app-file-audio hub-id={ props.hubId } if={ state.view === 'video' }></app-file-audio>
<app-file-video hub-id={ props.hubId } if={ state.view === 'audio' }></app-file-video>
</div>
</div>
</div>
<script>
import fileStore from './../../stores/file.js'
/**
* handle open and close of form for tasks
*
@ -24,17 +31,46 @@
export default {
state: {
files: []
view: 'files',
types: [
'files',
'audio',
'video',
'image',
'document'
]
},
onMounted()
{
fileStore.on('update', (data) => {
this.state.files = data
this.update()
})
/**
* add selected-class if type match
*
* @param {string} type
* @return {string}
*
*/
tabClasses(type) {
const classes = [
'tabs__item'
]
if (type === this.state.view) {
classes.push('tabs__item--selected')
}
return classes.join(' ')
},
fileStore.get(this.props.hubId)
/**
* change type
*
* @param {object} event
* @param {string} type
* @return {string}
*
*/
handleTabClick(event, type) {
this.state.view = type
this.update()
}
}

@ -0,0 +1,22 @@
<app-file-parent>
<div class="file__table-row">
<div class="file__table-column file__table-column--back">
<svg class="icon" aria-hidden="true" onclick={ (event) => { props.handleClick(event, this) } }>
<use xlink:href="/symbol-defs.svg#icon-back"></use>
</svg>
</div>
</div>
<script>
/**
*
*
*
*/
export default {
}
</script>
</app-file-parent>

@ -0,0 +1,65 @@
<app-file-video>
<div>
<!-- show parent only if path is set -->
<app-file-parent handleClick={ (event) => handleParentClick(evnet) } if={ state.path.length > 0 }></app-file-parent>
<div class="file__table">
<div class="file__table-row" each={ (file, index) in state.files }>
<!-- show name of file, and icon if directory-->
<div if={ !file.is_directory } class="file__table-column file__table-column--filename">
{ file.name }
</div>
<div if={ file.is_directory } class="file__table-column file__table-column--filename" onclick={ (event) => { handleDirectoryClick(event, file) } }>
<svg class="icon m-right-2" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-folder"></use>
</svg>
{ file.name }
</div>
<!-- -->
<div class="file__table-column file__table-column--size">
<div if={ !file.is_directory } class="w-100">{ file.size }</div>
</div>
<div class="file__table-column file__table-column--date">
<div class="w-100 right">{ file.updated_at }</div>
</div>
<!-- actions -->
<div class="file__table-column file__table-column--actions">
<div class="w-100 right">
<button class="button m-bottom-0 p-2 m-right-3" type="button" onclick={ (event) => { handleDownload(event, file) } }>
<svg class="icon fill-success" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-download"></use>
</svg>
</button>
<button class="button m-bottom-0 p-2" type="button" onclick={ (event) => { handleDelete(event, file) } }>
<svg class="icon fill-danger" aria-hidden="true">
<use xlink:href="/symbol-defs.svg#icon-delete"></use>
</svg>
</button>
</div>
</div>
</div>
</div>
</div>
<script>
import filesMixin from './../../mixins/file.js'
export default () => {
return {
...filesMixin, // adding basic funtion for sidebar
}
}
</script>
</app-file-video>

@ -3,10 +3,14 @@ import * as riot from 'riot'
import TinyNotification from '@tiny-components/notification/src/notification.riot'
riot.register('tiny-notification', TinyNotification)
import AppFileParent from './components/file/parent.riot'
import AppFileIndex from './components/file/index.riot'
import AppFileFiles from './components/file/files.riot'
// register components
riot.register('app-file-index', AppFileIndex)
riot.register('app-file-parent', AppFileParent)
riot.register('app-file-files', AppFileFiles)
// mount components
riot.mount('app-file-index')

@ -0,0 +1,99 @@
import fileStore from './../stores/file.js'
/**
* Mixin to Extend a Sidebar
*
* @author Björn Hase
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.node001.net/tiny-components/sidebar-form
*
*/
export default {
state: {
files: [],
path: [],
marked: []
},
onMounted() {
fileStore.on('update', (data) => {
this.state.files = data
this.update()
})
fileStore.get(this.props.hubId)
},
/**
*
*
*
*/
handleParentClick(event) {
this.state.path.pop()
fileStore.get(this.props.hubId, this.state.path)
},
/**
*
*
*
*
*/
handleMarked(event, file) {
let exists = this.isFileInArray(file)
if (exists === false) {
this.state.marked.push(file)
} else {
this.state.marked.splice(this.state.marked.indexOf(file), 1)
}
this.update()
},
/**
*
* @return {Boolean} [description]
*/
isFileInArray(file)
{
let exists = false
this.state.marked.forEach((f, index) => {
if (file.name === f.name) {
exists = true
}
})
return exists
},
handleDirectoryClick(event, file) {
this.state.path.push(file.name)
fileStore.get(this.props.hubId, this.state.path)
},
/**
*
* @param {[type]} event [description]
* @param {[type]} file [description]
* @return {[type]} [description]
*/
handleDownload(event, file) {
},
/**
*
* @param {[type]} event [description]
* @param {[type]} file [description]
* @return {[type]} [description]
*/
handleDelete(event, file) {
}
}

@ -20,9 +20,17 @@
* @param {object} data
*
*/
get(id)
get(id, path)
{
fetch('/api/files/v1/' + id)
let url = '/api/files/v1/' + id
if (path && path.length > 0) {
url += '?' + new URLSearchParams({
'path': path.join('/')
})
}
fetch(url)
.then((response) => response.json())
.then((response) => {
this.trigger('update', response.data)

@ -0,0 +1,98 @@
/**
*
*
*
*/
$file__color-hover: #e3e3e3;
.file {
// table to show files
&__table {
display: block;
width: 100%;
&-row {
display: flex;
flex-wrap: wrap;
padding: 0.25em;
border-bottom: $border;
&:hover {
background-color: $file__color-hover;
}
&--selected {
background-color: #02acff;
&:hover {
background-color: darken(#02acff, 10%);
}
}
}
&-column {
display: flex;
flex: 2;
align-items: center;
padding: 5px;
&--select {
max-width: 30px;
input[type=checkbox] {
position: relative;
display: none;
+ label {
margin: -4px 0 0 0;
.checked {
display: none;
}
&:hover {
cursor: pointer;
}
}
&:checked + label .checked {
display: inline-block;
}
&:checked + label .unchecked {
display: none;
}
}
.checked, .unchecked {
vertical-align: bottom;
}
}
&--back {
padding: 8px 2px;
}
&--actions {
line-height: 0;
button {
&:disabled {
.icon {
opacity: 0.3;
&:hover {
cursor: not-allowed;
}
}
}
}
}
}
}
}

@ -3,4 +3,5 @@
'@tiny-components/plain-ui/src/scss/plain-ui',
'components/field-error',
'components/file',
'components/breadcrumb';

@ -31,7 +31,10 @@ mix.webpackConfig({
}
]},
plugins: [
new SvgSpritemapPlugin('./node_modules/@tiny-components/plain-ui/src/icons/mono-icons/svg/*.svg', {
new SvgSpritemapPlugin([
'./node_modules/@tiny-components/plain-ui/src/icons/mono-icons/svg/*.svg',
'./icons/*.svg'
], {
output: {
filename: 'public/symbol-defs.svg',
chunk: {

@ -190,6 +190,11 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"dayjs": {
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.3.tgz",
"integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",

@ -9,6 +9,7 @@
"dependencies": {
"@fastify/static": "^6.4.0",
"@fastify/view": "^7.0.0",
"dayjs": "^1.11.3",
"dotenv": "^16.0.1",
"fastify": "^4.0.1",
"fastify-formbody": "^5.3.0",

@ -1,4 +1,5 @@
import { readdir } from 'fs/promises'
import { readdir, stat } from 'fs/promises'
import dayjs from 'dayjs'
/**
* getting files
@ -33,6 +34,8 @@ class File {
errors: false
}
const files = []
try {
const files = await readdir(this.path, {
withFileTypes: true
@ -40,18 +43,53 @@ class File {
// run through all files, add options
for (const file of files) {
// getting meta
const meta = await stat(this.path + '/' + file.name)
result['files'].push({
name: file.name,
isDirectory: file.isDirectory()
is_directory: file.isDirectory(),
size: this.formatBytes(meta.size),
created_at: dayjs(meta.ctime).format('DD.MM.YYYY HH:mm'),
updated_at: dayjs(meta.mtime).format('DD.MM.YYYY HH:mm')
})
}
result['files'].sort(function(a, b) {
if (a.is_directory) {
return -1
} else {
return 0
}
})
} catch (error) {
result['errors'] = error
result['error'] = error
}
return result
}
/**
* getting size of file
*
* @param float size
* @param integer precision
* @return string
*/
formatBytes(size) {
if (size === 0) {
return '0 bytes'
}
// getting base of size
const base = Math.log(size) / Math.log(1024);
const suffixes = ['Bytes', 'KB', 'MB', 'G', 'T']
return Math.round(Math.pow(1024, base - Math.floor(base))) + ' ' + suffixes[Math.floor(base)]
}
}
export default File

@ -14801,6 +14801,74 @@ svg.field-choice__checked {
padding: 0 0 0 1em;
}
/**
*
*
*
*/
.file__table {
display: block;
width: 100%;
}
.file__table-row {
display: flex;
flex-wrap: wrap;
padding: 0.25em;
border-bottom: 1px solid var(--border);
}
.file__table-row:hover {
background-color: #e3e3e3;
}
.file__table-row--selected {
background-color: #02acff;
}
.file__table-row--selected:hover {
background-color: #008ace;
}
.file__table-column {
display: flex;
flex: 2;
align-items: center;
padding: 5px;
}
.file__table-column--select {
max-width: 30px;
}
.file__table-column--select input[type=checkbox] {
position: relative;
display: none;
}
.file__table-column--select input[type=checkbox] + label {
margin: -4px 0 0 0;
}
.file__table-column--select input[type=checkbox] + label .checked {
display: none;
}
.file__table-column--select input[type=checkbox] + label:hover {
cursor: pointer;
}
.file__table-column--select input[type=checkbox]:checked + label .checked {
display: inline-block;
}
.file__table-column--select input[type=checkbox]:checked + label .unchecked {
display: none;
}
.file__table-column--select .checked, .file__table-column--select .unchecked {
vertical-align: bottom;
}
.file__table-column--back {
padding: 8px 2px;
}
.file__table-column--actions {
line-height: 0;
}
.file__table-column--actions button:disabled .icon {
opacity: 0.3;
}
.file__table-column--actions button:disabled .icon:hover {
cursor: not-allowed;
}
.breadcrumb ul {
list-style: none;
display: flex;

@ -146,11 +146,11 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<button expr18="expr18" class="button m-bottom-0"><svg class="icon fill-text m-top-1 m-right-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-close"/></svg> </button>',
'<button expr6="expr6" class="button m-bottom-0"><svg class="icon fill-text m-top-1 m-right-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-close"/></svg> </button>',
[
{
redundantAttribute: 'expr18',
selector: '[expr18]',
redundantAttribute: 'expr6',
selector: '[expr6]',
expressions: [
{
@ -355,7 +355,7 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
bindingTypes,
getComponent
) => template(
'<tiny-sidebar-form expr6="expr6" form-id="app-hub-form"></tiny-sidebar-form>',
'<tiny-sidebar-form expr7="expr7" form-id="app-hub-form"></tiny-sidebar-form>',
[
{
type: bindingTypes.TAG,
@ -365,14 +365,14 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
slots: [
{
id: 'title',
html: '<span slot="title"><virtual expr7="expr7"></virtual><virtual expr8="expr8"></virtual></span>',
html: '<span slot="title"><virtual expr8="expr8"></virtual><virtual expr9="expr9"></virtual></span>',
bindings: [
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.current._id,
redundantAttribute: 'expr7',
selector: '[expr7]',
redundantAttribute: 'expr8',
selector: '[expr8]',
template: template(
null,
@ -415,8 +415,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
{
type: bindingTypes.IF,
evaluate: _scope => !_scope.state.current._id,
redundantAttribute: 'expr8',
selector: '[expr8]',
redundantAttribute: 'expr9',
selector: '[expr9]',
template: template(
null,
@ -443,12 +443,12 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
},
{
id: 'form',
html: '<form expr9="expr9" id="app-hub-form" class="form" slot="form"><input expr10="expr10" type="hidden" name="_id"/><input expr11="expr11" type="hidden" name="_rev"/><div class="field-group"><label class="field-label">\n name\n <input expr12="expr12" class="field-text" name="name" type="text"/><field-error expr13="expr13" name="name"></field-error></label></div><div class="field-group"><label class="field-label">\n directory\n <input expr14="expr14" class="field-text" name="directory" type="text"/><field-error expr15="expr15" name="directory"></field-error></label></div><div class="field-group"><label class="field-label">\n description\n <textarea expr16="expr16" class="field-text" name="description"> </textarea><field-error expr17="expr17" name="description"></field-error></label></div></form>',
html: '<form expr10="expr10" id="app-hub-form" class="form" slot="form"><input expr11="expr11" type="hidden" name="_id"/><input expr12="expr12" type="hidden" name="_rev"/><div class="field-group"><label class="field-label">\n name\n <input expr13="expr13" class="field-text" name="name" type="text"/><field-error expr14="expr14" name="name"></field-error></label></div><div class="field-group"><label class="field-label">\n directory\n <input expr15="expr15" class="field-text" name="directory" type="text"/><field-error expr16="expr16" name="directory"></field-error></label></div><div class="field-group"><label class="field-label">\n description\n <textarea expr17="expr17" class="field-text" name="description"> </textarea><field-error expr18="expr18" name="description"></field-error></label></div></form>',
bindings: [
{
redundantAttribute: 'expr9',
selector: '[expr9]',
redundantAttribute: 'expr10',
selector: '[expr10]',
expressions: [
{
@ -461,8 +461,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.current._id,
redundantAttribute: 'expr10',
selector: '[expr10]',
redundantAttribute: 'expr11',
selector: '[expr11]',
template: template(
null,
@ -482,8 +482,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.current._rev,
redundantAttribute: 'expr11',
selector: '[expr11]',
redundantAttribute: 'expr12',
selector: '[expr12]',
template: template(
null,
@ -501,8 +501,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
)
},
{
redundantAttribute: 'expr12',
selector: '[expr12]',
redundantAttribute: 'expr13',
selector: '[expr13]',
expressions: [
{
@ -517,12 +517,12 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
evaluate: _scope => 'field-error',
slots: [],
attributes: [],
redundantAttribute: 'expr13',
selector: '[expr13]'
redundantAttribute: 'expr14',
selector: '[expr14]'
},
{
redundantAttribute: 'expr14',
selector: '[expr14]',
redundantAttribute: 'expr15',
selector: '[expr15]',
expressions: [
{
@ -537,12 +537,12 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
evaluate: _scope => 'field-error',
slots: [],
attributes: [],
redundantAttribute: 'expr15',
selector: '[expr15]'
redundantAttribute: 'expr16',
selector: '[expr16]'
},
{
redundantAttribute: 'expr16',
selector: '[expr16]',
redundantAttribute: 'expr17',
selector: '[expr17]',
expressions: [
{
@ -558,8 +558,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
evaluate: _scope => 'field-error',
slots: [],
attributes: [],
redundantAttribute: 'expr17',
selector: '[expr17]'
redundantAttribute: 'expr18',
selector: '[expr18]'
}
]
}
@ -583,8 +583,8 @@ riot__WEBPACK_IMPORTED_MODULE_5__.register('field-error', _tiny_components_valid
}
],
redundantAttribute: 'expr6',
selector: '[expr6]'
redundantAttribute: 'expr7',
selector: '[expr7]'
}
]
),
@ -755,13 +755,13 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<div expr33="expr33" class="loading-wrapper"></div>',
'<div expr47="expr47" class="loading-wrapper"></div>',
[
{
type: bindingTypes.IF,
evaluate: _scope => _scope.props.active,
redundantAttribute: 'expr33',
selector: '[expr33]',
redundantAttribute: 'expr47',
selector: '[expr47]',
template: template(
'<div class="loading"><span></span><span></span><span></span></div>',
@ -909,16 +909,16 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<div expr28="expr28"></div>',
'<div expr35="expr35"></div>',
[
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.items.length > 0,
redundantAttribute: 'expr28',
selector: '[expr28]',
redundantAttribute: 'expr35',
selector: '[expr35]',
template: template(
'<div expr29="expr29"></div>',
'<div expr36="expr36"></div>',
[
{
expressions: [
@ -941,7 +941,7 @@ __webpack_require__.r(__webpack_exports__);
condition: null,
template: template(
'<div expr30="expr30" class="toast__body"> </div>',
'<div expr37="expr37" class="toast__body"> </div>',
[
{
expressions: [
@ -963,8 +963,8 @@ __webpack_require__.r(__webpack_exports__);
]
},
{
redundantAttribute: 'expr30',
selector: '[expr30]',
redundantAttribute: 'expr37',
selector: '[expr37]',
expressions: [
{
@ -982,8 +982,8 @@ __webpack_require__.r(__webpack_exports__);
]
),
redundantAttribute: 'expr29',
selector: '[expr29]',
redundantAttribute: 'expr36',
selector: '[expr36]',
itemName: 'item',
indexName: null,
evaluate: _scope => _scope.state.items
@ -1055,11 +1055,11 @@ riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-loading', _tiny_components_load
bindingTypes,
getComponent
) => template(
'<div expr19="expr19"><div class="sidebar__inner"><div class="bar"><div class="bar__main"><slot expr20="expr20" name="title"></slot></div><div class="bar__end"><button expr21="expr21" class="button button--transparent" type="button"><svg class="icon fill-danger fill-text-hover" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-close"/></svg></button></div></div><div class="sidebar__body"><slot expr22="expr22" name="form"></slot><tiny-loading expr23="expr23"></tiny-loading></div><div class="sidebar__footer"><button expr24="expr24" class="button m-bottom-0" type="submit">\n Save\n <svg class="icon fill-success p-left-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-check"/></svg></button><button expr25="expr25" class="button m-bottom-0" type="submit" close>\n Save and Close\n <svg class="icon fill-success p-left-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-arrow-right"/></svg></button></div></div></div>',
'<div expr38="expr38"><div class="sidebar__inner"><div class="bar"><div class="bar__main"><slot expr39="expr39" name="title"></slot></div><div class="bar__end"><button expr40="expr40" class="button button--transparent" type="button"><svg class="icon fill-danger fill-text-hover" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-close"/></svg></button></div></div><div class="sidebar__body"><slot expr41="expr41" name="form"></slot><tiny-loading expr42="expr42"></tiny-loading></div><div class="sidebar__footer"><button expr43="expr43" class="button m-bottom-0" type="submit">\n Save\n <svg class="icon fill-success p-left-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-check"/></svg></button><button expr44="expr44" class="button m-bottom-0" type="submit" close>\n Save and Close\n <svg class="icon fill-success p-left-3" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-arrow-right"/></svg></button></div></div></div>',
[
{
redundantAttribute: 'expr19',
selector: '[expr19]',
redundantAttribute: 'expr38',
selector: '[expr38]',
expressions: [
{
@ -1073,12 +1073,12 @@ riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-loading', _tiny_components_load
type: bindingTypes.SLOT,
attributes: [],
name: 'title',
redundantAttribute: 'expr20',
selector: '[expr20]'
redundantAttribute: 'expr39',
selector: '[expr39]'
},
{
redundantAttribute: 'expr21',
selector: '[expr21]',
redundantAttribute: 'expr40',
selector: '[expr40]',
expressions: [
{
@ -1092,8 +1092,8 @@ riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-loading', _tiny_components_load
type: bindingTypes.SLOT,
attributes: [],
name: 'form',
redundantAttribute: 'expr22',
selector: '[expr22]'
redundantAttribute: 'expr41',
selector: '[expr41]'
},
{
type: bindingTypes.TAG,
@ -1109,12 +1109,12 @@ riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-loading', _tiny_components_load
}
],
redundantAttribute: 'expr23',
selector: '[expr23]'
redundantAttribute: 'expr42',
selector: '[expr42]'
},
{
redundantAttribute: 'expr24',
selector: '[expr24]',
redundantAttribute: 'expr43',
selector: '[expr43]',
expressions: [
{
@ -1130,8 +1130,8 @@ riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-loading', _tiny_components_load
]
},
{
redundantAttribute: 'expr25',
selector: '[expr25]',
redundantAttribute: 'expr44',
selector: '[expr44]',
expressions: [
{
@ -1276,16 +1276,16 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<div expr31="expr31" class="field-error"></div>',
'<div expr45="expr45" class="field-error"></div>',
[
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.errors.length > 0,
redundantAttribute: 'expr31',
selector: '[expr31]',
redundantAttribute: 'expr45',
selector: '[expr45]',
template: template(
'<ul><li expr32="expr32"></li></ul>',
'<ul><li expr46="expr46"></li></ul>',
[
{
type: bindingTypes.EACH,
@ -1312,8 +1312,8 @@ __webpack_require__.r(__webpack_exports__);
]
),
redundantAttribute: 'expr32',
selector: '[expr32]',
redundantAttribute: 'expr46',
selector: '[expr46]',
itemName: 'error',
indexName: null,
evaluate: _scope => _scope.state.errors

@ -93,9 +93,9 @@ const observable = function(el) { // eslint-disable-line
/***/ }),
/***/ "./js/components/file/index.riot":
/***/ "./js/components/file/files.riot":
/*!***************************************!*\
!*** ./js/components/file/index.riot ***!
!*** ./js/components/file/files.riot ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
@ -104,26 +104,30 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _stores_file_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../stores/file.js */ "./js/stores/file.js");
/* harmony import */ var _mixins_file_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../../mixins/file.js */ "./js/mixins/file.js");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
css: null,
exports: {
state: {
files: []
},
exports: () => {
return {
onMounted()
{
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].on('update', (data) => {
this.state.files = data
this.update()
})
..._mixins_file_js__WEBPACK_IMPORTED_MODULE_0__["default"], // adding basic funtion for sidebar
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(this.props.hubId)
}
rowClasses(file) {
const classes = [
'file__table-row'
]
if (this.isFileInArray(file)) {
classes.push('file__table-row--selected')
}
return classes.join(' ')
}
}
},
template: (
@ -132,61 +136,467 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<div class="view"><div class="file"><div expr26="expr26" class="file__item m-bottom-3"></div></div></div>',
'<div><app-file-parent expr24="expr24"></app-file-parent><div class="file__table"><div expr25="expr25"></div></div></div>',
[
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.path.length > 0,
redundantAttribute: 'expr24',
selector: '[expr24]',
template: template(
null,
[
{
type: bindingTypes.TAG,
getComponent: getComponent,
evaluate: _scope => 'app-file-parent',
slots: [],
attributes: [
{
type: expressionTypes.ATTRIBUTE,
name: 'handleClick',
evaluate: _scope => (event) => _scope.handleParentClick(_scope.evnet)
}
]
}
]
)
},
{
type: bindingTypes.EACH,
getKey: null,
condition: null,
template: template(
'<a expr27="expr27"> </a>',
'<div expr26="expr26" class="file__table-column file__table-column--select"><input expr27="expr27" type="checkbox" value="true"/><label expr28="expr28"><svg class="icon checked" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-checkbox_checked"/></svg><svg class="icon unchecked" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-checkbox"/></svg></label></div><div expr29="expr29" class="file__table-column file__table-column--filename"></div><div expr30="expr30" class="file__table-column file__table-column--filename"></div><div class="file__table-column file__table-column--size"><div expr31="expr31" class="w-100"></div></div><div class="file__table-column file__table-column--date"><div expr32="expr32" class="w-100 right"> </div></div><div class="file__table-column file__table-column--actions"><div class="w-100 right"><button expr33="expr33" class="button m-bottom-0 p-2 m-right-3" type="button"><svg class="icon fill-success" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-download"/></svg></button><button expr34="expr34" class="button m-bottom-0 p-2" type="button"><svg class="icon fill-danger" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-delete"/></svg></button></div></div>',
[
{
expressions: [
{
type: expressionTypes.ATTRIBUTE,
name: 'class',
evaluate: _scope => _scope.rowClasses(_scope.file)
}
]
},
{
redundantAttribute: 'expr26',
selector: '[expr26]',
expressions: [
{
type: expressionTypes.EVENT,
name: 'onchange',
evaluate: _scope => (event) => { _scope.handleMarked(event, _scope.file) }
}
]
},
{
redundantAttribute: 'expr27',
selector: '[expr27]',
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 0,
type: expressionTypes.ATTRIBUTE,
name: 'id',
evaluate: _scope => [
_scope.file.name
'marked_',
_scope.index
].join(
''
)
},
}
]
},
{
redundantAttribute: 'expr28',
selector: '[expr28]',
expressions: [
{
type: expressionTypes.ATTRIBUTE,
name: 'href',
name: 'for',
evaluate: _scope => [
'/file/',
_scope.file.name
'marked_',
_scope.index
].join(
''
)
}
]
},
{
type: bindingTypes.IF,
evaluate: _scope => !_scope.file.is_directory,
redundantAttribute: 'expr29',
selector: '[expr29]',
template: template(
' ',
[
{
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 0,
evaluate: _scope => [
_scope.file.name
].join(
''
)
}
]
}
]
)
},
{
type: bindingTypes.IF,
evaluate: _scope => _scope.file.is_directory,
redundantAttribute: 'expr30',
selector: '[expr30]',
template: template(
'<svg class="icon m-right-2" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-folder"/></svg> ',
[
{
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 1,
evaluate: _scope => [
_scope.file.name
].join(
''
)
},
{
type: expressionTypes.EVENT,
name: 'onclick',
evaluate: _scope => (event) => { _scope.handleDirectoryClick(event, _scope.file) }
}
]
}
]
)
},
{
type: bindingTypes.IF,
evaluate: _scope => !_scope.file.is_directory,
redundantAttribute: 'expr31',
selector: '[expr31]',
template: template(
' ',
[
{
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 0,
evaluate: _scope => _scope.file.size
}
]
}
]
)
},
{
redundantAttribute: 'expr32',
selector: '[expr32]',
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 0,
evaluate: _scope => _scope.file.updated_at
}
]
},
{
redundantAttribute: 'expr33',
selector: '[expr33]',
expressions: [
{
type: expressionTypes.EVENT,
name: 'onclick',
evaluate: _scope => (event) => { _scope.handleDownload(event, _scope.file) }
}
]
},
{
redundantAttribute: 'expr34',
selector: '[expr34]',
expressions: [
{
type: expressionTypes.EVENT,
name: 'onclick',
evaluate: _scope => (event) => { _scope.handleDelete(event, _scope.file) }
}
]
}
]
),
redundantAttribute: 'expr26',
selector: '[expr26]',
redundantAttribute: 'expr25',
selector: '[expr25]',
itemName: 'file',
indexName: null,
indexName: 'index',
evaluate: _scope => _scope.state.files
}
]
),
name: 'app-file-files'
});
/***/ }),
/***/ "./js/components/file/index.riot":
/*!***************************************!*\
!*** ./js/components/file/index.riot ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
css: null,
exports: {
state: {
view: 'files',
types: [
'files',
'audio',
'video',
'image',
'document'
]
},
/**
* add selected-class if type match
*
* @param {string} type
* @return {string}
*
*/
tabClasses(type) {
const classes = [
'tabs__item'
]
if (type === this.state.view) {
classes.push('tabs__item--selected')
}
return classes.join(' ')
},
/**
* change type
*
* @param {object} event
* @param {string} type
* @return {string}
*
*/
handleTabClick(event, type) {
this.state.view = type
this.update()
}
},
template: (
template,
expressionTypes,
bindingTypes,
getComponent
) => template(
'<div class="view m-top-4"><div class="file"><div class="panel"><div class="bar"><div class="tabs tabs--contrast"><a expr20="expr20"></a></div></div><app-file-files expr21="expr21"></app-file-files><app-file-audio expr22="expr22"></app-file-audio><app-file-video expr23="expr23"></app-file-video></div></div></div>',
[
{
type: bindingTypes.EACH,
getKey: null,
condition: null,
template: template(
' ',
[
{
expressions: [
{
type: expressionTypes.TEXT,
childNodeIndex: 0,
evaluate: _scope => [
_scope.type
].join(
''
)
},
{
type: expressionTypes.ATTRIBUTE,
name: 'class',
evaluate: _scope => _scope.tabClasses(_scope.type)
},
{
type: expressionTypes.EVENT,
name: 'onclick',
evaluate: _scope => (event) => { _scope.handleTabClick(event, _scope.type) }
}
]
}
]
),
redundantAttribute: 'expr20',
selector: '[expr20]',
itemName: 'type',
indexName: null,
evaluate: _scope => _scope.state.types
},
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.view === 'files',
redundantAttribute: 'expr21',
selector: '[expr21]',
template: template(
null,
[
{
type: bindingTypes.TAG,
getComponent: getComponent,
evaluate: _scope => 'app-file-files',
slots: [],
attributes: [
{
type: expressionTypes.ATTRIBUTE,
name: 'hub-id',
evaluate: _scope => _scope.props.hubId
}
]
}
]
)
},
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.view === 'video',
redundantAttribute: 'expr22',
selector: '[expr22]',
template: template(
null,
[
{
type: bindingTypes.TAG,
getComponent: getComponent,
evaluate: _scope => 'app-file-audio',
slots: [],
attributes: [
{
type: expressionTypes.ATTRIBUTE,
name: 'hub-id',
evaluate: _scope => _scope.props.hubId
}
]
}
]
)
},
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.view === 'audio',
redundantAttribute: 'expr23',
selector: '[expr23]',
template: template(
null,
[
{
type: bindingTypes.TAG,
getComponent: getComponent,
evaluate: _scope => 'app-file-video',
slots: [],
attributes: [
{
type: expressionTypes.ATTRIBUTE,
name: 'hub-id',
evaluate: _scope => _scope.props.hubId
}
]
}
]
)
}
]
),
name: 'app-file-index'
});
/***/ }),
/***/ "./js/components/file/parent.riot":
/*!****************************************!*\
!*** ./js/components/file/parent.riot ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
css: null,
exports: {},
template: (
template,
expressionTypes,
bindingTypes,
getComponent
) => template(
'<div class="file__table-row"><div class="file__table-column file__table-column--back"><svg expr19="expr19" class="icon" aria-hidden="true"><use xlink:href="/symbol-defs.svg#icon-back"/></svg></div></div>',
[
{
redundantAttribute: 'expr19',
selector: '[expr19]',
expressions: [
{
type: expressionTypes.EVENT,
name: 'onclick',
evaluate: _scope => (event) => { _scope.props.handleClick(event, _scope) }
}
]
}
]
),
name: 'app-file-parent'
});
/***/ }),
/***/ "./node_modules/@tiny-components/notification/src/notification.riot":
/*!**************************************************************************!*\
!*** ./node_modules/@tiny-components/notification/src/notification.riot ***!
@ -320,16 +730,16 @@ __webpack_require__.r(__webpack_exports__);
bindingTypes,
getComponent
) => template(
'<div expr28="expr28"></div>',
'<div expr35="expr35"></div>',
[
{
type: bindingTypes.IF,
evaluate: _scope => _scope.state.items.length > 0,
redundantAttribute: 'expr28',
selector: '[expr28]',
redundantAttribute: 'expr35',
selector: '[expr35]',
template: template(
'<div expr29="expr29"></div>',
'<div expr36="expr36"></div>',
[
{
expressions: [
@ -352,7 +762,7 @@ __webpack_require__.r(__webpack_exports__);
condition: null,
template: template(
'<div expr30="expr30" class="toast__body"> </div>',
'<div expr37="expr37" class="toast__body"> </div>',
[
{
expressions: [
@ -374,8 +784,8 @@ __webpack_require__.r(__webpack_exports__);
]
},
{
redundantAttribute: 'expr30',
selector: '[expr30]',
redundantAttribute: 'expr37',
selector: '[expr37]',
expressions: [
{
@ -393,8 +803,8 @@ __webpack_require__.r(__webpack_exports__);
]
),
redundantAttribute: 'expr29',
selector: '[expr29]',
redundantAttribute: 'expr36',
selector: '[expr36]',
itemName: 'item',
indexName: null,
evaluate: _scope => _scope.state.items
@ -478,6 +888,110 @@ __webpack_require__.r(__webpack_exports__);
/***/ }),
/***/ "./js/mixins/file.js":
/*!***************************!*\
!*** ./js/mixins/file.js ***!
\***************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _stores_file_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./../stores/file.js */ "./js/stores/file.js");
/**
* Mixin to Extend a Sidebar
*
* @author Björn Hase
* @license http://opensource.org/licenses/MIT The MIT License
* @link https://gitea.node001.net/tiny-components/sidebar-form
*
*/
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
state: {
files: [],
path: [],
marked: []
},
onMounted: function onMounted() {
var _this = this;
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].on('update', function (data) {
_this.state.files = data;
_this.update();
});
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(this.props.hubId);
},
/**
*
*
*
*/
handleParentClick: function handleParentClick(event) {
this.state.path.pop();
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(this.props.hubId, this.state.path);
},
/**
*
*
*
*
*/
handleMarked: function handleMarked(event, file) {
var exists = this.isFileInArray(file);
if (exists === false) {
this.state.marked.push(file);
} else {
this.state.marked.splice(this.state.marked.indexOf(file), 1);
}
this.update();
},
/**
*
* @return {Boolean} [description]
*/
isFileInArray: function isFileInArray(file) {
var exists = false;
this.state.marked.forEach(function (f, index) {
if (file.name === f.name) {
exists = true;
}
});
return exists;
},
handleDirectoryClick: function handleDirectoryClick(event, file) {
this.state.path.push(file.name);
_stores_file_js__WEBPACK_IMPORTED_MODULE_0__["default"].get(this.props.hubId, this.state.path);
},
/**
*
* @param {[type]} event [description]
* @param {[type]} file [description]
* @return {[type]} [description]
*/
handleDownload: function handleDownload(event, file) {},
/**
*
* @param {[type]} event [description]
* @param {[type]} file [description]
* @return {[type]} [description]
*/
handleDelete: function handleDelete(event, file) {}
});
/***/ }),
/***/ "./js/stores/file.js":
/*!***************************!*\
!*** ./js/stores/file.js ***!
@ -511,10 +1025,18 @@ __webpack_require__.r(__webpack_exports__);
* @param {object} data
*
*/
get: function get(id) {
get: function get(id, path) {
var _this = this;
fetch('/api/files/v1/' + id).then(function (response) {
var url = '/api/files/v1/' + id;
if (path && path.length > 0) {
url += '?' + new URLSearchParams({
'path': path.join('/')
});
}
fetch(url).then(function (response) {
return response.json();
}).then(function (response) {
_this.trigger('update', response.data);
@ -3289,13 +3811,19 @@ var __webpack_exports__ = {};
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var riot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! riot */ "./node_modules/riot/riot.esm.js");
/* harmony import */ var _tiny_components_notification_src_notification_riot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @tiny-components/notification/src/notification.riot */ "./node_modules/@tiny-components/notification/src/notification.riot");
/* harmony import */ var _components_file_index_riot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/file/index.riot */ "./js/components/file/index.riot");
/* harmony import */ var _components_file_parent_riot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/file/parent.riot */ "./js/components/file/parent.riot");
/* harmony import */ var _components_file_index_riot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/file/index.riot */ "./js/components/file/index.riot");
/* harmony import */ var _components_file_files_riot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/file/files.riot */ "./js/components/file/files.riot");
riot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-notification', _tiny_components_notification_src_notification_riot__WEBPACK_IMPORTED_MODULE_0__["default"]);
// register components
riot__WEBPACK_IMPORTED_MODULE_1__.register('app-file-index', _components_file_index_riot__WEBPACK_IMPORTED_MODULE_2__["default"]); // mount components
riot__WEBPACK_IMPORTED_MODULE_1__.register('app-file-index', _components_file_index_riot__WEBPACK_IMPORTED_MODULE_3__["default"]);
riot__WEBPACK_IMPORTED_MODULE_1__.register('app-file-parent', _components_file_parent_riot__WEBPACK_IMPORTED_MODULE_2__["default"]);
riot__WEBPACK_IMPORTED_MODULE_1__.register('app-file-files', _components_file_files_riot__WEBPACK_IMPORTED_MODULE_4__["default"]); // mount components
riot__WEBPACK_IMPORTED_MODULE_1__.mount('app-file-index');
})();

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Loading…
Cancel
Save