return [window, options, callback]
}
+const normalizeAccessKey = (text) => {
+ if (typeof text !== 'string') return text
+
+ // macOS does not have access keys so remove single ampersands
+ // and replace double ampersands with a single ampersand
+ if (process.platform === 'darwin') {
+ return text.replace(/&(&?)/g, '$1')
+ }
+
+ // Linux uses a single underscore as an access key prefix so escape
+ // existing single underscores with a second underscore, replace double
+ // ampersands with a single ampersand, and replace a single ampersand with
+ // a single underscore
+ if (process.platform === 'linux') {
+ return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => {
+ if (after === '&') return after
+ return `_${after}`
+ })
+ }
+
+ return text
+}
+
const checkAppInitialized = function () {
if (!app.isReady()) {
throw new Error('dialog module can only be used after app is ready')
}
}
- let {buttons, cancelId, defaultId, detail, icon, message, title, type} = options
+ let {buttons, cancelId, defaultId, detail, icon, message, title, type, normalizeAccessKeys} = options
if (type == null) {
type = 'none'
throw new TypeError('Buttons must be an array')
}
+ if (normalizeAccessKeys) {
+ buttons = buttons.map(normalizeAccessKey)
+ }
+
if (title == null) {
title = ''
} else if (typeof title !== 'string') {