implements basic menu functionalities
this includes standard block elements (headers, paragraphs, lists, rulers) but not marks (bold, italic) and for sure not special elements like the stat blockmaster
parent
c64b9a95fb
commit
5fc559abac
@ -0,0 +1,40 @@
|
||||
export type State = KV<boolean>
|
||||
export {
|
||||
movementKeys,
|
||||
controlSequenceKeys,
|
||||
elementNameToMenuState,
|
||||
marks,
|
||||
blocks
|
||||
} from './constants'
|
||||
|
||||
function simpleAction (cmd: string, arg?: string): () => boolean {
|
||||
return () => {
|
||||
return document.execCommand(cmd, false, arg)
|
||||
}
|
||||
}
|
||||
|
||||
function insertHorizontalRule (): () => boolean {
|
||||
return () => {
|
||||
const hr = document.execCommand('insertHorizontalRule')
|
||||
const p = document.execCommand('formatblock', false, 'P')
|
||||
return hr && p
|
||||
}
|
||||
}
|
||||
|
||||
export const menuActionToCommand: KV<() => boolean> = {
|
||||
paragraph: simpleAction('formatblock', 'P'),
|
||||
heading1: simpleAction('formatblock', 'H1'),
|
||||
heading2: simpleAction('formatblock', 'H2'),
|
||||
heading3: simpleAction('formatblock', 'H3'),
|
||||
bulletList: simpleAction('insertUnorderedList'),
|
||||
numberedList: simpleAction('insertOrderedList'),
|
||||
separator: insertHorizontalRule()
|
||||
}
|
||||
|
||||
export function getElementAndParentName (el: Node) {
|
||||
const element = el.nodeName === '#text' ? el.parentElement : el
|
||||
return [
|
||||
element?.nodeName,
|
||||
element?.parentElement?.nodeName
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue