mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-11-24 06:35:49 +03:00
Dropped ember-useragent dependency
no issue We made very limited use of the `ua-parser-js` sub-dependency that `ember-useragent` pulls in so it didn't seem worth having the fairly large 17KB import or the associated sub-dependency version resolutions. - switched the two iOS and Safari detections to use associated Regexes on `navigator.userAgent` - dropped the "Microsoft Edge not supported" message in the editor - old Edge is still not supported but it was been replaced with a Chromium-based version that is supported a while back - we can re-introduce a warning if we get any significant reports (there is nothing showing in Sentry for this alert in the last 14 days)
This commit is contained in:
parent
20be395077
commit
4aa9d4554e
@ -1,6 +1,5 @@
|
|||||||
import Mixin from '@ember/object/mixin';
|
import Mixin from '@ember/object/mixin';
|
||||||
import {computed} from '@ember/object';
|
import {computed} from '@ember/object';
|
||||||
import {inject as service} from '@ember/service';
|
|
||||||
|
|
||||||
const keyCodes = {
|
const keyCodes = {
|
||||||
13: 'Enter',
|
13: 'Enter',
|
||||||
@ -8,17 +7,20 @@ const keyCodes = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export default Mixin.create({
|
export default Mixin.create({
|
||||||
userAgent: service(),
|
|
||||||
|
|
||||||
attributeBindings: ['autofocus'],
|
attributeBindings: ['autofocus'],
|
||||||
|
|
||||||
selectOnClick: false,
|
selectOnClick: false,
|
||||||
shouldFocus: false,
|
shouldFocus: false,
|
||||||
stopEnterKeyDownPropagation: false,
|
stopEnterKeyDownPropagation: false,
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this._super(...arguments);
|
||||||
|
this._isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
||||||
|
},
|
||||||
|
|
||||||
autofocus: computed(function () {
|
autofocus: computed(function () {
|
||||||
if (this.shouldFocus) {
|
if (this.shouldFocus) {
|
||||||
return (this.userAgent.os.isIOS) ? false : 'autofocus';
|
return (this._isIOS) ? false : 'autofocus';
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -79,7 +81,7 @@ export default Mixin.create({
|
|||||||
_focus() {
|
_focus() {
|
||||||
// Until mobile safari has better support
|
// Until mobile safari has better support
|
||||||
// for focusing, we just ignore it
|
// for focusing, we just ignore it
|
||||||
if (this.shouldFocus && !this.userAgent.os.isIOS) {
|
if (this.shouldFocus && !this._isIOS) {
|
||||||
this.element.focus();
|
this.element.focus();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1,13 +1,11 @@
|
|||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
|
||||||
import {htmlSafe} from '@ember/template';
|
|
||||||
import {run} from '@ember/runloop';
|
import {run} from '@ember/runloop';
|
||||||
import {inject as service} from '@ember/service';
|
import {inject as service} from '@ember/service';
|
||||||
|
|
||||||
export default AuthenticatedRoute.extend({
|
export default AuthenticatedRoute.extend({
|
||||||
feature: service(),
|
feature: service(),
|
||||||
notifications: service(),
|
notifications: service(),
|
||||||
userAgent: service(),
|
|
||||||
ui: service(),
|
ui: service(),
|
||||||
|
|
||||||
classNames: ['editor'],
|
classNames: ['editor'],
|
||||||
@ -17,18 +15,6 @@ export default AuthenticatedRoute.extend({
|
|||||||
this.ui.set('isFullScreen', true);
|
this.ui.set('isFullScreen', true);
|
||||||
},
|
},
|
||||||
|
|
||||||
setupController() {
|
|
||||||
this._super(...arguments);
|
|
||||||
|
|
||||||
// edge has known issues
|
|
||||||
if (this.userAgent.browser.isEdge && this.userAgent.parser.getEngine().name === 'EdgeHTML') {
|
|
||||||
this.notifications.showAlert(
|
|
||||||
htmlSafe('Microsoft Edge is not currently supported. Please use a recent version of Chrome/Firefox/Safari.'),
|
|
||||||
{type: 'info', key: 'koenig.browserSupport'}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
deactivate() {
|
deactivate() {
|
||||||
this._super(...arguments);
|
this._super(...arguments);
|
||||||
this.ui.set('isFullScreen', false);
|
this.ui.set('isFullScreen', false);
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
// adapted from draggable.js Scrollable plugin (MIT)
|
// adapted from draggable.js Scrollable plugin (MIT)
|
||||||
// https://github.com/Shopify/draggable/blob/master/src/Draggable/Plugins/Scrollable/Scrollable.js
|
// https://github.com/Shopify/draggable/blob/master/src/Draggable/Plugins/Scrollable/Scrollable.js
|
||||||
import UAParser from 'ua-parser-js';
|
|
||||||
import {
|
import {
|
||||||
getDocumentScrollingElement,
|
getDocumentScrollingElement,
|
||||||
getParentScrollableElement
|
getParentScrollableElement
|
||||||
@ -24,7 +23,7 @@ export default class ScrollHandler {
|
|||||||
this._scroll = this._scroll.bind(this);
|
this._scroll = this._scroll.bind(this);
|
||||||
|
|
||||||
// cache browser info to avoid parsing on every animation frame
|
// cache browser info to avoid parsing on every animation frame
|
||||||
this.userAgent = new UAParser();
|
this._isSafari = navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
dragStart(draggableInfo) {
|
dragStart(draggableInfo) {
|
||||||
@ -91,13 +90,12 @@ export default class ScrollHandler {
|
|||||||
|
|
||||||
let topPosition = rect.top + offsetHeight - clientY;
|
let topPosition = rect.top + offsetHeight - clientY;
|
||||||
let bottomPosition = clientY - rect.top;
|
let bottomPosition = clientY - rect.top;
|
||||||
let isSafari = this.userAgent.getBrowser().name === 'Safari';
|
|
||||||
|
|
||||||
// Safari will automatically scroll when the mouse is outside of the window
|
// Safari will automatically scroll when the mouse is outside of the window
|
||||||
// so we want to avoid our own scrolling in that situation to avoid jank
|
// so we want to avoid our own scrolling in that situation to avoid jank
|
||||||
if (topPosition < sensitivity && !(isSafari && topPosition < 0)) {
|
if (topPosition < sensitivity && !(this._isSafari && topPosition < 0)) {
|
||||||
scrollableElement.scrollTop += speed;
|
scrollableElement.scrollTop += speed;
|
||||||
} else if (bottomPosition < sensitivity && !(isSafari && bottomPosition < 0)) {
|
} else if (bottomPosition < sensitivity && !(this._isSafari && bottomPosition < 0)) {
|
||||||
scrollableElement.scrollTop -= speed;
|
scrollableElement.scrollTop -= speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +117,6 @@
|
|||||||
"ember-test-selectors": "6.0.0",
|
"ember-test-selectors": "6.0.0",
|
||||||
"ember-tooltips": "3.5.1",
|
"ember-tooltips": "3.5.1",
|
||||||
"ember-truth-helpers": "3.0.0",
|
"ember-truth-helpers": "3.0.0",
|
||||||
"ember-useragent": "0.12.0",
|
|
||||||
"emberx-file-input": "1.2.1",
|
"emberx-file-input": "1.2.1",
|
||||||
"eslint": "8.9.0",
|
"eslint": "8.9.0",
|
||||||
"eslint-plugin-ghost": "2.12.0",
|
"eslint-plugin-ghost": "2.12.0",
|
||||||
|
@ -6188,7 +6188,7 @@ ember-auto-import@1.12.1:
|
|||||||
walk-sync "^0.3.3"
|
walk-sync "^0.3.3"
|
||||||
webpack "^4.43.0"
|
webpack "^4.43.0"
|
||||||
|
|
||||||
ember-auto-import@^1.11.2, ember-auto-import@^1.11.3, ember-auto-import@^1.12.0, ember-auto-import@^1.2.19, ember-auto-import@^1.5.3:
|
ember-auto-import@^1.11.2, ember-auto-import@^1.11.3, ember-auto-import@^1.12.0, ember-auto-import@^1.2.19:
|
||||||
version "1.12.0"
|
version "1.12.0"
|
||||||
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.12.0.tgz#52246b04891090e2608244e65c4c6af7710df12b"
|
resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-1.12.0.tgz#52246b04891090e2608244e65c4c6af7710df12b"
|
||||||
integrity sha512-fzMGnyHGfUNFHchpLbJ98Vs/c5H2wZBMR9r/XwW+WOWPisZDGLUPPyhJQsSREPoUQ+o8GvyLaD/rkrKqW8bmgw==
|
integrity sha512-fzMGnyHGfUNFHchpLbJ98Vs/c5H2wZBMR9r/XwW+WOWPisZDGLUPPyhJQsSREPoUQ+o8GvyLaD/rkrKqW8bmgw==
|
||||||
@ -7546,16 +7546,6 @@ ember-truth-helpers@3.0.0, "ember-truth-helpers@^2.1.0 || ^3.0.0":
|
|||||||
dependencies:
|
dependencies:
|
||||||
ember-cli-babel "^7.22.1"
|
ember-cli-babel "^7.22.1"
|
||||||
|
|
||||||
ember-useragent@0.12.0:
|
|
||||||
version "0.12.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/ember-useragent/-/ember-useragent-0.12.0.tgz#0c327985810aead9b055481f71f0cbcf75b217a4"
|
|
||||||
integrity sha512-EeYWqlfF/37vP7cpvAU7srEtm8BpX0c4Hk899tQjKbNDPdNqQ0C8G9vh1YgDqPed4URJi5xmjtynGeQbDbQwpw==
|
|
||||||
dependencies:
|
|
||||||
ember-auto-import "^1.5.3"
|
|
||||||
ember-cli-babel "^7.13.0"
|
|
||||||
ember-cli-htmlbars "^4.2.0"
|
|
||||||
ua-parser-js "^0.7.31"
|
|
||||||
|
|
||||||
emberx-file-input@1.2.1:
|
emberx-file-input@1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/emberx-file-input/-/emberx-file-input-1.2.1.tgz#a9214a9b3278c270a4d60e58836d2c1b98bce0ab"
|
resolved "https://registry.yarnpkg.com/emberx-file-input/-/emberx-file-input-1.2.1.tgz#a9214a9b3278c270a4d60e58836d2c1b98bce0ab"
|
||||||
@ -15179,11 +15169,6 @@ typescript-memoize@^1.0.0-alpha.3, typescript-memoize@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.0.tgz#4a8f512d06fc995167c703a3592219901db8bc79"
|
resolved "https://registry.yarnpkg.com/typescript-memoize/-/typescript-memoize-1.1.0.tgz#4a8f512d06fc995167c703a3592219901db8bc79"
|
||||||
integrity sha512-LQPKVXK8QrBBkL/zclE6YgSWn0I8ew5m0Lf+XL00IwMhlotqRLlzHV+BRrljVQIc+NohUAuQP7mg4HQwrx5Xbg==
|
integrity sha512-LQPKVXK8QrBBkL/zclE6YgSWn0I8ew5m0Lf+XL00IwMhlotqRLlzHV+BRrljVQIc+NohUAuQP7mg4HQwrx5Xbg==
|
||||||
|
|
||||||
ua-parser-js@^0.7.31:
|
|
||||||
version "0.7.31"
|
|
||||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6"
|
|
||||||
integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==
|
|
||||||
|
|
||||||
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
uc.micro@^1.0.1, uc.micro@^1.0.5:
|
||||||
version "1.0.6"
|
version "1.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
|
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
|
||||||
|
Loading…
Reference in New Issue
Block a user