{"version":3,"sources":["webpack:///./src/mixins/windowSync.js","webpack:///./node_modules/broadcast-channel/dist/es/util.js","webpack:///../../../src/components/VDataTable/VSimpleTable.ts","webpack:///./node_modules/broadcast-channel/dist/es/methods/native.js","webpack:///./node_modules/broadcast-channel/dist/es/oblivious-set.js","webpack:///./node_modules/broadcast-channel/dist/es/options.js","webpack:///./node_modules/broadcast-channel/dist/es/methods/indexed-db.js","webpack:///./node_modules/broadcast-channel/dist/es/methods/localstorage.js","webpack:///./node_modules/broadcast-channel/dist/es/methods/simulate.js","webpack:///./node_modules/broadcast-channel/dist/es/method-chooser.js","webpack:///./node_modules/broadcast-channel/dist/es/broadcast-channel.js","webpack:///./node_modules/unload/dist/es/browser.js","webpack:///./node_modules/unload/dist/es/index.js","webpack:///./node_modules/broadcast-channel/dist/es/leader-election.js","webpack:///../../../../src/components/VDataTable/mixins/header.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack:///../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack:///../../src/util/dedupeModelListeners.ts","webpack:///../../src/util/rebuildFunctionalSlots.ts","webpack:///../../../src/components/VDataTable/VDataTableHeader.ts","webpack:///../../../src/components/VDataTable/Row.ts","webpack:///../../../src/components/VDataTable/RowGroup.ts","webpack:///../../../src/components/VDataTable/MobileRow.ts","webpack:///../../../src/components/VDataTable/VDataTable.ts","webpack:///./src/components/EnhancedDocViewer.vue?b3c5","webpack:///src/components/EnhancedDocViewer.vue","webpack:///./src/components/EnhancedDocViewer.vue?811e","webpack:///./src/components/EnhancedDocViewer.vue","webpack:///./src/components/SimplePDFViewer.vue?1729","webpack:///src/components/SimplePDFViewer.vue","webpack:///./src/components/SimplePDFViewer.vue?7ea0","webpack:///./src/components/SimplePDFViewer.vue","webpack:///./node_modules/detect-node/browser.js"],"names":["require","BroadcastChannel","data","name","messages","created","channels","methods","startBroadcast","this","onmessage","msg","receiveMessage","createChannel","r","h","w","q","routeData","$router","resolve","query","window","open","href","$forceUpdate","m","n","sendMessage","postMessage","endBroadcast","close","isPromise","obj","then","sleep","time","Promise","res","setTimeout","randomInt","min","max","Math","floor","random","randomToken","toString","substring","lastMs","additional","microSeconds","ms","Date","getTime","isNode","Object","prototype","call","process","props","dense","fixedHeader","height","Number","String","computed","classes","themeClasses","genWrapper","$slots","wrapper","$createElement","staticClass","style","render","class","type","create","channelName","state","messagesCallback","bc","subFns","channelState","messageJson","onMessage","fn","canBeUsed","_pubkey","Error","averageResponseTime","ObliviousSet","ttl","set","Set","timeMap","Map","_removeTooOldValues","olderThen","now","iterator","Symbol","value","next","get","has","bind","add","clear","fillOptionsWithDefaults","originalOptions","arguments","length","undefined","options","JSON","parse","stringify","webWorkerSupport","idb","fallbackInterval","onclose","localstorage","removeTimeout","node","useFastPath","DB_PREFIX","OBJECT_STORE_ID","getIdb","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","createDatabase","IndexedDB","dbName","openRequest","onupgradeneeded","ev","db","target","result","createObjectStore","keyPath","autoIncrement","dbPromise","rej","onerror","onsuccess","writeMessage","readerUuid","writeObject","uuid","transaction","oncomplete","objectStore","getMessagesHigherThen","lastCursorId","ret","keyRangeValue","IDBKeyRange","bound","Infinity","openCursor","cursor","push","removeMessageById","id","request","getOldMessages","msgObk","cleanOldMessages","tooOld","all","map","msgObj","closed","eMIs","writeBlockPromise","readQueuePromises","_readLoop","readNewMessages","_filterMessage","messagesCallbackTime","newerMessages","useMessages","filter","sort","msgObjA","msgObjB","forEach","KEY_PREFIX","getLocalStorage","localStorage","e","storageKey","key","writeObj","token","setItem","document","createEvent","initEvent","newValue","dispatchEvent","addStorageEventListener","listener","addEventListener","removeStorageEventListener","removeEventListener","ls","removeItem","defaultTime","userAgent","navigator","toLowerCase","includes","SIMULATE_CHANNELS","channelArray","Array","from","channel","METHODS","NodeMethod","chooseMethod","chooseMethods","concat","Boolean","find","useMethod","method","ENFORCED_OPTIONS","_iL","_onML","_addEL","message","internal","_befC","_prepP","_prepareChannel","clearNodeFolder","enforceOptions","_post","broadcastChannel","awaitPrepare","_state","maybePromise","s","_hasMessageListeners","_addListenerObject","_startListening","_removeListenerObject","o","_stopListening","listenerFn","postInternal","listenObj","_this","WorkerGlobalScope","self","USE_METHOD","LISTENERS","startedListening","startListening","runAll","addReturn","remove","run","promises","removeAll","getSize","size","_channel","_options","isLeader","isDead","_isApl","_reApply","_unl","_lstns","_invs","_awaitLeadershipOnce","leaderElector","resolved","finish","clearInterval","interval","whenDeathListener","applyOnce","setInterval","context","action","_sendMessage","msgJson","_beLeader","unloadFn","die","isLeaderListener","responseTime","createLeaderElection","_leaderElector","elector","stopCriteria","recieved","handleMessage","reject","success","awaitLeadership","_aLP","_this2","uFn","mixins","directives","ripple","headers","default","page","itemsPerPage","sortBy","sortDesc","groupBy","groupDesc","multiSort","mustSort","sortIcon","everyItem","someItems","showGroupBy","singleSelect","disableSort","genSelectAll","indeterminate","on","input","v","$scopedSlots","VSimpleCheckbox","genSortIcon","VIcon","sortByText","genSortChip","children","sortIndex","findIndex","k","beingSorted","isDesc","sortable","active","asc","desc","VChip","click","genSortSelect","VSelect","label","$vuetify","lang","t","items","hideDetails","multiple","menuProps","closeOnContentClick","change","scopedSlots","selection","header","attrs","width","sortHeaders","text","th","tr","genGroupByToggle","getAria","$t","ariaSort","ariaLabel","genHeader","role","scope","minWidth","i","slots","slot","functional","mobile","dedupeModelListeners","mergeData","VDataTableHeaderMobile","VDataTableHeaderDesktop","item","rtl","computedSlots","columns","slotName","scopedSlot","regularSlot","textAlign","divider","headerClass","contentClass","summaryClass","hideDefaultHeader","mobileRowChildren","filterFn","search","searchTableItems","matchesColumnFilters","headersWithCustomFilters","matchesSearchTerm","headersWithoutCustomFilters","showSelect","showExpand","caption","headerProps","calculateWidths","headersLength","expandIcon","customFilter","itemClass","loaderHeight","internalGroupBy","openCache","widths","computedHeaders","defaultHeader","index","colspanAttrs","isMobile","colspan","columnSorters","reduce","acc","sanitizedHeaderProps","computedItemsPerPage","itemsPerPageOptions","sanitizedFooterProps","firstOption","breakingProps","original","replacement","mounted","beforeDestroy","calcWidths","$el","querySelectorAll","customFilterWithColumns","customSortWithHeaders","customSort","locale","createItemProps","VDataIterator","genCaption","genColgroup","genLoading","genHeaders","group","toggleSelectAll","genEmptyWrapper","genItems","empty","genEmpty","genGroupedRows","genRows","groupedItems","genDefaultGroupedRow","isOpen","toggleFn","removeFn","toggle","VBtn","icon","small","column","RowGroup","genScopedRows","genDefaultRows","rows","isExpanded","genDefaultExpandedRow","headerRow","genDefaultSimpleRow","expandedRow","disabled","val","MobileRow","isSelected","contextmenu","event","dblclick","genBody","expand","select","body","genFooters","pagination","itemsPerPageText","VDataFooter","genDefaultScopedSlot","simpleProps","VSimpleTable","proxySlot","VData","_vm","_h","_c","_self","proMode","model","callback","$$v","doctab","expression","_l","doc","dockey","$event","getURL","_v","_s","filetype","iHeight","activeURL","_e","rawName","historyHeaders","history","_u","ref","formatBytes","Size","getHistory","staticRenderFns","docs","client","facility","components","watch","heightFix","component","VCard","VDataTable","VScrollYTransition","VSheet","VTab","VTabItem","VTabs","VTabsItems","docURL","module","exports"],"mappings":"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","file":"js/PopoutPDFViewer~config.67bf1e80.js","sourcesContent":["const {\r\n BroadcastChannel\r\n} = require('broadcast-channel');\r\n\r\nexport default {\r\n data: function () {\r\n return {\r\n name: null,\r\n messages: {},\r\n created: {},\r\n channels: {},\r\n }\r\n },\r\n created: function () {},\r\n methods: {\r\n startBroadcast(name) {\r\n // console.log(\"START BROADCAST: \" + name);\r\n this.channels[name] = new BroadcastChannel(name);\r\n this.channels[name].onmessage = msg => this.receiveMessage(msg, name);\r\n // console.log(this.channels);\r\n },\r\n createChannel(name, r, h, w, q) {\r\n // console.log(\"CREATING CHANNEL: \" + name);\r\n this.startBroadcast(name);\r\n\r\n let routeData = this.$router.resolve({\r\n name: r,\r\n query: (q ? q : {})\r\n });\r\n window.open(routeData.href, '_blank', 'location=no,height=' + h + ',width=' + w + ',scrollbars=yes,status=yes,toolbar=no,titlebar=no');\r\n\r\n this.created[name] = true;\r\n this.$forceUpdate();\r\n },\r\n receiveMessage(m, n) {\r\n // console.log(\"RECEIVING: \" + m[0].dockey);\r\n this.messages[n] = m;\r\n this.$forceUpdate();\r\n },\r\n sendMessage(n, m) {\r\n // console.log(\"SENDING: \" + m[0].dockey + \" ON: \" + n);\r\n this.channels[n].postMessage(m);\r\n },\r\n endBroadcast(name) {\r\n // console.log(\"END BROADCAST: \" + name);\r\n this.channels[name].close();\r\n }\r\n }\r\n};","/**\n * returns true if the given object is a promise\n */\nexport function isPromise(obj) {\n if (obj && typeof obj.then === 'function') {\n return true;\n } else {\n return false;\n }\n}\nexport function sleep(time) {\n if (!time) time = 0;\n return new Promise(function (res) {\n return setTimeout(res, time);\n });\n}\nexport function randomInt(min, max) {\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n/**\n * https://stackoverflow.com/a/8084248\n */\n\nexport function randomToken() {\n return Math.random().toString(36).substring(2);\n}\nvar lastMs = 0;\nvar additional = 0;\n/**\n * returns the current time in micro-seconds,\n * WARNING: This is a pseudo-function\n * Performance.now is not reliable in webworkers, so we just make sure to never return the same time.\n * This is enough in browsers, and this function will not be used in nodejs.\n * The main reason for this hack is to ensure that BroadcastChannel behaves equal to production when it is used in fast-running unit tests.\n */\n\nexport function microSeconds() {\n var ms = new Date().getTime();\n\n if (ms === lastMs) {\n additional++;\n return ms * 1000 + additional;\n } else {\n lastMs = ms;\n additional = 0;\n return ms * 1000;\n }\n}\n/**\n * copied from the 'detect-node' npm module\n * We cannot use the module directly because it causes problems with rollup\n * @link https://github.com/iliakan/detect-node/blob/master/index.js\n */\n\nexport var isNode = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import { microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nexport var type = 'native';\nexport function create(channelName) {\n var state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName),\n subFns: [] // subscriberFunctions\n\n };\n\n state.bc.onmessage = function (msg) {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data);\n }\n };\n\n return state;\n}\nexport function close(channelState) {\n channelState.bc.close();\n channelState.subFns = [];\n}\nexport function postMessage(channelState, messageJson) {\n channelState.bc.postMessage(messageJson, false);\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n /**\n * in the electron-renderer, isNode will be true even if we are in browser-context\n * so we also check if window is undefined\n */\n if (isNode && typeof window === 'undefined') return false;\n\n if (typeof BroadcastChannel === 'function') {\n if (BroadcastChannel._pubkey) {\n throw new Error('BroadcastChannel: Do not overwrite window.BroadcastChannel with this module, this is not a polyfill');\n }\n\n return true;\n } else return false;\n}\nexport function averageResponseTime() {\n return 150;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * this is a set which automatically forgets\n * a given entry when a new entry is set and the ttl\n * of the old one is over\n * @constructor\n */\nvar ObliviousSet = function ObliviousSet(ttl) {\n var set = new Set();\n var timeMap = new Map();\n this.has = set.has.bind(set);\n\n this.add = function (value) {\n timeMap.set(value, now());\n set.add(value);\n\n _removeTooOldValues();\n };\n\n this.clear = function () {\n set.clear();\n timeMap.clear();\n };\n\n function _removeTooOldValues() {\n var olderThen = now() - ttl;\n var iterator = set[Symbol.iterator]();\n\n while (true) {\n var value = iterator.next().value;\n if (!value) return; // no more elements\n\n var time = timeMap.get(value);\n\n if (time < olderThen) {\n timeMap[\"delete\"](value);\n set[\"delete\"](value);\n } else {\n // we reached a value that is not old enough\n return;\n }\n }\n }\n};\n\nfunction now() {\n return new Date().getTime();\n}\n\nexport default ObliviousSet;","export function fillOptionsWithDefaults() {\n var originalOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = JSON.parse(JSON.stringify(originalOptions)); // main\n\n if (typeof options.webWorkerSupport === 'undefined') options.webWorkerSupport = true; // indexed-db\n\n if (!options.idb) options.idb = {}; // after this time the messages get deleted\n\n if (!options.idb.ttl) options.idb.ttl = 1000 * 45;\n if (!options.idb.fallbackInterval) options.idb.fallbackInterval = 150; // handles abrupt db onclose events.\n\n if (originalOptions.idb && typeof originalOptions.idb.onclose === 'function') options.idb.onclose = originalOptions.idb.onclose; // localstorage\n\n if (!options.localstorage) options.localstorage = {};\n if (!options.localstorage.removeTimeout) options.localstorage.removeTimeout = 1000 * 60; // custom methods\n\n if (originalOptions.methods) options.methods = originalOptions.methods; // node\n\n if (!options.node) options.node = {};\n if (!options.node.ttl) options.node.ttl = 1000 * 60 * 2; // 2 minutes;\n\n if (typeof options.node.useFastPath === 'undefined') options.node.useFastPath = true;\n return options;\n}","/**\n * this method uses indexeddb to store the messages\n * There is currently no observerAPI for idb\n * @link https://github.com/w3c/IndexedDB/issues/51\n */\nimport { sleep, randomInt, randomToken, microSeconds as micro, isNode } from '../util.js';\nexport var microSeconds = micro;\nimport ObliviousSet from '../oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nvar DB_PREFIX = 'pubkey.broadcast-channel-0-';\nvar OBJECT_STORE_ID = 'messages';\nexport var type = 'idb';\nexport function getIdb() {\n if (typeof indexedDB !== 'undefined') return indexedDB;\n\n if (typeof window !== 'undefined') {\n if (typeof window.mozIndexedDB !== 'undefined') return window.mozIndexedDB;\n if (typeof window.webkitIndexedDB !== 'undefined') return window.webkitIndexedDB;\n if (typeof window.msIndexedDB !== 'undefined') return window.msIndexedDB;\n }\n\n return false;\n}\nexport function createDatabase(channelName) {\n var IndexedDB = getIdb(); // create table\n\n var dbName = DB_PREFIX + channelName;\n var openRequest = IndexedDB.open(dbName, 1);\n\n openRequest.onupgradeneeded = function (ev) {\n var db = ev.target.result;\n db.createObjectStore(OBJECT_STORE_ID, {\n keyPath: 'id',\n autoIncrement: true\n });\n };\n\n var dbPromise = new Promise(function (res, rej) {\n openRequest.onerror = function (ev) {\n return rej(ev);\n };\n\n openRequest.onsuccess = function () {\n res(openRequest.result);\n };\n });\n return dbPromise;\n}\n/**\n * writes the new message to the database\n * so other readers can find it\n */\n\nexport function writeMessage(db, readerUuid, messageJson) {\n var time = new Date().getTime();\n var writeObject = {\n uuid: readerUuid,\n time: time,\n data: messageJson\n };\n var transaction = db.transaction([OBJECT_STORE_ID], 'readwrite');\n return new Promise(function (res, rej) {\n transaction.oncomplete = function () {\n return res();\n };\n\n transaction.onerror = function (ev) {\n return rej(ev);\n };\n\n var objectStore = transaction.objectStore(OBJECT_STORE_ID);\n objectStore.add(writeObject);\n });\n}\nexport function getAllMessages(db) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n res(ret);\n }\n };\n });\n}\nexport function getMessagesHigherThen(db, lastCursorId) {\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n var keyRangeValue = IDBKeyRange.bound(lastCursorId + 1, Infinity);\n return new Promise(function (res) {\n objectStore.openCursor(keyRangeValue).onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n ret.push(cursor.value);\n cursor[\"continue\"]();\n } else {\n res(ret);\n }\n };\n });\n}\nexport function removeMessageById(db, id) {\n var request = db.transaction([OBJECT_STORE_ID], 'readwrite').objectStore(OBJECT_STORE_ID)[\"delete\"](id);\n return new Promise(function (res) {\n request.onsuccess = function () {\n return res();\n };\n });\n}\nexport function getOldMessages(db, ttl) {\n var olderThen = new Date().getTime() - ttl;\n var objectStore = db.transaction(OBJECT_STORE_ID).objectStore(OBJECT_STORE_ID);\n var ret = [];\n return new Promise(function (res) {\n objectStore.openCursor().onsuccess = function (ev) {\n var cursor = ev.target.result;\n\n if (cursor) {\n var msgObk = cursor.value;\n\n if (msgObk.time < olderThen) {\n ret.push(msgObk); //alert(\"Name for SSN \" + cursor.key + \" is \" + cursor.value.name);\n\n cursor[\"continue\"]();\n } else {\n // no more old messages,\n res(ret);\n return;\n }\n } else {\n res(ret);\n }\n };\n });\n}\nexport function cleanOldMessages(db, ttl) {\n return getOldMessages(db, ttl).then(function (tooOld) {\n return Promise.all(tooOld.map(function (msgObj) {\n return removeMessageById(db, msgObj.id);\n }));\n });\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n return createDatabase(channelName).then(function (db) {\n var state = {\n closed: false,\n lastCursorId: 0,\n channelName: channelName,\n options: options,\n uuid: randomToken(),\n\n /**\n * emittedMessagesIds\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n eMIs: new ObliviousSet(options.idb.ttl * 2),\n // ensures we do not read messages in parrallel\n writeBlockPromise: Promise.resolve(),\n messagesCallback: null,\n readQueuePromises: [],\n db: db\n };\n /**\n * Handle abrupt closes that do not originate from db.close().\n * This could happen, for example, if the underlying storage is\n * removed or if the user clears the database in the browser's\n * history preferences.\n */\n\n db.onclose = function () {\n state.closed = true;\n if (options.idb.onclose) options.idb.onclose();\n };\n /**\n * if service-workers are used,\n * we have no 'storage'-event if they post a message,\n * therefore we also have to set an interval\n */\n\n\n _readLoop(state);\n\n return state;\n });\n}\n\nfunction _readLoop(state) {\n if (state.closed) return;\n readNewMessages(state).then(function () {\n return sleep(state.options.idb.fallbackInterval);\n }).then(function () {\n return _readLoop(state);\n });\n}\n\nfunction _filterMessage(msgObj, state) {\n if (msgObj.uuid === state.uuid) return false; // send by own\n\n if (state.eMIs.has(msgObj.id)) return false; // already emitted\n\n if (msgObj.data.time < state.messagesCallbackTime) return false; // older then onMessageCallback\n\n return true;\n}\n/**\n * reads all new messages from the database and emits them\n */\n\n\nfunction readNewMessages(state) {\n // channel already closed\n if (state.closed) return Promise.resolve(); // if no one is listening, we do not need to scan for new messages\n\n if (!state.messagesCallback) return Promise.resolve();\n return getMessagesHigherThen(state.db, state.lastCursorId).then(function (newerMessages) {\n var useMessages = newerMessages\n /**\n * there is a bug in iOS where the msgObj can be undefined some times\n * so we filter them out\n * @link https://github.com/pubkey/broadcast-channel/issues/19\n */\n .filter(function (msgObj) {\n return !!msgObj;\n }).map(function (msgObj) {\n if (msgObj.id > state.lastCursorId) {\n state.lastCursorId = msgObj.id;\n }\n\n return msgObj;\n }).filter(function (msgObj) {\n return _filterMessage(msgObj, state);\n }).sort(function (msgObjA, msgObjB) {\n return msgObjA.time - msgObjB.time;\n }); // sort by time\n\n useMessages.forEach(function (msgObj) {\n if (state.messagesCallback) {\n state.eMIs.add(msgObj.id);\n state.messagesCallback(msgObj.data);\n }\n });\n return Promise.resolve();\n });\n}\n\nexport function close(channelState) {\n channelState.closed = true;\n channelState.db.close();\n}\nexport function postMessage(channelState, messageJson) {\n channelState.writeBlockPromise = channelState.writeBlockPromise.then(function () {\n return writeMessage(channelState.db, channelState.uuid, messageJson);\n }).then(function () {\n if (randomInt(0, 10) === 0) {\n /* await (do not await) */\n cleanOldMessages(channelState.db, channelState.options.idb.ttl);\n }\n });\n return channelState.writeBlockPromise;\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n readNewMessages(channelState);\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var idb = getIdb();\n if (!idb) return false;\n return true;\n}\nexport function averageResponseTime(options) {\n return options.idb.fallbackInterval * 2;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","/**\n * A localStorage-only method which uses localstorage and its 'storage'-event\n * This does not work inside of webworkers because they have no access to locastorage\n * This is basically implemented to support IE9 or your grandmothers toaster.\n * @link https://caniuse.com/#feat=namevalue-storage\n * @link https://caniuse.com/#feat=indexeddb\n */\nimport ObliviousSet from '../oblivious-set';\nimport { fillOptionsWithDefaults } from '../options';\nimport { sleep, randomToken, microSeconds as micro, isNode } from '../util';\nexport var microSeconds = micro;\nvar KEY_PREFIX = 'pubkey.broadcastChannel-';\nexport var type = 'localstorage';\n/**\n * copied from crosstab\n * @link https://github.com/tejacques/crosstab/blob/master/src/crosstab.js#L32\n */\n\nexport function getLocalStorage() {\n var localStorage;\n if (typeof window === 'undefined') return null;\n\n try {\n localStorage = window.localStorage;\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\n } catch (e) {// New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n\n return localStorage;\n}\nexport function storageKey(channelName) {\n return KEY_PREFIX + channelName;\n}\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\n\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n sleep().then(function () {\n var key = storageKey(channelState.channelName);\n var writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n };\n var value = JSON.stringify(writeObj);\n getLocalStorage().setItem(key, value);\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n\n var ev = document.createEvent('Event');\n ev.initEvent('storage', true, true);\n ev.key = key;\n ev.newValue = value;\n window.dispatchEvent(ev);\n res();\n });\n });\n}\nexport function addStorageEventListener(channelName, fn) {\n var key = storageKey(channelName);\n\n var listener = function listener(ev) {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue));\n }\n };\n\n window.addEventListener('storage', listener);\n return listener;\n}\nexport function removeStorageEventListener(listener) {\n window.removeEventListener('storage', listener);\n}\nexport function create(channelName, options) {\n options = fillOptionsWithDefaults(options);\n\n if (!canBeUsed()) {\n throw new Error('BroadcastChannel: localstorage cannot be used');\n }\n\n var uuid = randomToken();\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n\n var eMIs = new ObliviousSet(options.localstorage.removeTimeout);\n var state = {\n channelName: channelName,\n uuid: uuid,\n eMIs: eMIs // emittedMessagesIds\n\n };\n state.listener = addStorageEventListener(channelName, function (msgObj) {\n if (!state.messagesCallback) return; // no listener\n\n if (msgObj.uuid === uuid) return; // own message\n\n if (!msgObj.token || eMIs.has(msgObj.token)) return; // already emitted\n\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return; // too old\n\n eMIs.add(msgObj.token);\n state.messagesCallback(msgObj.data);\n });\n return state;\n}\nexport function close(channelState) {\n removeStorageEventListener(channelState.listener);\n}\nexport function onMessage(channelState, fn, time) {\n channelState.messagesCallbackTime = time;\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n if (isNode) return false;\n var ls = getLocalStorage();\n if (!ls) return false;\n\n try {\n var key = '__broadcastchannel_check';\n ls.setItem(key, 'works');\n ls.removeItem(key);\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n return false;\n }\n\n return true;\n}\nexport function averageResponseTime() {\n var defaultTime = 120;\n var userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2;\n }\n\n return defaultTime;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import { microSeconds as micro } from '../util';\nexport var microSeconds = micro;\nexport var type = 'simulate';\nvar SIMULATE_CHANNELS = new Set();\nexport function create(channelName) {\n var state = {\n name: channelName,\n messagesCallback: null\n };\n SIMULATE_CHANNELS.add(state);\n return state;\n}\nexport function close(channelState) {\n SIMULATE_CHANNELS[\"delete\"](channelState);\n}\nexport function postMessage(channelState, messageJson) {\n return new Promise(function (res) {\n return setTimeout(function () {\n var channelArray = Array.from(SIMULATE_CHANNELS);\n channelArray.filter(function (channel) {\n return channel.name === channelState.name;\n }).filter(function (channel) {\n return channel !== channelState;\n }).filter(function (channel) {\n return !!channel.messagesCallback;\n }).forEach(function (channel) {\n return channel.messagesCallback(messageJson);\n });\n res();\n }, 5);\n });\n}\nexport function onMessage(channelState, fn) {\n channelState.messagesCallback = fn;\n}\nexport function canBeUsed() {\n return true;\n}\nexport function averageResponseTime() {\n return 5;\n}\nexport default {\n create: create,\n close: close,\n onMessage: onMessage,\n postMessage: postMessage,\n canBeUsed: canBeUsed,\n type: type,\n averageResponseTime: averageResponseTime,\n microSeconds: microSeconds\n};","import NativeMethod from './methods/native.js';\nimport IndexeDbMethod from './methods/indexed-db.js';\nimport LocalstorageMethod from './methods/localstorage.js';\nimport SimulateMethod from './methods/simulate.js';\nimport { isNode } from './util'; // order is important\n\nvar METHODS = [NativeMethod, // fastest\nIndexeDbMethod, LocalstorageMethod];\n/**\n * The NodeMethod is loaded lazy\n * so it will not get bundled in browser-builds\n */\n\nif (isNode) {\n /**\n * we use the non-transpiled code for nodejs\n * because it runs faster\n */\n var NodeMethod = require('../../src/methods/' + // use this hack so that browserify and others\n // do not import the node-method by default\n // when bundling.\n 'node.js');\n /**\n * this will be false for webpackbuilds\n * which will shim the node-method with an empty object {}\n */\n\n\n if (typeof NodeMethod.canBeUsed === 'function') {\n METHODS.push(NodeMethod);\n }\n}\n\nexport function chooseMethod(options) {\n var chooseMethods = [].concat(options.methods, METHODS).filter(Boolean); // directly chosen\n\n if (options.type) {\n if (options.type === 'simulate') {\n // only use simulate-method if directly chosen\n return SimulateMethod;\n }\n\n var ret = chooseMethods.find(function (m) {\n return m.type === options.type;\n });\n if (!ret) throw new Error('method-type ' + options.type + ' not found');else return ret;\n }\n /**\n * if no webworker support is needed,\n * remove idb from the list so that localstorage is been chosen\n */\n\n\n if (!options.webWorkerSupport && !isNode) {\n chooseMethods = chooseMethods.filter(function (m) {\n return m.type !== 'idb';\n });\n }\n\n var useMethod = chooseMethods.find(function (method) {\n return method.canBeUsed();\n });\n if (!useMethod) throw new Error('No useable methode found:' + JSON.stringify(METHODS.map(function (m) {\n return m.type;\n })));else return useMethod;\n}","import { isPromise } from './util.js';\nimport { chooseMethod } from './method-chooser.js';\nimport { fillOptionsWithDefaults } from './options.js';\nexport var BroadcastChannel = function BroadcastChannel(name, options) {\n this.name = name;\n\n if (ENFORCED_OPTIONS) {\n options = ENFORCED_OPTIONS;\n }\n\n this.options = fillOptionsWithDefaults(options);\n this.method = chooseMethod(this.options); // isListening\n\n this._iL = false;\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n\n this._onML = null;\n /**\n * _addEventListeners\n */\n\n this._addEL = {\n message: [],\n internal: []\n };\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n\n this._befC = [];\n /**\n * _preparePromise\n */\n\n this._prepP = null;\n\n _prepareChannel(this);\n}; // STATICS\n\n/**\n * used to identify if someone overwrites\n * window.BroadcastChannel with this\n * See methods/native.js\n */\n\nBroadcastChannel._pubkey = true;\n/**\n * clears the tmp-folder if is node\n * @return {Promise} true if has run, false if not node\n */\n\nexport function clearNodeFolder(options) {\n options = fillOptionsWithDefaults(options);\n var method = chooseMethod(options);\n\n if (method.type === 'node') {\n return method.clearNodeFolder().then(function () {\n return true;\n });\n } else {\n return Promise.resolve(false);\n }\n}\n/**\n * if set, this method is enforced,\n * no mather what the options are\n */\n\nvar ENFORCED_OPTIONS;\nexport function enforceOptions(options) {\n ENFORCED_OPTIONS = options;\n} // PROTOTYPE\n\nBroadcastChannel.prototype = {\n postMessage: function postMessage(msg) {\n if (this.closed) {\n throw new Error('BroadcastChannel.postMessage(): ' + 'Cannot post message after channel has closed');\n }\n\n return _post(this, 'message', msg);\n },\n postInternal: function postInternal(msg) {\n return _post(this, 'internal', msg);\n },\n\n set onmessage(fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _removeListenerObject(this, 'message', this._onML);\n\n if (fn && typeof fn === 'function') {\n this._onML = listenObj;\n\n _addListenerObject(this, 'message', listenObj);\n } else {\n this._onML = null;\n }\n },\n\n addEventListener: function addEventListener(type, fn) {\n var time = this.method.microSeconds();\n var listenObj = {\n time: time,\n fn: fn\n };\n\n _addListenerObject(this, type, listenObj);\n },\n removeEventListener: function removeEventListener(type, fn) {\n var obj = this._addEL[type].find(function (obj) {\n return obj.fn === fn;\n });\n\n _removeListenerObject(this, type, obj);\n },\n close: function close() {\n var _this = this;\n\n if (this.closed) return;\n this.closed = true;\n var awaitPrepare = this._prepP ? this._prepP : Promise.resolve();\n this._onML = null;\n this._addEL.message = [];\n return awaitPrepare.then(function () {\n return Promise.all(_this._befC.map(function (fn) {\n return fn();\n }));\n }).then(function () {\n return _this.method.close(_this._state);\n });\n },\n\n get type() {\n return this.method.type;\n }\n\n};\n\nfunction _post(broadcastChannel, type, msg) {\n var time = broadcastChannel.method.microSeconds();\n var msgObj = {\n time: time,\n type: type,\n data: msg\n };\n var awaitPrepare = broadcastChannel._prepP ? broadcastChannel._prepP : Promise.resolve();\n return awaitPrepare.then(function () {\n return broadcastChannel.method.postMessage(broadcastChannel._state, msgObj);\n });\n}\n\nfunction _prepareChannel(channel) {\n var maybePromise = channel.method.create(channel.name, channel.options);\n\n if (isPromise(maybePromise)) {\n channel._prepP = maybePromise;\n maybePromise.then(function (s) {\n // used in tests to simulate slow runtime\n\n /*if (channel.options.prepareDelay) {\n await new Promise(res => setTimeout(res, this.options.prepareDelay));\n }*/\n channel._state = s;\n });\n } else {\n channel._state = maybePromise;\n }\n}\n\nfunction _hasMessageListeners(channel) {\n if (channel._addEL.message.length > 0) return true;\n if (channel._addEL.internal.length > 0) return true;\n return false;\n}\n\nfunction _addListenerObject(channel, type, obj) {\n channel._addEL[type].push(obj);\n\n _startListening(channel);\n}\n\nfunction _removeListenerObject(channel, type, obj) {\n channel._addEL[type] = channel._addEL[type].filter(function (o) {\n return o !== obj;\n });\n\n _stopListening(channel);\n}\n\nfunction _startListening(channel) {\n if (!channel._iL && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n var listenerFn = function listenerFn(msgObj) {\n channel._addEL[msgObj.type].forEach(function (obj) {\n if (msgObj.time >= obj.time) {\n obj.fn(msgObj.data);\n }\n });\n };\n\n var time = channel.method.microSeconds();\n\n if (channel._prepP) {\n channel._prepP.then(function () {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n });\n } else {\n channel._iL = true;\n channel.method.onMessage(channel._state, listenerFn, time);\n }\n }\n}\n\nfunction _stopListening(channel) {\n if (channel._iL && !_hasMessageListeners(channel)) {\n // noone is listening, stop subscribing\n channel._iL = false;\n var time = channel.method.microSeconds();\n channel.method.onMessage(channel._state, null, time);\n }\n}","/* global WorkerGlobalScope */\nfunction add(fn) {\n if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {// this is run inside of a webworker\n } else {\n /**\n * if we are on react-native, there is no window.addEventListener\n * @link https://github.com/pubkey/unload/issues/6\n */\n if (typeof window.addEventListener !== 'function') return;\n /**\n * for normal browser-windows, we use the beforeunload-event\n */\n\n window.addEventListener('beforeunload', function () {\n fn();\n }, true);\n /**\n * for iframes, we have to use the unload-event\n * @link https://stackoverflow.com/q/47533670/3443137\n */\n\n window.addEventListener('unload', function () {\n fn();\n }, true);\n }\n /**\n * TODO add fallback for safari-mobile\n * @link https://stackoverflow.com/a/26193516/3443137\n */\n\n}\n\nexport default {\n add: add\n};","import isNode from 'detect-node';\nimport BrowserMethod from './browser.js';\nimport NodeMethod from './node.js';\nvar USE_METHOD = isNode ? NodeMethod : BrowserMethod;\nvar LISTENERS = new Set();\nvar startedListening = false;\n\nfunction startListening() {\n if (startedListening) return;\n startedListening = true;\n USE_METHOD.add(runAll);\n}\n\nexport function add(fn) {\n startListening();\n if (typeof fn !== 'function') throw new Error('Listener is no function');\n LISTENERS.add(fn);\n var addReturn = {\n remove: function remove() {\n return LISTENERS[\"delete\"](fn);\n },\n run: function run() {\n LISTENERS[\"delete\"](fn);\n return fn();\n }\n };\n return addReturn;\n}\nexport function runAll() {\n var promises = [];\n LISTENERS.forEach(function (fn) {\n promises.push(fn());\n LISTENERS[\"delete\"](fn);\n });\n return Promise.all(promises);\n}\nexport function removeAll() {\n LISTENERS.clear();\n}\nexport function getSize() {\n return LISTENERS.size;\n}\nexport default {\n add: add,\n runAll: runAll,\n removeAll: removeAll,\n getSize: getSize\n};","import { sleep, randomToken } from './util.js';\nimport unload from 'unload';\n\nvar LeaderElection = function LeaderElection(channel, options) {\n this._channel = channel;\n this._options = options;\n this.isLeader = false;\n this.isDead = false;\n this.token = randomToken();\n this._isApl = false; // _isApplying\n\n this._reApply = false; // things to clean up\n\n this._unl = []; // _unloads\n\n this._lstns = []; // _listeners\n\n this._invs = []; // _intervals\n};\n\nLeaderElection.prototype = {\n applyOnce: function applyOnce() {\n var _this = this;\n\n if (this.isLeader) return Promise.resolve(false);\n if (this.isDead) return Promise.resolve(false); // do nothing if already running\n\n if (this._isApl) {\n this._reApply = true;\n return Promise.resolve(false);\n }\n\n this._isApl = true;\n var stopCriteria = false;\n var recieved = [];\n\n var handleMessage = function handleMessage(msg) {\n if (msg.context === 'leader' && msg.token != _this.token) {\n recieved.push(msg);\n\n if (msg.action === 'apply') {\n // other is applying\n if (msg.token > _this.token) {\n // other has higher token, stop applying\n stopCriteria = true;\n }\n }\n\n if (msg.action === 'tell') {\n // other is already leader\n stopCriteria = true;\n }\n }\n };\n\n this._channel.addEventListener('internal', handleMessage);\n\n var ret = _sendMessage(this, 'apply') // send out that this one is applying\n .then(function () {\n return sleep(_this._options.responseTime);\n }) // let others time to respond\n .then(function () {\n if (stopCriteria) return Promise.reject(new Error());else return _sendMessage(_this, 'apply');\n }).then(function () {\n return sleep(_this._options.responseTime);\n }) // let others time to respond\n .then(function () {\n if (stopCriteria) return Promise.reject(new Error());else return _sendMessage(_this);\n }).then(function () {\n return _beLeader(_this);\n }) // no one disagreed -> this one is now leader\n .then(function () {\n return true;\n })[\"catch\"](function () {\n return false;\n }) // apply not successfull\n .then(function (success) {\n _this._channel.removeEventListener('internal', handleMessage);\n\n _this._isApl = false;\n\n if (!success && _this._reApply) {\n _this._reApply = false;\n return _this.applyOnce();\n } else return success;\n });\n\n return ret;\n },\n awaitLeadership: function awaitLeadership() {\n if (\n /* _awaitLeadershipPromise */\n !this._aLP) {\n this._aLP = _awaitLeadershipOnce(this);\n }\n\n return this._aLP;\n },\n die: function die() {\n var _this2 = this;\n\n if (this.isDead) return;\n this.isDead = true;\n\n this._lstns.forEach(function (listener) {\n return _this2._channel.removeEventListener('internal', listener);\n });\n\n this._invs.forEach(function (interval) {\n return clearInterval(interval);\n });\n\n this._unl.forEach(function (uFn) {\n uFn.remove();\n });\n\n return _sendMessage(this, 'death');\n }\n};\n\nfunction _awaitLeadershipOnce(leaderElector) {\n if (leaderElector.isLeader) return Promise.resolve();\n return new Promise(function (res) {\n var resolved = false;\n\n var finish = function finish() {\n if (resolved) return;\n resolved = true;\n clearInterval(interval);\n\n leaderElector._channel.removeEventListener('internal', whenDeathListener);\n\n res(true);\n }; // try once now\n\n\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) finish();\n }); // try on fallbackInterval\n\n var interval = setInterval(function () {\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) finish();\n });\n }, leaderElector._options.fallbackInterval);\n\n leaderElector._invs.push(interval); // try when other leader dies\n\n\n var whenDeathListener = function whenDeathListener(msg) {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector.applyOnce().then(function () {\n if (leaderElector.isLeader) finish();\n });\n }\n };\n\n leaderElector._channel.addEventListener('internal', whenDeathListener);\n\n leaderElector._lstns.push(whenDeathListener);\n });\n}\n/**\n * sends and internal message over the broadcast-channel\n */\n\n\nfunction _sendMessage(leaderElector, action) {\n var msgJson = {\n context: 'leader',\n action: action,\n token: leaderElector.token\n };\n return leaderElector._channel.postInternal(msgJson);\n}\n\nfunction _beLeader(leaderElector) {\n leaderElector.isLeader = true;\n var unloadFn = unload.add(function () {\n return leaderElector.die();\n });\n\n leaderElector._unl.push(unloadFn);\n\n var isLeaderListener = function isLeaderListener(msg) {\n if (msg.context === 'leader' && msg.action === 'apply') {\n _sendMessage(leaderElector, 'tell');\n }\n };\n\n leaderElector._channel.addEventListener('internal', isLeaderListener);\n\n leaderElector._lstns.push(isLeaderListener);\n\n return _sendMessage(leaderElector, 'tell');\n}\n\nfunction fillOptionsWithDefaults(options, channel) {\n if (!options) options = {};\n options = JSON.parse(JSON.stringify(options));\n\n if (!options.fallbackInterval) {\n options.fallbackInterval = 3000;\n }\n\n if (!options.responseTime) {\n options.responseTime = channel.method.averageResponseTime(channel.options);\n }\n\n return options;\n}\n\nexport function createLeaderElection(channel, options) {\n if (channel._leaderElector) {\n throw new Error('BroadcastChannel already has a leader-elector');\n }\n\n options = fillOptionsWithDefaults(options, channel);\n var elector = new LeaderElection(channel, options);\n\n channel._befC.push(function () {\n return elector.die();\n });\n\n channel._leaderElector = elector;\n return elector;\n}","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots[header.value]\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on['click'] = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots[slotName]\n const regularSlot = computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({ item: props.item, header, value }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return h('td', {\n class: {\n [textAlign]: true,\n 'v-data-table__divider': header.divider,\n },\n }, children)\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots[slotName]\n const regularSlot = computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({ item: props.item, header, value }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', data)]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({ group, groupBy: props.options.groupBy, items, headers: this.computedHeaders, isOpen, toggle: toggleFn, remove: removeFn }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({ group, groupBy: props.options.groupBy, items, headers: this.computedHeaders, isOpen, toggle: toggleFn }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item),\n index: i,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({ item, headers: this.computedHeaders }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map(item => this.genDefaultExpandedRow(item))\n : items.map(item => this.genDefaultSimpleRow(item))\n },\n genDefaultExpandedRow (item: any): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({ item, headers: this.computedHeaders })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot(data) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n }, [\n this.proxySlot('top', getSlot(this, 'top', props, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot as any,\n },\n })\n },\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',{attrs:{\"height\":_vm.height}},[_c('v-tabs',{attrs:{\"background-color\":_vm.proMode ? 'grey darken-3' : 'grey lighten-3',\"color\":_vm.proMode ? 'yellow' : 'black',\"grow\":\"\",\"height\":\"30\"},model:{value:(_vm.doctab),callback:function ($$v) {_vm.doctab=$$v},expression:\"doctab\"}},_vm._l((_vm.docs),function(doc){return _c('v-tab',{key:doc.dockey,on:{\"click\":function($event){return _vm.getURL(doc.dockey)}}},[_vm._v(\" \"+_vm._s((doc.name ? doc.name : doc.dockey))+\" \")])}),1),_c('v-tabs-items',{model:{value:(_vm.doctab),callback:function ($$v) {_vm.doctab=$$v},expression:\"doctab\"}},_vm._l((_vm.docs),function(doc){return _c('v-tab-item',{key:doc.dockey},[(doc.filetype == 'pdf' || doc.type == 'pdf')?_c('iframe',{style:('min-height:' + _vm.iHeight + ' !important'),attrs:{\"src\":_vm.activeURL,\"width\":\"100%\",\"height\":_vm.iHeight}}):_vm._e(),_c('v-scroll-y-transition',[_c('v-sheet',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showHistory),expression:\"showHistory\"}],attrs:{\"color\":\"grey darken-2\",\"height\":\"300\"}},[_c('v-data-table',{attrs:{\"dense\":\"\",\"headers\":_vm.historyHeaders,\"items\":_vm.history,\"items-per-page\":100,\"height\":\"300\",\"dark\":\"\",\"fixed-header\":\"\",\"hide-default-footer\":\"\"},scopedSlots:_vm._u([{key:\"item.Size\",fn:function(ref){\nvar item = ref.item;\nreturn [_vm._v(\" \"+_vm._s(_vm.formatBytes(item.Size))+\" \")]}}],null,true)})],1)],1),_c('v-btn',{attrs:{\"color\":\"grey darken-4\",\"dark\":\"\",\"bottom\":\"\",\"fixed\":\"\",\"left\":\"\",\"x-small\":\"\",\"fab\":\"\",\"elevation\":\"2\"},on:{\"click\":_vm.getHistory}},[_c('v-icon',[_vm._v(\"mdi-history\")])],1)],1)}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","