0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-24 23:48:13 -05:00

Update dependency ember-in-viewport to v3.8.0

no issue

- now that we no longer have the `ember-sticky-element` dependency we're free to upgrade `ember-in-viewport`
- remove package.json resolution so latest version gets installed
- remove ember-in-viewport from renovate ignore config
- update `<GhScrollTrigger>` to match latest `ember-in-viewport` usage and convert to a glimmer component
  - ensure `scrollableArea` is always set so that the trigger doesn't stop working after the first trigger
This commit is contained in:
Kevin Ansfield 2020-10-01 10:06:53 +01:00
parent c0149ee997
commit db68f0248b
6 changed files with 102 additions and 52 deletions

View file

@ -1 +1,3 @@
{{yield}}
<div {{did-insert this.setupInViewport}} {{will-destroy this.teardownInViewport}}>
{{yield}}
</div>

View file

@ -1,44 +1,65 @@
import Component from '@ember/component';
import InViewportMixin from 'ember-in-viewport';
import Component from '@glimmer/component';
import {action} from '@ember/object';
import {inject as service} from '@ember/service';
export default Component.extend(InViewportMixin, {
// TODO: move to a util - duplicated in koenig-editor/koenig-link-input
function getScrollParent(node) {
const isElement = node instanceof HTMLElement;
const overflowY = isElement && window.getComputedStyle(node).overflowY;
const isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
enter() {},
exit() {},
registerElement() {},
if (!node) {
return null;
} else if (isScrollable && node.scrollHeight >= node.clientHeight) {
return node;
}
didInsertElement() {
let offset = this.triggerOffset || {};
return getScrollParent(node.parentNode) || document.body;
}
export default class GhScrollTrigger extends Component {
@service inViewport;
@action
setupInViewport(element) {
this.loaderElement = element;
let viewportTolerance = this.args.triggerOffset || {};
// if triggerOffset is a number we use it for all dimensions
if (typeof offset === 'number') {
offset = {
top: offset,
bottom: offset,
left: offset,
right: offset
if (typeof viewportTolerance === 'number') {
viewportTolerance = {
top: viewportTolerance,
bottom: viewportTolerance,
left: viewportTolerance,
right: viewportTolerance
};
}
this.set('viewportSpy', true);
this.set('viewportTolerance', {
top: offset.top,
bottom: offset.bottom,
left: offset.left,
right: offset.right
});
let options = {
viewportSpy: true,
viewportTolerance,
scrollableArea: this.args.scrollable || getScrollParent(element)
};
this._super(...arguments);
let {onEnter, onExit} = this.inViewport.watchElement(element, options);
this.registerElement(this.element);
},
onEnter(this.didEnterViewport.bind(this));
onExit(this.didExitViewport.bind(this));
didEnterViewport() {
return this.enter();
},
didExitViewport() {
return this.exit();
this.args.registerElement?.(element);
}
});
didEnterViewport() {
this.args.enter?.();
}
didExitViewport() {
this.args.exit?.();
}
@action
teardownInViewport(element) {
this.inViewport.stopWatching(element);
}
}

View file

@ -67,7 +67,7 @@ export default Component.extend({
// subtract toolbar height from MIN_HEIGHT so the trigger happens at
// the expected position without forcing the min height to be too small
this.set('bottomOffset', -MIN_HEIGHT - 49);
this.set('bottomOffset', -MIN_HEIGHT);
this.registerComponent(this);
},

View file

@ -81,7 +81,7 @@
"ember-exam": "5.0.1",
"ember-export-application-global": "2.0.1",
"ember-fetch": "8.0.2",
"ember-in-viewport": "3.5.8",
"ember-in-viewport": "3.8.0",
"ember-infinity": "2.1.2",
"ember-load": "0.0.17",
"ember-load-initializers": "2.1.1",
@ -139,8 +139,5 @@
"lib/asset-delivery",
"lib/koenig-editor"
]
},
"resolutions": {
"ember-in-viewport": "3.5.8"
}
}

View file

@ -7,7 +7,6 @@
"ember-drag-drop",
"normalize.css",
"validator",
"ember-in-viewport",
"codemirror"
],
"ignorePaths": ["lib/koenig-editor/package.json"],

View file

