mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-10 23:36:14 -05:00
no issue - adds `gh-image-uploader` that handles image uploads in a fully ember fashion and with no dependency on `uploader.js` - adds `gh-image-uploader-with-preview` that can fully replace the old `gh-uploader` - replace uses of `gh-uploader` in PSM & TSM with `gh-image-uploader-with-preview` - updates the editor preview image handling to use the new `gh-image-uploader-with-preview` component - updates the image upload modal to use `gh-image-uploader` (utilises the `saveButton=false` flag which means the preview has to be handled externally to avoid auto-replacement when typing a URL) - removes all old `uploader.js` related code - adds custom `RequestEntityTooLargeError` and `UnsupportedMediaTypeError` errors to our `ajax` service
40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
const imageMarkdownRegex = /^!(?:\[([^\n\]]*)\])(?:\(([^\n\]]*)\))?$/gim;
|
|
|
|
// Process the markdown content and find all of the locations where there is an image markdown block
|
|
function parse(stringToParse) {
|
|
let images = [];
|
|
let m;
|
|
|
|
while ((m = imageMarkdownRegex.exec(stringToParse)) !== null) {
|
|
images.push(m);
|
|
}
|
|
|
|
return images;
|
|
}
|
|
|
|
// Figure out the start and end of the selection range for the src in the markdown, so we know what to replace
|
|
function getSrcRange(content, index) {
|
|
let images = parse(content);
|
|
let replacement = {};
|
|
|
|
if (index > -1) {
|
|
// [1] matches the alt test, and 2 matches the url between the ()
|
|
// if the () are missing entirely, which is valid, [2] will be undefined and we'll need to treat this case
|
|
// a little differently
|
|
if (images[index][2] === undefined) {
|
|
replacement.needsParens = true;
|
|
replacement.start = content.indexOf(']', images[index].index) + 1;
|
|
replacement.end = replacement.start;
|
|
} else {
|
|
replacement.start = content.indexOf('(', images[index].index) + 1;
|
|
replacement.end = replacement.start + images[index][2].length;
|
|
}
|
|
return replacement;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
export default {
|
|
getSrcRange
|
|
};
|