fix(web): support for older browsers like Safari 11 on iOS 13.7

This commit is contained in:
Mo
2022-10-31 10:58:55 -05:00
parent 50182fad4f
commit fef1bdf799
8 changed files with 51 additions and 11 deletions

View File

@@ -60,7 +60,12 @@ export class ThemeManager extends AbstractService {
} }
case ApplicationEvent.Launched: { case ApplicationEvent.Launched: {
if (!this.application.isNativeMobileWeb()) { if (!this.application.isNativeMobileWeb()) {
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', this.colorSchemeEventHandler) const mq = window.matchMedia('(prefers-color-scheme: dark)')
if (mq.addEventListener != undefined) {
mq.addEventListener('change', this.colorSchemeEventHandler)
} else {
mq.addListener(this.colorSchemeEventHandler)
}
} }
break break
} }
@@ -131,7 +136,13 @@ export class ThemeManager extends AbstractService {
;(this.unregisterDesktop as unknown) = undefined ;(this.unregisterDesktop as unknown) = undefined
;(this.unregisterStream as unknown) = undefined ;(this.unregisterStream as unknown) = undefined
window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', this.colorSchemeEventHandler) const mq = window.matchMedia('(prefers-color-scheme: dark)')
if (mq.removeEventListener != undefined) {
mq.removeEventListener('change', this.colorSchemeEventHandler)
} else {
mq.removeListener(this.colorSchemeEventHandler)
}
;(this.application as unknown) = undefined ;(this.application as unknown) = undefined
this.unsubApp() this.unsubApp()

View File

@@ -1,4 +1,4 @@
{ {
"presets": ["@babel/preset-typescript", "@babel/preset-env"], "presets": ["@babel/preset-typescript", "@babel/preset-env"],
"plugins": [["@babel/plugin-transform-react-jsx"]] "plugins": [["@babel/plugin-transform-react-jsx"], "@babel/plugin-proposal-class-properties"]
} }

View File

@@ -4,3 +4,5 @@ last 2 Edge versions
last 2 Safari versions last 2 Safari versions
last 2 Opera versions last 2 Opera versions
Firefox ESR Firefox ESR
safari 11
safari 13

View File

@@ -26,6 +26,7 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "*", "@babel/core": "*",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-transform-react-jsx": "^7.19.0", "@babel/plugin-transform-react-jsx": "^7.19.0",
"@babel/preset-env": "*", "@babel/preset-env": "*",
"@babel/preset-typescript": "^7.18.6", "@babel/preset-typescript": "^7.18.6",

View File

@@ -21,11 +21,21 @@ export class PaneController {
setIsInMobileView: action, setIsInMobileView: action,
}) })
window.matchMedia(MediaQueryBreakpoints.md).addEventListener('change', this.mediumScreenMQHandler) const mediaQuery = window.matchMedia(MediaQueryBreakpoints.md)
if (mediaQuery?.addEventListener != undefined) {
mediaQuery.addEventListener('change', this.mediumScreenMQHandler)
} else {
mediaQuery.addListener(this.mediumScreenMQHandler)
}
} }
deinit() { deinit() {
window.matchMedia(MediaQueryBreakpoints.md).removeEventListener('change', this.mediumScreenMQHandler) const mq = window.matchMedia(MediaQueryBreakpoints.md)
if (mq?.removeEventListener != undefined) {
mq.removeEventListener('change', this.mediumScreenMQHandler)
} else {
mq.removeListener(this.mediumScreenMQHandler)
}
} }
mediumScreenMQHandler = (event: MediaQueryListEvent) => { mediumScreenMQHandler = (event: MediaQueryListEvent) => {

View File

@@ -18,9 +18,21 @@ export const useMediaQuery = (mediaQuery: string) => {
setMatches(event.matches) setMatches(event.matches)
} }
window.matchMedia(mediaQuery).addEventListener('change', handler) const mq = window.matchMedia(mediaQuery)
if (mq.addEventListener != undefined) {
mq.addEventListener('change', handler)
} else {
mq.addListener(handler)
}
return () => window.matchMedia(mediaQuery).removeEventListener('change', handler) return () => {
const mq = window.matchMedia(mediaQuery)
if (mq.removeEventListener != undefined) {
mq.removeEventListener('change', handler)
} else {
mq.removeListener(handler)
}
}
}, [mediaQuery]) }, [mediaQuery])
return matches return matches

View File

@@ -47,9 +47,9 @@ module.exports = (env) => {
{ from: 'src/500.html' }, { from: 'src/500.html' },
{ from: 'src/index.html' }, { from: 'src/index.html' },
{ from: 'src/manifest.webmanifest' }, { from: 'src/manifest.webmanifest' },
{ from: 'src/robots.txt' } { from: 'src/robots.txt' },
] ],
}) }),
], ],
resolve: { resolve: {
extensions: ['.ts', '.tsx', '.js'], extensions: ['.ts', '.tsx', '.js'],
@@ -67,7 +67,10 @@ module.exports = (env) => {
rules: [ rules: [
{ {
test: /\.(js|tsx?)$/, test: /\.(js|tsx?)$/,
exclude: /(node_modules)/, /**
* @standardnotes/common uses class properties which we need to run through our babel rules.
*/
exclude: /node_modules\/(?!(@standardnotes\/common))/,
use: [ use: [
'babel-loader', 'babel-loader',
{ {

View File

@@ -7521,6 +7521,7 @@ __metadata:
resolution: "@standardnotes/web@workspace:packages/web" resolution: "@standardnotes/web@workspace:packages/web"
dependencies: dependencies:
"@babel/core": "*" "@babel/core": "*"
"@babel/plugin-proposal-class-properties": ^7.18.6
"@babel/plugin-transform-react-jsx": ^7.19.0 "@babel/plugin-transform-react-jsx": ^7.19.0
"@babel/preset-env": "*" "@babel/preset-env": "*"
"@babel/preset-typescript": ^7.18.6 "@babel/preset-typescript": ^7.18.6