@expensify/react-native-live-markdown 0.1.156 → 0.1.158

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/lib/commonjs/MarkdownTextInput.web.js +33 -6
  2. package/lib/commonjs/MarkdownTextInput.web.js.map +1 -1
  3. package/lib/commonjs/web/inputElements/inlineImage.js +98 -49
  4. package/lib/commonjs/web/inputElements/inlineImage.js.map +1 -1
  5. package/lib/commonjs/web/utils/blockUtils.js +1 -1
  6. package/lib/commonjs/web/utils/blockUtils.js.map +1 -1
  7. package/lib/commonjs/web/utils/cursorUtils.js +17 -3
  8. package/lib/commonjs/web/utils/cursorUtils.js.map +1 -1
  9. package/lib/commonjs/web/utils/parserUtils.js +4 -4
  10. package/lib/commonjs/web/utils/parserUtils.js.map +1 -1
  11. package/lib/module/MarkdownTextInput.web.js +33 -6
  12. package/lib/module/MarkdownTextInput.web.js.map +1 -1
  13. package/lib/module/web/inputElements/inlineImage.js +98 -50
  14. package/lib/module/web/inputElements/inlineImage.js.map +1 -1
  15. package/lib/module/web/utils/blockUtils.js +1 -1
  16. package/lib/module/web/utils/blockUtils.js.map +1 -1
  17. package/lib/module/web/utils/cursorUtils.js +17 -3
  18. package/lib/module/web/utils/cursorUtils.js.map +1 -1
  19. package/lib/module/web/utils/parserUtils.js +4 -4
  20. package/lib/module/web/utils/parserUtils.js.map +1 -1
  21. package/lib/typescript/src/MarkdownTextInput.web.d.ts.map +1 -1
  22. package/lib/typescript/src/web/inputElements/inlineImage.d.ts +2 -1
  23. package/lib/typescript/src/web/inputElements/inlineImage.d.ts.map +1 -1
  24. package/lib/typescript/src/web/utils/cursorUtils.d.ts +2 -2
  25. package/lib/typescript/src/web/utils/cursorUtils.d.ts.map +1 -1
  26. package/lib/typescript/src/web/utils/parserUtils.d.ts +1 -1
  27. package/lib/typescript/src/web/utils/parserUtils.d.ts.map +1 -1
  28. package/package.json +1 -1
  29. package/src/MarkdownTextInput.web.tsx +39 -5
  30. package/src/web/inputElements/inlineImage.ts +108 -47
  31. package/src/web/utils/blockUtils.ts +1 -1
  32. package/src/web/utils/cursorUtils.ts +18 -3
  33. package/src/web/utils/parserUtils.ts +4 -3
