JSFiddle - React, Tailwind, and code Playground

by no2don

HTML

<!-- include libraries(jQuery, bootstrap) -->
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>

<!-- include summernote css/js -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.js"></script>


<div id="summernote">

</div>

<div id="div_result">

</div>

JavaScript

//這裡要自己換自己的 client id 
//當年看到這 client id 時候,我應該已經刪掉了

var imgUrClientId='df8a2b4f2a1f1a9';

$('#summernote').summernote({
  height: 200,
  toolbar: [
    ['insert', [ 'picture']],
    ['view', ['codeview']],
  ],
  callbacks: {
    onImageUpload: function(image) {
      uploadImage(image[0], this);
    }
  }
});

function GetBase64String(file) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.readAsDataURL(file);
    reader.onload = () => resolve(reader.result);
    reader.onerror = error => reject(error);
  });
}

function uploadImage(image, obj) {

  var base64Str;
  GetBase64String(image).then(
    data => {
      var reqData = new FormData();

      reqData.append("image", data.split(',')[1]);
      var settings = {
        "url": "https://api.imgur.com/3/image",
        "method": "POST",
        "dataType": 'json',
        "timeout": 0,
        "headers": {
          "Authorization": "Client-ID "+imgUrClientId
        },
        "processData": false,
        "mimeType": "multipart/form-data",
        "contentType": false,
        "data": reqData
      };

      $.ajax(settings).done(function(response) {
        var imgStr = $('<img>').attr('src', response.data.link).attr('style', 'width:50%;cursor:pointer');

        var ha = $('<a>').attr('href', response.data.link).attr('target', '_blank');
        $(ha).append($(imgStr));
        $(obj).summernote("insertNode", ha[0]);
      });

    }
  );
}