@ -5391,7 +5391,7 @@ ember-assign-polyfill@^2.5.0, ember-assign-polyfill@^2.6.0:
ember-cli-babel "^7.20.5"
ember-cli-version-checker "^2.0.0"
ember-auto-import@1.6.0, ember-auto-import@^1.2.15, ember-auto-import@^1.2.19, ember-auto-import@^1.5.3:
ember-auto-import@1.6.0, ember-auto-import@^1.2.19, ember-auto-import@^1.5.2, ember-auto-import@^1.5.3, ember-auto-import@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.6.0.tgz#00a498172b04f7084a5d2a327f76f577038ed403"
integrity sha512-BRBrmbDXRuXG/WYbn/2DXM7bFNyQuT80du1scUrrX0+xFVkDOU08s46ZPCvzYprzSg2htgrztQ/nVdnfbIBV+Q==
@ -6194,15 +6194,29 @@ ember-in-element-polyfill@^1.0.0:
ember-cli-htmlbars "^4.3.1"
ember-cli-version-checker "^5.0.2"
ember-in-viewport@3.5.8, ember-in-viewport@~3.7.2:
version "3.5.8"
resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.5.8.tgz#da03f5e69c5e5e6cbd048f0db8de0b05c2e3e68f"
integrity sha512-2GBK5KbNYiGADy433tN3yHnxZ77wSnVyMezx23cr3qs2gwac+5ta2FkOTiKibNkGmWE/Mk/c7zcF7sDk1jy5DA==
ember-in-viewport@3.8.0:
version "3.8.0"
resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.8.0.tgz#acafd8ecc3928d26b4fe26d9eab19fe722da496c"
integrity sha512-GaUdIA83EwyGaZieN8TGN8Z/fjaz7hSeZhZdaRVz6qXe7SohzwekwpM9wJZkxzVTqStoArGMfZTXhOigP3k9Zg==
dependencies:
ember-auto-import "^1.2.15"
ember-auto-import "^1.6.0"
ember-cli-babel "^7.22.1"
ember-modifier "^2.1.0"
fast-deep-equal "^2.0.1"
intersection-observer-admin "~0.2.12"
raf-pool "~0.1.4"
ember-in-viewport@~3.7.2:
version "3.7.8"
resolved "https://registry.yarnpkg.com/ember-in-viewport/-/ember-in-viewport-3.7.8.tgz#0542cb4dad7763bd93ee6a5c660f39b2d28ea1d5"
integrity sha512-XEQ4q+ca3SaREL72Eb7XQRGrmNTjOS52ZUj7KvKLpywoyYKTpAfFoSHZMpyk15X9D7dtAihayTpEgeVoHaLa3Q==
dependencies:
ember-auto-import "^1.5.2"
ember-cli-babel "^7.7.3"
intersection-observer-admin "~0.2.5"
raf-pool "0.1.0"
ember-modifier "^1.0.2"
fast-deep-equal "^2.0.1"
intersection-observer-admin "~0.2.12"
raf-pool "~0.1.4"
ember-infinity@2.1.2:
version "2.1.2"
@ -6296,7 +6310,7 @@ ember-modifier-manager-polyfill@^1.1.0, ember-modifier-manager-polyfill@^1.2.0:
ember-cli-version-checker "^2.1.2"
ember-compatibility-helpers "^1.2.0"
ember-modifier@2.1.1:
ember-modifier@2.1.1, ember-modifier@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-2.1.1.tgz#aa3a12e2d6cf1622f774f3f1eab4880982a43fa9"
integrity sha512-g9mcpFWgw5lgNU40YNf0USNWqoGTJ+EqjDQKjm7556gaRNDeGnLylFKqx9O3opwLHEt6ZODnRDy9U0S5YEMREg==
@ -6308,6 +6322,18 @@ ember-modifier@2.1.1:
ember-destroyable-polyfill "^2.0.2"
ember-modifier-manager-polyfill "^1.2.0"
ember-modifier@^1.0.2:
version "1.0.5"
resolved "https://registry.yarnpkg.com/ember-modifier/-/ember-modifier-1.0.5.tgz#b0152a4b81b72debbff48ff75f0ff0959afa1df2"
integrity sha512-bOqWyp6bEa8i/2c2Gay6b9CVB7CAROg2UuX+C3eDMOdGUEzrsBZ5ENul5zF4RHey2RuAqZ/qvQpY/85R2fQ94A==
dependencies:
ember-cli-babel "^7.11.1"
ember-cli-is-package-missing "^1.0.0"
ember-cli-normalize-entity-name "^1.0.0"
ember-cli-string-utils "^1.1.0"
ember-compatibility-helpers "^1.2.1"
ember-modifier-manager-polyfill "^1.2.0"
ember-moment@8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/ember-moment/-/ember-moment-8.0.0.tgz#f3993711df0af444558f0f3922dc3f412af72410"
@ -7309,6 +7335,11 @@ faker@5.1.0:
resolved "https://registry.yarnpkg.com/faker/-/faker-5.1.0.tgz#e10fa1dec4502551aee0eb771617a7e7b94692e8"
integrity sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw==
fast-deep-equal@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
fast-deep-equal@^3.1.1:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@ -8695,7 +8726,7 @@ interpret@~1.1.0:
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=
intersection-observer-admin@~0.2.5:
intersection-observer-admin@~0.2.12:
version "0.2.12"
resolved "https://registry.yarnpkg.com/intersection-observer-admin/-/intersection-observer-admin-0.2.12.tgz#046b208afc8cbf626943d61688d5a779c5831275"
integrity sha512-97+A29MV0kp6Xzkb4CxBNxxDU4qldyVFNzvZIiLMYqIZFutT2DJCzE1TEv0hXdmFQfAIY4KhNhL6L1BEEU0J8w==
@ -11812,10 +11843,10 @@ quick-temp@^0.1.2, quick-temp@^0.1.3, quick-temp@^0.1.5, quick-temp@^0.1.8:
rimraf "^2.5.4"
underscore.string "~3.3.4"
raf-pool@0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/raf-pool/-/raf-pool-0.1.0.tgz#856242f3d66b45ee0d4a9159d05d8560614891b3"
integrity sha512-TU79Jf8D0OsPlEPegLmx4O/Az3I2qm3TZnHEZE+fUJ/aeVf46m/HDRV5lHrdRQ9m3PhodfwFVwmMz/BgUXEppg==
raf-pool@~0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/raf-pool/-/raf-pool-0.1.4.tgz#6b9f75ea1903c16e162ffe8c76688f5a625bc2cd"
integrity sha512-BBPamTVuSprPq7CUmgxc+ycbsYUtUYnQtJYEfMHXMaostPaNpQzipLfSa/rwjmlgjBPiD7G+I+8W340sLOPu6g==
ramda@^0.27.0:
version "0.27.1"