@@ -1 +1 @@
1
- {"version":3,"names":["findHTMLElementInTree","getTreeNodeByIndex","setCursorPosition","target","startIndex","endIndex","tree","document","activeElement","start","Math","max","min","length","end","range","createRange","selectNodeContents","startTreeNode","endTreeNode","console","error","type","setStartBefore","element","setStart","childNodes","setEndBefore","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollIntoView","node","_node$parentNode","parentNode","block","moveCursorToEnd","getCurrentCursorPosition","getHTMLElement","Text","parentElement","rangeCount","getRangeAt","startElement","endElement","value","removeSelection","removeAllRanges"],"sourceRoot":"../../../../src","sources":["web/utils/cursorUtils.ts"],"mappings":"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"}
1
+ {"version":3,"names":["findHTMLElementInTree","getTreeNodeByIndex","setCursorPosition","target","startIndex","endIndex","shouldScrollIntoView","tree","document","activeElement","start","Math","max","min","length","end","range","createRange","selectNodeContents","startTreeNode","endTreeNode","console","error","type","setStartBefore","element","setStart","childNodes","setEndBefore","setEnd","collapse","selection","window","getSelection","setBaseAndExtent","startContainer","startOffset","endContainer","endOffset","scrollIntoView","node","_node$parentNode","targetElement","parentNode","block","rangeCount","getRangeAt","caretRect","getBoundingClientRect","targetRect","top","height","scrollTop","moveCursorToEnd","getCurrentCursorPosition","getHTMLElement","Text","parentElement","startElement","endElement","value","removeSelection","removeAllRanges"],"sourceRoot":"../../../../src","sources":["web/utils/cursorUtils.ts"],"mappings":"AACA,SAAQA,qBAAqB,EAAEC,kBAAkB,QAAO,aAAa;AAGrE,SAASC,iBAAiBA,CAACC,MAAgC,EAAEC,UAAkB,EAAEC,QAAuB,GAAG,IAAI,EAAEC,oBAAoB,GAAG,KAAK,EAAE;EAC7I;EACA,IAAI,CAACH,MAAM,CAACI,IAAI,IAAIJ,MAAM,KAAKK,QAAQ,CAACC,aAAa,EAAE;IACrD;EACF;EAEA,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACT,UAAU,EAAED,MAAM,CAACI,IAAI,CAACO,MAAM,CAAC,CAAC;EACnE,MAAMC,GAAG,GAAGV,QAAQ,GAAGM,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACR,QAAQ,EAAEF,MAAM,CAACI,IAAI,CAACO,MAAM,CAAC,CAAC,GAAG,IAAI;EACjF,IAAIC,GAAG,IAAIA,GAAG,GAAGL,KAAK,EAAE;IACtB;EACF;EAEA,MAAMM,KAAK,GAAGR,QAAQ,CAACS,WAAW,CAAC,CAAC;EACpCD,KAAK,CAACE,kBAAkB,CAACf,MAAM,CAAC;EAEhC,MAAMgB,aAAa,GAAGlB,kBAAkB,CAACE,MAAM,CAACI,IAAI,EAAEG,KAAK,CAAC;EAC5D,MAAMU,WAAW,GAAGL,GAAG,IAAII,aAAa,KAAKJ,GAAG,GAAGI,aAAa,CAACT,KAAK,IAAIK,GAAG,IAAII,aAAa,CAACT,KAAK,GAAGS,aAAa,CAACL,MAAM,CAAC,GAAGb,kBAAkB,CAACE,MAAM,CAACI,IAAI,EAAEQ,GAAG,CAAC,GAAGI,aAAa;EACnL,IAAI,CAACA,aAAa,IAAI,CAACC,WAAW,EAAE;IAClCC,OAAO,CAACC,KAAK,CAAC,gCAAgC,CAAC;IAC/C;EACF;EAEA,IAAIH,aAAa,CAACI,IAAI,KAAK,IAAI,EAAE;IAC/BP,KAAK,CAACQ,cAAc,CAACL,aAAa,CAACM,OAAO,CAAC;EAC7C,CAAC,MAAM;IACLT,KAAK,CAACU,QAAQ,CAACP,aAAa,CAACM,OAAO,CAACE,UAAU,CAAC,CAAC,CAAC,EAAejB,KAAK,GAAGS,aAAa,CAACT,KAAK,CAAC;EAC/F;EAEA,IAAIU,WAAW,CAACG,IAAI,KAAK,IAAI,EAAE;IAC7BP,KAAK,CAACY,YAAY,CAACR,WAAW,CAACK,OAAO,CAAC;EACzC,CAAC,MAAM;IACLT,KAAK,CAACa,MAAM,CAACT,WAAW,CAACK,OAAO,CAACE,UAAU,CAAC,CAAC,CAAC,EAAe,CAACZ,GAAG,IAAIL,KAAK,IAAIU,WAAW,CAACV,KAAK,CAAC;EAClG;EAEA,IAAI,CAACK,GAAG,EAAE;IACRC,KAAK,CAACc,QAAQ,CAAC,IAAI,CAAC;EACtB;EAEA,MAAMC,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,CAAC;EACvC,IAAIF,SAAS,EAAE;IACbA,SAAS,CAACG,gBAAgB,CAAClB,KAAK,CAACmB,cAAc,EAAEnB,KAAK,CAACoB,WAAW,EAAEpB,KAAK,CAACqB,YAAY,EAAErB,KAAK,CAACsB,SAAS,CAAC;EAC1G;EAEA,IAAIhC,oBAAoB,EAAE;IACxBiC,cAAc,CAACpC,MAAM,EAAEiB,WAAW,CAAC;EACrC;AACF;AAEA,SAASmB,cAAcA,CAACpC,MAAgC,EAAEqC,IAAc,EAAE;EAAA,IAAAC,gBAAA;EACxE,MAAMC,aAAa,GAAGvC,MAAM;EAC5B,IAAIqC,IAAI,CAACjB,IAAI,KAAK,IAAI,IAAI,EAAAkB,gBAAA,GAAAD,IAAI,CAACG,UAAU,cAAAF,gBAAA,gBAAAA,gBAAA,GAAfA,gBAAA,CAAiBE,UAAU,cAAAF,gBAAA,uBAA3BA,gBAAA,CAA6BlB,IAAI,MAAK,MAAM,EAAE;IACtE;IACAiB,IAAI,CAACG,UAAU,CAACA,UAAU,CAAClB,OAAO,CAACc,cAAc,CAAC;MAChDK,KAAK,EAAE;IACT,CAAC,CAAC;EACJ,CAAC,MAAM;IACL,MAAMb,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,CAAC;IACvC,IAAIF,SAAS,IAAIA,SAAS,CAACc,UAAU,GAAG,CAAC,EAAE;MACzC,MAAM7B,KAAK,GAAGe,SAAS,CAACe,UAAU,CAAC,CAAC,CAAC;MACrC,MAAMC,SAAS,GAAG/B,KAAK,CAACgC,qBAAqB,CAAC,CAAC;MAC/C,MAAMC,UAAU,GAAG9C,MAAM,CAAC6C,qBAAqB,CAAC,CAAC;;MAEjD;MACA,IAAID,SAAS,CAACG,GAAG,GAAGH,SAAS,CAACI,MAAM,GAAGF,UAAU,CAACC,GAAG,GAAGD,UAAU,CAACE,MAAM,EAAE;QACzET,aAAa,CAACU,SAAS,GAAGL,SAAS,CAACG,GAAG,GAAGH,SAAS,CAACI,MAAM,GAAGF,UAAU,CAACC,GAAG,GAAGD,UAAU,CAACE,MAAM,GAAGhD,MAAM,CAACiD,SAAS;MACpH;IACF;IAEAZ,IAAI,CAACf,OAAO,CAACc,cAAc,CAAC;MAC1BK,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;AACF;AAEA,SAASS,eAAeA,CAAClD,MAAmB,EAAE;EAC5C,MAAMa,KAAK,GAAGR,QAAQ,CAACS,WAAW,CAAC,CAAC;EACpC,MAAMc,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,CAAC;EACvC,IAAIF,SAAS,EAAE;IACbf,KAAK,CAACU,QAAQ,CAACvB,MAAM,EAAEA,MAAM,CAACwB,UAAU,CAACb,MAAM,CAAC;IAChDE,KAAK,CAACc,QAAQ,CAAC,IAAI,CAAC;IACpBC,SAAS,CAACG,gBAAgB,CAAClB,KAAK,CAACmB,cAAc,EAAEnB,KAAK,CAACoB,WAAW,EAAEpB,KAAK,CAACqB,YAAY,EAAErB,KAAK,CAACsB,SAAS,CAAC;EAC1G;AACF;AAEA,SAASgB,wBAAwBA,CAACnD,MAAgC,EAAE;EAClE,SAASoD,cAAcA,CAACf,IAAU,EAAE;IAClC,IAAIf,OAAO,GAAGe,IAA0B;IACxC,IAAIf,OAAO,YAAY+B,IAAI,EAAE;MAC3B/B,OAAO,GAAGe,IAAI,CAACiB,aAA4B;IAC7C;IACA,OAAOhC,OAAO;EAChB;EAEA,MAAMM,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,CAAC;EACvC,IAAI,CAACF,SAAS,IAAKA,SAAS,IAAIA,SAAS,CAACc,UAAU,KAAK,CAAE,EAAE;IAC3D,OAAO,IAAI;EACb;EACA,MAAM7B,KAAK,GAAGe,SAAS,CAACe,UAAU,CAAC,CAAC,CAAC;EACrC,MAAMY,YAAY,GAAGH,cAAc,CAACvC,KAAK,CAACmB,cAAc,CAAC;EACzD,MAAMwB,UAAU,GAAG3C,KAAK,CAACmB,cAAc,KAAKnB,KAAK,CAACqB,YAAY,GAAGqB,YAAY,GAAGH,cAAc,CAACvC,KAAK,CAACqB,YAAY,CAAC;EAElH,MAAMlB,aAAa,GAAGnB,qBAAqB,CAACG,MAAM,CAACI,IAAI,EAAEmD,YAAY,CAAC;EACtE,MAAMtC,WAAW,GAAGpB,qBAAqB,CAACG,MAAM,CAACI,IAAI,EAAEoD,UAAU,CAAC;EAElE,IAAIjD,KAAK,GAAG,CAAC,CAAC;EACd,IAAIK,GAAG,GAAG,CAAC,CAAC;EACZ,IAAII,aAAa,IAAIC,WAAW,EAAE;IAChCV,KAAK,GAAGS,aAAa,CAACT,KAAK,GAAGM,KAAK,CAACoB,WAAW;;IAE/C;IACA,IAAI,CAAAhB,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEuB,UAAU,MAAK,IAAI,EAAE;MACpC5B,GAAG,GAAGZ,MAAM,CAACyD,KAAK,CAAC9C,MAAM;IAC3B,CAAC,MAAM;MACLC,GAAG,GAAGK,WAAW,CAACV,KAAK,GAAGM,KAAK,CAACsB,SAAS;IAC3C;EACF;EACA,OAAO;IAAC5B,KAAK;IAAEK;EAAG,CAAC;AACrB;AAEA,SAAS8C,eAAeA,CAAA,EAAG;EACzB,MAAM9B,SAAS,GAAGC,MAAM,CAACC,YAAY,CAAC,CAAC;EACvC,IAAIF,SAAS,EAAE;IACbA,SAAS,CAAC+B,eAAe,CAAC,CAAC;EAC7B;AACF;AAEA,SAAQR,wBAAwB,EAAED,eAAe,EAAEnD,iBAAiB,EAAE2D,eAAe,EAAEtB,cAAc"}
@@ -228,17 +228,17 @@ function parseRangesToHTMLNodes(text, ranges, isMultiline = true, markdownStyle
228
228
  tree: rootNode
229
229
  };
