Merge branch 'main' of github.com:ueberdosis/tiptap-next into main

# Conflicts:
#	docs/src/demos/Nodes/Mention/index.vue
#	packages/core/src/utilities/isClass.ts
#	packages/core/src/utilities/isObject.ts
This commit is contained in:
Hans Pagel
2021-01-20 16:58:32 +01:00
3 changed files with 41 additions and 41 deletions

View File

@@ -38,7 +38,7 @@ export default {
items: query => { items: query => {
return [ return [
'Lea Thompson', 'Cyndi Lauper', 'Tom Cruise', 'Madonna', 'Jerry Hall', 'Joan Collins', 'Winona Ryder', 'Christina Applegate', 'Alyssa Milano', 'Molly Ringwald', 'Ally Sheedy', 'Debbie Harry', 'Olivia Newton-John', 'Elton John', 'Michael J. Fox', 'Axl Rose', 'Emilio Estevez', 'Ralph Macchio', 'Rob Lowe', 'Jennifer Grey', 'Mickey Rourke', 'John Cusack', 'Matthew Broderick', 'Justine Bateman', 'Lisa Bonet', 'Lea Thompson', 'Cyndi Lauper', 'Tom Cruise', 'Madonna', 'Jerry Hall', 'Joan Collins', 'Winona Ryder', 'Christina Applegate', 'Alyssa Milano', 'Molly Ringwald', 'Ally Sheedy', 'Debbie Harry', 'Olivia Newton-John', 'Elton John', 'Michael J. Fox', 'Axl Rose', 'Emilio Estevez', 'Ralph Macchio', 'Rob Lowe', 'Jennifer Grey', 'Mickey Rourke', 'John Cusack', 'Matthew Broderick', 'Justine Bateman', 'Lisa Bonet',
].filter(item => item.startsWith(query)).slice(0, 5) ].filter(item => item.toLowerCase().startsWith(query.toLowerCase())).slice(0, 5)
}, },
render: () => { render: () => {
let component let component

View File

@@ -1,3 +1,7 @@
export default function isClass(item: any): boolean { export default function isClass(item: any): boolean {
return item.constructor?.toString().substring(0, 5) === 'class' if (item.constructor?.toString().substring(0, 5) !== 'class') {
return false
}
return true
} }

View File

@@ -35,49 +35,45 @@ export function findSuggestionMatch(config: Trigger): SuggestionMatch {
? new RegExp(`${prefix}${escapedChar}.*?(?=\\s${escapedChar}|$)`, 'gm') ? new RegExp(`${prefix}${escapedChar}.*?(?=\\s${escapedChar}|$)`, 'gm')
: new RegExp(`${prefix}(?:^)?${escapedChar}[^\\s${escapedChar}]*`, 'gm') : new RegExp(`${prefix}(?:^)?${escapedChar}[^\\s${escapedChar}]*`, 'gm')
// Lookup the boundaries of the current node
const textFrom = $position.before() const textFrom = $position.before()
// Only look up to the cursor, old behavior: textTo = $position.end()
const textTo = $position.pos const textTo = $position.pos
const text = $position.doc.textBetween(textFrom, textTo, '\0', '\0') const text = $position.doc.textBetween(textFrom, textTo, '\0', '\0')
const match = regexp.exec(text)
let match = regexp.exec(text) if (!match) {
let position = null return null
while (match !== null) {
// JavaScript doesn't have lookbehinds; this hacks a check that first character is " "
// or the line beginning
const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index)
if (/^[\s\0]?$/.test(matchPrefix)) {
// The absolute position of the match in the document
const from = match.index + $position.start()
let to = from + match[0].length
// Edge case handling; if spaces are allowed and we're directly in between
// two triggers
if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {
match[0] += ' '
to += 1
}
// If the $position is located within the matched substring, return that range
if (from < $position.pos && to >= $position.pos) {
position = {
range: {
from,
to,
},
query: match[0].slice(char.length),
text: match[0],
}
}
}
match = regexp.exec(text)
} }
return position // JavaScript doesn't have lookbehinds; this hacks a check that first character is " "
// or the line beginning
const matchPrefix = match.input.slice(Math.max(0, match.index - 1), match.index)
if (!/^[\s\0]?$/.test(matchPrefix)) {
return null
}
// The absolute position of the match in the document
const from = match.index + $position.start()
let to = from + match[0].length
// Edge case handling; if spaces are allowed and we're directly in between
// two triggers
if (allowSpaces && suffix.test(text.slice(to - 1, to + 1))) {
match[0] += ' '
to += 1
}
// If the $position is located within the matched substring, return that range
if (from < $position.pos && to >= $position.pos) {
return {
range: {
from,
to,
},
query: match[0].slice(char.length),
text: match[0],
}
}
return null
} }