{"version":3,"file":"ngx-editor-helpers.mjs","sources":["../../../projects/ngx-editor/helpers/isMarkActive.ts","../../../projects/ngx-editor/helpers/isNodeActive.ts","../../../projects/ngx-editor/helpers/getSelectionMarks.ts","../../../projects/ngx-editor/helpers/getSelectionNodes.ts","../../../projects/ngx-editor/helpers/markApplies.ts","../../../projects/ngx-editor/helpers/markInputRule.ts","../../../projects/ngx-editor/helpers/canInsertNode.ts","../../../projects/ngx-editor/helpers/ngx-editor-helpers.ts"],"sourcesContent":["import { EditorState } from 'prosemirror-state';\nimport { MarkType } from 'prosemirror-model';\n\nexport const isMarkActive = (state: EditorState, type: MarkType): boolean => {\n  const { from, $from, to, empty } = state.selection;\n\n  if (empty) {\n    return Boolean(type.isInSet(state.storedMarks || $from.marks()));\n  }\n\n  return state.doc.rangeHasMark(from, to, type);\n};\n\nexport default isMarkActive;\n","import { EditorState } from 'prosemirror-state';\nimport { NodeType, ResolvedPos } from 'prosemirror-model';\n\nconst findNodeType = (type: NodeType, $from: ResolvedPos): NodeType | null => {\n  for (let i = $from.depth; i > 0; i -= 1) {\n    if ($from.node(i).type === type) {\n      return $from.node(i).type;\n    }\n  }\n\n  return null;\n};\n\nexport const isNodeActive = (state: EditorState, type: NodeType, attrs: any = {}): boolean => {\n  const { selection } = state;\n  const { $from, to } = selection;\n\n  const node: NodeType | null = findNodeType(type, $from);\n\n  if (!Object.entries(attrs).length || !node) {\n    return Boolean(node);\n  }\n\n  return to <= $from.end() && $from.parent.hasMarkup(type, attrs);\n};\n\nexport default isNodeActive;\n","import { EditorState } from 'prosemirror-state';\nimport { Mark } from 'prosemirror-model';\n\nexport const getSelectionMarks = (state: EditorState): readonly Mark[] => {\n  let marks: readonly Mark[] = [];\n\n  const { selection, storedMarks } = state;\n  const { from, to, empty, $from } = selection;\n\n  if (empty) {\n    marks = storedMarks || $from.marks();\n  } else {\n    state.doc.nodesBetween(from, to, (node) => {\n      marks = [...marks, ...node.marks];\n    });\n  }\n\n  return marks;\n};\n\nexport default getSelectionMarks;\n","import { EditorState } from 'prosemirror-state';\nimport { Node } from 'prosemirror-model';\n\nexport const getSelectionNodes = (state: EditorState): Node[] => {\n  const nodes: Node[] = [];\n\n  const { selection: { from, to } } = state;\n\n  state.doc.nodesBetween(from, to, (node) => {\n    nodes.push(node);\n  });\n\n  return nodes;\n};\n\nexport default getSelectionNodes;\n","import { MarkType, Node as PrmosemirroNode } from 'prosemirror-model';\nimport { SelectionRange } from 'prosemirror-state';\n\n// Ref: https://github.com/ProseMirror/prosemirror-commands/blob/master/src/commands.js\nexport const markApplies = (doc: PrmosemirroNode, ranges: readonly SelectionRange[], type: MarkType): boolean => {\n  for (const range of ranges) {\n    const { $from, $to } = range;\n\n    let canApply = $from.depth === 0 ? doc.type.allowsMarkType(type) : false;\n\n    doc.nodesBetween($from.pos, $to.pos, (node: PrmosemirroNode): boolean => {\n      if (canApply) {\n        return false;\n      }\n\n      canApply = node.inlineContent && node.type.allowsMarkType(type);\n      return true;\n    });\n\n    if (canApply) {\n      return true;\n    }\n  }\n  return false;\n};\n\nexport default markApplies;\n","import { InputRule } from 'prosemirror-inputrules';\nimport { MarkType } from 'prosemirror-model';\n\nexport const markInputRule = (regexp: RegExp, markType: MarkType, attrs?: Record<string, unknown>): InputRule => {\n  return new InputRule(regexp, (state, match, start, end) => {\n    const { tr } = state;\n\n    const from = start;\n    let to = end;\n\n    if (match[2]) {\n      const textStart = start + match[0].indexOf(match[2]);\n      const textEnd = textStart + match[2].length;\n\n      if (textEnd < end) {\n        tr.delete(textEnd, end);\n      }\n\n      if (textStart > start) {\n        tr.delete(start, textStart);\n      }\n\n      to = start + match[2].length;\n    }\n\n    return tr.addMark(from, to, markType.create(attrs));\n  });\n};\n\nexport default markInputRule;\n","import type { EditorState } from 'prosemirror-state';\nimport type { NodeType } from 'prosemirror-model';\n\nexport const canInsert = (state: EditorState, nodeType: NodeType) => {\n  const { $from } = state.selection;\n\n  for (let d = $from.depth; d >= 0; d -= 1) {\n    const index = $from.index(d);\n\n    if ($from.node(d).canReplaceWith(index, index, nodeType)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nexport default canInsert;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}