230
230
  }
231
- function moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target) {
231
+ function moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, target, shouldScrollIntoView = false) {
232
232
  if (!isFocused) {
233
233
  return;
234
234
  }
235
235
  if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
236
236
  moveCursorToEnd(target);
237
237
  } else if (cursorPosition !== null) {
238
- setCursorPosition(target, cursorPosition);
238
+ setCursorPosition(target, cursorPosition, null, shouldScrollIntoView);
239
239
  }
240
240
  }
241
- function updateInputStructure(target, text, cursorPositionIndex, isMultiline = true, markdownStyle = {}, alwaysMoveCursorToTheEnd = false, shouldForceDOMUpdate = false) {
241
+ function updateInputStructure(target, text, cursorPositionIndex, isMultiline = true, markdownStyle = {}, alwaysMoveCursorToTheEnd = false, shouldForceDOMUpdate = false, shouldScrollIntoView = false) {
242
242
  const targetElement = target;
243
243
 
244
244
  // in case the cursorPositionIndex is larger than text length, cursorPosition will be null, i.e: move the caret to the end
@@ -269,7 +269,7 @@ function updateInputStructure(target, text, cursorPositionIndex, isMultiline = t
269
269
  }
270
270
  updateTreeElementRefs(tree, targetElement);
271
271
  targetElement.tree = tree;
272
- moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, targetElement);
272
+ moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, targetElement, shouldScrollIntoView);
273
273
  }
