@opentiny/fluent-editor 3.20.0 → 3.20.1

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 (211) hide show
  1. package/README.md +99 -99
  2. package/es/attributors/index.es.js +1 -1
  3. package/es/attributors/line-height.es.js.map +1 -1
  4. package/es/config/base64-image.es.js.map +1 -1
  5. package/es/config/editor.config.es.js.map +1 -1
  6. package/es/config/editor.utils.es.js +12 -12
  7. package/es/config/editor.utils.es.js.map +1 -1
  8. package/es/config/i18n/en-us.es.js.map +1 -1
  9. package/es/config/i18n/zh-cn.es.js.map +1 -1
  10. package/es/config/icons.config.es.js.map +1 -1
  11. package/es/config/types/index.es.js +2 -2
  12. package/es/config.es.js +1 -1
  13. package/es/config.es.js.map +1 -1
  14. package/es/counter/index.es.js.map +1 -1
  15. package/es/custom-clipboard.es.js +14 -14
  16. package/es/custom-clipboard.es.js.map +1 -1
  17. package/es/custom-image/BlotFormatter.es.js +1 -1
  18. package/es/custom-image/BlotFormatter.es.js.map +1 -1
  19. package/es/custom-image/Options.es.js.map +1 -1
  20. package/es/custom-image/actions/Action.es.js.map +1 -1
  21. package/es/custom-image/actions/CustomResizeAction.es.js +6 -4
  22. package/es/custom-image/actions/CustomResizeAction.es.js.map +1 -1
  23. package/es/custom-image/actions/DeleteAction.es.js.map +1 -1
  24. package/es/custom-image/image.es.js +3 -3
  25. package/es/custom-image/image.es.js.map +1 -1
  26. package/es/custom-image/specs/BlotSpec.es.js.map +1 -1
  27. package/es/custom-image/specs/CustomImageSpec.es.js.map +1 -1
  28. package/es/custom-image/specs/ImageSpec.es.js.map +1 -1
  29. package/es/custom-uploader.es.js +4 -7
  30. package/es/custom-uploader.es.js.map +1 -1
  31. package/es/emoji/emoji-list/people.es.js.map +1 -1
  32. package/es/emoji/emoji-list.es.js.map +1 -1
  33. package/es/emoji/emoji-map.es.js.map +1 -1
  34. package/es/emoji/formats/emoji-blot.es.js +2 -2
  35. package/es/emoji/formats/emoji-blot.es.js.map +1 -1
  36. package/es/emoji/index.es.js.map +1 -1
  37. package/es/emoji/modules/emoji.es.js +7 -7
  38. package/es/emoji/modules/emoji.es.js.map +1 -1
  39. package/es/emoji/modules/toolbar-emoji.es.js +15 -15
  40. package/es/emoji/modules/toolbar-emoji.es.js.map +1 -1
  41. package/es/emoji/utils.es.js.map +1 -1
  42. package/es/file/formats/file.es.js.map +1 -1
  43. package/es/file/index.es.js.map +1 -1
  44. package/es/file/modules/file-bar.es.js +3 -3
  45. package/es/file/modules/file-bar.es.js.map +1 -1
  46. package/es/fluent-editor.es.js +3 -3
  47. package/es/fluent-editor.es.js.map +1 -1
  48. package/es/format-painter/index.es.js.map +1 -1
  49. package/es/global-link/constants.es.js.map +1 -1
  50. package/es/global-link/formats/customer-widget-link.es.js.map +1 -1
  51. package/es/global-link/formats/doc-link.es.js.map +1 -1
  52. package/es/global-link/formats/wiki-link.es.js.map +1 -1
  53. package/es/global-link/formats/work-item-link.es.js.map +1 -1
  54. package/es/global-link/index.es.js +1 -1
  55. package/es/global-link/index.es.js.map +1 -1
  56. package/es/global-link/utils/createTable.es.js.map +1 -1
  57. package/es/link/formats/link.es.js +1 -1
  58. package/es/link/formats/link.es.js.map +1 -1
  59. package/es/link/index.es.js.map +1 -1
  60. package/es/link/modules/tooltip.es.js +3 -3
  61. package/es/link/modules/tooltip.es.js.map +1 -1
  62. package/es/mention/Mention.es.js +7 -12
  63. package/es/mention/Mention.es.js.map +1 -1
  64. package/es/mention/MentionLink.es.js.map +1 -1
  65. package/es/mention/constants.es.js.map +1 -1
  66. package/es/quick-menu/index.es.js +1 -1
  67. package/es/quick-menu/index.es.js.map +1 -1
  68. package/es/screenshot/index.es.js +42 -7
  69. package/es/screenshot/index.es.js.map +1 -1
  70. package/es/soft-break/index.es.js.map +1 -1
  71. package/es/strike/index.es.js.map +1 -1
  72. package/es/syntax/index.es.js.map +1 -1
  73. package/es/table/better-table.es.js +4 -5
  74. package/es/table/better-table.es.js.map +1 -1
  75. package/es/table/formats/header.es.js.map +1 -1
  76. package/es/table/formats/list.es.js +3 -3
  77. package/es/table/formats/list.es.js.map +1 -1
  78. package/es/table/formats/table.es.js +26 -27
  79. package/es/table/formats/table.es.js.map +1 -1
  80. package/es/table/modules/table-column-tool.es.js +8 -8
  81. package/es/table/modules/table-column-tool.es.js.map +1 -1
  82. package/es/table/modules/table-operation-menu.es.js +7 -8
  83. package/es/table/modules/table-operation-menu.es.js.map +1 -1
  84. package/es/table/modules/table-scroll-bar.es.js +1 -1
  85. package/es/table/modules/table-scroll-bar.es.js.map +1 -1
  86. package/es/table/modules/table-selection.es.js +0 -1
  87. package/es/table/modules/table-selection.es.js.map +1 -1
  88. package/es/table/table-config.es.js.map +1 -1
  89. package/es/table/utils/index.es.js.map +1 -1
  90. package/es/table/utils/node-matchers.es.js +14 -14
  91. package/es/table/utils/node-matchers.es.js.map +1 -1
  92. package/es/toolbar/better-picker.es.js.map +1 -1
  93. package/es/toolbar/index.es.js +1 -1
  94. package/es/toolbar/index.es.js.map +1 -1
  95. package/es/utils/debounce.es.js.map +1 -1
  96. package/es/utils/image.es.js +26 -0
  97. package/es/utils/image.es.js.map +1 -0
  98. package/es/utils/method.es.js +2 -2
  99. package/es/utils/method.es.js.map +1 -1
  100. package/es/utils/scroll-lock.es.js +47 -0
  101. package/es/utils/scroll-lock.es.js.map +1 -0
  102. package/es/video/index.es.js +6 -3
  103. package/es/video/index.es.js.map +1 -1
  104. package/lib/attributors/index.cjs.js +2 -2
  105. package/lib/attributors/line-height.cjs.js.map +1 -1
  106. package/lib/config/base64-image.cjs.js.map +1 -1
  107. package/lib/config/editor.config.cjs.js.map +1 -1
  108. package/lib/config/editor.utils.cjs.js +12 -12
  109. package/lib/config/editor.utils.cjs.js.map +1 -1
  110. package/lib/config/i18n/en-us.cjs.js.map +1 -1
  111. package/lib/config/i18n/zh-cn.cjs.js.map +1 -1
  112. package/lib/config/icons.config.cjs.js.map +1 -1
  113. package/lib/config/types/index.cjs.js +2 -2
  114. package/lib/config.cjs.js +1 -1
  115. package/lib/config.cjs.js.map +1 -1
  116. package/lib/counter/index.cjs.js.map +1 -1
  117. package/lib/custom-clipboard.cjs.js +14 -14
  118. package/lib/custom-clipboard.cjs.js.map +1 -1
  119. package/lib/custom-image/BlotFormatter.cjs.js +1 -1
  120. package/lib/custom-image/BlotFormatter.cjs.js.map +1 -1
  121. package/lib/custom-image/Options.cjs.js.map +1 -1
  122. package/lib/custom-image/actions/Action.cjs.js.map +1 -1
  123. package/lib/custom-image/actions/CustomResizeAction.cjs.js +6 -4
  124. package/lib/custom-image/actions/CustomResizeAction.cjs.js.map +1 -1
  125. package/lib/custom-image/actions/DeleteAction.cjs.js.map +1 -1
  126. package/lib/custom-image/image.cjs.js +3 -3
  127. package/lib/custom-image/image.cjs.js.map +1 -1
  128. package/lib/custom-image/specs/BlotSpec.cjs.js.map +1 -1
  129. package/lib/custom-image/specs/CustomImageSpec.cjs.js.map +1 -1
  130. package/lib/custom-image/specs/ImageSpec.cjs.js.map +1 -1
  131. package/lib/custom-uploader.cjs.js +4 -7
  132. package/lib/custom-uploader.cjs.js.map +1 -1
  133. package/lib/emoji/emoji-list/people.cjs.js.map +1 -1
  134. package/lib/emoji/emoji-list.cjs.js.map +1 -1
  135. package/lib/emoji/emoji-map.cjs.js.map +1 -1
  136. package/lib/emoji/formats/emoji-blot.cjs.js +2 -2
  137. package/lib/emoji/formats/emoji-blot.cjs.js.map +1 -1
  138. package/lib/emoji/index.cjs.js.map +1 -1
  139. package/lib/emoji/modules/emoji.cjs.js +7 -7
  140. package/lib/emoji/modules/emoji.cjs.js.map +1 -1
  141. package/lib/emoji/modules/toolbar-emoji.cjs.js +15 -15
  142. package/lib/emoji/modules/toolbar-emoji.cjs.js.map +1 -1
  143. package/lib/emoji/utils.cjs.js.map +1 -1
  144. package/lib/file/formats/file.cjs.js.map +1 -1
  145. package/lib/file/index.cjs.js.map +1 -1
  146. package/lib/file/modules/file-bar.cjs.js +3 -3
  147. package/lib/file/modules/file-bar.cjs.js.map +1 -1
  148. package/lib/fluent-editor.cjs.js +3 -3
  149. package/lib/fluent-editor.cjs.js.map +1 -1
  150. package/lib/format-painter/index.cjs.js.map +1 -1
  151. package/lib/global-link/constants.cjs.js.map +1 -1
  152. package/lib/global-link/formats/customer-widget-link.cjs.js.map +1 -1
  153. package/lib/global-link/formats/doc-link.cjs.js.map +1 -1
  154. package/lib/global-link/formats/wiki-link.cjs.js.map +1 -1
  155. package/lib/global-link/formats/work-item-link.cjs.js.map +1 -1
  156. package/lib/global-link/index.cjs.js +1 -1
  157. package/lib/global-link/index.cjs.js.map +1 -1
  158. package/lib/global-link/utils/createTable.cjs.js.map +1 -1
  159. package/lib/link/formats/link.cjs.js +1 -1
  160. package/lib/link/formats/link.cjs.js.map +1 -1
  161. package/lib/link/index.cjs.js.map +1 -1
  162. package/lib/link/modules/tooltip.cjs.js +3 -3
  163. package/lib/link/modules/tooltip.cjs.js.map +1 -1
  164. package/lib/mention/Mention.cjs.js +7 -12
  165. package/lib/mention/Mention.cjs.js.map +1 -1
  166. package/lib/mention/MentionLink.cjs.js.map +1 -1
  167. package/lib/mention/constants.cjs.js.map +1 -1
  168. package/lib/quick-menu/index.cjs.js +1 -1
  169. package/lib/quick-menu/index.cjs.js.map +1 -1
  170. package/lib/screenshot/index.cjs.js +44 -9
  171. package/lib/screenshot/index.cjs.js.map +1 -1
  172. package/lib/soft-break/index.cjs.js.map +1 -1
  173. package/lib/strike/index.cjs.js.map +1 -1
  174. package/lib/syntax/index.cjs.js.map +1 -1
  175. package/lib/table/better-table.cjs.js +4 -5
  176. package/lib/table/better-table.cjs.js.map +1 -1
  177. package/lib/table/formats/header.cjs.js.map +1 -1
  178. package/lib/table/formats/list.cjs.js +3 -3
  179. package/lib/table/formats/list.cjs.js.map +1 -1
  180. package/lib/table/formats/table.cjs.js +26 -27
  181. package/lib/table/formats/table.cjs.js.map +1 -1
  182. package/lib/table/modules/table-column-tool.cjs.js +8 -8
  183. package/lib/table/modules/table-column-tool.cjs.js.map +1 -1
  184. package/lib/table/modules/table-operation-menu.cjs.js +7 -8
  185. package/lib/table/modules/table-operation-menu.cjs.js.map +1 -1
  186. package/lib/table/modules/table-scroll-bar.cjs.js +1 -1
  187. package/lib/table/modules/table-scroll-bar.cjs.js.map +1 -1
  188. package/lib/table/modules/table-selection.cjs.js +0 -1
  189. package/lib/table/modules/table-selection.cjs.js.map +1 -1
  190. package/lib/table/table-config.cjs.js.map +1 -1
  191. package/lib/table/utils/index.cjs.js.map +1 -1
  192. package/lib/table/utils/node-matchers.cjs.js +14 -14
  193. package/lib/table/utils/node-matchers.cjs.js.map +1 -1
  194. package/lib/toolbar/better-picker.cjs.js.map +1 -1
  195. package/lib/toolbar/index.cjs.js +1 -1
  196. package/lib/toolbar/index.cjs.js.map +1 -1
  197. package/lib/utils/debounce.cjs.js.map +1 -1
  198. package/lib/utils/image.cjs.js +26 -0
  199. package/lib/utils/image.cjs.js.map +1 -0
  200. package/lib/utils/method.cjs.js +2 -2
  201. package/lib/utils/method.cjs.js.map +1 -1
  202. package/lib/utils/scroll-lock.cjs.js +47 -0
  203. package/lib/utils/scroll-lock.cjs.js.map +1 -0
  204. package/lib/video/index.cjs.js +6 -3
  205. package/lib/video/index.cjs.js.map +1 -1
  206. package/package.json +61 -64
  207. package/theme/style.css +12 -0
  208. package/es/types/vue.d.es.js +0 -2
  209. package/es/types/vue.d.es.js.map +0 -1
  210. package/lib/types/vue.d.cjs.js +0 -2
  211. package/lib/types/vue.d.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Options.cjs.js","sources":["../../../src/custom-image/Options.ts"],"sourcesContent":["import ImageSpec from './specs/ImageSpec'\r\n\r\nexport interface OverlayOptions {\r\n // classname applied to the overlay element\r\n className: string\r\n // style applied to overlay element, or null to prevent styles\r\n style: Record<string, string>\r\n}\r\n\r\nexport interface ResizeOptions {\r\n // class name applied to the resize handles\r\n handleClassName: string\r\n // style applied to resize handles, or null to prevent styles\r\n handleStyle: Record<string, string>\r\n}\r\n\r\nexport interface AlignOptions {\r\n // the name of the attribute for an element that has its alignment changed\r\n attribute: string\r\n // the aligner does the actual alignment switch\r\n aligner: {\r\n // whether or not the aligner should handle the actual alignment properties\r\n applyStyle: boolean\r\n }\r\n // icons used for alignment\r\n icons: {\r\n left: string\r\n center: string\r\n right: string\r\n }\r\n // the toolbar so users can change alignments\r\n toolbar: {\r\n // whether or not users can deselect an alignment. it's up to you to set the initial alignment\r\n allowDeselect: boolean\r\n // class name applied to the root toolbar element\r\n mainClassName: string\r\n // style applied to root toolbar element, or null to prevent styles\r\n mainStyle\r\n // class name applied to each button in the toolbar\r\n buttonClassName: string\r\n /* whether or not to add the selected style to the buttons.\r\n they'll always get the is-selected class */\r\n addButtonSelectStyle: boolean\r\n // style applied to buttons, or null to prevent styles\r\n buttonStyle\r\n // style applied to the svgs in the buttons\r\n svgStyle\r\n }\r\n}\r\n\r\nexport interface Options {\r\n // the BlotSpecs supported\r\n specs: any\r\n overlay: OverlayOptions\r\n align: AlignOptions\r\n resize: ResizeOptions\r\n}\r\n\r\nconst DefaultOptions: Options = {\r\n specs: [\r\n ImageSpec,\r\n ],\r\n overlay: {\r\n className: 'blot-formatter__overlay',\r\n style: {\r\n position: 'absolute',\r\n boxSizing: 'border-box',\r\n border: '1px dashed #444',\r\n },\r\n },\r\n align: {\r\n attribute: 'data-align',\r\n aligner: {\r\n applyStyle: true,\r\n },\r\n icons: {\r\n left: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"13\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"3\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n center: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"14\" x2=\"4\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"12\" x2=\"6\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n right: `\r\n <svg viewbox=\"0 0 18 18\">\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"5\" y1=\"14\" y2=\"14\"></line>\r\n <line class=\"ql-stroke\" x1=\"15\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\r\n </svg>\r\n `,\r\n },\r\n toolbar: {\r\n allowDeselect: true,\r\n mainClassName: 'blot-formatter__toolbar',\r\n mainStyle: {\r\n position: 'absolute',\r\n top: '-12px',\r\n right: '0',\r\n left: '0',\r\n height: '0',\r\n minWidth: '100px',\r\n font: '12px/1.0 Arial, Helvetica, sans-serif',\r\n textAlign: 'center',\r\n color: '#333',\r\n boxSizing: 'border-box',\r\n cursor: 'default',\r\n zIndex: '1',\r\n },\r\n buttonClassName: 'blot-formatter__toolbar-button',\r\n addButtonSelectStyle: true,\r\n buttonStyle: {\r\n display: 'inline-block',\r\n width: '24px',\r\n height: '24px',\r\n background: 'white',\r\n border: '1px solid #999',\r\n verticalAlign: 'middle',\r\n },\r\n svgStyle: {\r\n display: 'inline-block',\r\n width: '24px',\r\n height: '24px',\r\n background: 'white',\r\n border: '1px solid #999',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n resize: {\r\n handleClassName: 'blot-formatter__resize-handle',\r\n handleStyle: {\r\n position: 'absolute',\r\n height: '12px',\r\n width: '12px',\r\n backgroundColor: 'white',\r\n border: '1px solid #777',\r\n boxSizing: 'border-box',\r\n opacity: '0.80',\r\n },\r\n },\r\n}\r\n\r\nexport default DefaultOptions\r\n"],"names":["ImageSpec"],"mappings":";;;AA0DA,MAAM,iBAA0B;AAAA,EAC9B,OAAO;AAAA,IACLA,UAAA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,SAAS;AAAA,MACP,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAON,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOT;AAAA,IACA,SAAS;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,QACT,UAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACA,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,aAAa;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,EACF;AACF;;"}
1
+ {"version":3,"file":"Options.cjs.js","sources":["../../../src/custom-image/Options.ts"],"sourcesContent":["import ImageSpec from './specs/ImageSpec'\n\nexport interface OverlayOptions {\n // classname applied to the overlay element\n className: string\n // style applied to overlay element, or null to prevent styles\n style: Record<string, string>\n}\n\nexport interface ResizeOptions {\n // class name applied to the resize handles\n handleClassName: string\n // style applied to resize handles, or null to prevent styles\n handleStyle: Record<string, string>\n}\n\nexport interface AlignOptions {\n // the name of the attribute for an element that has its alignment changed\n attribute: string\n // the aligner does the actual alignment switch\n aligner: {\n // whether or not the aligner should handle the actual alignment properties\n applyStyle: boolean\n }\n // icons used for alignment\n icons: {\n left: string\n center: string\n right: string\n }\n // the toolbar so users can change alignments\n toolbar: {\n // whether or not users can deselect an alignment. it's up to you to set the initial alignment\n allowDeselect: boolean\n // class name applied to the root toolbar element\n mainClassName: string\n // style applied to root toolbar element, or null to prevent styles\n mainStyle\n // class name applied to each button in the toolbar\n buttonClassName: string\n /* whether or not to add the selected style to the buttons.\n they'll always get the is-selected class */\n addButtonSelectStyle: boolean\n // style applied to buttons, or null to prevent styles\n buttonStyle\n // style applied to the svgs in the buttons\n svgStyle\n }\n}\n\nexport interface Options {\n // the BlotSpecs supported\n specs: any\n overlay: OverlayOptions\n align: AlignOptions\n resize: ResizeOptions\n}\n\nconst DefaultOptions: Options = {\n specs: [\n ImageSpec,\n ],\n overlay: {\n className: 'blot-formatter__overlay',\n style: {\n position: 'absolute',\n boxSizing: 'border-box',\n border: '1px dashed #444',\n },\n },\n align: {\n attribute: 'data-align',\n aligner: {\n applyStyle: true,\n },\n icons: {\n left: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"3\" x2=\"15\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"3\" x2=\"13\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"3\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n center: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"14\" x2=\"4\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"12\" x2=\"6\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n right: `\n <svg viewbox=\"0 0 18 18\">\n <line class=\"ql-stroke\" x1=\"15\" x2=\"3\" y1=\"9\" y2=\"9\"></line>\n <line class=\"ql-stroke\" x1=\"15\" x2=\"5\" y1=\"14\" y2=\"14\"></line>\n <line class=\"ql-stroke\" x1=\"15\" x2=\"9\" y1=\"4\" y2=\"4\"></line>\n </svg>\n `,\n },\n toolbar: {\n allowDeselect: true,\n mainClassName: 'blot-formatter__toolbar',\n mainStyle: {\n position: 'absolute',\n top: '-12px',\n right: '0',\n left: '0',\n height: '0',\n minWidth: '100px',\n font: '12px/1.0 Arial, Helvetica, sans-serif',\n textAlign: 'center',\n color: '#333',\n boxSizing: 'border-box',\n cursor: 'default',\n zIndex: '1',\n },\n buttonClassName: 'blot-formatter__toolbar-button',\n addButtonSelectStyle: true,\n buttonStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle',\n },\n svgStyle: {\n display: 'inline-block',\n width: '24px',\n height: '24px',\n background: 'white',\n border: '1px solid #999',\n verticalAlign: 'middle',\n },\n },\n },\n resize: {\n handleClassName: 'blot-formatter__resize-handle',\n handleStyle: {\n position: 'absolute',\n height: '12px',\n width: '12px',\n backgroundColor: 'white',\n border: '1px solid #777',\n boxSizing: 'border-box',\n opacity: '0.80',\n },\n },\n}\n\nexport default DefaultOptions\n"],"names":["ImageSpec"],"mappings":";;;AA0DA,MAAM,iBAA0B;AAAA,EAC9B,OAAO;AAAA,IACLA,UAAA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,MACL,UAAU;AAAA,MACV,WAAW;AAAA,MACX,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,WAAW;AAAA,IACX,SAAS;AAAA,MACP,YAAY;AAAA,IACd;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAON,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOT;AAAA,IACA,SAAS;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,QACT,UAAU;AAAA,QACV,KAAK;AAAA,QACL,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,QACN,WAAW;AAAA,QACX,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,MACA,iBAAiB;AAAA,MACjB,sBAAsB;AAAA,MACtB,aAAa;AAAA,QACX,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,MACA,UAAU;AAAA,QACR,SAAS;AAAA,QACT,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,iBAAiB;AAAA,IACjB,aAAa;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAAS;AAAA,IACX;AAAA,EACF;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Action.cjs.js","sources":["../../../../src/custom-image/actions/Action.ts"],"sourcesContent":["export default class Action {\r\n formatter\r\n\r\n constructor(formatter) {\r\n this.formatter = formatter\r\n }\r\n\r\n onCreate() {}\r\n\r\n onDestroy() {}\r\n\r\n onUpdate() {}\r\n}\r\n"],"names":[],"mappings":";;AAAA,MAAqB,OAAO;AAAA,EAG1B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,WAAW;AAAA,EAAC;AAAA,EAEZ,YAAY;AAAA,EAAC;AAAA,EAEb,WAAW;AAAA,EAAC;AACd;;"}
1
+ {"version":3,"file":"Action.cjs.js","sources":["../../../../src/custom-image/actions/Action.ts"],"sourcesContent":["export default class Action {\n formatter\n\n constructor(formatter) {\n this.formatter = formatter\n }\n\n onCreate() {}\n\n onDestroy() {}\n\n onUpdate() {}\n}\n"],"names":[],"mappings":";;AAAA,MAAqB,OAAO;AAAA,EAG1B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,WAAW;AAAA,EAAC;AAAA,EAEZ,YAAY;AAAA,EAAC;AAAA,EAEb,WAAW;AAAA,EAAC;AACd;;"}
@@ -2,7 +2,9 @@
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const Action = require("./Action.cjs.js");
4
4
  const MIN_WIDTH = 40;
5
- const getElementStyle = (element) => element.currentStyle ? element.currentStyle : window.getComputedStyle(element, null);
5
+ function getElementStyle(element) {
6
+ return element.currentStyle ? element.currentStyle : window.getComputedStyle(element, null);
7
+ }
6
8
  class CustomResizeAction extends Action.default {
7
9
  constructor(formatter) {
8
10
  super(formatter);
@@ -34,7 +36,7 @@ class CustomResizeAction extends Action.default {
34
36
  root = this.formatter.quill.root;
35
37
  rootStyle = getElementStyle(root);
36
38
  }
37
- this.maxWidth = root.clientWidth - parseFloat(rootStyle.paddingRight) - parseFloat(rootStyle.paddingLeft);
39
+ this.maxWidth = root.clientWidth - Number.parseFloat(rootStyle.paddingRight) - Number.parseFloat(rootStyle.paddingLeft);
38
40
  document.addEventListener("mousemove", this.onDrag);
39
41
  document.addEventListener("mouseup", this.onMouseUp);
40
42
  };
@@ -131,10 +133,10 @@ class CustomResizeAction extends Action.default {
131
133
  let handleYOffset = "0px";
132
134
  if (handleStyle) {
133
135
  if (handleStyle.width) {
134
- handleXOffset = `${-parseFloat(handleStyle.width) / 2}px`;
136
+ handleXOffset = `${-Number.parseFloat(handleStyle.width) / 2}px`;
135
137
  }
136
138
  if (handleStyle.height) {
137
- handleYOffset = `${-parseFloat(handleStyle.height) / 2}px`;
139
+ handleYOffset = `${-Number.parseFloat(handleStyle.height) / 2}px`;
138
140
  }
139
141
  }
140
142
  Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset });
@@ -1 +1 @@
1
- {"version":3,"file":"CustomResizeAction.cjs.js","sources":["../../../../src/custom-image/actions/CustomResizeAction.ts"],"sourcesContent":["import Action from './Action'\r\nconst MIN_WIDTH = 40\r\n\r\nconst getElementStyle = element => element.currentStyle\r\n ? element.currentStyle\r\n : window.getComputedStyle(element, null)\r\nexport default class CustomResizeAction extends Action {\r\n topLeftHandle: HTMLElement\r\n topRightHandle: HTMLElement\r\n bottomRightHandle: HTMLElement\r\n bottomLeftHandle: HTMLElement\r\n dragHandle: HTMLElement\r\n dragStartX: number\r\n preDragWidth: number\r\n targetRatio: number\r\n maxWidth: number\r\n minWidth: number\r\n\r\n constructor(formatter) {\r\n super(formatter)\r\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\r\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\r\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\r\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\r\n this.dragHandle = null\r\n this.dragStartX = 0\r\n this.preDragWidth = 0\r\n this.targetRatio = 0\r\n this.maxWidth = 0\r\n this.minWidth = MIN_WIDTH\r\n }\r\n\r\n onCreate() {\r\n const target: any = this.formatter.currentSpec.getTargetElement()\r\n this.formatter.overlay.setAttribute('data-image', target.src)\r\n this.formatter.overlay.appendChild(this.topLeftHandle)\r\n this.formatter.overlay.appendChild(this.topRightHandle)\r\n this.formatter.overlay.appendChild(this.bottomRightHandle)\r\n this.formatter.overlay.appendChild(this.bottomLeftHandle)\r\n this.repositionHandles(this.formatter.options.resize.handleStyle)\r\n }\r\n\r\n onDestroy() {\r\n this.setCursor('')\r\n this.formatter.overlay.removeChild(this.topLeftHandle)\r\n this.formatter.overlay.removeChild(this.topRightHandle)\r\n this.formatter.overlay.removeChild(this.bottomRightHandle)\r\n this.formatter.overlay.removeChild(this.bottomLeftHandle)\r\n }\r\n\r\n createHandle(position: string, cursor: string): HTMLElement {\r\n const box = document.createElement('div')\r\n box.classList.add(this.formatter.options.resize.handleClassName)\r\n box.setAttribute('data-position', position)\r\n box.style.cursor = cursor\r\n\r\n if (this.formatter.options.resize.handleStyle) {\r\n Object.assign(box.style, this.formatter.options.resize.handleStyle)\r\n }\r\n\r\n box.addEventListener('mousedown', this.onMouseDown)\r\n return box\r\n }\r\n\r\n repositionHandles(handleStyle: any) {\r\n let handleXOffset = '0px'\r\n let handleYOffset = '0px'\r\n if (handleStyle) {\r\n if (handleStyle.width) {\r\n handleXOffset = `${-parseFloat(handleStyle.width) / 2}px`\r\n }\r\n if (handleStyle.height) {\r\n handleYOffset = `${-parseFloat(handleStyle.height) / 2}px`\r\n }\r\n }\r\n\r\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset })\r\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset })\r\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset })\r\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset })\r\n }\r\n\r\n setCursor(value: string) {\r\n if (document.body) {\r\n document.body.style.cursor = value\r\n }\r\n\r\n if (this.formatter.currentSpec) {\r\n const target = this.formatter.currentSpec.getOverlayElement()\r\n if (target) {\r\n target.style.cursor = value\r\n }\r\n }\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n if (!(event.target instanceof HTMLElement)) {\r\n return\r\n }\r\n\r\n this.dragHandle = event.target\r\n this.setCursor(this.dragHandle.style.cursor)\r\n\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = this.formatter.currentSpec.getTargetElement()\r\n if (!target) {\r\n return\r\n }\r\n event.preventDefault()\r\n const rect = target.getBoundingClientRect()\r\n\r\n this.dragStartX = event.clientX\r\n this.preDragWidth = rect.width\r\n this.targetRatio = rect.height / rect.width\r\n\r\n let root: HTMLElement\r\n let rootStyle: any\r\n const tdWrap = this.findTd(target, 0)\r\n if (tdWrap) {\r\n root = tdWrap\r\n rootStyle = getElementStyle(tdWrap)\r\n }\r\n else {\r\n root = this.formatter.quill.root\r\n rootStyle = getElementStyle(root)\r\n }\r\n this.maxWidth = root.clientWidth\r\n - parseFloat(rootStyle.paddingRight)\r\n - parseFloat(rootStyle.paddingLeft)\r\n\r\n document.addEventListener('mousemove', this.onDrag)\r\n document.addEventListener('mouseup', this.onMouseUp)\r\n }\r\n\r\n findTd = (node: HTMLElement, level: number) => {\r\n if (level > 3) {\r\n return null\r\n }\r\n\r\n const tagName = node.tagName.toUpperCase()\r\n if (tagName === 'TD') {\r\n return node\r\n }\r\n else {\r\n const parentNode = node.parentElement\r\n if (parentNode) {\r\n // eslint-disable-next-line no-return-assign\r\n return (this.findTd(parentNode, level += 1))\r\n }\r\n else {\r\n return null\r\n }\r\n }\r\n }\r\n\r\n onDrag = (event: MouseEvent) => {\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n const target = this.formatter.currentSpec.getTargetElement()\r\n if (!target) {\r\n return\r\n }\r\n\r\n const deltaX = event.clientX - this.dragStartX\r\n let newWidth = 0\r\n\r\n if (this.dragHandle === this.topLeftHandle || this.dragHandle === this.bottomLeftHandle) {\r\n newWidth = Math.round(this.preDragWidth - deltaX)\r\n }\r\n else {\r\n newWidth = Math.round(this.preDragWidth + deltaX)\r\n }\r\n\r\n let minWidth = this.minWidth\r\n\r\n if (this.maxWidth < minWidth) {\r\n minWidth = this.maxWidth\r\n }\r\n\r\n if (newWidth > this.maxWidth) {\r\n newWidth = this.maxWidth\r\n }\r\n else if (newWidth < minWidth) {\r\n newWidth = minWidth\r\n }\r\n\r\n const newHeight = this.targetRatio * newWidth\r\n\r\n target.setAttribute('width', `${newWidth}`)\r\n target.setAttribute('height', `${newHeight}`)\r\n\r\n this.formatter.update()\r\n }\r\n\r\n onMouseUp = () => {\r\n this.setCursor('')\r\n document.removeEventListener('mousemove', this.onDrag)\r\n document.removeEventListener('mouseup', this.onMouseUp)\r\n }\r\n}\r\n"],"names":["Action"],"mappings":";;;AACA,MAAM,YAAY;AAElB,MAAM,kBAAkB,aAAW,QAAQ,eACvC,QAAQ,eACR,OAAO,iBAAiB,SAAS,IAAI;AACzC,MAAqB,2BAA2BA,OAAAA,QAAO;AAAA,EAYrD,YAAY,WAAW;AACrB,UAAM,SAAS;AA4EjB,SAAA,cAAc,CAAC,UAAsB;AAC/B,UAAA,EAAE,MAAM,kBAAkB,cAAc;AAC1C;AAAA,MACF;AAEA,WAAK,aAAa,MAAM;AACxB,WAAK,UAAU,KAAK,WAAW,MAAM,MAAM;AAEvC,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,UAAU,YAAY,iBAAiB;AAC3D,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AACA,YAAM,eAAe;AACf,YAAA,OAAO,OAAO;AAEpB,WAAK,aAAa,MAAM;AACxB,WAAK,eAAe,KAAK;AACpB,WAAA,cAAc,KAAK,SAAS,KAAK;AAElC,UAAA;AACA,UAAA;AACJ,YAAM,SAAS,KAAK,OAAO,QAAQ,CAAC;AACpC,UAAI,QAAQ;AACH,eAAA;AACP,oBAAY,gBAAgB,MAAM;AAAA,MAAA,OAE/B;AACI,eAAA,KAAK,UAAU,MAAM;AAC5B,oBAAY,gBAAgB,IAAI;AAAA,MAClC;AACK,WAAA,WAAW,KAAK,cACnB,WAAW,UAAU,YAAY,IACjC,WAAW,UAAU,WAAW;AAEzB,eAAA,iBAAiB,aAAa,KAAK,MAAM;AACzC,eAAA,iBAAiB,WAAW,KAAK,SAAS;AAAA,IAAA;AAG5C,SAAA,SAAA,CAAC,MAAmB,UAAkB;AAC7C,UAAI,QAAQ,GAAG;AACN,eAAA;AAAA,MACT;AAEM,YAAA,UAAU,KAAK,QAAQ,YAAY;AACzC,UAAI,YAAY,MAAM;AACb,eAAA;AAAA,MAAA,OAEJ;AACH,cAAM,aAAa,KAAK;AACxB,YAAI,YAAY;AAEd,iBAAQ,KAAK,OAAO,YAAY,SAAS,CAAC;AAAA,QAAA,OAEvC;AACI,iBAAA;AAAA,QACT;AAAA,MACF;AAAA,IAAA;AAGF,SAAA,SAAS,CAAC,UAAsB;AAC1B,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,UAAU,YAAY,iBAAiB;AAC3D,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEM,YAAA,SAAS,MAAM,UAAU,KAAK;AACpC,UAAI,WAAW;AAEf,UAAI,KAAK,eAAe,KAAK,iBAAiB,KAAK,eAAe,KAAK,kBAAkB;AACvF,mBAAW,KAAK,MAAM,KAAK,eAAe,MAAM;AAAA,MAAA,OAE7C;AACH,mBAAW,KAAK,MAAM,KAAK,eAAe,MAAM;AAAA,MAClD;AAEA,UAAI,WAAW,KAAK;AAEhB,UAAA,KAAK,WAAW,UAAU;AAC5B,mBAAW,KAAK;AAAA,MAClB;AAEI,UAAA,WAAW,KAAK,UAAU;AAC5B,mBAAW,KAAK;AAAA,MAAA,WAET,WAAW,UAAU;AACjB,mBAAA;AAAA,MACb;AAEM,YAAA,YAAY,KAAK,cAAc;AAErC,aAAO,aAAa,SAAS,GAAG,QAAQ,EAAE;AAC1C,aAAO,aAAa,UAAU,GAAG,SAAS,EAAE;AAE5C,WAAK,UAAU;IAAO;AAGxB,SAAA,YAAY,MAAM;AAChB,WAAK,UAAU,EAAE;AACR,eAAA,oBAAoB,aAAa,KAAK,MAAM;AAC5C,eAAA,oBAAoB,WAAW,KAAK,SAAS;AAAA,IAAA;AAtLtD,SAAK,gBAAgB,KAAK,aAAa,YAAY,aAAa;AAChE,SAAK,iBAAiB,KAAK,aAAa,aAAa,aAAa;AAClE,SAAK,oBAAoB,KAAK,aAAa,gBAAgB,aAAa;AACxE,SAAK,mBAAmB,KAAK,aAAa,eAAe,aAAa;AACtE,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,cAAc;AACnB,SAAK,WAAW;AAChB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,WAAW;AACT,UAAM,SAAc,KAAK,UAAU,YAAY,iBAAiB;AAChE,SAAK,UAAU,QAAQ,aAAa,cAAc,OAAO,GAAG;AAC5D,SAAK,UAAU,QAAQ,YAAY,KAAK,aAAa;AACrD,SAAK,UAAU,QAAQ,YAAY,KAAK,cAAc;AACtD,SAAK,UAAU,QAAQ,YAAY,KAAK,iBAAiB;AACzD,SAAK,UAAU,QAAQ,YAAY,KAAK,gBAAgB;AACxD,SAAK,kBAAkB,KAAK,UAAU,QAAQ,OAAO,WAAW;AAAA,EAClE;AAAA,EAEA,YAAY;AACV,SAAK,UAAU,EAAE;AACjB,SAAK,UAAU,QAAQ,YAAY,KAAK,aAAa;AACrD,SAAK,UAAU,QAAQ,YAAY,KAAK,cAAc;AACtD,SAAK,UAAU,QAAQ,YAAY,KAAK,iBAAiB;AACzD,SAAK,UAAU,QAAQ,YAAY,KAAK,gBAAgB;AAAA,EAC1D;AAAA,EAEA,aAAa,UAAkB,QAA6B;AACpD,UAAA,MAAM,SAAS,cAAc,KAAK;AACxC,QAAI,UAAU,IAAI,KAAK,UAAU,QAAQ,OAAO,eAAe;AAC3D,QAAA,aAAa,iBAAiB,QAAQ;AAC1C,QAAI,MAAM,SAAS;AAEnB,QAAI,KAAK,UAAU,QAAQ,OAAO,aAAa;AAC7C,aAAO,OAAO,IAAI,OAAO,KAAK,UAAU,QAAQ,OAAO,WAAW;AAAA,IACpE;AAEI,QAAA,iBAAiB,aAAa,KAAK,WAAW;AAC3C,WAAA;AAAA,EACT;AAAA,EAEA,kBAAkB,aAAkB;AAClC,QAAI,gBAAgB;AACpB,QAAI,gBAAgB;AACpB,QAAI,aAAa;AACf,UAAI,YAAY,OAAO;AACrB,wBAAgB,GAAG,CAAC,WAAW,YAAY,KAAK,IAAI,CAAC;AAAA,MACvD;AACA,UAAI,YAAY,QAAQ;AACtB,wBAAgB,GAAG,CAAC,WAAW,YAAY,MAAM,IAAI,CAAC;AAAA,MACxD;AAAA,IACF;AAEO,WAAA,OAAO,KAAK,cAAc,OAAO,EAAE,MAAM,eAAe,KAAK,cAAA,CAAe;AAC5E,WAAA,OAAO,KAAK,eAAe,OAAO,EAAE,OAAO,eAAe,KAAK,cAAA,CAAe;AAC9E,WAAA,OAAO,KAAK,kBAAkB,OAAO,EAAE,OAAO,eAAe,QAAQ,cAAA,CAAe;AACpF,WAAA,OAAO,KAAK,iBAAiB,OAAO,EAAE,MAAM,eAAe,QAAQ,cAAA,CAAe;AAAA,EAC3F;AAAA,EAEA,UAAU,OAAe;AACvB,QAAI,SAAS,MAAM;AACR,eAAA,KAAK,MAAM,SAAS;AAAA,IAC/B;AAEI,QAAA,KAAK,UAAU,aAAa;AAC9B,YAAM,SAAS,KAAK,UAAU,YAAY,kBAAkB;AAC5D,UAAI,QAAQ;AACV,eAAO,MAAM,SAAS;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AA+GF;;"}
1
+ {"version":3,"file":"CustomResizeAction.cjs.js","sources":["../../../../src/custom-image/actions/CustomResizeAction.ts"],"sourcesContent":["import Action from './Action'\n\nconst MIN_WIDTH = 40\n\nfunction getElementStyle(element) {\n return element.currentStyle\n ? element.currentStyle\n : window.getComputedStyle(element, null)\n}\nexport default class CustomResizeAction extends Action {\n topLeftHandle: HTMLElement\n topRightHandle: HTMLElement\n bottomRightHandle: HTMLElement\n bottomLeftHandle: HTMLElement\n dragHandle: HTMLElement\n dragStartX: number\n preDragWidth: number\n targetRatio: number\n maxWidth: number\n minWidth: number\n\n constructor(formatter) {\n super(formatter)\n this.topLeftHandle = this.createHandle('top-left', 'nwse-resize')\n this.topRightHandle = this.createHandle('top-right', 'nesw-resize')\n this.bottomRightHandle = this.createHandle('bottom-right', 'nwse-resize')\n this.bottomLeftHandle = this.createHandle('bottom-left', 'nesw-resize')\n this.dragHandle = null\n this.dragStartX = 0\n this.preDragWidth = 0\n this.targetRatio = 0\n this.maxWidth = 0\n this.minWidth = MIN_WIDTH\n }\n\n onCreate() {\n const target: any = this.formatter.currentSpec.getTargetElement()\n this.formatter.overlay.setAttribute('data-image', target.src)\n this.formatter.overlay.appendChild(this.topLeftHandle)\n this.formatter.overlay.appendChild(this.topRightHandle)\n this.formatter.overlay.appendChild(this.bottomRightHandle)\n this.formatter.overlay.appendChild(this.bottomLeftHandle)\n this.repositionHandles(this.formatter.options.resize.handleStyle)\n }\n\n onDestroy() {\n this.setCursor('')\n this.formatter.overlay.removeChild(this.topLeftHandle)\n this.formatter.overlay.removeChild(this.topRightHandle)\n this.formatter.overlay.removeChild(this.bottomRightHandle)\n this.formatter.overlay.removeChild(this.bottomLeftHandle)\n }\n\n createHandle(position: string, cursor: string): HTMLElement {\n const box = document.createElement('div')\n box.classList.add(this.formatter.options.resize.handleClassName)\n box.setAttribute('data-position', position)\n box.style.cursor = cursor\n\n if (this.formatter.options.resize.handleStyle) {\n Object.assign(box.style, this.formatter.options.resize.handleStyle)\n }\n\n box.addEventListener('mousedown', this.onMouseDown)\n return box\n }\n\n repositionHandles(handleStyle: any) {\n let handleXOffset = '0px'\n let handleYOffset = '0px'\n if (handleStyle) {\n if (handleStyle.width) {\n handleXOffset = `${-Number.parseFloat(handleStyle.width) / 2}px`\n }\n if (handleStyle.height) {\n handleYOffset = `${-Number.parseFloat(handleStyle.height) / 2}px`\n }\n }\n\n Object.assign(this.topLeftHandle.style, { left: handleXOffset, top: handleYOffset })\n Object.assign(this.topRightHandle.style, { right: handleXOffset, top: handleYOffset })\n Object.assign(this.bottomRightHandle.style, { right: handleXOffset, bottom: handleYOffset })\n Object.assign(this.bottomLeftHandle.style, { left: handleXOffset, bottom: handleYOffset })\n }\n\n setCursor(value: string) {\n if (document.body) {\n document.body.style.cursor = value\n }\n\n if (this.formatter.currentSpec) {\n const target = this.formatter.currentSpec.getOverlayElement()\n if (target) {\n target.style.cursor = value\n }\n }\n }\n\n onMouseDown = (event: MouseEvent) => {\n if (!(event.target instanceof HTMLElement)) {\n return\n }\n\n this.dragHandle = event.target\n this.setCursor(this.dragHandle.style.cursor)\n\n if (!this.formatter.currentSpec) {\n return\n }\n\n const target = this.formatter.currentSpec.getTargetElement()\n if (!target) {\n return\n }\n event.preventDefault()\n const rect = target.getBoundingClientRect()\n\n this.dragStartX = event.clientX\n this.preDragWidth = rect.width\n this.targetRatio = rect.height / rect.width\n\n let root: HTMLElement\n let rootStyle: any\n const tdWrap = this.findTd(target, 0)\n if (tdWrap) {\n root = tdWrap\n rootStyle = getElementStyle(tdWrap)\n }\n else {\n root = this.formatter.quill.root\n rootStyle = getElementStyle(root)\n }\n this.maxWidth = root.clientWidth\n - Number.parseFloat(rootStyle.paddingRight)\n - Number.parseFloat(rootStyle.paddingLeft)\n\n document.addEventListener('mousemove', this.onDrag)\n document.addEventListener('mouseup', this.onMouseUp)\n }\n\n findTd = (node: HTMLElement, level: number) => {\n if (level > 3) {\n return null\n }\n\n const tagName = node.tagName.toUpperCase()\n if (tagName === 'TD') {\n return node\n }\n else {\n const parentNode = node.parentElement\n if (parentNode) {\n return (this.findTd(parentNode, level += 1))\n }\n else {\n return null\n }\n }\n }\n\n onDrag = (event: MouseEvent) => {\n if (!this.formatter.currentSpec) {\n return\n }\n\n const target = this.formatter.currentSpec.getTargetElement()\n if (!target) {\n return\n }\n\n const deltaX = event.clientX - this.dragStartX\n let newWidth = 0\n\n if (this.dragHandle === this.topLeftHandle || this.dragHandle === this.bottomLeftHandle) {\n newWidth = Math.round(this.preDragWidth - deltaX)\n }\n else {\n newWidth = Math.round(this.preDragWidth + deltaX)\n }\n\n let minWidth = this.minWidth\n\n if (this.maxWidth < minWidth) {\n minWidth = this.maxWidth\n }\n\n if (newWidth > this.maxWidth) {\n newWidth = this.maxWidth\n }\n else if (newWidth < minWidth) {\n newWidth = minWidth\n }\n\n const newHeight = this.targetRatio * newWidth\n\n target.setAttribute('width', `${newWidth}`)\n target.setAttribute('height', `${newHeight}`)\n\n this.formatter.update()\n }\n\n onMouseUp = () => {\n this.setCursor('')\n document.removeEventListener('mousemove', this.onDrag)\n document.removeEventListener('mouseup', this.onMouseUp)\n }\n}\n"],"names":["Action"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteAction.cjs.js","sources":["../../../../src/custom-image/actions/DeleteAction.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport Action from './Action'\r\n\r\nexport default class DeleteAction extends Action {\r\n onCreate() {\r\n document.addEventListener('keyup', this.onKeyUp, true)\r\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true)\r\n }\r\n\r\n onDestroy() {\r\n document.removeEventListener('keyup', this.onKeyUp)\r\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp)\r\n }\r\n\r\n onKeyUp = (event: any) => {\r\n if (!this.formatter.currentSpec) {\r\n return\r\n }\r\n\r\n // delete or backspace\r\n if (event.keyCode === 46 || event.keyCode === 8) {\r\n const blot = Quill.find(this.formatter.currentSpec.getTargetElement())\r\n if (blot) {\r\n blot.deleteAt(0)\r\n }\r\n this.formatter.hide()\r\n }\r\n }\r\n}\r\n"],"names":["Action"],"mappings":";;;;AAGA,MAAqB,qBAAqBA,OAAAA,QAAO;AAAA,EAAjD,cAAA;AAAA,UAAA,GAAA,SAAA;AAWE,SAAA,UAAU,CAAC,UAAe;AACpB,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAGA,UAAI,MAAM,YAAY,MAAM,MAAM,YAAY,GAAG;AAC/C,cAAM,OAAO,MAAM,KAAK,KAAK,UAAU,YAAY,kBAAkB;AACrE,YAAI,MAAM;AACR,eAAK,SAAS,CAAC;AAAA,QACjB;AACA,aAAK,UAAU;MACjB;AAAA,IAAA;AAAA,EACF;AAAA,EAvBA,WAAW;AACT,aAAS,iBAAiB,SAAS,KAAK,SAAS,IAAI;AACrD,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,SAAS,IAAI;AAAA,EACxE;AAAA,EAEA,YAAY;AACD,aAAA,oBAAoB,SAAS,KAAK,OAAO;AAClD,SAAK,UAAU,MAAM,KAAK,oBAAoB,SAAS,KAAK,OAAO;AAAA,EACrE;AAgBF;;"}
1
+ {"version":3,"file":"DeleteAction.cjs.js","sources":["../../../../src/custom-image/actions/DeleteAction.ts"],"sourcesContent":["import Quill from 'quill'\nimport Action from './Action'\n\nexport default class DeleteAction extends Action {\n onCreate() {\n document.addEventListener('keyup', this.onKeyUp, true)\n this.formatter.quill.root.addEventListener('input', this.onKeyUp, true)\n }\n\n onDestroy() {\n document.removeEventListener('keyup', this.onKeyUp)\n this.formatter.quill.root.removeEventListener('input', this.onKeyUp)\n }\n\n onKeyUp = (event: any) => {\n if (!this.formatter.currentSpec) {\n return\n }\n\n // delete or backspace\n if (event.keyCode === 46 || event.keyCode === 8) {\n const blot = Quill.find(this.formatter.currentSpec.getTargetElement())\n if (blot) {\n blot.deleteAt(0)\n }\n this.formatter.hide()\n }\n }\n}\n"],"names":["Action"],"mappings":";;;;AAGA,MAAqB,qBAAqBA,OAAAA,QAAO;AAAA,EAAjD,cAAA;AAAA,UAAA,GAAA,SAAA;AAWE,SAAA,UAAU,CAAC,UAAe;AACpB,UAAA,CAAC,KAAK,UAAU,aAAa;AAC/B;AAAA,MACF;AAGA,UAAI,MAAM,YAAY,MAAM,MAAM,YAAY,GAAG;AAC/C,cAAM,OAAO,MAAM,KAAK,KAAK,UAAU,YAAY,kBAAkB;AACrE,YAAI,MAAM;AACR,eAAK,SAAS,CAAC;AAAA,QACjB;AACA,aAAK,UAAU;MACjB;AAAA,IAAA;AAAA,EACF;AAAA,EAvBA,WAAW;AACT,aAAS,iBAAiB,SAAS,KAAK,SAAS,IAAI;AACrD,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,SAAS,IAAI;AAAA,EACxE;AAAA,EAEA,YAAY;AACD,aAAA,oBAAoB,SAAS,KAAK,OAAO;AAClD,SAAK,UAAU,MAAM,KAAK,oBAAoB,SAAS,KAAK,OAAO;AAAA,EACrE;AAgBF;;"}
@@ -16,7 +16,7 @@ const _CustomImage = class _CustomImage extends Embed {
16
16
  }
17
17
  node.setAttribute("src", imgURL);
18
18
  }
19
- node.setAttribute("data-image-id", "img" + _CustomImage.ID_SEED++);
19
+ node.setAttribute("data-image-id", `img${_CustomImage.ID_SEED++}`);
20
20
  node.setAttribute("devui-editorx-image", true);
21
21
  node.style.verticalAlign = "baseline";
22
22
  return node;
@@ -51,7 +51,7 @@ const _CustomImage = class _CustomImage extends Embed {
51
51
  return formats;
52
52
  }
53
53
  format(name, value) {
54
- if (ATTRIBUTES.indexOf(name) > -1) {
54
+ if (ATTRIBUTES.includes(name)) {
55
55
  if (value) {
56
56
  this.domNode.setAttribute(name, value);
57
57
  } else {
@@ -70,7 +70,7 @@ const _CustomImage = class _CustomImage extends Embed {
70
70
  this.parent.insertBefore(wrapper, this.next || void 0);
71
71
  }
72
72
  if (typeof wrapper.appendChild !== "function") {
73
- throw new Error(`Cannot wrap ${name}`);
73
+ throw new TypeError(`Cannot wrap ${name}`);
74
74
  }
75
75
  wrapper.appendChild(this);
76
76
  return wrapper;
@@ -1 +1 @@
1
- {"version":3,"file":"image.cjs.js","sources":["../../../src/custom-image/image.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport { isNullOrUndefined, sanitize } from '../config/editor.utils'\r\nconst Embed = Quill.imports['blots/embed']\r\nconst Inline = Quill.imports['blots/inline']\r\n\r\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\r\n\r\n// @dynamic\r\nclass CustomImage extends Embed {\r\n static ID_SEED = 0\r\n static blotName: string\r\n static tagName: string\r\n domNode: any\r\n parent: any\r\n scroll: any\r\n next: any\r\n static create(value) {\r\n const node = super.create(value)\r\n const url = typeof value === 'string' ? value : value.src\r\n if (url) {\r\n const imgURL = this.sanitize(url)\r\n if (!imgURL?.startsWith('data:image')) {\r\n node.dataset.src = imgURL\r\n }\r\n node.setAttribute('src', imgURL)\r\n }\r\n node.setAttribute('data-image-id', 'img' + CustomImage.ID_SEED++)\r\n node.setAttribute('devui-editorx-image', true)\r\n node.style.verticalAlign = 'baseline'\r\n return node\r\n }\r\n\r\n static formats(domNode) {\r\n return ATTRIBUTES.reduce((formats, attribute) => {\r\n if (domNode.hasAttribute(attribute)) {\r\n formats[attribute] = domNode.getAttribute(attribute)\r\n }\r\n return formats\r\n }, {})\r\n }\r\n\r\n static match(url) {\r\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\r\n }\r\n\r\n static register() {\r\n if (/Firefox/i.test(navigator.userAgent)) {\r\n setTimeout(() => {\r\n // Disable image resizing in Firefox\r\n document.execCommand('enableObjectResizing', false, null)\r\n }, 1)\r\n }\r\n }\r\n\r\n static sanitize(url) {\r\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0'\r\n }\r\n\r\n static value(domNode) {\r\n const formats: any = {}\r\n const imageSrc = domNode.getAttribute('src')\r\n formats.src = this.sanitize(imageSrc)\r\n formats.hasExisted = domNode.getAttribute('devui-editorx-image')\r\n formats.imageId = domNode.dataset.imageId\r\n return formats\r\n }\r\n\r\n format(name, value) {\r\n if (ATTRIBUTES.indexOf(name) > -1) {\r\n if (value) {\r\n this.domNode.setAttribute(name, value)\r\n }\r\n else {\r\n this.domNode.removeAttribute(name)\r\n }\r\n }\r\n else {\r\n super.format(name, value)\r\n }\r\n }\r\n\r\n unWrap() {\r\n this.parent.replaceWith(this)\r\n }\r\n\r\n wrap(name, value) {\r\n const wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name\r\n if (!isNullOrUndefined(this.parent)) {\r\n this.parent.insertBefore(wrapper, this.next || undefined)\r\n }\r\n if (typeof wrapper.appendChild !== 'function') {\r\n throw new Error(`Cannot wrap ${name}`)\r\n }\r\n wrapper.appendChild(this)\r\n return wrapper\r\n }\r\n}\r\nCustomImage.blotName = 'image'\r\nCustomImage.tagName = 'IMG'\r\n\r\n// @dynamic\r\nclass CustomImageContainer extends Inline {\r\n static tagName: string\r\n static className: string\r\n static blotName: string\r\n static allowedChildren: typeof CustomImage[]\r\n constructor(scroll, domNode) {\r\n super(scroll, domNode)\r\n domNode.setAttribute('contenteditable', false)\r\n }\r\n}\r\nCustomImageContainer.blotName = 'image-container'\r\nCustomImageContainer.className = 'ql-image-container'\r\nCustomImageContainer.tagName = 'DIV'\r\n\r\nCustomImageContainer.allowedChildren = [CustomImage]\r\nexport { CustomImageContainer as ImageContainerBlot, CustomImage as default }\r\n"],"names":["sanitize","isNullOrUndefined"],"mappings":"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"}
1
+ {"version":3,"file":"image.cjs.js","sources":["../../../src/custom-image/image.ts"],"sourcesContent":["import Quill from 'quill'\nimport { isNullOrUndefined, sanitize } from '../config/editor.utils'\n\nconst Embed = Quill.imports['blots/embed']\nconst Inline = Quill.imports['blots/inline']\n\nconst ATTRIBUTES = ['alt', 'height', 'width', 'image-id']\n\n// @dynamic\nclass CustomImage extends Embed {\n static ID_SEED = 0\n static blotName: string\n static tagName: string\n domNode: any\n parent: any\n scroll: any\n next: any\n static create(value) {\n const node = super.create(value)\n const url = typeof value === 'string' ? value : value.src\n if (url) {\n const imgURL = this.sanitize(url)\n if (!imgURL?.startsWith('data:image')) {\n node.dataset.src = imgURL\n }\n node.setAttribute('src', imgURL)\n }\n node.setAttribute('data-image-id', `img${CustomImage.ID_SEED++}`)\n node.setAttribute('devui-editorx-image', true)\n node.style.verticalAlign = 'baseline'\n return node\n }\n\n static formats(domNode) {\n return ATTRIBUTES.reduce((formats, attribute) => {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute)\n }\n return formats\n }, {})\n }\n\n static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n }\n\n static register() {\n if (/Firefox/i.test(navigator.userAgent)) {\n setTimeout(() => {\n // Disable image resizing in Firefox\n document.execCommand('enableObjectResizing', false, null)\n }, 1)\n }\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0'\n }\n\n static value(domNode) {\n const formats: any = {}\n const imageSrc = domNode.getAttribute('src')\n formats.src = this.sanitize(imageSrc)\n formats.hasExisted = domNode.getAttribute('devui-editorx-image')\n formats.imageId = domNode.dataset.imageId\n return formats\n }\n\n format(name, value) {\n if (ATTRIBUTES.includes(name)) {\n if (value) {\n this.domNode.setAttribute(name, value)\n }\n else {\n this.domNode.removeAttribute(name)\n }\n }\n else {\n super.format(name, value)\n }\n }\n\n unWrap() {\n this.parent.replaceWith(this)\n }\n\n wrap(name, value) {\n const wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name\n if (!isNullOrUndefined(this.parent)) {\n this.parent.insertBefore(wrapper, this.next || undefined)\n }\n if (typeof wrapper.appendChild !== 'function') {\n throw new TypeError(`Cannot wrap ${name}`)\n }\n wrapper.appendChild(this)\n return wrapper\n }\n}\nCustomImage.blotName = 'image'\nCustomImage.tagName = 'IMG'\n\n// @dynamic\nclass CustomImageContainer extends Inline {\n static tagName: string\n static className: string\n static blotName: string\n static allowedChildren: typeof CustomImage[]\n constructor(scroll, domNode) {\n super(scroll, domNode)\n domNode.setAttribute('contenteditable', false)\n }\n}\nCustomImageContainer.blotName = 'image-container'\nCustomImageContainer.className = 'ql-image-container'\nCustomImageContainer.tagName = 'DIV'\n\nCustomImageContainer.allowedChildren = [CustomImage]\nexport { CustomImage as default, CustomImageContainer as ImageContainerBlot }\n"],"names":["sanitize","isNullOrUndefined"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlotSpec.cjs.js","sources":["../../../../src/custom-image/specs/BlotSpec.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\r\n\r\nimport ResizeAction from '../actions/CustomResizeAction'\r\nimport DeleteAction from '../actions/DeleteAction'\r\n\r\nexport default class BlotSpec {\r\n formatter\r\n\r\n constructor(formatter) {\r\n this.formatter = formatter\r\n }\r\n\r\n init(): void {}\r\n\r\n getActions() {\r\n return [ResizeAction, DeleteAction]\r\n }\r\n\r\n getTargetElement() {\r\n return null\r\n }\r\n\r\n getOverlayElement() {\r\n return this.getTargetElement()\r\n }\r\n\r\n setSelection(): void {\r\n this.formatter.quill.setSelection(null)\r\n }\r\n\r\n onHide() {}\r\n}\r\n"],"names":["ResizeAction","DeleteAction"],"mappings":";;;;AAKA,MAAqB,SAAS;AAAA,EAG5B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAa;AAAA,EAAC;AAAA,EAEd,aAAa;AACJ,WAAA,CAACA,mBAAAA,SAAcC,aAAAA,OAAY;AAAA,EACpC;AAAA,EAEA,mBAAmB;AACV,WAAA;AAAA,EACT;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK;EACd;AAAA,EAEA,eAAqB;AACd,SAAA,UAAU,MAAM,aAAa,IAAI;AAAA,EACxC;AAAA,EAEA,SAAS;AAAA,EAAC;AACZ;;"}
1
+ {"version":3,"file":"BlotSpec.cjs.js","sources":["../../../../src/custom-image/specs/BlotSpec.ts"],"sourcesContent":["import ResizeAction from '../actions/CustomResizeAction'\nimport DeleteAction from '../actions/DeleteAction'\n\nexport default class BlotSpec {\n formatter\n\n constructor(formatter) {\n this.formatter = formatter\n }\n\n init(): void {}\n\n getActions() {\n return [ResizeAction, DeleteAction]\n }\n\n getTargetElement() {\n return null\n }\n\n getOverlayElement() {\n return this.getTargetElement()\n }\n\n setSelection(): void {\n this.formatter.quill.setSelection(null)\n }\n\n onHide() {}\n}\n"],"names":["ResizeAction","DeleteAction"],"mappings":";;;;AAGA,MAAqB,SAAS;AAAA,EAG5B,YAAY,WAAW;AACrB,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,OAAa;AAAA,EAAC;AAAA,EAEd,aAAa;AACJ,WAAA,CAACA,mBAAAA,SAAcC,aAAAA,OAAY;AAAA,EACpC;AAAA,EAEA,mBAAmB;AACV,WAAA;AAAA,EACT;AAAA,EAEA,oBAAoB;AAClB,WAAO,KAAK;EACd;AAAA,EAEA,eAAqB;AACd,SAAA,UAAU,MAAM,aAAa,IAAI;AAAA,EACxC;AAAA,EAEA,SAAS;AAAA,EAAC;AACZ;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomImageSpec.cjs.js","sources":["../../../../src/custom-image/specs/CustomImageSpec.ts"],"sourcesContent":["import { isInside } from '../../config/editor.utils'\r\nimport CustomResizeAction from '../actions/CustomResizeAction'\r\nimport DeleteAction from '../actions/DeleteAction'\r\nimport ImageSpec from './ImageSpec'\r\n\r\nexport class CustomImageSpec extends ImageSpec {\r\n formatter\r\n editorElem: HTMLElement | undefined\r\n observer: any\r\n oldRootScrollTop: any\r\n\r\n constructor(formatter) {\r\n super(formatter)\r\n this.formatter = formatter\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.editorElem = this.formatter.quill.container\r\n if (this.formatter.quill.root === this.formatter.quill.scrollingContainer) {\r\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\r\n }\r\n }\r\n\r\n handleQuillRootScroll() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\r\n }\r\n }\r\n\r\n init(): void {\r\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\r\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\r\n\r\n super.init()\r\n }\r\n\r\n getActions() {\r\n return [DeleteAction, CustomResizeAction]\r\n }\r\n\r\n imageMouseOver(event) {\r\n const target = event.target\r\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\r\n if (target.nodeName === 'IMG' || isBlotFormatter) {\r\n // this.addImagePreviewOverlay(event);\r\n }\r\n }\r\n\r\n imageMouseout = (event) => {\r\n if (event.target.nodeName === 'IMG'\r\n || event.target.classList.contains('blot-formatter__overlay')) {\r\n const imgDom = event.target\r\n if (!isInside(event, imgDom)) {\r\n this.removeImagePreviewOverlay()\r\n }\r\n }\r\n }\r\n\r\n addImagePreviewOverlay(event) {\r\n const target = event.target\r\n const {\r\n left: imgLeft,\r\n width: imgWidth,\r\n } = target.getBoundingClientRect()\r\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\r\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\r\n\r\n const {\r\n left: editorLeft,\r\n top: editorTop,\r\n } = event.currentTarget.getBoundingClientRect()\r\n\r\n const imgRelativeLeft = imgLeft - editorLeft\r\n const imgRelativeTop = imgTop - editorTop\r\n\r\n const maxmizeWidth = 24\r\n const maxmizePadding = 15\r\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\r\n const previewTop = imgRelativeTop + maxmizePadding\r\n\r\n const previewStyle = `\r\n left: ${previewLeft}px;\r\n top: ${previewTop}px;\r\n width: ${maxmizeWidth}px;\r\n `\r\n const imageSrc = target.src || target.getAttribute('data-image')\r\n const imageId = target.getAttribute('data-image-id')\r\n\r\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\r\n if (!previewDom) {\r\n event.currentTarget.insertAdjacentHTML('beforeend', `\r\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\r\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\r\n data-image=\"${imageSrc}\"></i>\r\n </div>\r\n `)\r\n }\r\n }\r\n\r\n removeImagePreviewOverlay() {\r\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\r\n if (previewDom) {\r\n previewDom.parentNode.removeChild(previewDom)\r\n }\r\n }\r\n\r\n onHide() {\r\n this.removeImagePreviewOverlay()\r\n super.onHide()\r\n }\r\n\r\n resetOverlayMarginTop() {\r\n if (this.formatter.overlay) {\r\n this.formatter.overlay.style.marginTop = '0px'\r\n }\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n const isReadonly = this.formatter.quill.options.readOnly\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\r\n return\r\n }\r\n\r\n this.img = el\r\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\r\n this.resetOverlayMarginTop()\r\n this.formatter.show(this)\r\n\r\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\r\n const imageDom = this.formatter.currentSpec?.getTargetElement()\r\n if (imageDom) {\r\n imageDom.classList.add('current-select-img')\r\n const quill = this.formatter.quill\r\n const imgBlot = quill.scroll.find(this.img)\r\n const index = quill.getIndex(imgBlot)\r\n const len = imgBlot.length()\r\n quill.setSelection(index, len)\r\n }\r\n }\r\n}\r\n"],"names":["ImageSpec","isInside","DeleteAction","CustomResizeAction"],"mappings":";;;;;;AAKO,MAAM,wBAAwBA,UAAAA,QAAU;AAAA,EAM7C,YAAY,WAAW;AACrB,UAAM,SAAS;AAkCjB,SAAA,gBAAgB,CAAC,UAAU;AACrB,UAAA,MAAM,OAAO,aAAa,SACzB,MAAM,OAAO,UAAU,SAAS,yBAAyB,GAAG;AAC/D,cAAM,SAAS,MAAM;AACrB,YAAI,CAACC,aAAA,SAAS,OAAO,MAAM,GAAG;AAC5B,eAAK,0BAA0B;AAAA,QACjC;AAAA,MACF;AAAA,IAAA;AA8DF,SAAA,UAAU,CAAC,UAAsB;;AAC/B,YAAM,KAAK,MAAM;AACjB,YAAM,aAAa,KAAK,UAAU,MAAM,QAAQ;AAChD,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,SAAS,YAAY;AACtE;AAAA,MACF;AAEA,WAAK,MAAM;AACX,WAAK,mBAAmB,KAAK,UAAU,MAAM,KAAK;AAClD,WAAK,sBAAsB;AACtB,WAAA,UAAU,KAAK,IAAI;AAGxB,YAAM,YAAW,UAAK,UAAU,gBAAf,mBAA4B;AAC7C,UAAI,UAAU;AACH,iBAAA,UAAU,IAAI,oBAAoB;AACrC,cAAA,QAAQ,KAAK,UAAU;AAC7B,cAAM,UAAU,MAAM,OAAO,KAAK,KAAK,GAAG;AACpC,cAAA,QAAQ,MAAM,SAAS,OAAO;AAC9B,cAAA,MAAM,QAAQ;AACd,cAAA,aAAa,OAAO,GAAG;AAAA,MAC/B;AAAA,IAAA;AA3HA,SAAK,YAAY;AACjB,SAAK,mBAAmB,KAAK,UAAU,MAAM,KAAK;AAC7C,SAAA,aAAa,KAAK,UAAU,MAAM;AACvC,QAAI,KAAK,UAAU,MAAM,SAAS,KAAK,UAAU,MAAM,oBAAoB;AACpE,WAAA,UAAU,MAAM,KAAK,iBAAiB,UAAU,KAAK,sBAAsB,KAAK,IAAI,CAAC;AAAA,IAC5F;AAAA,EACF;AAAA,EAEA,wBAAwB;AAClB,QAAA,KAAK,UAAU,SAAS;AACrB,WAAA,UAAU,QAAQ,MAAM,YAAY,GAAG,KAAK,mBAAmB,KAAK,UAAU,MAAM,KAAK,SAAS;AAAA,IACzG;AAAA,EACF;AAAA,EAEA,OAAa;AACX,SAAK,WAAW,iBAAiB,aAAa,KAAK,eAAe,KAAK,IAAI,CAAC;AAC5E,SAAK,WAAW,iBAAiB,YAAY,KAAK,aAAa;AAE/D,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,aAAa;AACJ,WAAA,CAACC,aAAAA,SAAcC,mBAAAA,OAAkB;AAAA,EAC1C;AAAA,EAEA,eAAe,OAAO;;AACpB,UAAM,SAAS,MAAM;AACrB,UAAM,mBAAkB,sCAAQ,cAAR,mBAAmB,SAAS;AAChD,QAAA,OAAO,aAAa,SAAS,iBAAiB;AAAA,IAElD;AAAA,EACF;AAAA,EAYA,uBAAuB,OAAO;AAC5B,UAAM,SAAS,MAAM;AACf,UAAA;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,IACL,OAAO;AAEL,UAAA,SAAS,OAAO,wBAAwB,MAAM,KAAK,UAAU,MAAM,UAAU;AAE7E,UAAA;AAAA,MACJ,MAAM;AAAA,MACN,KAAK;AAAA,IAAA,IACH,MAAM,cAAc;AAExB,UAAM,kBAAkB,UAAU;AAClC,UAAM,iBAAiB,SAAS;AAEhC,UAAM,eAAe;AACrB,UAAM,iBAAiB;AACjB,UAAA,cAAc,kBAAkB,WAAW,eAAe;AAChE,UAAM,aAAa,iBAAiB;AAEpC,UAAM,eAAe;AAAA,gBACT,WAAW;AAAA,eACZ,UAAU;AAAA,iBACR,YAAY;AAAA;AAEzB,UAAM,WAAW,OAAO,OAAO,OAAO,aAAa,YAAY;AACzD,UAAA,UAAU,OAAO,aAAa,eAAe;AAEnD,UAAM,aAAa,MAAM,cAAc,cAAc,yBAAyB;AAC9E,QAAI,CAAC,YAAY;AACT,YAAA,cAAc,mBAAmB,aAAa;AAAA,uDACH,YAAY;AAAA,4EACS,OAAO;AAAA,4BACvD,QAAQ;AAAA;AAAA,SAE3B;AAAA,IACL;AAAA,EACF;AAAA,EAEA,4BAA4B;AAC1B,UAAM,aAAa,KAAK,WAAW,cAAc,yBAAyB;AAC1E,QAAI,YAAY;AACH,iBAAA,WAAW,YAAY,UAAU;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,SAAS;AACP,SAAK,0BAA0B;AAC/B,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,wBAAwB;AAClB,QAAA,KAAK,UAAU,SAAS;AACrB,WAAA,UAAU,QAAQ,MAAM,YAAY;AAAA,IAC3C;AAAA,EACF;AAyBF;;"}
1
+ {"version":3,"file":"CustomImageSpec.cjs.js","sources":["../../../../src/custom-image/specs/CustomImageSpec.ts"],"sourcesContent":["import { isInside } from '../../config/editor.utils'\nimport CustomResizeAction from '../actions/CustomResizeAction'\nimport DeleteAction from '../actions/DeleteAction'\nimport ImageSpec from './ImageSpec'\n\nexport class CustomImageSpec extends ImageSpec {\n formatter\n editorElem: HTMLElement | undefined\n observer: any\n oldRootScrollTop: any\n\n constructor(formatter) {\n super(formatter)\n this.formatter = formatter\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.editorElem = this.formatter.quill.container\n if (this.formatter.quill.root === this.formatter.quill.scrollingContainer) {\n this.formatter.quill.root.addEventListener('scroll', this.handleQuillRootScroll.bind(this))\n }\n }\n\n handleQuillRootScroll() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = `${this.oldRootScrollTop - this.formatter.quill.root.scrollTop}px`\n }\n }\n\n init(): void {\n this.editorElem.addEventListener('mouseover', this.imageMouseOver.bind(this))\n this.editorElem.addEventListener('mouseout', this.imageMouseout)\n\n super.init()\n }\n\n getActions() {\n return [DeleteAction, CustomResizeAction]\n }\n\n imageMouseOver(event) {\n const target = event.target\n const isBlotFormatter = target?.classList?.contains('blot-formatter__overlay')\n if (target.nodeName === 'IMG' || isBlotFormatter) {\n // this.addImagePreviewOverlay(event);\n }\n }\n\n imageMouseout = (event) => {\n if (event.target.nodeName === 'IMG'\n || event.target.classList.contains('blot-formatter__overlay')) {\n const imgDom = event.target\n if (!isInside(event, imgDom)) {\n this.removeImagePreviewOverlay()\n }\n }\n }\n\n addImagePreviewOverlay(event) {\n const target = event.target\n const {\n left: imgLeft,\n width: imgWidth,\n } = target.getBoundingClientRect()\n // fix: 解决 ql-container 容器设置 calc(100vh - 180px) 这样的视窗相对单位时,滚动视窗导致图片相对视窗的 top 相应改变,从而导致图片预览按钮的位置显示错误\n const imgTop = target.getBoundingClientRect().top + this.formatter.quill.container.scrollTop\n\n const {\n left: editorLeft,\n top: editorTop,\n } = event.currentTarget.getBoundingClientRect()\n\n const imgRelativeLeft = imgLeft - editorLeft\n const imgRelativeTop = imgTop - editorTop\n\n const maxmizeWidth = 24\n const maxmizePadding = 15\n const previewLeft = imgRelativeLeft + imgWidth - maxmizeWidth - maxmizePadding\n const previewTop = imgRelativeTop + maxmizePadding\n\n const previewStyle = `\n left: ${previewLeft}px;\n top: ${previewTop}px;\n width: ${maxmizeWidth}px;\n `\n const imageSrc = target.src || target.getAttribute('data-image')\n const imageId = target.getAttribute('data-image-id')\n\n const previewDom = event.currentTarget.querySelector('.image-preview__overlay')\n if (!previewDom) {\n event.currentTarget.insertAdjacentHTML('beforeend', `\n <div class=\"image-preview__overlay\" style=\"${previewStyle}\">\n <i class=\"icon-maxmize\" id=\"btn-image-preview\" data-image-id=\"${imageId}\"\n data-image=\"${imageSrc}\"></i>\n </div>\n `)\n }\n }\n\n removeImagePreviewOverlay() {\n const previewDom = this.editorElem.querySelector('.image-preview__overlay')\n if (previewDom) {\n previewDom.parentNode.removeChild(previewDom)\n }\n }\n\n onHide() {\n this.removeImagePreviewOverlay()\n super.onHide()\n }\n\n resetOverlayMarginTop() {\n if (this.formatter.overlay) {\n this.formatter.overlay.style.marginTop = '0px'\n }\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n const isReadonly = this.formatter.quill.options.readOnly\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG' || isReadonly) {\n return\n }\n\n this.img = el\n this.oldRootScrollTop = this.formatter.quill.root.scrollTop\n this.resetOverlayMarginTop()\n this.formatter.show(this)\n\n // 通过图片dom获取图片选区用以复制,设置 current-select-img::selection 取消选区背景\n const imageDom = this.formatter.currentSpec?.getTargetElement()\n if (imageDom) {\n imageDom.classList.add('current-select-img')\n const quill = this.formatter.quill\n const imgBlot = quill.scroll.find(this.img)\n const index = quill.getIndex(imgBlot)\n const len = imgBlot.length()\n quill.setSelection(index, len)\n }\n }\n}\n"],"names":["ImageSpec","isInside","DeleteAction","CustomResizeAction"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageSpec.cjs.js","sources":["../../../../src/custom-image/specs/ImageSpec.ts"],"sourcesContent":["import BlotSpec from './BlotSpec'\r\n\r\nexport default class ImageSpec extends BlotSpec {\r\n img\r\n\r\n constructor(formatter) {\r\n super(formatter)\r\n this.img = null\r\n }\r\n\r\n init() {\r\n this.formatter.quill.root.addEventListener('click', this.onClick)\r\n }\r\n\r\n getTargetElement() {\r\n return this.img\r\n }\r\n\r\n onHide() {\r\n this.img = null\r\n }\r\n\r\n onClick = (event: MouseEvent) => {\r\n const el = event.target\r\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\r\n return\r\n }\r\n event.stopPropagation()\r\n\r\n this.img = el\r\n this.formatter.show(this)\r\n }\r\n}\r\n"],"names":["BlotSpec"],"mappings":";;;AAEA,MAAqB,kBAAkBA,SAAAA,QAAS;AAAA,EAG9C,YAAY,WAAW;AACrB,UAAM,SAAS;AAgBjB,SAAA,UAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MACF;AACA,YAAM,gBAAgB;AAEtB,WAAK,MAAM;AACN,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAvBxB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAClE;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,SAAK,MAAM;AAAA,EACb;AAYF;;"}
1
+ {"version":3,"file":"ImageSpec.cjs.js","sources":["../../../../src/custom-image/specs/ImageSpec.ts"],"sourcesContent":["import BlotSpec from './BlotSpec'\n\nexport default class ImageSpec extends BlotSpec {\n img\n\n constructor(formatter) {\n super(formatter)\n this.img = null\n }\n\n init() {\n this.formatter.quill.root.addEventListener('click', this.onClick)\n }\n\n getTargetElement() {\n return this.img\n }\n\n onHide() {\n this.img = null\n }\n\n onClick = (event: MouseEvent) => {\n const el = event.target\n if (!(el instanceof HTMLElement) || el.tagName !== 'IMG') {\n return\n }\n event.stopPropagation()\n\n this.img = el\n this.formatter.show(this)\n }\n}\n"],"names":["BlotSpec"],"mappings":";;;AAEA,MAAqB,kBAAkBA,SAAAA,QAAS;AAAA,EAG9C,YAAY,WAAW;AACrB,UAAM,SAAS;AAgBjB,SAAA,UAAU,CAAC,UAAsB;AAC/B,YAAM,KAAK,MAAM;AACjB,UAAI,EAAE,cAAc,gBAAgB,GAAG,YAAY,OAAO;AACxD;AAAA,MACF;AACA,YAAM,gBAAgB;AAEtB,WAAK,MAAM;AACN,WAAA,UAAU,KAAK,IAAI;AAAA,IAAA;AAvBxB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,OAAO;AACL,SAAK,UAAU,MAAM,KAAK,iBAAiB,SAAS,KAAK,OAAO;AAAA,EAClE;AAAA,EAEA,mBAAmB;AACjB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,SAAS;AACP,SAAK,MAAM;AAAA,EACb;AAYF;;"}
@@ -3,7 +3,7 @@ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toString
3
3
  const Quill = require("quill");
4
4
  const editor_config = require("./config/editor.config.cjs.js");
5
5
  const Uploader = Quill.imports["modules/uploader"];
6
- const Delta = Quill.imports["delta"];
6
+ const Delta = Quill.import("delta");
7
7
  class CustomUploader extends Uploader {
8
8
  constructor() {
9
9
  super(...arguments);
@@ -14,10 +14,7 @@ class CustomUploader extends Uploader {
14
14
  return acceptArr.some((type) => {
15
15
  const validType = type.trim();
16
16
  if (validType.startsWith(".")) {
17
- return file.name.toLowerCase().indexOf(
18
- validType.toLowerCase(),
19
- file.name.toLowerCase().length - validType.toLowerCase().length
20
- ) > -1;
17
+ return file.name.toLowerCase().includes(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length);
21
18
  } else if (/\/\*$/.test(validType)) {
22
19
  return baseMimeType === validType.replace(/\/.*$/, "");
23
20
  }
@@ -101,7 +98,7 @@ class CustomUploader extends Uploader {
101
98
  handleUploadImage(range, { file, files }, hasRejectedImage) {
102
99
  var _a, _b, _c;
103
100
  if ((_a = this.quill.options.uploadOption) == null ? void 0 : _a.imageUpload) {
104
- const imageEnableMultiUpload = this.enableMultiUpload === true || ((_b = this.enableMultiUpload) == null ? void 0 : _b["image"]);
101
+ const imageEnableMultiUpload = this.enableMultiUpload === true || ((_b = this.enableMultiUpload) == null ? void 0 : _b.image);
105
102
  const result = {
106
103
  file,
107
104
  data: { files: [file] },
@@ -118,7 +115,7 @@ class CustomUploader extends Uploader {
118
115
  }
119
116
  };
120
117
  if (imageEnableMultiUpload) {
121
- result["data"] = { files };
118
+ result.data = { files };
122
119
  }
123
120
  (_c = this.quill.options.uploadOption) == null ? void 0 : _c.imageUpload(result);
124
121
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"custom-uploader.cjs.js","sources":["../../src/custom-uploader.ts"],"sourcesContent":["import Quill from 'quill'\r\n\r\nimport {\r\n FILE_UPLOADER_MIME_TYPES,\r\n IMAGE_UPLOADER_MIME_TYPES,\r\n} from './config/editor.config'\r\nimport type { Range } from 'quill/core/quill'\r\n\r\ntype InsertFileData = {\r\n code: number\r\n message?: string\r\n data: {\r\n title: string\r\n size: number\r\n src: string\r\n }\r\n}\r\n\r\nconst Uploader = Quill.imports['modules/uploader']\r\nconst Delta = Quill.imports['delta']\r\n\r\nclass CustomUploader extends Uploader {\r\n quill\r\n options\r\n\r\n upload(range, files, isFile?) {\r\n const uploads = []\r\n const fileFlags = []\r\n const rejectFlags = {\r\n file: false,\r\n image: false,\r\n }\r\n const uploadOption = this.quill.options.uploadOption\r\n const acceptObj\r\n = (uploadOption && {\r\n image: uploadOption.imageAccept,\r\n file: uploadOption.fileAccept,\r\n })\r\n || {}\r\n Array.from(files).forEach((file: any) => {\r\n if (file) {\r\n const fileFlag\r\n = typeof isFile === 'boolean'\r\n ? isFile\r\n : !/^image\\/[-\\w.]+$/.test(file.type)\r\n const fileType = fileFlag ? 'file' : 'image'\r\n const accept = acceptObj[fileType] || this.options[fileType]\r\n if (this.isAllowedFileType(accept, file)) {\r\n uploads.push(file)\r\n fileFlags.push(fileFlag)\r\n }\r\n else {\r\n rejectFlags[fileType] = true\r\n }\r\n }\r\n })\r\n this.options.handler.call(this, range, uploads, fileFlags, rejectFlags)\r\n }\r\n\r\n isAllowedFileType = (accept: Array<string> | string, file: File) => {\r\n if (accept) {\r\n const baseMimeType = file.type.replace(/\\/.*$/, '')\r\n const acceptArr = typeof accept === 'string' ? accept.split(',') : accept\r\n return acceptArr.some((type: string) => {\r\n const validType = type.trim()\r\n // suffix name (e.g. '.png,.xlsx')\r\n if (validType.startsWith('.')) {\r\n return (\r\n file.name\r\n .toLowerCase()\r\n .indexOf(\r\n validType.toLowerCase(),\r\n file.name.toLowerCase().length - validType.toLowerCase().length,\r\n ) > -1\r\n )\r\n // mime type like 'image/*'\r\n }\r\n else if (/\\/\\*$/.test(validType)) {\r\n return baseMimeType === validType.replace(/\\/.*$/, '')\r\n }\r\n // mime type like 'text/plain,application/json'\r\n return file.type === validType\r\n })\r\n }\r\n return true\r\n }\r\n\r\n // 处理上传文件\r\n handleUploadFile(range, files, _hasRejectedFile) {\r\n this.insertFileToEditor(range, files[0], {\r\n code: 0,\r\n data: {\r\n title: files[0].name,\r\n size: files[0].size,\r\n src: files[0].src,\r\n },\r\n })\r\n }\r\n\r\n // 将文件插入编辑器\r\n insertFileToEditor(range: Range, file: File, { code, message, data }: InsertFileData) {\r\n if (code === 0) {\r\n const oldContent = new Delta().retain(range.index).delete(range.length)\r\n const videoFlag = this.uploadOption && this.uploadOption.isVideoPlay && /^video\\/[-\\w.]+$/.test(file.type)\r\n const insertObj = videoFlag ? { video: data } : { file: data }\r\n const currentContent = new Delta([{ insert: insertObj }])\r\n const newContent = oldContent.concat(currentContent)\r\n this.quill.updateContents(newContent, Quill.sources.USER)\r\n this.quill.setSelection(range.index + 1)\r\n }\r\n else {\r\n console.error('error message:', message)\r\n }\r\n }\r\n\r\n // 将图片插入编辑器\r\n insertImageToEditor(range, { code, message, data }) {\r\n if (code === 0) {\r\n const { imageId, imageUrl } = data\r\n // 粘贴截图或者从外源直接拷贝的单图时,需要将编辑器中已选中的内容删除\r\n const oldContent = new Delta().retain(range.index).delete(range.length)\r\n const currentContent = new Delta([\r\n {\r\n insert: { image: imageUrl },\r\n attributes: { 'image-id': imageId },\r\n },\r\n ])\r\n const newContent = oldContent.concat(currentContent)\r\n this.quill.updateContents(newContent, Quill.sources.USER)\r\n this.quill.setSelection(range.index + 1)\r\n }\r\n else {\r\n console.error('error message:', message)\r\n }\r\n }\r\n\r\n // 处理上传图片\r\n handleUploadImage(range, { file, files }, hasRejectedImage) {\r\n if (this.quill.options.uploadOption?.imageUpload) {\r\n const imageEnableMultiUpload = this.enableMultiUpload === true || this.enableMultiUpload?.['image']\r\n\r\n const result = {\r\n file,\r\n data: { files: [file] },\r\n hasRejectedImage: hasRejectedImage,\r\n callback: (res) => {\r\n if (!res) {\r\n return\r\n }\r\n if (imageEnableMultiUpload && Array.isArray(res)) {\r\n res.forEach(value => this.insertImageToEditor(range, value))\r\n }\r\n else {\r\n this.insertImageToEditor(range, res)\r\n }\r\n },\r\n }\r\n if (imageEnableMultiUpload) {\r\n result['data'] = { files }\r\n }\r\n this.quill.options.uploadOption?.imageUpload(result)\r\n }\r\n else {\r\n const promises = files.map((fileItem) => {\r\n return new Promise((resolve) => {\r\n const reader = new FileReader()\r\n reader.onload = (e: any) => {\r\n resolve(e.target.result)\r\n }\r\n reader.readAsDataURL(fileItem)\r\n })\r\n })\r\n Promise.all(promises).then((images) => {\r\n const update = images.reduce((delta: any, image) => {\r\n return delta.insert({ image })\r\n }, new Delta().retain(range.index).delete(range.length))\r\n\r\n this.quill.updateContents(update, Quill.sources.USER)\r\n this.quill.setSelection(range.index + images.length, Quill.sources.SILENT)\r\n })\r\n }\r\n }\r\n}\r\n\r\nCustomUploader.DEFAULTS = {\r\n file: FILE_UPLOADER_MIME_TYPES,\r\n image: IMAGE_UPLOADER_MIME_TYPES,\r\n enableMultiUpload: false,\r\n handler(range, files, fileFlags, rejectFlags) {\r\n const fileArr = []\r\n const imgArr = []\r\n files.forEach((file, index) => (fileFlags[index] ? fileArr.push(file) : imgArr.push(file)))\r\n if (this.quill.options.modules.file && (fileArr.length || rejectFlags.file)) {\r\n this.handleUploadFile(range, fileArr, rejectFlags.file)\r\n }\r\n if (imgArr.length || rejectFlags.image) {\r\n this.handleUploadImage(range, { file: imgArr[0], files: imgArr }, rejectFlags.image)\r\n }\r\n },\r\n}\r\n\r\nexport default CustomUploader\r\n"],"names":["FILE_UPLOADER_MIME_TYPES","IMAGE_UPLOADER_MIME_TYPES"],"mappings":"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"}
1
+ {"version":3,"file":"custom-uploader.cjs.js","sources":["../../src/custom-uploader.ts"],"sourcesContent":["import type { Range } from 'quill/core/quill'\n\nimport Quill from 'quill'\nimport {\n FILE_UPLOADER_MIME_TYPES,\n IMAGE_UPLOADER_MIME_TYPES,\n} from './config/editor.config'\n\ninterface InsertFileData {\n code: number\n message?: string\n data: {\n title: string\n size: number\n src: string\n }\n}\n\nconst Uploader = Quill.imports['modules/uploader']\nconst Delta = Quill.import('delta')\n\nclass CustomUploader extends Uploader {\n quill\n options\n\n upload(range, files, isFile?) {\n const uploads = []\n const fileFlags = []\n const rejectFlags = {\n file: false,\n image: false,\n }\n const uploadOption = this.quill.options.uploadOption\n const acceptObj\n = (uploadOption && {\n image: uploadOption.imageAccept,\n file: uploadOption.fileAccept,\n })\n || {}\n Array.from(files).forEach((file: any) => {\n if (file) {\n const fileFlag\n = typeof isFile === 'boolean'\n ? isFile\n : !/^image\\/[-\\w.]+$/.test(file.type)\n const fileType = fileFlag ? 'file' : 'image'\n const accept = acceptObj[fileType] || this.options[fileType]\n if (this.isAllowedFileType(accept, file)) {\n uploads.push(file)\n fileFlags.push(fileFlag)\n }\n else {\n rejectFlags[fileType] = true\n }\n }\n })\n this.options.handler.call(this, range, uploads, fileFlags, rejectFlags)\n }\n\n isAllowedFileType = (accept: Array<string> | string, file: File) => {\n if (accept) {\n const baseMimeType = file.type.replace(/\\/.*$/, '')\n const acceptArr = typeof accept === 'string' ? accept.split(',') : accept\n return acceptArr.some((type: string) => {\n const validType = type.trim()\n // suffix name (e.g. '.png,.xlsx')\n if (validType.startsWith('.')) {\n return (\n file.name\n .toLowerCase()\n .includes(validType.toLowerCase(), file.name.toLowerCase().length - validType.toLowerCase().length)\n )\n // mime type like 'image/*'\n }\n else if (/\\/\\*$/.test(validType)) {\n return baseMimeType === validType.replace(/\\/.*$/, '')\n }\n // mime type like 'text/plain,application/json'\n return file.type === validType\n })\n }\n return true\n }\n\n // 处理上传文件\n handleUploadFile(range, files, _hasRejectedFile) {\n this.insertFileToEditor(range, files[0], {\n code: 0,\n data: {\n title: files[0].name,\n size: files[0].size,\n src: files[0].src,\n },\n })\n }\n\n // 将文件插入编辑器\n insertFileToEditor(range: Range, file: File, { code, message, data }: InsertFileData) {\n if (code === 0) {\n const oldContent = new Delta().retain(range.index).delete(range.length)\n const videoFlag = this.uploadOption && this.uploadOption.isVideoPlay && /^video\\/[-\\w.]+$/.test(file.type)\n const insertObj = videoFlag ? { video: data } : { file: data }\n const currentContent = new Delta([{ insert: insertObj }])\n const newContent = oldContent.concat(currentContent)\n this.quill.updateContents(newContent, Quill.sources.USER)\n this.quill.setSelection(range.index + 1)\n }\n else {\n console.error('error message:', message)\n }\n }\n\n // 将图片插入编辑器\n insertImageToEditor(range, { code, message, data }) {\n if (code === 0) {\n const { imageId, imageUrl } = data\n // 粘贴截图或者从外源直接拷贝的单图时,需要将编辑器中已选中的内容删除\n const oldContent = new Delta().retain(range.index).delete(range.length)\n const currentContent = new Delta([\n {\n insert: { image: imageUrl },\n attributes: { 'image-id': imageId },\n },\n ])\n const newContent = oldContent.concat(currentContent)\n this.quill.updateContents(newContent, Quill.sources.USER)\n this.quill.setSelection(range.index + 1)\n }\n else {\n console.error('error message:', message)\n }\n }\n\n // 处理上传图片\n handleUploadImage(range, { file, files }, hasRejectedImage) {\n if (this.quill.options.uploadOption?.imageUpload) {\n const imageEnableMultiUpload = this.enableMultiUpload === true || this.enableMultiUpload?.image\n\n const result = {\n file,\n data: { files: [file] },\n hasRejectedImage,\n callback: (res) => {\n if (!res) {\n return\n }\n if (imageEnableMultiUpload && Array.isArray(res)) {\n res.forEach(value => this.insertImageToEditor(range, value))\n }\n else {\n this.insertImageToEditor(range, res)\n }\n },\n }\n if (imageEnableMultiUpload) {\n result.data = { files }\n }\n this.quill.options.uploadOption?.imageUpload(result)\n }\n else {\n const promises = files.map((fileItem) => {\n return new Promise((resolve) => {\n const reader = new FileReader()\n reader.onload = (e: any) => {\n resolve(e.target.result)\n }\n reader.readAsDataURL(fileItem)\n })\n })\n Promise.all(promises).then((images) => {\n const update = images.reduce((delta: any, image) => {\n return delta.insert({ image })\n }, new Delta().retain(range.index).delete(range.length))\n\n this.quill.updateContents(update, Quill.sources.USER)\n this.quill.setSelection(range.index + images.length, Quill.sources.SILENT)\n })\n }\n }\n}\n\nCustomUploader.DEFAULTS = {\n file: FILE_UPLOADER_MIME_TYPES,\n image: IMAGE_UPLOADER_MIME_TYPES,\n enableMultiUpload: false,\n handler(range, files, fileFlags, rejectFlags) {\n const fileArr = []\n const imgArr = []\n files.forEach((file, index) => (fileFlags[index] ? fileArr.push(file) : imgArr.push(file)))\n if (this.quill.options.modules.file && (fileArr.length || rejectFlags.file)) {\n this.handleUploadFile(range, fileArr, rejectFlags.file)\n }\n if (imgArr.length || rejectFlags.image) {\n this.handleUploadImage(range, { file: imgArr[0], files: imgArr }, rejectFlags.image)\n }\n },\n}\n\nexport default CustomUploader\n"],"names":["FILE_UPLOADER_MIME_TYPES","IMAGE_UPLOADER_MIME_TYPES"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"people.cjs.js","sources":["../../../../src/emoji/emoji-list/people.ts"],"sourcesContent":["import { createEmoji } from '../utils'\r\nconst peopleEmojiArr = [\r\n ['grinning', '1f600', ':grinning:', '&#128512;', 'p', '1'],\r\n ['grin', '1f601', ':grin:', '&#128513;', 'p', '2'],\r\n ['joy', '1f602', ':joy:', '&#128514;', 'p', '3'],\r\n ['smiley', '1f603', ':smiley:', '&#128515;', 'p', '5'],\r\n ['smile', '1f604', ':smile:', '&#128516;', 'p', '6'],\r\n ['sweat_smile', '1f605', ':sweat_smile:', '&#128517;', 'p', '7'],\r\n ['laughing', '1f606', ':laughing:', '&#128518;', 'p', '8'],\r\n ['wink', '1f609', ':wink:', '&#128521;', 'p', '9'],\r\n ['blush', '1f60a', ':blush:', '&#128522;', 'p', '10'],\r\n ['yum', '1f60b', ':yum:', '&#128523;', 'p', '11'],\r\n ['sunglasses', '1f60e', ':sunglasses:', '&#128526;', 'p', '12'],\r\n ['heart_eyes', '1f60d', ':heart_eyes:', '&#128525;', 'p', '13'],\r\n ['kissing_heart', '1f618', ':kissing_heart:', '&#128536;', 'p', '14'],\r\n ['kissing', '1f617', ':kissing:', '&#128535;', 'p', '15'],\r\n ['kissing_smiling_eyes', '1f619', ':kissing_smiling_eyes:', '&#128537;', 'p', '16'],\r\n ['kissing_closed_eyes', '1f61a', ':kissing_closed_eyes:', '&#128538;', 'p', '17'],\r\n ['slightly_smiling_face', '1f642', ':slight_smile:', '&#128578;', 'p', '19'],\r\n ['hugging_face', '1f917', ':hugging:', '&#129303;', 'p', '20'],\r\n ['thinking_face', '1f914', ':thinking:', '&#129300;', 'p', '21'],\r\n ['neutral_face', '1f610', ':neutral_face:', '&#128528;', 'p', '22'],\r\n ['expressionless', '1f611', ':expressionless:', '&#128529;', 'p', '23'],\r\n ['no_mouth', '1f636', ':no_mouth:', '&#128566;', 'p', '24'],\r\n ['smirk', '1f60f', ':smirk:', '&#128527;', 'p', '26'],\r\n ['persevere', '1f623', ':persevere:', '&#128547;', 'p', '27'],\r\n ['disappointed_relieved', '1f625', ':disappointed_relieved:', '&#128549;', 'p', '28'],\r\n ['open_mouth', '1f62e', ':open_mouth:', '&#128558;', 'p', '29'],\r\n ['zipper_mouth_face', '1f910', ':zipper_mouth:', '&#129296;', 'p', '30'],\r\n ['hushed', '1f62f', ':hushed:', '&#128559;', 'p', '31'],\r\n ['sleepy', '1f62a', ':sleepy:', '&#128554;', 'p', '32'],\r\n ['tired_face', '1f62b', ':tired_face:', '&#128555;', 'p', '33'],\r\n ['sleeping', '1f634', ':sleeping:', '&#128564;', 'p', '34'],\r\n ['relieved', '1f60c', ':relieved:', '&#128524;', 'p', '35'],\r\n ['nerd_face', '1f913', ':nerd:', '&#129299;', 'p', '36'],\r\n ['stuck_out_tongue', '1f61b', ':stuck_out_tongue:', '&#128539;', 'p', '37'],\r\n ['stuck_out_tongue_winking_eye', '1f61c', ':stuck_out_tongue_winking_eye:', '&#128540;', 'p', '38'],\r\n ['stuck_out_tongue_closed_eyes', '1f61d', ':stuck_out_tongue_closed_eyes:', '&#128541;', 'p', '39'],\r\n ['unamused', '1f612', ':unamused:', '&#128530;', 'p', '41'],\r\n ['sweat', '1f613', ':sweat:', '&#128531;', 'p', '42'],\r\n ['pensive', '1f614', ':pensive:', '&#128532;', 'p', '43'],\r\n ['confused', '1f615', ':confused:', '&#128533;', 'p', '44'],\r\n ['money_mouth_face', '1f911', ':money_mouth:', '&#129297;', 'p', '46'],\r\n ['astonished', '1f632', ':astonished:', '&#128562;', 'p', '47'],\r\n ['slightly_frowning_face', '1f641', ':slight_frown:', '&#128577;', 'p', '49'],\r\n ['confounded', '1f616', ':confounded:', '&#128534;', 'p', '50'],\r\n ['disappointed', '1f61e', ':disappointed:', '&#128542;', 'p', '51'],\r\n ['worried', '1f61f', ':worried:', '&#128543;', 'p', '52'],\r\n ['triumph', '1f624', ':triumph:', '&#128548;', 'p', '53'],\r\n ['cry', '1f622', ':cry:', '&#128546;', 'p', '54'],\r\n ['sob', '1f62d', ':sob:', '&#128557;', 'p', '55'],\r\n ['frowning', '1f626', ':frowning:', '&#128550;', 'p', '56'],\r\n ['anguished', '1f627', ':anguished:', '&#128551;', 'p', '57'],\r\n ['fearful', '1f628', ':fearful:', '&#128552;', 'p', '58'],\r\n ['weary', '1f629', ':weary:', '&#128553;', 'p', '59'],\r\n ['grimacing', '1f62c', ':grimacing:', '&#128556;', 'p', '60'],\r\n ['cold_sweat', '1f630', ':cold_sweat:', '&#128560;', 'p', '61'],\r\n ['scream', '1f631', ':scream:', '&#128561;', 'p', '62'],\r\n ['flushed', '1f633', ':flushed:', '&#128563;', 'p', '63'],\r\n ['dizzy_face', '1f635', ':dizzy_face:', '&#128565;', 'p', '64'],\r\n ['rage', '1f621', ':rage:', '&#128545;', 'p', '65'],\r\n ['angry', '1f620', ':angry:', '&#128544;', 'p', '66'],\r\n ['innocent', '1f607', ':innocent:', '&#128519;', 'p', '67'],\r\n ['mask', '1f637', ':mask:', '&#128567;', 'p', '71'],\r\n ['face_with_thermometer', '1f912', ':thermometer_face:', '&#129298;', 'p', '72'],\r\n ['face_with_head_bandage', '1f915', ':head_bandage:', '&#129301;', 'p', '73'],\r\n ['smiling_imp', '1f608', ':smiling_imp:', '&#128520;', 'p', '76'],\r\n ['imp', '1f47f', ':imp:', '&#128127;', 'p', '77'],\r\n ['skull', '1f480', ':skull:', '&#128128;', 'p', '80'],\r\n ['ghost', '1f47b', ':ghost:', '&#128123;', 'p', '82'],\r\n ['alien', '1f47d', ':alien:', '&#128125;', 'p', '83'],\r\n ['space_invader', '1f47e', ':space_invader:', '&#128126;', 'a', '84'],\r\n ['robot_face', '1f916', ':robot:', '&#129302;', 'p', '85'],\r\n ['hankey', '1f4a9', ':poop:', '&#128169;', 'p', '86'],\r\n ['smiley_cat', '1f63a', ':smiley_cat:', '&#128570;', 'p', '87'],\r\n ['smile_cat', '1f638', ':smile_cat:', '&#128568;', 'p', '88'],\r\n ['joy_cat', '1f639', ':joy_cat:', '&#128569;', 'p', '89'],\r\n ['heart_eyes_cat', '1f63b', ':heart_eyes_cat:', '&#128571;', 'p', '90'],\r\n ['smirk_cat', '1f63c', ':smirk_cat:', '&#128572;', 'p', '91'],\r\n ['kissing_cat', '1f63d', ':kissing_cat:', '&#128573;', 'p', '92'],\r\n ['scream_cat', '1f640', ':scream_cat:', '&#128576;', 'p', '93'],\r\n ['crying_cat_face', '1f63f', ':crying_cat_face:', '&#128575;', 'p', '94'],\r\n ['pouting_cat', '1f63e', ':pouting_cat:', '&#128574;', 'p', '95'],\r\n ['muscle', '1f4aa', ':muscle:', '&#128170;', 'p', '1080'],\r\n ['point_left', '1f448', ':point_left:', '&#128072;', 'p', '1092'],\r\n ['point_right', '1f449', ':point_right:', '&#128073;', 'p', '1098'],\r\n ['point_up', '261d', ':point_up:', '&#9757;', 'p', '1104'],\r\n ['point_up_2', '1f446', ':point_up_2:', '&#128070;', 'p', '1110'],\r\n ['middle_finger', '1f595', ':middle_finger:', '&#128405;', 'p', '1116'],\r\n ['point_down', '1f447', ':point_down:', '&#128071;', 'p', '1122'],\r\n ['v', '270c', ':v:', '&#9996;', 'p', '1128'],\r\n ['raised_hand_with_fingers_splayed', '1f590', ':hand_splayed:', '&#128400;', 'p', '1158'],\r\n ['ok_hand', '1f44c', ':ok_hand:', '&#128076;', 'p', '1170'],\r\n ['thumbsup', '1f44d', ':thumbsup:', '&#128077;', 'p', '1176'],\r\n ['thumbsdown', '1f44e', ':thumbsdown:', '&#128078;', 'p', '1182'],\r\n ['fist', '270a', ':fist:', '&#9994;', 'p', '1188'],\r\n ['facepunch', '1f44a', ':punch:', '&#128074;', 'p', '1194'],\r\n ['wave', '1f44b', ':wave:', '&#128075;', 'p', '1218'],\r\n ['clap', '1f44f', ':clap:', '&#128079;', 'p', '1224'],\r\n ['writing_hand', '270d', ':writing_hand:', '&#9997;', 'p', '1230'],\r\n ['open_hands', '1f450', ':open_hands:', '&#128080;', 'p', '1236'],\r\n ['pray', '1f64f', ':pray:', '&#128591;', 'p', '1248'],\r\n ['ear', '1f442', ':ear:', '&#128066;', 'p', '1266'],\r\n ['nose', '1f443', ':nose:', '&#128067;', 'p', '1272'],\r\n ['eyes', '1f440', ':eyes:', '&#128064;', 'p', '1279'],\r\n ['eye', '1f441', ':eye:', '&#128065;', 'p', '1280'],\r\n ['lips', '1f444', ':lips:', '&#128068;', 'p', '1283'],\r\n ['fire', '1f525', ':fire:', '&#128293;', 'n', '1753'],\r\n]\r\nexport const peopleEmoji = createEmoji(peopleEmojiArr)\r\n"],"names":["createEmoji"],"mappings":"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"}
1
+ {"version":3,"file":"people.cjs.js","sources":["../../../../src/emoji/emoji-list/people.ts"],"sourcesContent":["import { createEmoji } from '../utils'\n\nconst peopleEmojiArr = [\n ['grinning', '1f600', ':grinning:', '&#128512;', 'p', '1'],\n ['grin', '1f601', ':grin:', '&#128513;', 'p', '2'],\n ['joy', '1f602', ':joy:', '&#128514;', 'p', '3'],\n ['smiley', '1f603', ':smiley:', '&#128515;', 'p', '5'],\n ['smile', '1f604', ':smile:', '&#128516;', 'p', '6'],\n ['sweat_smile', '1f605', ':sweat_smile:', '&#128517;', 'p', '7'],\n ['laughing', '1f606', ':laughing:', '&#128518;', 'p', '8'],\n ['wink', '1f609', ':wink:', '&#128521;', 'p', '9'],\n ['blush', '1f60a', ':blush:', '&#128522;', 'p', '10'],\n ['yum', '1f60b', ':yum:', '&#128523;', 'p', '11'],\n ['sunglasses', '1f60e', ':sunglasses:', '&#128526;', 'p', '12'],\n ['heart_eyes', '1f60d', ':heart_eyes:', '&#128525;', 'p', '13'],\n ['kissing_heart', '1f618', ':kissing_heart:', '&#128536;', 'p', '14'],\n ['kissing', '1f617', ':kissing:', '&#128535;', 'p', '15'],\n ['kissing_smiling_eyes', '1f619', ':kissing_smiling_eyes:', '&#128537;', 'p', '16'],\n ['kissing_closed_eyes', '1f61a', ':kissing_closed_eyes:', '&#128538;', 'p', '17'],\n ['slightly_smiling_face', '1f642', ':slight_smile:', '&#128578;', 'p', '19'],\n ['hugging_face', '1f917', ':hugging:', '&#129303;', 'p', '20'],\n ['thinking_face', '1f914', ':thinking:', '&#129300;', 'p', '21'],\n ['neutral_face', '1f610', ':neutral_face:', '&#128528;', 'p', '22'],\n ['expressionless', '1f611', ':expressionless:', '&#128529;', 'p', '23'],\n ['no_mouth', '1f636', ':no_mouth:', '&#128566;', 'p', '24'],\n ['smirk', '1f60f', ':smirk:', '&#128527;', 'p', '26'],\n ['persevere', '1f623', ':persevere:', '&#128547;', 'p', '27'],\n ['disappointed_relieved', '1f625', ':disappointed_relieved:', '&#128549;', 'p', '28'],\n ['open_mouth', '1f62e', ':open_mouth:', '&#128558;', 'p', '29'],\n ['zipper_mouth_face', '1f910', ':zipper_mouth:', '&#129296;', 'p', '30'],\n ['hushed', '1f62f', ':hushed:', '&#128559;', 'p', '31'],\n ['sleepy', '1f62a', ':sleepy:', '&#128554;', 'p', '32'],\n ['tired_face', '1f62b', ':tired_face:', '&#128555;', 'p', '33'],\n ['sleeping', '1f634', ':sleeping:', '&#128564;', 'p', '34'],\n ['relieved', '1f60c', ':relieved:', '&#128524;', 'p', '35'],\n ['nerd_face', '1f913', ':nerd:', '&#129299;', 'p', '36'],\n ['stuck_out_tongue', '1f61b', ':stuck_out_tongue:', '&#128539;', 'p', '37'],\n ['stuck_out_tongue_winking_eye', '1f61c', ':stuck_out_tongue_winking_eye:', '&#128540;', 'p', '38'],\n ['stuck_out_tongue_closed_eyes', '1f61d', ':stuck_out_tongue_closed_eyes:', '&#128541;', 'p', '39'],\n ['unamused', '1f612', ':unamused:', '&#128530;', 'p', '41'],\n ['sweat', '1f613', ':sweat:', '&#128531;', 'p', '42'],\n ['pensive', '1f614', ':pensive:', '&#128532;', 'p', '43'],\n ['confused', '1f615', ':confused:', '&#128533;', 'p', '44'],\n ['money_mouth_face', '1f911', ':money_mouth:', '&#129297;', 'p', '46'],\n ['astonished', '1f632', ':astonished:', '&#128562;', 'p', '47'],\n ['slightly_frowning_face', '1f641', ':slight_frown:', '&#128577;', 'p', '49'],\n ['confounded', '1f616', ':confounded:', '&#128534;', 'p', '50'],\n ['disappointed', '1f61e', ':disappointed:', '&#128542;', 'p', '51'],\n ['worried', '1f61f', ':worried:', '&#128543;', 'p', '52'],\n ['triumph', '1f624', ':triumph:', '&#128548;', 'p', '53'],\n ['cry', '1f622', ':cry:', '&#128546;', 'p', '54'],\n ['sob', '1f62d', ':sob:', '&#128557;', 'p', '55'],\n ['frowning', '1f626', ':frowning:', '&#128550;', 'p', '56'],\n ['anguished', '1f627', ':anguished:', '&#128551;', 'p', '57'],\n ['fearful', '1f628', ':fearful:', '&#128552;', 'p', '58'],\n ['weary', '1f629', ':weary:', '&#128553;', 'p', '59'],\n ['grimacing', '1f62c', ':grimacing:', '&#128556;', 'p', '60'],\n ['cold_sweat', '1f630', ':cold_sweat:', '&#128560;', 'p', '61'],\n ['scream', '1f631', ':scream:', '&#128561;', 'p', '62'],\n ['flushed', '1f633', ':flushed:', '&#128563;', 'p', '63'],\n ['dizzy_face', '1f635', ':dizzy_face:', '&#128565;', 'p', '64'],\n ['rage', '1f621', ':rage:', '&#128545;', 'p', '65'],\n ['angry', '1f620', ':angry:', '&#128544;', 'p', '66'],\n ['innocent', '1f607', ':innocent:', '&#128519;', 'p', '67'],\n ['mask', '1f637', ':mask:', '&#128567;', 'p', '71'],\n ['face_with_thermometer', '1f912', ':thermometer_face:', '&#129298;', 'p', '72'],\n ['face_with_head_bandage', '1f915', ':head_bandage:', '&#129301;', 'p', '73'],\n ['smiling_imp', '1f608', ':smiling_imp:', '&#128520;', 'p', '76'],\n ['imp', '1f47f', ':imp:', '&#128127;', 'p', '77'],\n ['skull', '1f480', ':skull:', '&#128128;', 'p', '80'],\n ['ghost', '1f47b', ':ghost:', '&#128123;', 'p', '82'],\n ['alien', '1f47d', ':alien:', '&#128125;', 'p', '83'],\n ['space_invader', '1f47e', ':space_invader:', '&#128126;', 'a', '84'],\n ['robot_face', '1f916', ':robot:', '&#129302;', 'p', '85'],\n ['hankey', '1f4a9', ':poop:', '&#128169;', 'p', '86'],\n ['smiley_cat', '1f63a', ':smiley_cat:', '&#128570;', 'p', '87'],\n ['smile_cat', '1f638', ':smile_cat:', '&#128568;', 'p', '88'],\n ['joy_cat', '1f639', ':joy_cat:', '&#128569;', 'p', '89'],\n ['heart_eyes_cat', '1f63b', ':heart_eyes_cat:', '&#128571;', 'p', '90'],\n ['smirk_cat', '1f63c', ':smirk_cat:', '&#128572;', 'p', '91'],\n ['kissing_cat', '1f63d', ':kissing_cat:', '&#128573;', 'p', '92'],\n ['scream_cat', '1f640', ':scream_cat:', '&#128576;', 'p', '93'],\n ['crying_cat_face', '1f63f', ':crying_cat_face:', '&#128575;', 'p', '94'],\n ['pouting_cat', '1f63e', ':pouting_cat:', '&#128574;', 'p', '95'],\n ['muscle', '1f4aa', ':muscle:', '&#128170;', 'p', '1080'],\n ['point_left', '1f448', ':point_left:', '&#128072;', 'p', '1092'],\n ['point_right', '1f449', ':point_right:', '&#128073;', 'p', '1098'],\n ['point_up', '261d', ':point_up:', '&#9757;', 'p', '1104'],\n ['point_up_2', '1f446', ':point_up_2:', '&#128070;', 'p', '1110'],\n ['middle_finger', '1f595', ':middle_finger:', '&#128405;', 'p', '1116'],\n ['point_down', '1f447', ':point_down:', '&#128071;', 'p', '1122'],\n ['v', '270c', ':v:', '&#9996;', 'p', '1128'],\n ['raised_hand_with_fingers_splayed', '1f590', ':hand_splayed:', '&#128400;', 'p', '1158'],\n ['ok_hand', '1f44c', ':ok_hand:', '&#128076;', 'p', '1170'],\n ['thumbsup', '1f44d', ':thumbsup:', '&#128077;', 'p', '1176'],\n ['thumbsdown', '1f44e', ':thumbsdown:', '&#128078;', 'p', '1182'],\n ['fist', '270a', ':fist:', '&#9994;', 'p', '1188'],\n ['facepunch', '1f44a', ':punch:', '&#128074;', 'p', '1194'],\n ['wave', '1f44b', ':wave:', '&#128075;', 'p', '1218'],\n ['clap', '1f44f', ':clap:', '&#128079;', 'p', '1224'],\n ['writing_hand', '270d', ':writing_hand:', '&#9997;', 'p', '1230'],\n ['open_hands', '1f450', ':open_hands:', '&#128080;', 'p', '1236'],\n ['pray', '1f64f', ':pray:', '&#128591;', 'p', '1248'],\n ['ear', '1f442', ':ear:', '&#128066;', 'p', '1266'],\n ['nose', '1f443', ':nose:', '&#128067;', 'p', '1272'],\n ['eyes', '1f440', ':eyes:', '&#128064;', 'p', '1279'],\n ['eye', '1f441', ':eye:', '&#128065;', 'p', '1280'],\n ['lips', '1f444', ':lips:', '&#128068;', 'p', '1283'],\n ['fire', '1f525', ':fire:', '&#128293;', 'n', '1753'],\n]\nexport const peopleEmoji = createEmoji(peopleEmojiArr)\n"],"names":["createEmoji"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-list.cjs.js","sources":["../../../src/emoji/emoji-list.ts"],"sourcesContent":["import {\r\n peopleEmoji,\r\n} from './emoji-list/index'\r\n\r\nconst emojiList = [\r\n ...peopleEmoji,\r\n]\r\n\r\nexport default emojiList\r\n"],"names":["peopleEmoji"],"mappings":";;;;AAIA,MAAM,YAAY;AAAA,EAChB,GAAGA,OAAA;AACL;;"}
1
+ {"version":3,"file":"emoji-list.cjs.js","sources":["../../../src/emoji/emoji-list.ts"],"sourcesContent":["import {\n peopleEmoji,\n} from './emoji-list/index'\n\nconst emojiList = [\n ...peopleEmoji,\n]\n\nexport default emojiList\n"],"names":["peopleEmoji"],"mappings":";;;;AAIA,MAAM,YAAY;AAAA,EAChB,GAAGA,OAAA;AACL;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-map.cjs.js","sources":["../../../src/emoji/emoji-map.ts"],"sourcesContent":["import emojiList from './emoji-list'\r\n\r\nconst emojiMap = {}\r\n\r\nemojiList.forEach((emojiListObject) => {\r\n emojiMap[emojiListObject.name] = emojiListObject\r\n})\r\n\r\nexport default emojiMap\r\n"],"names":["emojiList"],"mappings":";;;AAEA,MAAM,WAAW,CAAC;AAElBA,UAAAA,QAAU,QAAQ,CAAC,oBAAoB;AAC5B,WAAA,gBAAgB,IAAI,IAAI;AACnC,CAAC;;"}
1
+ {"version":3,"file":"emoji-map.cjs.js","sources":["../../../src/emoji/emoji-map.ts"],"sourcesContent":["import emojiList from './emoji-list'\n\nconst emojiMap = {}\n\nemojiList.forEach((emojiListObject) => {\n emojiMap[emojiListObject.name] = emojiListObject\n})\n\nexport default emojiMap\n"],"names":["emojiList"],"mappings":";;;AAEA,MAAM,WAAW,CAAC;AAElBA,UAAAA,QAAU,QAAQ,CAAC,oBAAoB;AAC5B,WAAA,gBAAgB,IAAI,IAAI;AACnC,CAAC;;"}
@@ -25,11 +25,11 @@ class EmojiBlot extends Embed {
25
25
  const emojiSpan = document.createElement("span");
26
26
  emojiSpan.classList.add(this.emojiClass);
27
27
  emojiSpan.classList.add(this.emojiPrefix + value.name);
28
- emojiSpan.innerText = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode));
28
+ emojiSpan.textContent = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode));
29
29
  node.appendChild(emojiSpan);
30
30
  }
31
31
  static parseUnicode(string) {
32
- return string.split("-").map((str) => parseInt(str, 16));
32
+ return string.split("-").map((str) => Number.parseInt(str, 16));
33
33
  }
34
34
  }
35
35
  EmojiBlot.blotName = "emoji";
@@ -1 +1 @@
1
- {"version":3,"file":"emoji-blot.cjs.js","sources":["../../../../src/emoji/formats/emoji-blot.ts"],"sourcesContent":["import Quill from 'quill'\r\nimport emojiMap from '../emoji-map'\r\n\r\nconst Embed = Quill.imports['blots/embed']\r\n\r\n// @dynamic\r\nclass EmojiBlot extends Embed {\r\n static emojiClass: string\r\n static emojiPrefix: any\r\n static tagName: string\r\n static blotName: string\r\n static className: string\r\n static create(value) {\r\n const node = super.create()\r\n if (typeof value === 'object') {\r\n EmojiBlot.buildSpan(value, node)\r\n }\r\n else if (typeof value === 'string') {\r\n const valueObj = emojiMap[value]\r\n if (valueObj) {\r\n EmojiBlot.buildSpan(valueObj, node)\r\n }\r\n }\r\n // 修复在emoji后输入中文插入其中导致quill不能识别\r\n node.setAttribute('contenteditable', false)\r\n return node\r\n }\r\n\r\n static value(node) {\r\n return node.dataset.name\r\n }\r\n\r\n static buildSpan(value, node) {\r\n node.setAttribute('data-name', value.name)\r\n const emojiSpan = document.createElement('span')\r\n emojiSpan.classList.add(this.emojiClass)\r\n emojiSpan.classList.add(this.emojiPrefix + value.name)\r\n // unicode can be '1f1f5-1f1ea',see emoji-list.js.\r\n emojiSpan.innerText = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode))\r\n node.appendChild(emojiSpan)\r\n }\r\n\r\n static parseUnicode(string) {\r\n return string.split('-').map(str => parseInt(str, 16))\r\n }\r\n}\r\n\r\nEmojiBlot.blotName = 'emoji'\r\nEmojiBlot.className = 'ql-emojiblot'\r\nEmojiBlot.tagName = 'span'\r\nEmojiBlot.emojiClass = 'ap'\r\nEmojiBlot.emojiPrefix = 'ap-'\r\n\r\nexport default EmojiBlot\r\n"],"names":["emojiMap"],"mappings":";;;;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,kBAAkB,MAAM;AAAA,EAM5B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM;AACf,QAAA,OAAO,UAAU,UAAU;AACnB,gBAAA,UAAU,OAAO,IAAI;AAAA,IAAA,WAExB,OAAO,UAAU,UAAU;AAC5B,YAAA,WAAWA,iBAAS,KAAK;AAC/B,UAAI,UAAU;AACF,kBAAA,UAAU,UAAU,IAAI;AAAA,MACpC;AAAA,IACF;AAEK,SAAA,aAAa,mBAAmB,KAAK;AACnC,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,MAAM;AACjB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,UAAU,OAAO,MAAM;AACvB,SAAA,aAAa,aAAa,MAAM,IAAI;AACnC,UAAA,YAAY,SAAS,cAAc,MAAM;AACrC,cAAA,UAAU,IAAI,KAAK,UAAU;AACvC,cAAU,UAAU,IAAI,KAAK,cAAc,MAAM,IAAI;AAE3C,cAAA,YAAY,OAAO,cAAc,GAAG,UAAU,aAAa,MAAM,OAAO,CAAC;AACnF,SAAK,YAAY,SAAS;AAAA,EAC5B;AAAA,EAEA,OAAO,aAAa,QAAQ;AACnB,WAAA,OAAO,MAAM,GAAG,EAAE,IAAI,CAAO,QAAA,SAAS,KAAK,EAAE,CAAC;AAAA,EACvD;AACF;AAEA,UAAU,WAAW;AACrB,UAAU,YAAY;AACtB,UAAU,UAAU;AACpB,UAAU,aAAa;AACvB,UAAU,cAAc;;"}
1
+ {"version":3,"file":"emoji-blot.cjs.js","sources":["../../../../src/emoji/formats/emoji-blot.ts"],"sourcesContent":["import Quill from 'quill'\nimport emojiMap from '../emoji-map'\n\nconst Embed = Quill.imports['blots/embed']\n\n// @dynamic\nclass EmojiBlot extends Embed {\n static emojiClass: string\n static emojiPrefix: any\n static tagName: string\n static blotName: string\n static className: string\n static create(value) {\n const node = super.create()\n if (typeof value === 'object') {\n EmojiBlot.buildSpan(value, node)\n }\n else if (typeof value === 'string') {\n const valueObj = emojiMap[value]\n if (valueObj) {\n EmojiBlot.buildSpan(valueObj, node)\n }\n }\n // 修复在emoji后输入中文插入其中导致quill不能识别\n node.setAttribute('contenteditable', false)\n return node\n }\n\n static value(node) {\n return node.dataset.name\n }\n\n static buildSpan(value, node) {\n node.setAttribute('data-name', value.name)\n const emojiSpan = document.createElement('span')\n emojiSpan.classList.add(this.emojiClass)\n emojiSpan.classList.add(this.emojiPrefix + value.name)\n // unicode can be '1f1f5-1f1ea',see emoji-list.js.\n emojiSpan.textContent = String.fromCodePoint(...EmojiBlot.parseUnicode(value.unicode))\n node.appendChild(emojiSpan)\n }\n\n static parseUnicode(string) {\n return string.split('-').map(str => Number.parseInt(str, 16))\n }\n}\n\nEmojiBlot.blotName = 'emoji'\nEmojiBlot.className = 'ql-emojiblot'\nEmojiBlot.tagName = 'span'\nEmojiBlot.emojiClass = 'ap'\nEmojiBlot.emojiPrefix = 'ap-'\n\nexport default EmojiBlot\n"],"names":["emojiMap"],"mappings":";;;;AAGA,MAAM,QAAQ,MAAM,QAAQ,aAAa;AAGzC,MAAM,kBAAkB,MAAM;AAAA,EAM5B,OAAO,OAAO,OAAO;AACb,UAAA,OAAO,MAAM;AACf,QAAA,OAAO,UAAU,UAAU;AACnB,gBAAA,UAAU,OAAO,IAAI;AAAA,IAAA,WAExB,OAAO,UAAU,UAAU;AAC5B,YAAA,WAAWA,iBAAS,KAAK;AAC/B,UAAI,UAAU;AACF,kBAAA,UAAU,UAAU,IAAI;AAAA,MACpC;AAAA,IACF;AAEK,SAAA,aAAa,mBAAmB,KAAK;AACnC,WAAA;AAAA,EACT;AAAA,EAEA,OAAO,MAAM,MAAM;AACjB,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAEA,OAAO,UAAU,OAAO,MAAM;AACvB,SAAA,aAAa,aAAa,MAAM,IAAI;AACnC,UAAA,YAAY,SAAS,cAAc,MAAM;AACrC,cAAA,UAAU,IAAI,KAAK,UAAU;AACvC,cAAU,UAAU,IAAI,KAAK,cAAc,MAAM,IAAI;AAE3C,cAAA,cAAc,OAAO,cAAc,GAAG,UAAU,aAAa,MAAM,OAAO,CAAC;AACrF,SAAK,YAAY,SAAS;AAAA,EAC5B;AAAA,EAEA,OAAO,aAAa,QAAQ;AACnB,WAAA,OAAO,MAAM,GAAG,EAAE,IAAI,SAAO,OAAO,SAAS,KAAK,EAAE,CAAC;AAAA,EAC9D;AACF;AAEA,UAAU,WAAW;AACrB,UAAU,YAAY;AACtB,UAAU,UAAU;AACpB,UAAU,aAAa;AACvB,UAAU,cAAc;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../src/emoji/index.ts"],"sourcesContent":["import EmojiBlot from './formats/emoji-blot'\r\nimport ShortNameEmoji from './modules/emoji'\r\nimport ToolbarEmoji from './modules/toolbar-emoji'\r\n\r\nexport default { EmojiBlot, ShortNameEmoji, ToolbarEmoji }\r\n"],"names":["EmojiBlot","ShortNameEmoji","ToolbarEmoji"],"mappings":";;;;;AAIA,MAAA,QAAe,aAAEA,UAAW,SAAA,gBAAAC,MAAA,SAAA,cAAgBC,qBAAa;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../src/emoji/index.ts"],"sourcesContent":["import EmojiBlot from './formats/emoji-blot'\nimport ShortNameEmoji from './modules/emoji'\nimport ToolbarEmoji from './modules/toolbar-emoji'\n\nexport default { EmojiBlot, ShortNameEmoji, ToolbarEmoji }\n"],"names":["EmojiBlot","ShortNameEmoji","ToolbarEmoji"],"mappings":";;;;;AAIA,MAAA,QAAe,aAAEA,UAAW,SAAA,gBAAAC,MAAA,SAAA,cAAgBC,qBAAa;;"}
@@ -61,11 +61,11 @@ class ShortNameEmoji extends Module {
61
61
  this.atIndex = range.index;
62
62
  const paletteMaxPos = atSignBounds.left + 250;
63
63
  if (paletteMaxPos > this.quill.container.offsetWidth) {
64
- this.container.style.left = atSignBounds.left - 250 + "px";
64
+ this.container.style.left = `${atSignBounds.left - 250}px`;
65
65
  } else {
66
- this.container.style.left = atSignBounds.left + "px";
66
+ this.container.style.left = `${atSignBounds.left}px`;
67
67
  }
68
- this.container.style.top = atSignBounds.top + atSignBounds.height + "px";
68
+ this.container.style.top = `${atSignBounds.top + atSignBounds.height}px`;
69
69
  this.open = true;
70
70
  this.quill.on("text-change", this.onTextChange);
71
71
  this.quill.once("selection-change", this.onSelectionChange);
@@ -97,7 +97,7 @@ class ShortNameEmoji extends Module {
97
97
  }
98
98
  this.query = this.query.trim();
99
99
  let emojis = this.emojiList;
100
- emojis.sort(function(a, b) {
100
+ emojis.sort((a, b) => {
101
101
  return a.emoji_order - b.emoji_order;
102
102
  });
103
103
  if (this.query.length < this.options.fuse.minMatchCharLength || emojis.length === 0) {
@@ -134,7 +134,7 @@ class ShortNameEmoji extends Module {
134
134
  while (this.container.firstChild) {
135
135
  this.container.removeChild(this.container.firstChild);
136
136
  }
137
- const buttons = Array(emojis.length);
137
+ const buttons = Array.from({ length: emojis.length });
138
138
  this.buttons = buttons;
139
139
  const handler = (i, emoji) => (event) => {
140
140
  const arrowLeftKey = event.key === "ArrowLeft" || event.keyCode === 37;
@@ -167,7 +167,7 @@ class ShortNameEmoji extends Module {
167
167
  makeElement(
168
168
  "button",
169
169
  { type: "button" },
170
- makeElement("span", { className: "button-emoji ap ap-" + emoji.name, innerHTML: emoji.code_decimal }),
170
+ makeElement("span", { className: `button-emoji ap ap-${emoji.name}`, innerHTML: emoji.code_decimal }),
171
171
  makeElement("span", { className: "unmatched" }, emoji.shortname)
172
172
  )
173
173
  );
@@ -192,7 +192,7 @@ class ShortNameEmoji extends Module {
192
192
  const windowHeight = window.innerHeight;
193
193
  const editorPos = this.quill.container.getBoundingClientRect().top;
194
194
  if (editorPos > windowHeight / 2 && this.container.offsetHeight > 0) {
195
- this.container.style.top = "-" + this.container.offsetHeight + "px";
195
+ this.container.style.top = `-${this.container.offsetHeight}px`;
196
196
  }
197
197
  }
198
198
  buttons[0].classList.add("emoji-active");