@dhis2/d2-ui-rich-text
Advanced tools
Comparing version 5.0.18 to 5.1.0
@@ -12,2 +12,9 @@ var state = { | ||
var trim = function trim(str) { | ||
var leftSpaces = /^\s+/; | ||
var rightSpaces = /\s+$/; | ||
return str.replace(leftSpaces, '').replace(rightSpaces, ''); | ||
}; | ||
var toggleMode = function toggleMode(mode) { | ||
@@ -20,25 +27,56 @@ var prop = mode + 'Mode'; | ||
var insertMarkers = function insertMarkers(mode, cb) { | ||
toggleMode(mode); | ||
var _state$element = state.element, | ||
start = _state$element.selectionStart, | ||
end = _state$element.selectionEnd, | ||
value = _state$element.value; | ||
var marker = markerMap[mode] || null; | ||
if (!marker || !cb) { | ||
if (!marker || !cb || start < 0) { | ||
return; | ||
} | ||
var element = state.element; | ||
var selectionStart = element.selectionStart, | ||
selectionEnd = element.selectionEnd, | ||
value = element.value; | ||
toggleMode(mode); | ||
var newValue = void 0; | ||
var caretPos = end + 1; | ||
if (selectionStart >= 0 && selectionStart === selectionEnd) { | ||
newValue = '' + value + marker; | ||
} else if (selectionStart >= 0) { | ||
newValue = [value.slice(0, selectionStart), value.slice(selectionStart, selectionEnd), value.slice(selectionEnd)].join(marker); | ||
var padMarkers = function padMarkers(text) { | ||
// is caret between two markers (i.e., "**" or "__")? Then do not add padding | ||
if (start === end && value.length && start > 0) { | ||
if (value[start - 1] === markerMap.bold && value[start] === markerMap.bold || value[start - 1] === markerMap.italic && value[start] === markerMap.italic) { | ||
return text; | ||
} | ||
} | ||
if (value.length && start > 0 && value[start - 1] !== ' ') { | ||
text = ' ' + text; | ||
++caretPos; | ||
} | ||
if (value.length && end !== value.length && value[end] !== ' ') { | ||
text = text + ' '; | ||
} | ||
return text; | ||
}; | ||
if (start === end) { | ||
//no text | ||
var valueArr = value.split(''); | ||
valueArr.splice(start, 0, padMarkers('' + marker + marker)); | ||
newValue = valueArr.join(''); | ||
} else { | ||
var text = value.slice(start, end); | ||
var trimmedText = trim(text); | ||
// adjust caretPos based on trimmed text selection | ||
caretPos = caretPos - (text.length - trimmedText.length) + 1; | ||
newValue = [value.slice(0, start), padMarkers('' + marker + trimmedText + marker), value.slice(end)].join(''); | ||
toggleMode(mode); | ||
} | ||
cb(newValue); | ||
cb(newValue, caretPos); | ||
}; | ||
@@ -57,4 +95,6 @@ | ||
if (key === "b" && (ctrlKey || metaKey)) { | ||
event.preventDefault(); | ||
insertMarkers("bold", cb); | ||
} else if (key === "i" && (ctrlKey || metaKey)) { | ||
event.preventDefault(); | ||
insertMarkers("italic", cb); | ||
@@ -61,0 +101,0 @@ } |
@@ -32,4 +32,4 @@ { | ||
}, | ||
"version": "5.0.18", | ||
"version": "5.1.0", | ||
"private": false | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10033
248