274
274
  return {
275
275
  text,
@@ -1 +1 @@
1
- {"version":3,"names":["addNodeToTree","updateTreeElementRefs","getCurrentCursorPosition","moveCursorToEnd","setCursorPosition","addStyleToBlock","extendBlockStructure","getFirstBlockMarkdownRange","isBlockMarkdownType","getAnimationCurrentTimes","updateAnimationsTime","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","length","splitTextIntoLines","text","lineStartIndex","lines","split","map","line","lineObject","start","markdownRanges","mergeLinesWithMultilineTags","mergedLines","lineIndexes","_line","index","beginLineIndex","findLastIndex","endLineIndex","findIndex","correspondingLineIndexes","slice","mainLineIndex","mainLine","otherLineIndexes","lineIndex","otherLine","filter","includes","appendValueToElement","element","parentTreeNode","value","targetElement","parentNode","appendNode","type","node","appendChild","addBrElement","span","document","createElement","setAttribute","spanNode","addTextToElement","createTextNode","addParagraph","disableInlineStyles","p","pNode","addBlockWrapper","targetNode","markdownStyle","parseRangesToHTMLNodes","isMultiline","currentInput","rootElement","textLength","rootNode","childNodes","orderIndex","isGeneratingNewline","currentParentNode","dom","tree","lastRangeEndIndex","shift","wasBlockGenerated","lineMarkdownRanges","endOfCurrentRange","nextRangeStartIndex","blockRange","substring","textBeforeRange","textAfterRange","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","target","updateInputStructure","cursorPositionIndex","shouldForceDOMUpdate","activeElement","selection","global","parseExpensiMarkToRanges","innerHTML","innerText","animationTimes"],"sourceRoot":"../../../../src","sources":["web/utils/parserUtils.ts"],"mappings":"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"}
1
+ {"version":3,"names":["addNodeToTree","updateTreeElementRefs","getCurrentCursorPosition","moveCursorToEnd","setCursorPosition","addStyleToBlock","extendBlockStructure","getFirstBlockMarkdownRange","isBlockMarkdownType","getAnimationCurrentTimes","updateAnimationsTime","ungroupRanges","ranges","ungroupedRanges","forEach","range","depth","push","rangeWithoutDepth","Array","from","length","splitTextIntoLines","text","lineStartIndex","lines","split","map","line","lineObject","start","markdownRanges","mergeLinesWithMultilineTags","mergedLines","lineIndexes","_line","index","beginLineIndex","findLastIndex","endLineIndex","findIndex","correspondingLineIndexes","slice","mainLineIndex","mainLine","otherLineIndexes","lineIndex","otherLine","filter","includes","appendValueToElement","element","parentTreeNode","value","targetElement","parentNode","appendNode","type","node","appendChild","addBrElement","span","document","createElement","setAttribute","spanNode","addTextToElement","createTextNode","addParagraph","disableInlineStyles","p","pNode","addBlockWrapper","targetNode","markdownStyle","parseRangesToHTMLNodes","isMultiline","currentInput","rootElement","textLength","rootNode","childNodes","orderIndex","isGeneratingNewline","currentParentNode","dom","tree","lastRangeEndIndex","shift","wasBlockGenerated","lineMarkdownRanges","endOfCurrentRange","nextRangeStartIndex","blockRange","substring","textBeforeRange","textAfterRange","moveCursor","isFocused","alwaysMoveCursorToTheEnd","cursorPosition","target","shouldScrollIntoView","updateInputStructure","cursorPositionIndex","shouldForceDOMUpdate","activeElement","selection","global","parseExpensiMarkToRanges","innerHTML","innerText","animationTimes"],"sourceRoot":"../../../../src","sources":["web/utils/parserUtils.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownTextInput.web.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAKT,cAAc,EAKf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAmE,MAAM,OAAO,CAAC;AAI/K,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AAQnF,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAcF,KAAK,wBAAwB,GAAG,cAAc,GAC5C,gBAAgB,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEJ,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,iBAAiB,0FAinBtB,CAAC;AAoBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,sBAAsB,EAAE,wBAAwB,EAAE,mBAAmB,EAAC,CAAC"}
1
+ {"version":3,"file":"MarkdownTextInput.web.d.ts","sourceRoot":"","sources":["../../../src/MarkdownTextInput.web.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EAKT,cAAc,EAKf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAiE,MAAM,OAAO,CAAC;AACtF,OAAO,KAAK,EAAwE,UAAU,EAAmE,MAAM,OAAO,CAAC;AAI/K,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iDAAiD,CAAC;AASnF,UAAU,sBAAuB,SAAQ,cAAc;IACrD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAMD,KAAK,SAAS,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAcF,KAAK,wBAAwB,GAAG,cAAc,GAC5C,gBAAgB,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEJ,KAAK,mBAAmB,GAAG,WAAW,GAAG;IACvC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,QAAA,MAAM,iBAAiB,0FAkpBtB,CAAC;AAoBF,eAAe,iBAAiB,CAAC;AAEjC,YAAY,EAAC,sBAAsB,EAAE,wBAAwB,EAAE,mBAAmB,EAAC,CAAC"}
@@ -4,5 +4,6 @@ import type { PartialMarkdownStyle } from '../../styleUtils';
4
4
  import type { TreeNode } from '../utils/treeUtils';
5
5
  /** The main function that adds inline image preview to the node */
6
6
  declare function addInlineImagePreview(currentInput: MarkdownTextInputElement, targetNode: TreeNode, text: string, ranges: MarkdownRange[], markdownStyle: PartialMarkdownStyle): TreeNode;
7
- export { addInlineImagePreview };
7
+ declare function forceRefreshAllImages(currentInput: MarkdownTextInputElement, markdownStyle: PartialMarkdownStyle): void;
8
+ export { addInlineImagePreview, forceRefreshAllImages };
8
9
  //# sourceMappingURL=inlineImage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inlineImage.d.ts","sourceRoot":"","sources":["../../../../../src/web/inputElements/inlineImage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAoDjD,mEAAmE;AACnE,iBAAS,qBAAqB,CAAC,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,oBAAoB,YA0EtK;AAGD,OAAO,EAAC,qBAAqB,EAAC,CAAC"}
1
+ {"version":3,"file":"inlineImage.d.ts","sourceRoot":"","sources":["../../../../../src/web/inputElements/inlineImage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAC/F,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AA0IjD,mEAAmE;AACnE,iBAAS,qBAAqB,CAAC,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,aAAa,EAAE,oBAAoB,YAkCtK;AAED,iBAAS,qBAAqB,CAAC,YAAY,EAAE,wBAAwB,EAAE,aAAa,EAAE,oBAAoB,QAazG;AAGD,OAAO,EAAC,qBAAqB,EAAE,qBAAqB,EAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MarkdownTextInputElement } from '../../MarkdownTextInput.web';
2
2
  import type { TreeNode } from './treeUtils';
3
- declare function setCursorPosition(target: MarkdownTextInputElement, startIndex: number, endIndex?: number | null): void;
4
- declare function scrollIntoView(node: TreeNode): void;
3
+ declare function setCursorPosition(target: MarkdownTextInputElement, startIndex: number, endIndex?: number | null, shouldScrollIntoView?: boolean): void;
4
+ declare function scrollIntoView(target: MarkdownTextInputElement, node: TreeNode): void;
5
5
  declare function moveCursorToEnd(target: HTMLElement): void;
6
6
  declare function getCurrentCursorPosition(target: MarkdownTextInputElement): {
7
7
  start: number;
@@ -1 +1 @@
1
- {"version":3,"file":"cursorUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/cursorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,QA4C9G;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,QAWrC;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,WAAW,QAQ3C;AAED,iBAAS,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;;SAiCjE;AAED,iBAAS,eAAe,SAKvB;AAED,OAAO,EAAC,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAC,CAAC"}
1
+ {"version":3,"file":"cursorUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/cursorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE1E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAE1C,iBAAS,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,oBAAoB,UAAQ,QA8C5I;AAED,iBAAS,cAAc,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,QAwBvE;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,WAAW,QAQ3C;AAED,iBAAS,wBAAwB,CAAC,MAAM,EAAE,wBAAwB;;;SAiCjE;AAED,iBAAS,eAAe,SAKvB;AAED,OAAO,EAAC,wBAAwB,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAC,CAAC"}
@@ -7,7 +7,7 @@ declare function parseRangesToHTMLNodes(text: string, ranges: MarkdownRange[], i
7
7
  dom: HTMLMarkdownElement;
8
8
  tree: TreeNode;
9
9
  };
10
- declare function updateInputStructure(target: MarkdownTextInputElement, text: string, cursorPositionIndex: number | null, isMultiline?: boolean, markdownStyle?: PartialMarkdownStyle, alwaysMoveCursorToTheEnd?: boolean, shouldForceDOMUpdate?: boolean): {
10
+ declare function updateInputStructure(target: MarkdownTextInputElement, text: string, cursorPositionIndex: number | null, isMultiline?: boolean, markdownStyle?: PartialMarkdownStyle, alwaysMoveCursorToTheEnd?: boolean, shouldForceDOMUpdate?: boolean, shouldScrollIntoView?: boolean): {
11
11
  text: string;
12
12
  cursorPosition: number;
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"parserUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/parserUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE/F,OAAO,KAAK,EAAW,QAAQ,EAAC,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAG3D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AA2IrD,yEAAyE;AACzE,iBAAS,sBAAsB,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,EACvB,WAAW,UAAO,EAClB,aAAa,GAAE,oBAAyB,EACxC,mBAAmB,UAAQ,EAC3B,YAAY,GAAE,wBAAwB,GAAG,IAAW;;;EAkHrD;AAcD,iBAAS,oBAAoB,CAC3B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,WAAW,UAAO,EAClB,aAAa,GAAE,oBAAyB,EACxC,wBAAwB,UAAQ,EAChC,oBAAoB,UAAQ;;;EAoC7B;AAED,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,CAAC"}
1
+ {"version":3,"file":"parserUtils.d.ts","sourceRoot":"","sources":["../../../../../src/web/utils/parserUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAE,wBAAwB,EAAC,MAAM,6BAA6B,CAAC;AAE/F,OAAO,KAAK,EAAW,QAAQ,EAAC,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAG3D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AA2IrD,yEAAyE;AACzE,iBAAS,sBAAsB,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,aAAa,EAAE,EACvB,WAAW,UAAO,EAClB,aAAa,GAAE,oBAAyB,EACxC,mBAAmB,UAAQ,EAC3B,YAAY,GAAE,wBAAwB,GAAG,IAAW;;;EAkHrD;AAcD,iBAAS,oBAAoB,CAC3B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,WAAW,UAAO,EAClB,aAAa,GAAE,oBAAyB,EACxC,wBAAwB,UAAQ,EAChC,oBAAoB,UAAQ,EAC5B,oBAAoB,UAAQ;;;EAoC7B;AAED,OAAO,EAAC,oBAAoB,EAAE,sBAAsB,EAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expensify/react-native-live-markdown",
3
- "version": "0.1.156",
3
+ "version": "0.1.158",
4
4
  "description": "Drop-in replacement for React Native's TextInput component with Markdown formatting.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -22,6 +22,7 @@ import './web/MarkdownTextInput.css';
22
22
  import type {MarkdownStyle} from './MarkdownTextInputDecoratorViewNativeComponent';
23
23
  import {getElementHeight, getPlaceholderValue, isEventComposing, normalizeValue, parseInnerHTMLToText} from './web/utils/inputUtils';
24
24
  import {parseToReactDOMStyle, processMarkdownStyle} from './web/utils/webStyleUtils';
25
+ import {forceRefreshAllImages} from './web/inputElements/inlineImage';
25
26
 
26
27
  require('../parser/react-native-live-markdown-parser.js');
27
28
 
@@ -111,6 +112,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
111
112
  const history = useRef<InputHistory>();
112
113
  const dimensions = useRef<Dimensions | null>(null);
113
114
  const pasteContent = useRef<string | null>(null);
115
+ const hasJustBeenFocused = useRef<boolean>(false);
114
116
 
115
117
  if (!history.current) {
116
118
  history.current = new InputHistory(100, 150, value || '');
@@ -143,6 +145,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
143
145
  cursorPosition: number | null = null,
144
146
  shouldAddToHistory = true,
145
147
  shouldForceDOMUpdate = false,
148
+ shouldScrollIntoView = false,
146
149
  ): ParseTextResult => {
147
150
  if (!divRef.current) {
148
151
  return {text: text || '', cursorPosition: null};
@@ -151,7 +154,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
151
154
  if (text === null) {
152
155
  return {text: divRef.current.value, cursorPosition: null};
153
156
  }
154
- const parsedText = updateInputStructure(target, text, cursorPosition, multiline, customMarkdownStyles, false, shouldForceDOMUpdate);
157
+ const parsedText = updateInputStructure(target, text, cursorPosition, multiline, customMarkdownStyles, false, shouldForceDOMUpdate, shouldScrollIntoView);
155
158
  divRef.current.value = parsedText.text;
156
159
 
157
160
  if (history.current && shouldAddToHistory) {
@@ -261,6 +264,19 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
261
264
  [handleSelectionChange, updateRefSelectionVariables],
262
265
  );
263
266
 
267
+ const handleOnSelect = useCallback(
268
+ (e) => {
269
+ updateSelection(e);
270
+
271
+ // If the input has just been focused, we need to scroll the cursor into view
272
+ if (divRef.current && contentSelection.current && hasJustBeenFocused.current) {
273
+ setCursorPosition(divRef.current, contentSelection.current?.start, contentSelection.current?.end, true);
274
+ hasJustBeenFocused.current = false;
275
+ }
276
+ },
277
+ [updateSelection],
278
+ );
279
+
264
280
  const handleContentSizeChange = useCallback(() => {
265
281
  if (!divRef.current || !multiline || !onContentSizeChange) {
266
282
  return;
@@ -322,7 +338,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
322
338
  newInputUpdate = redo(divRef.current);
323
339
  break;
324
340
  default:
325
- newInputUpdate = parseText(divRef.current, parsedText, processedMarkdownStyle, newCursorPosition, true, !inputType);
341
+ newInputUpdate = parseText(divRef.current, parsedText, processedMarkdownStyle, newCursorPosition, true, !inputType, inputType === 'pasteText');
326
342
  }
327
343
  const {text, cursorPosition} = newInputUpdate;
328
344
  updateTextColor(divRef.current, text);
@@ -456,6 +472,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
456
472
 
457
473
  const handleFocus: FocusEventHandler<HTMLDivElement> = useCallback(
458
474
  (event) => {
475
+ hasJustBeenFocused.current = true;
459
476
  const e = event as unknown as NativeSyntheticEvent<TextInputFocusEventData>;
460
477
  const hostNode = e.target as unknown as HTMLDivElement;
461
478
  currentlyFocusedField.current = hostNode;
@@ -464,11 +481,17 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
464
481
  if (contentSelection.current) {
465
482
  setCursorPosition(divRef.current, contentSelection.current.start, contentSelection.current.end);
466
483
  } else {
467
- const valueLength = value ? value.length : divRef.current.value.length;
484
+ const valueLength = value ? value.length : (divRef.current.value || '').length;
468
485
  setCursorPosition(divRef.current, valueLength, null);
469
486
  }
470
487
  }
471
488
 
489
+ if (divRef.current) {
490
+ divRef.current.scrollIntoView({
491
+ block: 'nearest',
492
+ });
493
+ }
494
+
472
495
  if (onFocus) {
473
496
  setEventProps(e);
474
497
  onFocus(e);
@@ -612,7 +635,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
612
635
  }
613
636
  const normalizedValue = normalizeValue(value);
614
637
  divRef.current.value = normalizedValue;
615
- parseText(divRef.current, normalizedValue, processedMarkdownStyle);
638
+ parseText(divRef.current, normalizedValue, processedMarkdownStyle, null, true, false, true);
616
639
  updateTextColor(divRef.current, value);
617
640
  },
618
641
  [multiline, processedMarkdownStyle, value],
@@ -656,6 +679,17 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
656
679
  setCursorPosition(divRef.current, newSelection.start, newSelection.end);
657
680
  }, [selection, updateRefSelectionVariables]);
658
681
 
682
+ useEffect(() => {
683
+ const handleReconnect = () => {
684
+ forceRefreshAllImages(divRef.current as MarkdownTextInputElement, processedMarkdownStyle);
685
+ };
686
+
687
+ window.addEventListener('online', handleReconnect);
688
+ return () => {
689
+ window.removeEventListener('online', handleReconnect);
690
+ };
691
+ }, [processedMarkdownStyle]);
692
+
659
693
  return (
660
694
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
661
695
  <div
@@ -685,7 +719,7 @@ const MarkdownTextInput = React.forwardRef<TextInput, MarkdownTextInputProps>(
685
719
  spellCheck={spellCheck}
686
720
  dir={dir}
687
721
  inputMode={inputMode}
688
- onSelect={updateSelection}
722
+ onSelect={handleOnSelect}
689
723
  onTouchStart={handleTouchStart}
690
724
  />
691
725
  );
@@ -13,11 +13,94 @@ const inlineImageDefaultStyles = {
13
13
  left: 0,
14
14
  };
15
15
 
16
- const timeoutMap = new Map<string, NodeJS.Timeout>();
16
+ type DebouncePreviewItem = {
17
+ timeout: NodeJS.Timeout;
18
+ url: string;
19
+ };
20
+
21
+ const timeoutMap = new Map<string, DebouncePreviewItem>();
22
+
23
+ function getImagePreviewElement(targetElement: HTMLMarkdownElement) {
24
+ return Array.from(targetElement?.childNodes || []).find((el) => (el as HTMLElement)?.contentEditable === 'false') as HTMLMarkdownElement | undefined;
25
+ }
26
+
27
+ function handleOnLoad(
28
+ currentInput: MarkdownTextInputElement,
29
+ target: HTMLMarkdownElement,
30
+ imageHref: string,
31
+ markdownStyle: PartialMarkdownStyle,
32
+ imageContainer: HTMLSpanElement,
33
+ err?: string | Event,
34
+ ) {
35
+ let targetElement = target;
36
+
37
+ // Update the target element if the input structure was changed while the image was loading and its content hasn't changed
38
+ if (!targetElement.isConnected) {
39
+ const currentElement = currentInput.querySelector(`[data-type="block"][data-id="${target.getAttribute('data-id')}"]`) as HTMLMarkdownElement;
40
+
41
+ const currentElementURL = getImagePreviewElement(currentElement)?.getAttribute('data-url');
42
+ const targetElementURL = getImagePreviewElement(targetElement)?.getAttribute('data-url');
43
+ if (currentElementURL && targetElementURL && currentElementURL === targetElementURL) {
44
+ targetElement = currentElement;
45
+ } else {
46
+ return; // Prevent adding expired image previews to the input structure
47
+ }
48
+ }
49
+
50
+ // Verify if the current spinner is for the loaded image. If not, it means that the response came after the user changed the image url
51
+ const currentSpinner = currentInput.querySelector(`[data-type="spinner"][data-url="${imageHref}"]`);
52
+
53
+ // Remove the spinner
54
+ if (currentSpinner) {
55
+ currentSpinner.remove();
56
+ }
57
+
58
+ const img = imageContainer.firstChild as HTMLImageElement;
59
+ const {minHeight, minWidth, maxHeight, maxWidth, borderRadius} = markdownStyle.inlineImage || {};
60
+ const imgStyle = {
61
+ minHeight,
62
+ minWidth,
63
+ maxHeight,
64
+ maxWidth,
65
+ borderRadius,
66
+ };
67
+
68
+ // Set the image styles
69
+ Object.assign(imageContainer.style, {
70
+ ...inlineImageDefaultStyles,
71
+ ...(err && {
72
+ ...imgStyle,
73
+ display: 'flex',
74
+ alignItems: 'center',
75
+ justifyContent: 'center',
76
+ }),
77
+ });
78
+
79
+ Object.assign(img.style, !err && imgStyle);
80
+
81
+ targetElement.appendChild(imageContainer);
17
82
 
18
- function createImageElement(targetNode: TreeNode, url: string, callback: (img: HTMLElement, err?: string | Event) => void) {
83
+ const imageClientHeight = Math.max(img.clientHeight, imageContainer.clientHeight);
84
+ Object.assign(imageContainer.style, {
85
+ height: `${imageClientHeight}px`,
86
+ });
87
+ // Set paddingBottom to the height of the image so it's displayed under the block
88
+ const imageMarginTop = parseStringWithUnitToNumber(`${markdownStyle.inlineImage?.marginTop}`);
89
+ Object.assign(targetElement.style, {
90
+ paddingBottom: `${imageClientHeight + imageMarginTop}px`,
91
+ });
92
+ }
93
+
94
+ function createImageElement(currentInput: MarkdownTextInputElement, targetNode: TreeNode, url: string, markdownStyle: PartialMarkdownStyle) {
19
95
  if (timeoutMap.has(targetNode.orderIndex)) {
20
- clearTimeout(timeoutMap.get(targetNode.orderIndex));
96
+ const mapItem = timeoutMap.get(targetNode.orderIndex);
97
+ // Check if the image URL has been changed, if not, early return so the image can be loaded asynchronously
98
+ const currentElement = document.querySelector(`[data-type="block"][data-id="${targetNode.orderIndex}"]`) as HTMLMarkdownElement;
99
+ if (mapItem?.url === url && currentElement && getImagePreviewElement(currentElement)) {
100
+ return;
101
+ }
102
+
103
+ clearTimeout(mapItem?.timeout);
21
104
  timeoutMap.delete(targetNode.orderIndex);
22
105
  }
23
106
 
@@ -30,12 +113,15 @@ function createImageElement(targetNode: TreeNode, url: string, callback: (img: H
30
113
  imageContainer.appendChild(img);
31
114
 
32
115
  img.contentEditable = 'false';
33
- img.onload = () => callback(imageContainer);
34
- img.onerror = (err) => callback(imageContainer, err);
116
+ img.onload = () => handleOnLoad(currentInput, targetNode.element, url, markdownStyle, imageContainer);
117
+ img.onerror = (err) => handleOnLoad(currentInput, targetNode.element, url, markdownStyle, imageContainer, err);
35
118
  img.src = url;
36
119
  timeoutMap.delete(targetNode.orderIndex);
37
120
  }, INLINE_IMAGE_PREVIEW_DEBOUNCE_TIME_MS);
38
- timeoutMap.set(targetNode.orderIndex, timeout);
121
+ timeoutMap.set(targetNode.orderIndex, {
122
+ timeout,
123
+ url,
124
+ });
39
125
  }
40
126
 
41
127
  /** Adds already loaded image element from current input content to the tree node */
@@ -86,50 +172,25 @@ function addInlineImagePreview(currentInput: MarkdownTextInputElement, targetNod
86
172
  paddingBottom: markdownStyle.loadingIndicatorContainer?.height || markdownStyle.loadingIndicator?.height || (!!markdownStyle.loadingIndicator && '30px') || undefined,
87
173
  });
88
174
 
89
- createImageElement(targetNode, imageHref, (imageContainer, err) => {
90
- // Verify if the current spinner is for the loaded image. If not, it means that the response came after the user changed the image url
91
- const currentSpinner = currentInput.querySelector('[data-type="spinner"]');
92
- // Remove the spinner
93
- if (currentSpinner) {
94
- currentSpinner.remove();
175
+ createImageElement(currentInput, targetNode, imageHref, markdownStyle);
176
+
177
+ return targetNode;
178
+ }
179
+
180
+ function forceRefreshAllImages(currentInput: MarkdownTextInputElement, markdownStyle: PartialMarkdownStyle) {
181
+ currentInput.querySelectorAll('img').forEach((img) => {
182
+ // force image reload only if broken image icon is displayed
183
+ if (img.naturalWidth > 0) {
184
+ return;
95
185
  }
96
186
 
97
- const img = imageContainer.firstChild as HTMLImageElement;
98
- const {minHeight, minWidth, maxHeight, maxWidth, borderRadius} = markdownStyle.inlineImage || {};
99
- const imgStyle = {
100
- minHeight,
101
- minWidth,
102
- maxHeight,
103
- maxWidth,
104
- borderRadius,
105
- };
106
-
107
- // Set the image styles
108
- Object.assign(imageContainer.style, {
109
- ...inlineImageDefaultStyles,
110
- ...(err && {
111
- ...imgStyle,
112
- display: 'flex',
113
- alignItems: 'center',
114
- justifyContent: 'center',
115
- }),
116
- });
117
-
118
- Object.assign(img.style, !err && imgStyle);
119
-
120
- targetNode.element.appendChild(imageContainer);
121
-
122
- Object.assign(imageContainer.style, {
123
- height: `${imageContainer.clientHeight}px`,
124
- });
125
- // Set paddingBottom to the height of the image so it's displayed under the block
126
- Object.assign(targetNode.element.style, {
127
- paddingBottom: `${imageContainer.clientHeight + imageMarginTop}px`,
128
- });
187
+ const url = img.src;
188
+ const imgElement = img;
189
+ imgElement.src = '';
190
+ imgElement.onload = () => handleOnLoad(currentInput, img.parentElement?.parentElement as HTMLMarkdownElement, url, markdownStyle, img.parentElement as HTMLMarkdownElement);
191
+ imgElement.src = `${url}#`;
129
192
  });
130
-
131
- return targetNode;
132
193
  }
133
194
 
134
195
  // eslint-disable-next-line import/prefer-default-export
135
- export {addInlineImagePreview};
196
+ export {addInlineImagePreview, forceRefreshAllImages};
@@ -80,7 +80,7 @@ function addStyleToBlock(targetElement: HTMLElement, type: NodeType, markdownSty
80
80
  }
81
81
 
82
82
  const BLOCK_MARKDOWN_TYPES = ['inline-image'];
83
- const FULL_LINE_MARKDOWN_TYPES = ['blockquote', 'h1'];
83
+ const FULL_LINE_MARKDOWN_TYPES = ['blockquote'];
84
84
 
85
85
  function isBlockMarkdownType(type: NodeType) {
86
86
  return BLOCK_MARKDOWN_TYPES.includes(type);
@@ -2,7 +2,7 @@ import type {MarkdownTextInputElement} from '../../MarkdownTextInput.web';
2
2
  import {findHTMLElementInTree, getTreeNodeByIndex} from './treeUtils';
3
3
  import type {TreeNode} from './treeUtils';
4
4
 
5
- function setCursorPosition(target: MarkdownTextInputElement, startIndex: number, endIndex: number | null = null) {
5
+ function setCursorPosition(target: MarkdownTextInputElement, startIndex: number, endIndex: number | null = null, shouldScrollIntoView = false) {
6
6
  // We don't want to move the cursor if the target is not focused
7
7
  if (!target.tree || target !== document.activeElement) {
8
8
  return;
@@ -45,16 +45,31 @@ function setCursorPosition(target: MarkdownTextInputElement, startIndex: number,
45
45
  selection.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
46
46
  }
47
47
 
48
- scrollIntoView(startTreeNode);
48
+ if (shouldScrollIntoView) {
49
+ scrollIntoView(target, endTreeNode);
50
+ }
49
51
  }
50
52
 
51
- function scrollIntoView(node: TreeNode) {
53
+ function scrollIntoView(target: MarkdownTextInputElement, node: TreeNode) {
54
+ const targetElement = target;
52
55
  if (node.type === 'br' && node.parentNode?.parentNode?.type === 'line') {
53
56
  // If the node is a line break, scroll to the parent paragraph, because Safari doesn't support scrollIntoView on br elements
54
57
  node.parentNode.parentNode.element.scrollIntoView({
55
58
  block: 'nearest',
56
59
  });
57
60
  } else {
61
+ const selection = window.getSelection();
62
+ if (selection && selection.rangeCount > 0) {
63
+ const range = selection.getRangeAt(0);
64
+ const caretRect = range.getBoundingClientRect();
65
+ const targetRect = target.getBoundingClientRect();
66
+
67
+ // In case the caret is below the visible input area, scroll to the end of the node
68
+ if (caretRect.top + caretRect.height > targetRect.top + targetRect.height) {
69
+ targetElement.scrollTop = caretRect.top + caretRect.height - targetRect.top - targetRect.height + target.scrollTop;
70
+ }
71
+ }
72
+
58
73
  node.element.scrollIntoView({
59
74
  block: 'nearest',
60
75
  });
@@ -266,7 +266,7 @@ function parseRangesToHTMLNodes(
266
266
  return {dom: rootElement, tree: rootNode};
267
267
  }
268
268
 
269
- function moveCursor(isFocused: boolean, alwaysMoveCursorToTheEnd: boolean, cursorPosition: number | null, target: MarkdownTextInputElement) {
269
+ function moveCursor(isFocused: boolean, alwaysMoveCursorToTheEnd: boolean, cursorPosition: number | null, target: MarkdownTextInputElement, shouldScrollIntoView = false) {
270
270
  if (!isFocused) {
271
271
  return;
272
272
  }
@@ -274,7 +274,7 @@ function moveCursor(isFocused: boolean, alwaysMoveCursorToTheEnd: boolean, curso
274
274
  if (alwaysMoveCursorToTheEnd || cursorPosition === null) {
275
275
  moveCursorToEnd(target);
276
276
  } else if (cursorPosition !== null) {
277
- setCursorPosition(target, cursorPosition);
277
+ setCursorPosition(target, cursorPosition, null, shouldScrollIntoView);
278
278
  }
279
279
  }
280
280
 
@@ -286,6 +286,7 @@ function updateInputStructure(
286
286
  markdownStyle: PartialMarkdownStyle = {},
287
287
  alwaysMoveCursorToTheEnd = false,
288
288
  shouldForceDOMUpdate = false,
289
+ shouldScrollIntoView = false,
289
290
  ) {
290
291
  const targetElement = target;
291
292
 
@@ -317,7 +318,7 @@ function updateInputStructure(
317
318
  updateTreeElementRefs(tree, targetElement);
318
319
  targetElement.tree = tree;
319
320
 
320
- moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, targetElement);
321
+ moveCursor(isFocused, alwaysMoveCursorToTheEnd, cursorPosition, targetElement, shouldScrollIntoView);
321
322
  }
322
323
 
323
324
  return {text, cursorPosition: cursorPosition || 0};