diff --git a/README.md b/README.md index 5ddd090e..ddd0b24a 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ A lightweight contextual component based table addon that follows Ember's action - Easy table manipulation - Easy override to table header, body, and footer - Contextual component for header, body, and footer, as well as loading, no data, and expanded row +- **EXPERIMENTAL** Occlusion rendering leveraging [vertical-collection](https://github.com/html-next/vertical-collection). See [Demo](http://offirgolan.github.io/ember-light-table/#/cookbook/occlusion-rendering). ## Installation diff --git a/addon/components/light-table.js b/addon/components/light-table.js index 3d87fcd6..dff036a8 100644 --- a/addon/components/light-table.js +++ b/addon/components/light-table.js @@ -38,7 +38,7 @@ function intersections(array1, array2) { const LightTable = Component.extend({ layout, - classNameBindings: [':ember-light-table'], + classNameBindings: [':ember-light-table', 'occlusion'], attributeBindings: ['style'], media: service(), @@ -159,6 +159,27 @@ const LightTable = Component.extend({ */ breakpoints: null, + /** + * Toggles occlusion rendering functionality. Currently experimental. + * If set to true, you must set {{#crossLink 't.body/estimatedRowHeight:property'}}{{/crossLink}} to + * something other than the default value. + * + * @property occlusion + * @type Boolean + * @default False + */ + occlusion: false, + + /** + * Estimated size of a row. Used in `vertical-collection` to determine roughly the number + * of rows exist out of the viewport. + * + * @property estimatedRowHeight + * @type Number + * @default false + */ + estimatedRowHeight: 0, + /** * Table component shared options * @@ -170,7 +191,9 @@ const LightTable = Component.extend({ return { height: this.get('height'), fixedHeader: false, - fixedFooter: false + fixedFooter: false, + occlusion: this.get('occlusion'), + estimatedRowHeight: this.get('estimatedRowHeight') }; }).readOnly(), diff --git a/addon/components/lt-body.js b/addon/components/lt-body.js index 9aca7050..5d50e12d 100644 --- a/addon/components/lt-body.js +++ b/addon/components/lt-body.js @@ -316,12 +316,35 @@ export default Component.extend({ this.setupScrollOffset(); }, + didInsertElement() { + this._super(...arguments); + if (this.get('sharedOptions.occlusion')) { + this._setupScrollAreaDimensions(); + } + }, + destroy() { this._super(...arguments); run.cancel(this._checkTargetOffsetTimer); run.cancel(this._setTargetOffsetTimer); }, + /** + * Calculates the available height remaining in the body of the table by taking the table height defined + * on the light table component and subtracting the rendered height of the header. + * May need to extend this to include the footer. + * + * @method _setupScrollAreaDimensions + * @private + */ + _setupScrollAreaDimensions() { + const lightTableContainer = this.element.parentElement; + const { height: totalHeight } = lightTableContainer.getBoundingClientRect(); + const headerElem = lightTableContainer.querySelector('.lt-head-wrap'); + const { height: headerHeight } = headerElem.getBoundingClientRect(); + this.set('height', totalHeight - headerHeight); + }, + _setupVirtualScrollbar() { let { fixedHeader, fixedFooter } = this.get('sharedOptions'); this.set('useVirtualScrollbar', fixedHeader || fixedFooter); @@ -423,9 +446,7 @@ export default Component.extend({ if (canSelect) { if (e.shiftKey && multiSelect) { - rows - .slice(Math.min(currIndex, prevIndex), Math.max(currIndex, prevIndex) + 1) - .forEach((r) => r.set('selected', !isSelected)); + rows.slice(Math.min(currIndex, prevIndex), Math.max(currIndex, prevIndex) + 1).forEach((r) => r.set('selected', !isSelected)); } else if ((!multiSelectRequiresKeyboard || (e.ctrlKey || e.metaKey)) && multiSelect) { row.toggleProperty('selected'); } else { diff --git a/addon/styles/addon.css b/addon/styles/addon.css index eeacbf6a..919cad6c 100644 --- a/addon/styles/addon.css +++ b/addon/styles/addon.css @@ -63,6 +63,28 @@ flex: 1 0 auto; } +.ember-light-table .lt-scrollable.vertical-collection { + overflow-y: auto; +} + +/* This is for when useVirtualScrollbar is disabled */ +.ember-light-table.occlusion .lt-head-wrap { + padding-right: 14px; +} + +.ember-light-table.occlusion .lt-head-wrap table { + display: inline +} + +.ember-light-table vertical-collection { + display: table; + table-layout: fixed; +} + +.ember-light-table vertical-collection occluded-content:first-of-type { + display: table-caption; +} + .ember-light-table .align-left { text-align: left; } diff --git a/addon/templates/components/lt-body.hbs b/addon/templates/components/lt-body.hbs index 1ef8ee4f..45e2d795 100644 --- a/addon/templates/components/lt-body.hbs +++ b/addon/templates/components/lt-body.hbs @@ -1,20 +1,21 @@ {{#with (hash - row=(or rowComponent (component 'lt-row')) - spanned-row=(or spannedRowComponent (component 'lt-spanned-row')) - infinity=(or infinityComponent (component 'lt-infinity')) - ) as |lt| + row=(or rowComponent (component 'lt-row')) + spanned-row=(or spannedRowComponent (component 'lt-spanned-row')) + infinity=(or infinityComponent (component 'lt-infinity')) + ) as |lt| }} - {{#lt-scrollable - tagName='' - virtualScrollbar=useVirtualScrollbar - autoHide=autoHideScrollbar - scrollTo=targetScrollOffset - onScrollY=(action 'onScroll') - }} -
- - - + {{#unless sharedOptions.occlusion}} + {{#lt-scrollable + tagName='' + virtualScrollbar=useVirtualScrollbar + autoHide=autoHideScrollbar + scrollTo=targetScrollOffset + onScrollY=(action 'onScroll') + }} +
+ +
+ {{#if enableScaffolding}} {{#each columns as |column|}} @@ -28,36 +29,96 @@ {{else}} {{#each rows as |row|}} {{lt.row row columns - data-row-id=row.rowId - table=table - tableActions=tableActions - extra=extra - enableScaffolding=enableScaffolding - canExpand=canExpand - canSelect=canSelect - click=(action 'onRowClick' row) - doubleClick=(action 'onRowDoubleClick' row)}} + data-row-id=row.rowId + table=table + tableActions=tableActions + extra=extra + enableScaffolding=enableScaffolding + canExpand=canExpand + canSelect=canSelect + click=(action 'onRowClick' row) + doubleClick=(action 'onRowDoubleClick' row)}} {{yield (hash - expanded-row=(component lt.spanned-row classes='lt-expanded-row' colspan=colspan yield=row visible=row.expanded) - loader=(component lt.spanned-row visible=false) - no-data=(component lt.spanned-row visible=false) - ) rows}} + expanded-row=(component lt.spanned-row classes='lt-expanded-row' colspan=colspan yield=row visible=row.expanded) + loader=(component lt.spanned-row visible=false) + no-data=(component lt.spanned-row visible=false) + ) rows}} {{/each}} {{yield (hash - loader=(component lt.spanned-row classes='lt-is-loading' colspan=colspan) - no-data=(component lt.spanned-row classes='lt-no-data' colspan=colspan) - expanded-row=(component lt.spanned-row visible=false) - ) rows}} + loader=(component lt.spanned-row classes='lt-is-loading' colspan=colspan) + no-data=(component lt.spanned-row classes='lt-no-data' colspan=colspan) + expanded-row=(component lt.spanned-row visible=false) + ) rows}} + {{/if}} + +
+ + {{#if onScrolledToBottom}} + {{lt.infinity rows=rows onScrolledToBottom=onScrolledToBottom scrollBuffer=scrollBuffer}} + {{/if}} + +
+ {{/lt-scrollable}} + {{else}} +
+
+ + + + {{#if enableScaffolding}} + + {{#each columns as |column|}} + + {{/each}} + + {{/if}} + + {{#if overwrite}} + {{yield columns rows}} + {{else}} + {{#vertical-collection + rows + tagName='vertical-collection' + estimateHeight=sharedOptions.estimatedRowHeight + containerSelector='.lt-scrollable' + as |row index| + }} + {{lt.row row columns + data-row-id=row.rowId + table=table + tableActions=tableActions + extra=extra + enableScaffolding=enableScaffolding + canExpand=canExpand + canSelect=canSelect + click=(action 'onRowClick' row) + doubleClick=(action 'onRowDoubleClick' row)}} + + {{yield (hash + expanded-row=(component lt.spanned-row classes='lt-expanded-row' colspan=colspan yield=row visible=row.expanded) + loader=(component lt.spanned-row visible=false) + no-data=(component lt.spanned-row visible=false) + ) rows}} + + {{/vertical-collection}} + {{yield (hash + loader=(component lt.spanned-row classes='lt-is-loading' colspan=colspan) + no-data=(component lt.spanned-row classes='lt-no-data' colspan=colspan) + expanded-row=(component lt.spanned-row visible=false) + ) rows}} {{/if}} - -
+ + - {{#if onScrolledToBottom}} - {{lt.infinity rows=rows onScrolledToBottom=onScrolledToBottom scrollBuffer=scrollBuffer}} - {{/if}} + {{!--#if onScrolledToBottom}} TODO figure out how to use the scrollbuffer property for infinite loading + lastReached=onScrolledToBottom + {{lt.infinity rows=rows onScrolledToBottom=onScrolledToBottom scrollBuffer=scrollBuffer}} + {{/if --}} -
- {{/lt-scrollable}} +
+
+ {{/unless}} {{/with}} diff --git a/package.json b/package.json index 0abe8c04..1d797789 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "test": "ember try:each" }, "dependencies": { + "@html-next/vertical-collection": "^1.0.0-beta.9", "ember-cli-babel": "^6.6.0", "ember-cli-htmlbars": "^2.0.2", "ember-cli-string-helpers": "^1.5.0", diff --git a/tests/dummy/app/components/cookbook/occluded-table.js b/tests/dummy/app/components/cookbook/occluded-table.js new file mode 100644 index 00000000..4019518b --- /dev/null +++ b/tests/dummy/app/components/cookbook/occluded-table.js @@ -0,0 +1,44 @@ +// BEGIN-SNIPPET occluded-table +import Component from '@ember/component'; +import TableCommon from '../../mixins/table-common'; +import { computed } from '@ember/object'; + +export default Component.extend(TableCommon, { + limit: 100, + columns: computed(function() { + return [{ + label: 'Avatar', + valuePath: 'avatar', + width: '60px', + sortable: false, + cellComponent: 'user-avatar' + }, { + label: 'First Name', + valuePath: 'firstName', + width: '150px' + }, { + label: 'Last Name', + valuePath: 'lastName', + width: '150px' + }, { + label: 'Address', + valuePath: 'address', + width: '150px' + }, { + label: 'State', + valuePath: 'state', + width: '100px' + }, { + label: 'Country', + valuePath: 'country', + width: '100px' + }]; + }), + + init() { + this._super(...arguments); + this.set('page', 1); + this.get('fetchRecords').perform(); + } +}); +// END-SNIPPET diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index a620ebd6..a5bb8302 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -24,10 +24,11 @@ Router.map(function() { this.route('cookbook', function() { this.route('client-side'); - this.route('pagination'); this.route('custom-row'); - this.route('table-actions'); this.route('horizontal-scrolling'); + this.route('occlusion-rendering'); + this.route('pagination'); + this.route('table-actions'); this.route('custom-sort-icon'); }); }); diff --git a/tests/dummy/app/routes/cookbook/occlusion-rendering.js b/tests/dummy/app/routes/cookbook/occlusion-rendering.js new file mode 100644 index 00000000..0040140d --- /dev/null +++ b/tests/dummy/app/routes/cookbook/occlusion-rendering.js @@ -0,0 +1 @@ +export { default } from '../table-route'; diff --git a/tests/dummy/app/styles/table.less b/tests/dummy/app/styles/table.less index 1260b84a..e248e005 100644 --- a/tests/dummy/app/styles/table.less +++ b/tests/dummy/app/styles/table.less @@ -136,3 +136,10 @@ tfoot { } } } + + +.ember-light-table.occlusion { + .lt-row td { + vertical-align: middle; + } +} diff --git a/tests/dummy/app/templates/application.hbs b/tests/dummy/app/templates/application.hbs index 7bf2183b..61faf7b6 100644 --- a/tests/dummy/app/templates/application.hbs +++ b/tests/dummy/app/templates/application.hbs @@ -65,12 +65,15 @@ {{#link-to 'cookbook.horizontal-scrolling' tagName="li"}} {{link-to 'Horizontal Scrolling' 'cookbook.horizontal-scrolling'}} {{/link-to}} - {{#link-to 'cookbook.table-actions' tagName="li"}} - {{link-to 'Table Actions' 'cookbook.table-actions'}} + {{#link-to 'cookbook.occlusion-rendering' tagName="li"}} + {{link-to 'Occlusion Rendering' 'cookbook.occlusion-rendering'}} {{/link-to}} {{#link-to 'cookbook.pagination' tagName="li"}} {{link-to 'Pagination' 'cookbook.pagination'}} {{/link-to}} + {{#link-to 'cookbook.table-actions' tagName="li"}} + {{link-to 'Table Actions' 'cookbook.table-actions'}} + {{/link-to}} {{#link-to 'cookbook.custom-sort-icon' tagName="li"}} {{link-to 'Custom Sort Icon' 'cookbook.custom-sort-icon'}} {{/link-to}} diff --git a/tests/dummy/app/templates/components/cookbook/occluded-table.hbs b/tests/dummy/app/templates/components/cookbook/occluded-table.hbs new file mode 100644 index 00000000..bb6e0cec --- /dev/null +++ b/tests/dummy/app/templates/components/cookbook/occluded-table.hbs @@ -0,0 +1,30 @@ +{{!-- BEGIN-SNIPPET occluded-table --}} +{{#light-table table + height='65vh' + occlusion=true + estimatedRowHeight=50 + as |t|}} + +{{!-- + In order for `fa-sort-asc` and `fa-sort-desc` icons to work, + you need to have ember-font-awesome installed or manually include + the font-awesome assets, e.g. via a CDN. +--}} + + {{t.head + fixed=true + }} + + {{#t.body + canSelect=false + onScrolledToBottom=(action 'onScrolledToBottom') + as |body| + }} + {{#if isLoading}} + {{#body.loader}} + {{table-loader}} + {{/body.loader}} + {{/if}} + {{/t.body}} +{{/light-table}} +{{!-- END-SNIPPET --}} diff --git a/tests/dummy/app/templates/cookbook/occlusion-rendering.hbs b/tests/dummy/app/templates/cookbook/occlusion-rendering.hbs new file mode 100644 index 00000000..a589764c --- /dev/null +++ b/tests/dummy/app/templates/cookbook/occlusion-rendering.hbs @@ -0,0 +1,11 @@ +{{#code-panel + title="Occluded Table" + snippets=(array + "occluded-table.js" + "table-common.js" + "occluded-table.hbs" + "user-avatar.hbs" + "table-loader.hbs" + )}} + {{cookbook/occluded-table model=model}} +{{/code-panel}} diff --git a/yarn.lock b/yarn.lock index b92890f6..05bb6537 100644 --- a/yarn.lock +++ b/yarn.lock @@ -86,6 +86,20 @@ dependencies: "@glimmer/util" "^0.22.3" +"@html-next/vertical-collection@^1.0.0-beta.9": + version "1.0.0-beta.9" + resolved "https://registry.yarnpkg.com/@html-next/vertical-collection/-/vertical-collection-1.0.0-beta.9.tgz#a23fe4d82e4ef059e955abe276f57f27269b37a5" + dependencies: + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel6-plugin-strip-class-callcheck "^6.0.0" + broccoli-funnel "^1.2.0" + broccoli-merge-trees "^2.0.0" + broccoli-rollup "^1.2.0" + ember-cli-babel "^6.0.0-beta.10" + ember-cli-htmlbars "^1.1.1" + ember-compatibility-helpers "^0.1.2" + ember-raf-scheduler "0.1.0" + Base64@~0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028" @@ -462,6 +476,14 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.0" +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + babel-core@^5.0.0, babel-core@^5.8.38: version "5.8.38" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-5.8.38.tgz#1fcaee79d7e61b750b00b8e54f6dfc9d0af86558" @@ -795,6 +817,16 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0: babel-types "^6.24.1" lodash "^4.2.0" +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" @@ -1034,6 +1066,13 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0: core-js "^2.4.0" regenerator-runtime "^0.10.0" +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + babel-template@^6.24.1, babel-template@^6.25.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.25.0.tgz#665241166b7c2aa4c619d71e192969552b10c071" @@ -1044,6 +1083,16 @@ babel-template@^6.24.1, babel-template@^6.25.0: babylon "^6.17.2" lodash "^4.2.0" +babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + babel-traverse@^6.24.1, babel-traverse@^6.25.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.25.0.tgz#2257497e2fcd19b89edc13c4c91381f9512496f1" @@ -1058,6 +1107,20 @@ babel-traverse@^6.24.1, babel-traverse@^6.25.0: invariant "^2.2.0" lodash "^4.2.0" +babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0: version "6.25.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.25.0.tgz#70afb248d5660e5d18f811d91c8303b54134a18e" @@ -1067,6 +1130,15 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.25.0: lodash "^4.2.0" to-fast-properties "^1.0.1" +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + babel6-plugin-strip-class-callcheck@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel6-plugin-strip-class-callcheck/-/babel6-plugin-strip-class-callcheck-6.0.0.tgz#de841c1abebbd39f78de0affb2c9a52ee228fddf" @@ -1083,6 +1155,10 @@ babylon@^6.17.2: version "6.17.4" resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.17.4.tgz#3e8b7402b88d22c3423e137a1577883b15ff869a" +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + backbone@^1.1.2: version "1.3.3" resolved "https://registry.yarnpkg.com/backbone/-/backbone-1.3.3.tgz#4cc80ea7cb1631ac474889ce40f2f8bc683b2999" @@ -2595,7 +2671,7 @@ ember-cli-babel@^6.0.0, ember-cli-babel@^6.0.0-beta.4, ember-cli-babel@^6.0.0-be clone "^2.0.0" ember-cli-version-checker "^2.0.0" -ember-cli-babel@^6.3.0: +ember-cli-babel@^6.0.0-beta.10, ember-cli-babel@^6.3.0, ember-cli-babel@^6.8.2: version "6.8.2" resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.8.2.tgz#eac2785964f4743f4c815cd53c6288f00cc087d7" dependencies: @@ -2629,23 +2705,6 @@ ember-cli-babel@^6.6.0: clone "^2.0.0" ember-cli-version-checker "^2.0.0" -ember-cli-babel@^6.8.2: - version "6.8.2" - resolved "https://registry.yarnpkg.com/ember-cli-babel/-/ember-cli-babel-6.8.2.tgz#eac2785964f4743f4c815cd53c6288f00cc087d7" - dependencies: - amd-name-resolver "0.0.7" - babel-plugin-debug-macros "^0.1.11" - babel-plugin-ember-modules-api-polyfill "^2.0.1" - babel-plugin-transform-es2015-modules-amd "^6.24.0" - babel-polyfill "^6.16.0" - babel-preset-env "^1.5.1" - broccoli-babel-transpiler "^6.1.2" - broccoli-debug "^0.6.2" - broccoli-funnel "^1.0.0" - broccoli-source "^1.1.0" - clone "^2.0.0" - ember-cli-version-checker "^2.0.0" - ember-cli-broccoli-sane-watcher@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/ember-cli-broccoli-sane-watcher/-/ember-cli-broccoli-sane-watcher-2.0.4.tgz#f43f42f75b7509c212fb926cd9aea86ae19264c6" @@ -3063,6 +3122,14 @@ ember-code-snippet@^1.9.0: glob "^4.0.4" highlight.js "^9.5.0" +ember-compatibility-helpers@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ember-compatibility-helpers/-/ember-compatibility-helpers-0.1.2.tgz#8eb1769ad761db273fd40242b1170d9f3841d0f0" + dependencies: + babel-plugin-debug-macros "^0.1.11" + ember-cli-version-checker "^2.0.0" + semver "^5.4.1" + ember-component-inbound-actions@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/ember-component-inbound-actions/-/ember-component-inbound-actions-1.0.1.tgz#9b354803c2d729f2d072999cc89ded69762e1dad" @@ -3265,6 +3332,12 @@ ember-qunit@^2.1.3: dependencies: ember-test-helpers "^0.6.3" +ember-raf-scheduler@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ember-raf-scheduler/-/ember-raf-scheduler-0.1.0.tgz#a22a02d238c374499231c03ab9c5b9887c72a853" + dependencies: + ember-cli-babel "^6.6.0" + ember-resolver@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ember-resolver/-/ember-resolver-4.1.0.tgz#f02aeb2f1f2e944ed47e085412a7b84f759d11df" @@ -4295,7 +4368,7 @@ globals@^6.4.0: version "6.4.1" resolved "https://registry.yarnpkg.com/globals/-/globals-6.4.1.tgz#8498032b3b6d1cc81eebc5f79690d8fe29fabf4f" -globals@^9.0.0, globals@^9.17.0: +globals@^9.0.0, globals@^9.17.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -4929,6 +5002,10 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + js-yaml@3.x, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.6.1, js-yaml@^3.8.4: version "3.8.4" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.4.tgz#520b4564f86573ba96662af85a8cafa7b4b5a6f6" @@ -6639,6 +6716,10 @@ regenerator-runtime@^0.10.0: version "0.10.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + regenerator-runtime@^0.9.5: version "0.9.6" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz#d33eb95d0d2001a4be39659707c51b0cb71ce029" @@ -6992,6 +7073,10 @@ semver@^4.3.1: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" +semver@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + semver@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.1.1.tgz#a3292a373e6f3e0798da0b20641b9a9c5bc47e19" @@ -7578,7 +7663,7 @@ to-array@0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" -to-fast-properties@^1.0.0, to-fast-properties@^1.0.1: +to-fast-properties@^1.0.0, to-fast-properties@^1.0.1, to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"