breakpoint-heading.js (2575B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */ 4 5 import { buildMenu, showMenu } from "../../context-menu/menu"; 6 7 import { getBreakpointsForSource } from "../../selectors/index"; 8 9 import { 10 disableBreakpointsInSource, 11 enableBreakpointsInSource, 12 removeBreakpointsInSource, 13 } from "../../actions/breakpoints/index"; 14 15 export function showBreakpointHeadingContextMenu(event, source) { 16 return async ({ dispatch, getState }) => { 17 const state = getState(); 18 const breakpointsForSource = getBreakpointsForSource(state, source); 19 20 const enableInSourceLabel = L10N.getStr( 21 "breakpointHeadingsMenuItem.enableInSource.label" 22 ); 23 const disableInSourceLabel = L10N.getStr( 24 "breakpointHeadingsMenuItem.disableInSource.label" 25 ); 26 const removeInSourceLabel = L10N.getStr( 27 "breakpointHeadingsMenuItem.removeInSource.label" 28 ); 29 const enableInSourceKey = L10N.getStr( 30 "breakpointHeadingsMenuItem.enableInSource.accesskey" 31 ); 32 const disableInSourceKey = L10N.getStr( 33 "breakpointHeadingsMenuItem.disableInSource.accesskey" 34 ); 35 const removeInSourceKey = L10N.getStr( 36 "breakpointHeadingsMenuItem.removeInSource.accesskey" 37 ); 38 39 const disableInSourceItem = { 40 id: "node-menu-disable-in-source", 41 label: disableInSourceLabel, 42 accesskey: disableInSourceKey, 43 disabled: false, 44 click: () => dispatch(disableBreakpointsInSource(source)), 45 }; 46 47 const enableInSourceItem = { 48 id: "node-menu-enable-in-source", 49 label: enableInSourceLabel, 50 accesskey: enableInSourceKey, 51 disabled: false, 52 click: () => dispatch(enableBreakpointsInSource(source)), 53 }; 54 55 const removeInSourceItem = { 56 id: "node-menu-enable-in-source", 57 label: removeInSourceLabel, 58 accesskey: removeInSourceKey, 59 disabled: false, 60 click: () => dispatch(removeBreakpointsInSource(source)), 61 }; 62 63 const hideDisableInSourceItem = breakpointsForSource.every( 64 breakpoint => breakpoint.disabled 65 ); 66 const hideEnableInSourceItem = breakpointsForSource.every( 67 breakpoint => !breakpoint.disabled 68 ); 69 70 const items = [ 71 { item: disableInSourceItem, hidden: () => hideDisableInSourceItem }, 72 { item: enableInSourceItem, hidden: () => hideEnableInSourceItem }, 73 { item: removeInSourceItem, hidden: () => false }, 74 ]; 75 76 showMenu(event, buildMenu(items)); 77 }; 78 }