From f310fd671e26c5dc3db93c91d3dbbb62095d95fc Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sun, 15 Apr 2018 00:45:04 +0530 Subject: [PATCH] getRootLabel for AccountTree --- models/doctype/Account/Account.js | 8 +- www/dist/js/bundle.js | 626 +++++++++++++++++------------- yarn.lock | 92 ++++- 3 files changed, 441 insertions(+), 285 deletions(-) diff --git a/models/doctype/Account/Account.js b/models/doctype/Account/Account.js index 75048655..5bd6ef11 100644 --- a/models/doctype/Account/Account.js +++ b/models/doctype/Account/Account.js @@ -88,6 +88,10 @@ module.exports = { }, treeSettings: { - parentField: 'parentAccount' + parentField: 'parentAccount', + async getRootLabel() { + let accountingSettings = await frappe.getSingle('AccountingSettings'); + return accountingSettings.companyName; + } } -} \ No newline at end of file +} diff --git a/www/dist/js/bundle.js b/www/dist/js/bundle.js index ff5da298..f2c0813a 100644 --- a/www/dist/js/bundle.js +++ b/www/dist/js/bundle.js @@ -4575,7 +4575,7 @@ if (typeof undefined === 'function' && undefined.amd) { } }).call(commonjsGlobal); - +//# sourceMappingURL=showdown.js.map }); var moment = createCommonjsModule(function (module, exports) { @@ -9321,7 +9321,14 @@ var format = { value = markdown.makeHtml(value || ''); } else if (field.fieldtype === 'Date') { - value = moment(value).format(frappejs.SystemSettings.dateFormat.toUpperCase()); + let dateFormat; + if (!frappejs.SystemSettings) { + dateFormat = 'yyyy-mm-dd'; + } else { + dateFormat = frappejs.SystemSettings.dateFormat; + } + + value = moment(value).format(dateFormat.toUpperCase()); } else { if (value===null || value===undefined) { @@ -23068,7 +23075,7 @@ Popper.placements = placements; Popper.Defaults = Defaults; - +//# sourceMappingURL=popper.js.map var popper = Object.freeze({ @@ -26967,7 +26974,7 @@ exports.Tooltip = Tooltip; Object.defineProperty(exports, '__esModule', { value: true }); }))); - +//# sourceMappingURL=bootstrap.js.map }); unwrapExports(bootstrap); @@ -27025,12 +27032,13 @@ var dropdown = Dropdown; var ui = { create(tag, obj) { - if(!obj) { + if(tag.includes('<')) { let div = document.createElement('div'); div.innerHTML = tag.trim(); return div.firstChild; } let element = document.createElement(tag); + obj = obj || {}; let $ = (expr, con) => { return typeof expr === "string" @@ -27757,6 +27765,50 @@ var list = class BaseList extends observable { } }; +let templates = {}; + +class BaseComponent extends HTMLElement { + constructor(name) { + super(); + + this._name = name; + this._shadowRoot = this.attachShadow({ mode: 'open' }); + + if (!templates[name]) { + makeTemplate(name, this.templateHTML); + } + + let template = getTemplate(name); + this._shadowRoot.appendChild(template); + } + + triggerEvent(eventName, detail = {}) { + const event = new CustomEvent(eventName, { + bubbles: true, + composed: true, + detail + }); + this.dispatchEvent(event); + } +} + + +function makeTemplate(name, html) { + if (!templates[name]) { + let template = document.createElement('template'); + template.id = name; + template.innerHTML = html; + + templates[name] = template; + } +} + +function getTemplate(name) { + return templates[name].content.cloneNode(true); +} + +var baseComponent = BaseComponent; + var alert$1 = {"name":"alert","figma":{"id":"0:5","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["warning","triangle","exclamation","point"],"width":16,"height":16,"path":""}; var beaker = {"name":"beaker","figma":{"id":"0:26","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["experiment","labs","experimental","feature","test","science","education","study","development","testing"],"width":16,"height":16,"path":""}; var bell = {"name":"bell","figma":{"id":"0:34","file":"FP7lqd1V00LUaT5zvdklkkZr"},"keywords":["notification"],"width":14,"height":16,"path":""}; @@ -28140,7 +28192,6 @@ object-assign @license MIT */ -/* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; @@ -28287,152 +28338,57 @@ Object.keys(data$2).forEach(function(key) { // Import data into exports var octicons = data$2; -var utils$3 = { - convertFieldsToDatatableColumns(fields, layout = 'fixed') { - return fields.map(field => { - if (!field.width) { - if (layout==='ratio') { - field.width = 1; - } else if (layout==='fixed') { - field.width = 120; - } - } - return { - id: field.fieldname || frappejs.slug(field.label), - field: field, - content: field.label, - editable: true, - sortable: false, - resizable: true, - dropdown: false, - width: field.width, - align: ['Int', 'Float', 'Currency'].includes(field.fieldtype) ? 'right' : 'left', - format: (value) => frappejs.format(value, field) - } - }); +var treeNode = "\n\n\n\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
"; - }, +var treeNode$1 = Object.freeze({ + default: treeNode +}); - addButton(label, parent, action, unhide = true) { - const link = frappejs.ui.add('button', 'btn btn-sm btn-outline-secondary', parent, label); - link.type = 'button'; - link.addEventListener('click', action); - if (unhide) { - parent.classList.remove('hide'); - } - return link; - }, - - // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/ - forEachNode(nodeList, callback, scope) { - if(!nodeList) return; - for (var i = 0; i < nodeList.length; i++) { - callback.call(scope, nodeList[i], i); - } - }, - - activate($parent, $child, commonSelector, activeClass='active', index = -1) { - let $children = $parent.querySelectorAll(`${commonSelector}.${activeClass}`); - - if (typeof $child === 'string') { - $child = $parent.querySelector($child); - } - - this.forEachNode($children, (node, i) => { - if(index >= 0 && i <= index) return; - node.classList.remove(activeClass); - }); - - $child.classList.add(activeClass); - } -}; +var require$$0$1 = ( treeNode$1 && treeNode ) || treeNode$1; const iconSet = { open: octicons["triangle-down"].toSVG({ width: "12", height: "12", "class": "tree-icon-open" }), close: octicons["triangle-right"].toSVG({ width: "12", height: "12", "class": "tree-icon-closed" }) }; -let TreeTemplate = document.createElement('template'); -TreeTemplate.innerHTML = ` - -
- -
-`; - -class Tree extends HTMLElement { - constructor() { - super(); - - this.attachShadow({ mode: 'open' }) - .appendChild(TreeTemplate.content.cloneNode(true)); - } -} - -window.customElements.define('f-tree', Tree); - -let TreeNodeTemplate = document.createElement('template'); -TreeNodeTemplate.innerHTML = ` - -
-
-
-
-
- -`; - - -class TreeNode extends HTMLElement { +class TreeNode extends baseComponent { static get observedAttributes() { - return ['label', 'expanded'] + return ['label', 'expanded']; + } + + get templateHTML() { + return require$$0$1; } constructor() { - super(); + super('TreeNode'); - let shadowRoot = this.attachShadow({ mode: 'open' }); - shadowRoot.appendChild(TreeNodeTemplate.content.cloneNode(true)); + let shadowRoot = this._shadowRoot; this.iconEl = shadowRoot.querySelector('.tree-node-icon'); this.labelEl = shadowRoot.querySelector('.tree-node-label'); this.actionsEl = shadowRoot.querySelector('.tree-node-actions'); + this.childrenEl = shadowRoot.querySelector('.tree-node-children'); + + this.addEventListener('click', e => { + e.stopImmediatePropagation(); + + if (e.target.matches('[slot="actions"]')) { + this.triggerEvent('tree-node-action', { + actionEl: e.target + }); + return; + } + + if (this.expanded) { + this.removeAttribute('expanded'); + } else { + this.setAttribute('expanded', ''); + } + }); + this.onExpand(); } attributeChangedCallback(name, oldValue, newValue) { - console.log(name, oldValue, newValue); - switch(name) { case 'label': { this.labelEl.innerHTML = newValue || ''; @@ -28440,26 +28396,67 @@ class TreeNode extends HTMLElement { } case 'expanded': { - this.expanded = this.hasAttribute('expanded'); - - if (this.expanded) { - this.iconEl.innerHTML = iconSet.open; - } else { - this.iconEl.innerHTML = iconSet.close; - } + const isExpanded = this.hasAttribute('expanded'); + this.onExpand(isExpanded); break; } default: break; } } + + onExpand(isExpanded = false) { + if (this.isLeaf) return; + + if (isExpanded) { + this.iconEl.innerHTML = iconSet.open; + this.childrenEl.style.display = ''; + } else { + this.iconEl.innerHTML = iconSet.close; + this.childrenEl.style.display = 'none'; + } + + this.triggerEvent('tree-node-expand', { + expanded: isExpanded + }); + } + + get isRoot() { + return this.hasAttribute('is-root'); + } + + get expanded() { + return this.hasAttribute('expanded'); + } + + get isLeaf() { + return this.hasAttribute('is-leaf'); + } } window.customElements.define('f-tree-node', TreeNode); -// const keyboard = require('frappejs/client/ui/keyboard'); +var index = "\n\n\n\n
\n \n
\n"; -var tree$2 = class BaseTree extends list { +var tree = Object.freeze({ + default: index +}); + +var require$$0$2 = ( tree && index ) || tree; + +class Tree extends baseComponent { + get templateHTML() { + return require$$0$2; + } + + constructor() { + super('Tree'); + } +} + +window.customElements.define('f-tree', Tree); + +var tree$3 = class BaseTree extends list { init() { this.meta = frappejs.getMeta(this.doctype); @@ -28494,8 +28491,9 @@ var tree$2 = class BaseTree extends list { this.body.innerHTML = ''; this.dirty = false; - let accountingSettings = await frappejs.db.getSingle('AccountingSettings'); - let rootLabel = accountingSettings.companyName; + const rootLabel = this.treeSettings.getRootLabel ? + await this.treeSettings.getRootLabel() : + this.doctype; this.renderTree(rootLabel); this.trigger('state-change'); @@ -28512,74 +28510,62 @@ var tree$2 = class BaseTree extends list { } renderTree(rootLabel) { - // const tree = new Tree(); - // tree.getChildNodes = async node => { - // const children = await this.getData(node) || []; - // return children.map(d => ({ - // label: d.name, - // value: d.name, - // expandable: d.isGroup - // })); - // } - // tree.rootNode = { - // label: rootLabel, - // value: rootLabel, - // isRoot: 1, - // expandable: 1 - // } - // this.body.appendChild(tree); - this.rootNode = { label: rootLabel, value: rootLabel, isRoot: true, - expanded: true, - children: [] + isGroup: true, + children: null }; this.treeWrapper = frappejs.ui.create(` - - - - - - + ${this.getTreeNodeHTML(this.rootNode)} `); + const rootNode = this.treeWrapper.querySelector('f-tree-node[is-root]'); + rootNode.props = this.rootNode; + this.body.appendChild(this.treeWrapper); - frappejs.ui.on(this.treeWrapper, 'click', 'f-tree-node', async (e, treeNode) => { - if (treeNode.expanded) { - treeNode.removeAttribute('expanded'); - } else { - treeNode.setAttribute('expanded', ''); + frappejs.ui.on(this.treeWrapper, 'tree-node-expand', 'f-tree-node', async (e, treeNode) => { + if (!treeNode.expanded) return; + + if (!treeNode.props.children) { + const data = await this.getData(treeNode.props); + const children = data.map(d => ({ + label: d.name, + value: d.name, + isGroup: d.isGroup, + doc: d + })); + treeNode.props.children = children; + + for (let child of children) { + const childNode = frappejs.ui.create(this.getTreeNodeHTML(child)); + childNode.props = child; + treeNode.appendChild(childNode); + } } - - - // if (treeNode.hasAttribute('is-root')) { - // node = this.rootNode; - // } else { - - // } - - }); + frappejs.ui.on(this.treeWrapper, 'tree-node-action', 'f-tree-node', (e, treeNode) => { + if (treeNode.isRoot) return; - // this.tree = new Tree({ - // label: rootLabel, - // parent: this.body, - // method: async node => { - // const children = await this.getData(node) || []; - // return children.map(d => ({ - // label: d.name, - // value: d.name, - // expandable: d.isGroup - // })); - // } - // }); + const button = e.detail.actionEl; + const action = button.getAttribute('data-action'); + + if (action === 'edit') { + this.edit(treeNode.props.doc.name); + } + }); + + rootNode.click(); // open the root node + } + + edit(name) { + frappejs.desk.showFormModal(this.doctype, name); } async getData(node) { @@ -28601,65 +28587,38 @@ var tree$2 = class BaseTree extends list { }); } + getTreeNodeHTML(node) { + return ( + ` + ${this.getActionButtonsHTML()} + ` + ); + } + + getActionButtonsHTML() { + return [ + { id: 'edit', label: frappejs._('Edit') } + // { id: 'addChild', label: frappe._('Add Child') }, + // { id: 'delete', label: frappe._('Delete') }, + ].map(button => { + return ``; + }) + .join(''); + } + getFields() { let fields = [this.treeSettings.parentField, 'isGroup']; this.updateStandardFields(fields); return fields; } - - makeToolbar() { - this.makeSearch(); - - this.btnNew = this.page.addButton(frappejs._('New'), 'btn-primary', async () => { - await frappejs.router.setRoute('new', this.doctype); - }); - - this.btnDelete = this.page.addButton(frappejs._('Delete'), 'btn-secondary hide', async () => { - await frappejs.db.deleteMany(this.doctype, this.getCheckedRowNames()); - await this.refresh(); - }); - - this.btnReport = this.page.addButton(frappejs._('Report'), 'btn-outline-secondary hide', async () => { - await frappejs.router.setRoute('table', this.doctype); - }); - - this.on('state-change', () => { - const checkedCount = this.getCheckedRowNames().length; - this.btnDelete.classList.toggle('hide', checkedCount ? false : true); - this.btnNew.classList.toggle('hide', checkedCount ? true : false); - this.btnReport.classList.toggle('hide', checkedCount ? true : false); - }); - - this.page.body.addEventListener('click', (event) => { - if (event.target.classList.contains('checkbox')) { - this.trigger('state-change'); - } - }); - } - - makeSearch() { - this.toolbar = frappejs.ui.add('div', 'list-toolbar', this.parent); - this.toolbar.innerHTML = ` - - `; - - this.searchInput = this.toolbar.querySelector('input'); - this.searchInput.addEventListener('keypress', (event) => { - if (event.keyCode === 13) { - this.refresh(); - } - }); - - this.btnSearch = this.toolbar.querySelector('.btn-search'); - this.btnSearch.addEventListener('click', (event) => { - this.refresh(); - }); - } }; class BaseControl { @@ -41341,11 +41300,6 @@ var htmlmixed = createCommonjsModule(function (module, exports) { }); }); -// const frappe = require('frappejs'); - - // eslint-disable-line - // eslint-disable-line - class CodeControl extends base { makeInput() { if (!this.options) { @@ -49241,9 +49195,6 @@ DataTable.__version__ = packageJson.version; module.exports = DataTable; }); -// eslint-disable-line - - var modal = class Modal extends observable { constructor({ title, body, primary, secondary }) { super(); @@ -49320,6 +49271,66 @@ var modal = class Modal extends observable { } }; +var utils$3 = { + convertFieldsToDatatableColumns(fields, layout = 'fixed') { + return fields.map(field => { + if (!field.width) { + if (layout==='ratio') { + field.width = 1; + } else if (layout==='fixed') { + field.width = 120; + } + } + return { + id: field.fieldname || frappejs.slug(field.label), + field: field, + content: field.label, + editable: true, + sortable: false, + resizable: true, + dropdown: false, + width: field.width, + align: ['Int', 'Float', 'Currency'].includes(field.fieldtype) ? 'right' : 'left', + format: (value) => frappejs.format(value, field) + } + }); + + }, + + addButton(label, parent, action, unhide = true) { + const link = frappejs.ui.add('button', 'btn btn-sm btn-outline-secondary', parent, label); + link.type = 'button'; + link.addEventListener('click', action); + if (unhide) { + parent.classList.remove('hide'); + } + return link; + }, + + // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/ + forEachNode(nodeList, callback, scope) { + if(!nodeList) return; + for (var i = 0; i < nodeList.length; i++) { + callback.call(scope, nodeList[i], i); + } + }, + + activate($parent, $child, commonSelector, activeClass='active', index = -1) { + let $children = $parent.querySelectorAll(`${commonSelector}.${activeClass}`); + + if (typeof $child === 'string') { + $child = $parent.querySelector($child); + } + + this.forEachNode($children, (node, i) => { + if(index >= 0 && i <= index) return; + node.classList.remove(activeClass); + }); + + $child.classList.add(activeClass); + } +}; + var modelTable = class ModelTable { constructor({doctype, parent, layout, parentControl, getRowData, isDisabled, getTableData}) { @@ -50010,7 +50021,7 @@ var view = { return (frappejs.views['List'] && frappejs.views['List'][doctype]) || list; }, getTreeClass(doctype) { - return (frappejs.views['Tree'] && frappejs.views['Tree'][doctype] || tree$2); + return (frappejs.views['Tree'] && frappejs.views['Tree'][doctype] || tree$3); } }; @@ -57850,11 +57861,41 @@ module.exports = installCompat; /***/ }) /******/ ]); }); - +//# sourceMappingURL=nunjucks.js.map }); unwrapExports(nunjucks); +async function getHTML(doctype, name) { + const meta = frappejs.getMeta(doctype); + const printFormat = await frappejs.getDoc('PrintFormat', meta.print.printFormat); + let doc = await frappejs.getDoc(doctype, name); + let context = {doc: doc, frappe: frappejs}; + + console.log(context); + + let html; + try { + html = nunjucks.renderString(printFormat.template, context); + } catch (error) { + console.log(error); + html = ''; + } + + return ` + + `; +} + +var print = { + getHTML +}; + +const { getHTML: getHTML$1 } = print; + + nunjucks.configure({ autoescape: false }); var printpage = class PrintPage extends page { @@ -57868,6 +57909,10 @@ var printpage = class PrintPage extends page { this.addButton(frappejs._('Edit'), 'primary', () => { frappejs.router.setRoute('edit', this.doctype, this.name); }); + + this.addButton(frappejs._('PDF'), 'secondary', async () => { + frappejs.getPDF(this.doctype, this.name); + }); } async show(params) { @@ -57882,14 +57927,11 @@ var printpage = class PrintPage extends page { } async renderTemplate() { - this.printFormat = await frappejs.getDoc('PrintFormat', this.meta.print.printFormat); let doc = await frappejs.getDoc(this.doctype, this.name); - let context = {doc: doc, frappe: frappejs}; - frappejs.desk.setActiveDoc(doc); - + const html = await getHTML$1(this.doctype, this.name); try { - this.body.innerHTML = ``; + this.body.innerHTML = html; // this.setTitle(doc.name); } catch (e) { this.renderError('Template Error', e); @@ -58051,10 +58093,6 @@ var menu = class DeskMenu { } }; -// const Search = require('./search'); - - - const views = {}; views.Form = formpage; views.List = listpage; @@ -58232,6 +58270,37 @@ var desk = class Desk { } }; +async function getPDF(doctype, name) { + const headers = { + 'Accept': 'application/pdf', + 'Content-Type': 'application/json' + }; + + const res = await fetch('/api/method/pdf', { + method: 'POST', + headers, + body: JSON.stringify({ doctype, name }) + }); + + const blob = await res.blob(); + showFile(blob); +} + + +function showFile(blob, filename='file.pdf') { + const newBlob = new Blob([blob], { type: "application/pdf" }); + const data = window.URL.createObjectURL(newBlob); + const link = document.createElement('a'); + link.href = data; + link.download = filename; + link.click(); + setTimeout(() => window.URL.revokeObjectURL(data), 100); +} + +var pdf = { + getPDF +}; + var FilterItem = { name: "FilterItem", doctype: "DocType", @@ -58755,6 +58824,7 @@ var models = { frappejs.ui = ui; +const { getPDF: getPDF$1 } = pdf; var client = { async start({server, columns = 2, makeDesk = 1}) { @@ -58798,13 +58868,11 @@ var client = { return await response.json(); }; + + frappejs.getPDF = getPDF$1; } }; -// baseclass for report -// `url` url for report -// `getColumns` return columns - var reportpage = class ReportPage extends page { constructor({title, filterFields}) { super({title: title, hasRoute: true}); @@ -59019,7 +59087,11 @@ module.exports = { }, treeSettings: { - parentField: 'parentAccount' + parentField: 'parentAccount', + async getRootLabel() { + let accountingSettings = await frappe.getSingle('AccountingSettings'); + return accountingSettings.companyName; + } } }; }); @@ -59624,9 +59696,9 @@ var countryInfo$1 = Object.freeze({ default: countryInfo }); -var require$$0$10 = ( countryInfo$1 && countryInfo ) || countryInfo$1; +var require$$0$13 = ( countryInfo$1 && countryInfo ) || countryInfo$1; -const countryList = Object.keys(require$$0$10).sort(); +const countryList = Object.keys(require$$0$13).sort(); var AccountingSettings = { name: "AccountingSettings", @@ -60691,9 +60763,8 @@ var client$2 = { } }; -const countryList$1 = Object.keys(require$$0$10).sort(); +const countryList$1 = Object.keys(require$$0$13).sort(); -// start server client.start({ server: 'localhost:8000', makeDesk: 0 @@ -60715,3 +60786,4 @@ var www = false; return www; }()); +//# sourceMappingURL=bundle.js.map diff --git a/yarn.lock b/yarn.lock index 1b3f2230..c0a1ce4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -713,6 +713,13 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + camelcase-css@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-1.0.1.tgz#157c4238265f5cf94a1dffde86446552cbf3f705" @@ -860,6 +867,12 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-css@4.1.x: + version "4.1.11" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.1.11.tgz#2ecdf145aba38f54740f26cefd0ff3e03e125d6a" + dependencies: + source-map "0.5.x" + cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" @@ -973,6 +986,10 @@ commander@2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" +commander@2.15.x, commander@~2.15.0: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + commander@^2.13.0: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" @@ -1710,6 +1727,10 @@ estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +estree-walker@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e" + estree-walker@^0.3.0: version "0.3.1" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.3.1.tgz#e6b1a51cf7292524e7237c312e5fe6660c1ce1aa" @@ -2038,6 +2059,7 @@ frappejs@../frappejs: frappe-datatable frappe/datatable frappejs "../frappejs" jquery "^3.3.1" + mkdirp "^0.5.1" mocha "^4.1.0" moment "^2.20.1" mysql "^2.15.0" @@ -2051,6 +2073,7 @@ frappejs@../frappejs: puppeteer "^1.2.0" rollup "^0.55.1" rollup-plugin-commonjs "^8.3.0" + rollup-plugin-html "^0.2.1" rollup-plugin-json "^2.3.0" rollup-plugin-node-resolve "^3.0.2" rollup-plugin-postcss "^1.2.7" @@ -2440,7 +2463,7 @@ hawk@~6.0.2: hoek "4.x.x" sntp "2.x.x" -he@1.1.1: +he@1.1.1, he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -2468,6 +2491,18 @@ html-comment-regex@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e" +html-minifier@^3.0.2: + version "3.5.14" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.14.tgz#88653b24b344274e3e3d7052f1541ebea054ac60" + dependencies: + camel-case "3.0.x" + clean-css "4.1.x" + commander "2.15.x" + he "1.1.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.3.x" + http-errors@1.6.2, http-errors@~1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" @@ -3101,6 +3136,10 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + lowercase-keys@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" @@ -3366,6 +3405,12 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + dependencies: + lower-case "^1.1.1" + node-fetch@^1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -3681,6 +3726,12 @@ package-json@^4.0.0: registry-url "^3.0.3" semver "^5.1.0" +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + dependencies: + no-case "^2.2.0" + parse-author@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" @@ -4607,6 +4658,10 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -4795,6 +4850,13 @@ rollup-plugin-commonjs@^8.3.0: resolve "^1.4.0" rollup-pluginutils "^2.0.1" +rollup-plugin-html@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-html/-/rollup-plugin-html-0.2.1.tgz#a1862eca87ae54b677689d0d4133911e8226463d" + dependencies: + html-minifier "^3.0.2" + rollup-pluginutils "^1.5.0" + rollup-plugin-json@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.0.tgz#3c07a452c1b5391be28006fbfff3644056ce0add" @@ -4850,6 +4912,13 @@ rollup-plugin-sass@^0.5.3: estree-walker "^0.3.0" micromatch "^2.3.11" +rollup-pluginutils@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408" + dependencies: + estree-walker "^0.2.1" + minimatch "^3.0.2" + rollup@^0.55.1: version "0.55.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.55.1.tgz#baf4f23abe3014b29e56dea7d72d9946e56ac7dd" @@ -5127,17 +5196,17 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" +source-map@0.5.x, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + source-map@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" dependencies: amdefine ">=0.0.4" -source-map@^0.5.3, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -5565,6 +5634,13 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +uglify-js@3.3.x: + version "3.3.21" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.21.tgz#851a34cbb31840ecb881968ed07dd3a61e7264a0" + dependencies: + commander "~2.15.0" + source-map "~0.6.1" + uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -5656,6 +5732,10 @@ update-notifier@^2.4.0: semver-diff "^2.0.0" xdg-basedir "^3.0.0" +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + uri-js@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"