@bigbinary/neeto-editor-frontend 2.0.3 → 2.0.5

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 (103) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/Attachments.js +4 -4
  3. package/dist/Editor.js +11 -19
  4. package/dist/Editor.js.map +1 -1
  5. package/dist/EditorContent.js +2 -2
  6. package/dist/FormikEditor.js +8 -8
  7. package/dist/Menu.js +6 -6
  8. package/dist/{chunk-EgiY42Lm.js → chunk-2yDx3K8L.js} +6 -6
  9. package/dist/{chunk-EgiY42Lm.js.map → chunk-2yDx3K8L.js.map} +1 -1
  10. package/dist/{chunk-CiVaat1H.js → chunk-9vP3rEtI.js} +3 -3
  11. package/dist/{chunk-CiVaat1H.js.map → chunk-9vP3rEtI.js.map} +1 -1
  12. package/dist/{chunk-Bw7QSBHf.js → chunk-C4efob7L.js} +6 -6
  13. package/dist/chunk-C4efob7L.js.map +1 -0
  14. package/dist/{chunk-eOIMt7jp.js → chunk-C6Wn4nia.js} +3 -3
  15. package/dist/{chunk-eOIMt7jp.js.map → chunk-C6Wn4nia.js.map} +1 -1
  16. package/dist/{chunk-DZTg5JCM.js → chunk-C893rdfW.js} +4 -4
  17. package/dist/{chunk-DZTg5JCM.js.map → chunk-C893rdfW.js.map} +1 -1
  18. package/dist/{chunk-DoZN1FPd.js → chunk-CA9DTddx.js} +90 -16
  19. package/dist/chunk-CA9DTddx.js.map +1 -0
  20. package/dist/{chunk-NDmv6peW.js → chunk-CJfLgMJF.js} +5 -5
  21. package/dist/{chunk-NDmv6peW.js.map → chunk-CJfLgMJF.js.map} +1 -1
  22. package/dist/{chunk-DSKEeXyj.js → chunk-CNIDH-FD.js} +2 -2
  23. package/dist/{chunk-DSKEeXyj.js.map → chunk-CNIDH-FD.js.map} +1 -1
  24. package/dist/{chunk-Bg0xYw5S.js → chunk-C_P2M3zF.js} +3 -3
  25. package/dist/{chunk-Bg0xYw5S.js.map → chunk-C_P2M3zF.js.map} +1 -1
  26. package/dist/{chunk-Ba4Q3HC8.js → chunk-Cnk9-9SJ.js} +50 -11
  27. package/dist/chunk-Cnk9-9SJ.js.map +1 -0
  28. package/dist/{chunk-BFKmIsWV.js → chunk-D3QbacSt.js} +2 -2
  29. package/dist/{chunk-BFKmIsWV.js.map → chunk-D3QbacSt.js.map} +1 -1
  30. package/dist/{chunk-CHmdEEC5.js → chunk-Dm4Qt79M.js} +5 -5
  31. package/dist/{chunk-CHmdEEC5.js.map → chunk-Dm4Qt79M.js.map} +1 -1
  32. package/dist/{chunk-CyfiHLWx.js → chunk-UwzgbfZD.js} +12 -2
  33. package/dist/{chunk-CyfiHLWx.js.map → chunk-UwzgbfZD.js.map} +1 -1
  34. package/dist/{chunk-C4ngrj-P.js → chunk-jiUuXPs1.js} +5 -5
  35. package/dist/{chunk-C4ngrj-P.js.map → chunk-jiUuXPs1.js.map} +1 -1
  36. package/dist/cjs/Attachments.cjs.js +3 -3
  37. package/dist/cjs/Editor.cjs.js +10 -18
  38. package/dist/cjs/Editor.cjs.js.map +1 -1
  39. package/dist/cjs/EditorContent.cjs.js +2 -2
  40. package/dist/cjs/FormikEditor.cjs.js +7 -7
  41. package/dist/cjs/Menu.cjs.js +5 -5
  42. package/dist/cjs/{chunk-CtTb6u9F.cjs.js → chunk-B1X-JIj8.cjs.js} +2 -2
  43. package/dist/cjs/{chunk-CtTb6u9F.cjs.js.map → chunk-B1X-JIj8.cjs.js.map} +1 -1
  44. package/dist/cjs/{chunk-Bmd6d-x7.cjs.js → chunk-BETPWBif.cjs.js} +5 -5
  45. package/dist/cjs/chunk-BETPWBif.cjs.js.map +1 -0
  46. package/dist/cjs/{chunk-Cgxhrpuh.cjs.js → chunk-BL4O70ER.cjs.js} +4 -4
  47. package/dist/cjs/{chunk-Cgxhrpuh.cjs.js.map → chunk-BL4O70ER.cjs.js.map} +1 -1
  48. package/dist/cjs/{chunk-R9zpTo5i.cjs.js → chunk-Bm1Dzh4r.cjs.js} +89 -15
  49. package/dist/cjs/chunk-Bm1Dzh4r.cjs.js.map +1 -0
  50. package/dist/cjs/{chunk-BNUTjVYA.cjs.js → chunk-BxKa_XOs.cjs.js} +12 -1
  51. package/dist/cjs/{chunk-BNUTjVYA.cjs.js.map → chunk-BxKa_XOs.cjs.js.map} +1 -1
  52. package/dist/cjs/{chunk-DxXc6tiG.cjs.js → chunk-CNhef3wf.cjs.js} +50 -10
  53. package/dist/cjs/chunk-CNhef3wf.cjs.js.map +1 -0
  54. package/dist/cjs/{chunk-D1iu346F.cjs.js → chunk-CQ-j2kAX.cjs.js} +2 -2
  55. package/dist/cjs/{chunk-D1iu346F.cjs.js.map → chunk-CQ-j2kAX.cjs.js.map} +1 -1
  56. package/dist/cjs/{chunk-Bv4wbN1E.cjs.js → chunk-DBQBe3dq.cjs.js} +3 -3
  57. package/dist/cjs/{chunk-Bv4wbN1E.cjs.js.map → chunk-DBQBe3dq.cjs.js.map} +1 -1
  58. package/dist/cjs/{chunk-C98N-sIR.cjs.js → chunk-DRTgn9TG.cjs.js} +5 -5
  59. package/dist/cjs/{chunk-C98N-sIR.cjs.js.map → chunk-DRTgn9TG.cjs.js.map} +1 -1
  60. package/dist/cjs/{chunk-CPtfEUVF.cjs.js → chunk-TCCIxl2A.cjs.js} +3 -3
  61. package/dist/cjs/{chunk-CPtfEUVF.cjs.js.map → chunk-TCCIxl2A.cjs.js.map} +1 -1
  62. package/dist/cjs/{chunk-BuuzKD6e.cjs.js → chunk-Ty2BpOZ5.cjs.js} +3 -3
  63. package/dist/cjs/{chunk-BuuzKD6e.cjs.js.map → chunk-Ty2BpOZ5.cjs.js.map} +1 -1
  64. package/dist/cjs/{chunk-DIpaV2xG.cjs.js → chunk-UyXI9oIp.cjs.js} +4 -4
  65. package/dist/cjs/{chunk-DIpaV2xG.cjs.js.map → chunk-UyXI9oIp.cjs.js.map} +1 -1
  66. package/dist/cjs/{chunk-CUiAHc9-.cjs.js → chunk-WeNbd2ic.cjs.js} +4 -4
  67. package/dist/cjs/{chunk-CUiAHc9-.cjs.js.map → chunk-WeNbd2ic.cjs.js.map} +1 -1
  68. package/dist/cjs/constants.cjs.js +2 -2
  69. package/dist/cjs/index.cjs.js +7 -7
  70. package/dist/cjs/utils.cjs.js +3 -3
  71. package/dist/cjs/v2/Attachments.cjs.js +3 -3
  72. package/dist/cjs/v2/Editor.cjs.js +9 -17
  73. package/dist/cjs/v2/Editor.cjs.js.map +1 -1
  74. package/dist/cjs/v2/EditorContent.cjs.js +3 -3
  75. package/dist/cjs/v2/FormikEditor.cjs.js +6 -6
  76. package/dist/cjs/v2/Menu.cjs.js +3 -3
  77. package/dist/cjs/v2/constants.cjs.js +2 -2
  78. package/dist/cjs/v2/index.cjs.js +7 -7
  79. package/dist/cjs/v2/utils.cjs.js +3 -3
  80. package/dist/constants.js +2 -2
  81. package/dist/editor-stats.html +1 -1
  82. package/dist/index.js +8 -8
  83. package/dist/utils.js +3 -3
  84. package/dist/v2/Attachments.js +4 -4
  85. package/dist/v2/Editor.js +10 -18
  86. package/dist/v2/Editor.js.map +1 -1
  87. package/dist/v2/EditorContent.js +3 -3
  88. package/dist/v2/FormikEditor.js +7 -7
  89. package/dist/v2/Menu.js +4 -4
  90. package/dist/v2/constants.js +2 -2
  91. package/dist/v2/editor-content-styles.js +1 -1
  92. package/dist/v2/editor-content.min.css +1 -1
  93. package/dist/v2/index.js +8 -8
  94. package/dist/v2/styles.css +1 -1
  95. package/dist/v2/styles.js +1 -1
  96. package/dist/v2/utils.js +3 -3
  97. package/package.json +4 -3
  98. package/dist/chunk-Ba4Q3HC8.js.map +0 -1
  99. package/dist/chunk-Bw7QSBHf.js.map +0 -1
  100. package/dist/chunk-DoZN1FPd.js.map +0 -1
  101. package/dist/cjs/chunk-Bmd6d-x7.cjs.js.map +0 -1
  102. package/dist/cjs/chunk-DxXc6tiG.cjs.js.map +0 -1
  103. package/dist/cjs/chunk-R9zpTo5i.cjs.js.map +0 -1
@@ -15,7 +15,7 @@ var reactI18next = require('react-i18next');
15
15
  var reactFileIcon_esm = require('./chunk-D3Unocnm.cjs.js');
16
16
  var i18n = require('i18next');
17
17
  var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
18
- var constants = require('./chunk-BNUTjVYA.cjs.js');
18
+ var constants = require('./chunk-BxKa_XOs.cjs.js');
19
19
  require('@bigbinary/neeto-icons/LeftAlign');
20
20
  require('@bigbinary/neeto-icons/CenterAlign');
21
21
  require('@bigbinary/neeto-icons/RightAlign');
@@ -29,7 +29,8 @@ require('@bigbinary/neeto-icons/AspectRatio916');
29
29
  require('@bigbinary/neeto-icons/AspectRatio43');
30
30
  require('@bigbinary/neeto-icons/AspectRatio32');
31
31
  var yup = require('yup');
32
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
32
+ var classnames = require('classnames');
33
+ var lucideReact = require('lucide-react');
33
34
  var jsxRuntime = require('react/jsx-runtime');
34
35
 
35
36
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -59,7 +60,7 @@ var _asyncToGenerator__default = /*#__PURE__*/_interopDefault(_asyncToGenerator)
59
60
  var _regeneratorRuntime__default = /*#__PURE__*/_interopDefault(_regeneratorRuntime);
60
61
  var axios__default = /*#__PURE__*/_interopDefault(axios);
61
62
  var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
62
- var _defineProperty__default = /*#__PURE__*/_interopDefault(_defineProperty);
63
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
63
64
 
64
65
  var DEFAULT_FILE_UPLOAD_CONFIG = {
65
66
  directUploadEndpoint: constants.DIRECT_UPLOAD_ENDPOINT,
@@ -390,18 +391,91 @@ var useFileUploader = function useFileUploader(_ref) {
390
391
  };
391
392
  };
392
393
 
393
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
394
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
395
- var File = function File(_ref) {
396
- var fileName = _ref.fileName,
397
- className = _ref.className;
398
- var extension = fileName.match(/([^.]+)$/) & [1];
399
- return /*#__PURE__*/jsxRuntime.jsx("div", {
400
- className: className,
401
- children: /*#__PURE__*/jsxRuntime.jsx(reactFileIcon_esm.FileIcon, _objectSpread({
394
+ // react-file-icon has no styles for these image formats, and gives xml the
395
+ // same {} glyph as json; code2 is </>.
396
+ var EXTRA_FILE_ICON_STYLES = {
397
+ avif: {
398
+ type: "image"
399
+ },
400
+ heic: {
401
+ type: "image"
402
+ },
403
+ heif: {
404
+ type: "image"
405
+ },
406
+ webp: {
407
+ type: "image"
408
+ },
409
+ xml: {
410
+ type: "code2"
411
+ }
412
+ };
413
+
414
+ // Lucide glyphs for image formats that get their own icon. Other images use
415
+ // lucide's Image.
416
+ var FILE_ICON_GLYPH_BY_EXTENSION = {
417
+ bmp: lucideReact.Grid3x3,
418
+ tif: lucideReact.Layers,
419
+ tiff: lucideReact.Layers,
420
+ webp: lucideReact.Globe
421
+ };
422
+ var FILE_ICON_CATEGORY_BY_EXTENSION = {
423
+ pdf: "pdf",
424
+ key: "pdf",
425
+ ppt: "pdf",
426
+ pptx: "pdf",
427
+ csv: "spreadsheet",
428
+ numbers: "spreadsheet",
429
+ xls: "spreadsheet",
430
+ xlsx: "spreadsheet",
431
+ doc: "document",
432
+ docx: "document",
433
+ md: "document",
434
+ pages: "document",
435
+ rtf: "document",
436
+ txt: "document"
437
+ };
438
+
439
+ // react-file-icon glyph type -> colour category. svg ("vector") is grouped
440
+ // with images.
441
+ var FILE_ICON_CATEGORY_BY_TYPE = {
442
+ audio: "audio",
443
+ image: "image",
444
+ vector: "image",
445
+ video: "video"
446
+ };
447
+
448
+ var getExtension = function getExtension(fileName) {
449
+ var _fileName$match;
450
+ return fileName === null || fileName === void 0 || (_fileName$match = fileName.match(/\.([^.]+)$/)) === null || _fileName$match === void 0 || (_fileName$match = _fileName$match[1]) === null || _fileName$match === void 0 ? void 0 : _fileName$match.toLowerCase();
451
+ };
452
+
453
+ // Only the glyph shape is taken from react-file-icon. Colours come from
454
+ // neeto-atoms tokens in _attachments.scss, keyed on the category class.
455
+ var getCategory = function getCategory(extension, type) {
456
+ var _ref, _FILE_ICON_CATEGORY_B;
457
+ return (_ref = (_FILE_ICON_CATEGORY_B = FILE_ICON_CATEGORY_BY_EXTENSION[extension]) !== null && _FILE_ICON_CATEGORY_B !== void 0 ? _FILE_ICON_CATEGORY_B : FILE_ICON_CATEGORY_BY_TYPE[type]) !== null && _ref !== void 0 ? _ref : "default";
458
+ };
459
+ var File = function File(_ref2) {
460
+ var _ref3, _EXTRA_FILE_ICON_STYL, _FILE_ICON_GLYPH_BY_E;
461
+ var fileName = _ref2.fileName,
462
+ className = _ref2.className;
463
+ var extension = getExtension(fileName);
464
+ var type = (_ref3 = (_EXTRA_FILE_ICON_STYL = EXTRA_FILE_ICON_STYLES[extension]) !== null && _EXTRA_FILE_ICON_STYL !== void 0 ? _EXTRA_FILE_ICON_STYL : reactFileIcon_esm.defaultStyles[extension]) === null || _ref3 === void 0 ? void 0 : _ref3.type;
465
+
466
+ // The library's image glyph is a mountain; draw a lucide glyph on top of a
467
+ // glyph-less icon instead.
468
+ var Glyph = (_FILE_ICON_GLYPH_BY_E = FILE_ICON_GLYPH_BY_EXTENSION[extension]) !== null && _FILE_ICON_GLYPH_BY_E !== void 0 ? _FILE_ICON_GLYPH_BY_E : type === "image" ? lucideReact.Image : null;
469
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
470
+ "aria-hidden": "true",
471
+ className: classnames__default.default("ne-file-icon", "ne-file-icon--".concat(getCategory(extension, type)), className),
472
+ children: [/*#__PURE__*/jsxRuntime.jsx(reactFileIcon_esm.FileIcon, {
402
473
  extension: extension,
403
- labelColor: "#4558f9"
404
- }, reactFileIcon_esm.defaultStyles[extension]))
474
+ labelUppercase: true,
475
+ type: Glyph ? undefined : type
476
+ }), Glyph && /*#__PURE__*/jsxRuntime.jsx(Glyph, {
477
+ className: "ne-file-icon__glyph"
478
+ })]
405
479
  });
406
480
  };
407
481
 
@@ -418,4 +492,4 @@ exports.VIDEO_EMBED_FORM_VALIDATION_SCHEMA = VIDEO_EMBED_FORM_VALIDATION_SCHEMA;
418
492
  exports.convertToFileSize = convertToFileSize;
419
493
  exports.getTabs = getTabs;
420
494
  exports.useFileUploader = useFileUploader;
421
- //# sourceMappingURL=chunk-R9zpTo5i.cjs.js.map
495
+ //# sourceMappingURL=chunk-Bm1Dzh4r.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-Bm1Dzh4r.cjs.js","sources":["../../app/javascript/src/v2/components/Attachments/constants.js","../../app/javascript/src/v2/components/Editor/MediaUploader/constants.js","../../app/javascript/src/v2/components/Editor/MediaUploader/utils.js","../../app/javascript/src/v2/hooks/utils/fileUploader.js","../../app/javascript/src/v2/hooks/useFileUploader.js","../../app/javascript/src/v2/components/Common/constants.js","../../app/javascript/src/v2/components/Common/FileIcon.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\n\nimport { DIRECT_UPLOAD_ENDPOINT } from \"src/common/constants\";\n\nexport const DEFAULT_FILE_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxFileSize: globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024,\n },\n};\n\nexport const ATTACHMENT_OPTIONS = {\n OPEN_IN_NEW_TAB: t(\"neetoEditor.common.openInNewTab\"),\n DOWNLOAD: t(\"neetoEditor.common.download\"),\n RENAME: t(\"neetoEditor.attachments.rename\"),\n DELETE: t(\"neetoEditor.menu.delete\"),\n};\n\nexport const ATTACHMENTS_PREVIEW_DATA_CY = \"ne-attachments-preview-content\";\n","import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport * as yup from \"yup\";\n\nimport { DIRECT_UPLOAD_ENDPOINT, URL_REGEXP } from \"src/common/constants\";\n\nconst MAX_VIDEO_SIZE_IN_MB = 100;\n\nconst maxVideoSizeInMb = globalProps.directUploadsMaxFileSizeInMb\n ? Math.min(MAX_VIDEO_SIZE_IN_MB, globalProps.directUploadsMaxFileSizeInMb)\n : MAX_VIDEO_SIZE_IN_MB;\n\nexport const FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\"];\n\nexport const ALLOWED_IMAGE_TYPES = [\".jpg\", \".jpeg\", \".png\", \".gif\"];\nexport const ALLOWED_VIDEO_TYPES = [\".mp4\", \".mov\", \".avi\", \".mkv\"];\n\nexport const DEFAULT_IMAGE_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxNumberOfFiles: 5,\n maxFileSize: globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024,\n allowedFileTypes: ALLOWED_IMAGE_TYPES,\n },\n};\n\nexport const DEFAULT_VIDEO_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxNumberOfFiles: 5,\n maxFileSize: maxVideoSizeInMb * 1024 * 1024,\n allowedFileTypes: ALLOWED_VIDEO_TYPES,\n },\n};\n\nexport const VIDEO_EMBED_FORM_VALIDATION_SCHEMA = yup.object().shape({\n url: yup\n .string()\n .required(t(\"neetoEditor.error.fieldRequired\"))\n .matches(URL_REGEXP, t(\"neetoEditor.error.invalidUrl\")),\n});\n\nexport const DEFAULT_ASPECT_RATIO = \"16/9\";\n","import { t } from \"i18next\";\nimport {\n LeftAlign,\n CenterAlign,\n RightAlign,\n Delete,\n CustomSize,\n BorderDisable,\n BorderEnable,\n AspectRatio11,\n AspectRatio169,\n AspectRatio916,\n AspectRatio43,\n AspectRatio32,\n} from \"neetoicons\";\n\nimport { FILE_SIZE_UNITS } from \"./constants\";\n\nexport const convertToFileSize = (size = 10 * 1024 * 1024) => {\n let fileSize = size;\n let i = 0;\n while (fileSize >= 1024 && i < FILE_SIZE_UNITS.length) {\n fileSize /= 1024;\n ++i;\n }\n\n return `${fileSize.toFixed(1)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nexport const buildImageOptions = (border = true, showAspectRatio = false) => {\n const options = [\n {\n Icon: LeftAlign,\n type: \"button\",\n alignPos: \"left\",\n optionName: t(\"neetoEditor.menu.alignLeft\"),\n },\n {\n Icon: CenterAlign,\n type: \"button\",\n alignPos: \"center\",\n optionName: t(\"neetoEditor.menu.alignCenter\"),\n },\n {\n Icon: RightAlign,\n type: \"button\",\n alignPos: \"right\",\n optionName: t(\"neetoEditor.menu.alignRight\"),\n },\n ];\n\n if (showAspectRatio) {\n options.push({\n Icon: CustomSize,\n type: \"dropdown\",\n alignPos: \"center\",\n optionName: t(\"neetoEditor.menu.aspectRatio\"),\n items: [\n { ratio: \"16/9\", tooltipLabel: \"16/9\", icon: AspectRatio169 },\n { ratio: \"9/16\", tooltipLabel: \"9/16\", icon: AspectRatio916 },\n { ratio: \"4/3\", tooltipLabel: \"4/3\", icon: AspectRatio43 },\n { ratio: \"3/2\", tooltipLabel: \"3/2\", icon: AspectRatio32 },\n { ratio: \"1/1\", tooltipLabel: \"1/1\", icon: AspectRatio11 },\n ],\n });\n }\n\n options.push(\n {\n Icon: border ? BorderDisable : BorderEnable,\n type: \"button\",\n alignPos: \"center\",\n borderToggle: true,\n optionName: border\n ? t(\"neetoEditor.menu.removeBorder\")\n : t(\"neetoEditor.menu.addBorder\"),\n },\n {\n Icon: Delete,\n type: \"button\",\n optionName: t(\"neetoEditor.menu.delete\"),\n }\n );\n\n return options;\n};\n\nexport const getTabs = mediaUploader => {\n if (mediaUploader.video) {\n return [\n { title: \"Upload\", key: \"local\" },\n { title: \"Embed\", key: \"embed\" },\n ];\n }\n\n return [];\n};\n","import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\nimport { mergeRight } from \"ramda\";\n\nimport { DEFAULT_FILE_UPLOAD_CONFIG } from \"src/v2/components/Attachments/constants\";\nimport { convertToFileSize } from \"src/v2/components/Editor/MediaUploader/utils\";\n\nconst getFileExtension = filename => {\n if (!filename) return \"\";\n const parts = filename.split(\".\");\n\n return parts.length > 1 ? `.${parts.pop()}` : \"\";\n};\n\nconst showWarningToastr = ({\n selectedFiles,\n initialFiles,\n config,\n largeFilesCount,\n unSupportedFilesCount,\n}) => {\n const { maxNumberOfFiles, maxFileSize } = config.restrictions;\n\n if (unSupportedFilesCount > 0 || largeFilesCount > 0) {\n if (unSupportedFilesCount > 0) {\n Toastr.error(t(\"neetoEditor.error.fileNotAllowed\"));\n }\n\n if (largeFilesCount > 0) {\n Toastr.error(\n t(\"neetoEditor.error.fileIsTooLarge\", {\n maxFileSize: convertToFileSize(maxFileSize),\n })\n );\n }\n } else if (selectedFiles.length < initialFiles.length) {\n Toastr.warning(\n t(\"neetoEditor.attachments.maxNumberOfFiles\", {\n entity: maxNumberOfFiles,\n })\n );\n }\n};\n\nexport const buildFileUploadConfig = config =>\n mergeRight(DEFAULT_FILE_UPLOAD_CONFIG, config);\n\nexport const shouldAddFile = config => file => {\n const { maxFileSize, allowedFileTypes } = config.restrictions;\n\n if (isPresent(maxFileSize) && file.size > maxFileSize) {\n return { canAdd: false };\n }\n\n if (isPresent(allowedFileTypes)) {\n const fileExtension = getFileExtension(file.name);\n const mimeType = file.type;\n\n const extensionAllowed = allowedFileTypes.includes(fileExtension);\n const mimeAllowed = allowedFileTypes.includes(mimeType);\n\n const canAdd = extensionAllowed || mimeAllowed;\n\n return { canAdd, isUnsupportedFile: !canAdd };\n }\n\n return { canAdd: true };\n};\n\nexport const selectFiles = ({ previousAttachmentsCount, config, files }) => {\n let addedFilesCount = 0,\n largeFilesCount = 0,\n unSupportedFilesCount = 0;\n const fallbackMaxNumberOfFiles = previousAttachmentsCount + files.length;\n const { maxNumberOfFiles = fallbackMaxNumberOfFiles } = config.restrictions;\n const canAddFile = shouldAddFile(config);\n\n const remainingAttachments = maxNumberOfFiles - previousAttachmentsCount;\n\n if (remainingAttachments <= 0) {\n Toastr.warning(\n t(\"neetoEditor.attachments.maxNumberOfFiles\", {\n entity: maxNumberOfFiles,\n })\n );\n\n return [];\n }\n\n const selectedFiles = files.filter(file => {\n const { canAdd, isUnsupportedFile } = canAddFile(file);\n\n if (canAdd && addedFilesCount + 1 <= remainingAttachments) {\n addedFilesCount += 1;\n\n return true;\n }\n\n if (isUnsupportedFile) unSupportedFilesCount += 1;\n else if (!canAdd) largeFilesCount += 1;\n\n return false;\n });\n\n showWarningToastr({\n selectedFiles,\n initialFiles: files,\n config,\n unSupportedFilesCount,\n largeFilesCount,\n });\n\n return selectedFiles;\n};\n","// eslint-disable-next-line @bigbinary/neeto/use-snake-case-for-api-connector-filename\nimport { useRef } from \"react\";\n\nimport { Toastr } from \"@bigbinary/neeto-atoms\";\n// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis,\nimport axios from \"axios\";\nimport { noop, hyphenate, isNot, isNotPresent } from \"neetocist\";\nimport { omit, pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FILE_UPLOAD_STATUS } from \"hooks/constants/fileUploader\";\nimport { getRandomString } from \"hooks/utils\";\nimport useFileUploadStore from \"src/stores/useFileUploadStore\";\nimport DirectUpload from \"utils/DirectUpload\";\n\nimport { selectFiles } from \"./utils/fileUploader\";\n\nlet uploadControllers = {};\n\nconst useFileUploader = ({\n config,\n attachments: previousAttachments = [],\n setIsUploadingOnHost = noop,\n}) => {\n const contextIdRef = useRef(getRandomString());\n const { t } = useTranslation();\n\n const { current: contextId } = contextIdRef;\n const {\n addFiles: addFilesToStore,\n getNextQueuedFile,\n updateFileStatus,\n removeFilesFromQueue,\n setIsUploading,\n updateFileUploadProgress,\n removeFile,\n } = useFileUploadStore.pick();\n const { files = [], isUploading } = useFileUploadStore.pick([contextId]);\n\n const handleUploadProgress = (xhr, file) => {\n if (!xhr.event.lengthComputable) return;\n const bytesUploaded = xhr.loaded;\n const bytesTotal = xhr.total;\n const progress = Math.round((bytesUploaded / bytesTotal) * 100);\n updateFileUploadProgress(contextId, file.id, progress);\n };\n\n const uploadFile = async file => {\n const upload = new DirectUpload({\n file: file.data,\n url: config.directUploadEndpoint,\n progress: xhr => handleUploadProgress(xhr, file),\n });\n\n uploadControllers[file.id] = upload;\n\n try {\n const { data = {}, ...response } = await upload.create();\n updateFileStatus(contextId, file.id, FILE_UPLOAD_STATUS.UPLOADED);\n\n return {\n id: file.id,\n filename: file.filename,\n signedId: data.signed_id ?? response.signed_id,\n url: data.blob_url ?? response.blob_url,\n contentType: data.content_type ?? response.content_type,\n };\n } catch (error) {\n if (!axios.isCancel(error)) {\n Toastr.error(t(\"neetoEditor.error.uploadFileFailed\"));\n }\n // eslint-disable-next-line no-console\n console.error(\"Attachment upload failed\", error);\n removeFile(contextId, file.id);\n\n return null;\n }\n };\n\n const handleUploadFiles = async () => {\n const queuedFile = getNextQueuedFile(contextId);\n\n if (isNotPresent(queuedFile)) {\n setIsUploading(contextId, false);\n setIsUploadingOnHost(false);\n\n return [];\n }\n\n updateFileStatus(contextId, queuedFile.id, FILE_UPLOAD_STATUS.UPLOADING);\n\n const [uploadedFile, remainingUploadedFiles] = await Promise.all([\n uploadFile(queuedFile),\n handleUploadFiles(),\n ]);\n\n const uploadedFiles = [uploadedFile, ...remainingUploadedFiles];\n const uploadedFileIds = pluck(\"id\", uploadedFiles);\n removeFilesFromQueue(contextId, uploadedFileIds);\n uploadControllers = omit(uploadedFileIds, uploadControllers);\n\n return uploadedFiles.filter(isNot(null));\n };\n\n const uploadFiles = () => {\n setIsUploading(contextId, true);\n setIsUploadingOnHost(true);\n\n return handleUploadFiles();\n };\n\n const addFiles = addedFiles => {\n const selectedFiles = selectFiles({\n previousAttachmentsCount: previousAttachments.length,\n config,\n files: Array.from(addedFiles),\n }).map(file => ({\n id: hyphenate(`${file.name.toLowerCase()}-${Date.now()}`),\n data: file,\n filename: file.name,\n signedId: \"awaiting\",\n url: \"\",\n type: file.type,\n status: FILE_UPLOAD_STATUS.QUEUED,\n }));\n\n addFilesToStore(contextId, selectedFiles);\n };\n\n const cancelUpload = fileId => {\n uploadControllers[fileId]?.abort?.();\n removeFile(contextId, fileId);\n };\n\n return {\n addFiles,\n uploadFiles,\n queuedFiles: files,\n cancelUpload,\n isUploading,\n };\n};\n\nexport default useFileUploader;\n","import { Globe, Grid3x3, Layers } from \"lucide-react\";\n\n// react-file-icon has no styles for these image formats, and gives xml the\n// same {} glyph as json; code2 is </>.\nexport const EXTRA_FILE_ICON_STYLES = {\n avif: { type: \"image\" },\n heic: { type: \"image\" },\n heif: { type: \"image\" },\n webp: { type: \"image\" },\n xml: { type: \"code2\" },\n};\n\n// Lucide glyphs for image formats that get their own icon. Other images use\n// lucide's Image.\nexport const FILE_ICON_GLYPH_BY_EXTENSION = {\n bmp: Grid3x3,\n tif: Layers,\n tiff: Layers,\n webp: Globe,\n};\n\nexport const FILE_ICON_CATEGORY_BY_EXTENSION = {\n pdf: \"pdf\",\n key: \"pdf\",\n ppt: \"pdf\",\n pptx: \"pdf\",\n csv: \"spreadsheet\",\n numbers: \"spreadsheet\",\n xls: \"spreadsheet\",\n xlsx: \"spreadsheet\",\n doc: \"document\",\n docx: \"document\",\n md: \"document\",\n pages: \"document\",\n rtf: \"document\",\n txt: \"document\",\n};\n\n// react-file-icon glyph type -> colour category. svg (\"vector\") is grouped\n// with images.\nexport const FILE_ICON_CATEGORY_BY_TYPE = {\n audio: \"audio\",\n image: \"image\",\n vector: \"image\",\n video: \"video\",\n};\n","import classnames from \"classnames\";\nimport { Image } from \"lucide-react\";\nimport { FileIcon as ReactFileIcon, defaultStyles } from \"react-file-icon\";\n\nimport {\n EXTRA_FILE_ICON_STYLES,\n FILE_ICON_CATEGORY_BY_EXTENSION,\n FILE_ICON_CATEGORY_BY_TYPE,\n FILE_ICON_GLYPH_BY_EXTENSION,\n} from \"./constants\";\n\nconst getExtension = fileName =>\n fileName?.match(/\\.([^.]+)$/)?.[1]?.toLowerCase();\n\n// Only the glyph shape is taken from react-file-icon. Colours come from\n// neeto-atoms tokens in _attachments.scss, keyed on the category class.\nconst getCategory = (extension, type) =>\n FILE_ICON_CATEGORY_BY_EXTENSION[extension] ??\n FILE_ICON_CATEGORY_BY_TYPE[type] ??\n \"default\";\n\nconst File = ({ fileName, className }) => {\n const extension = getExtension(fileName);\n const type = (EXTRA_FILE_ICON_STYLES[extension] ?? defaultStyles[extension])\n ?.type;\n\n // The library's image glyph is a mountain; draw a lucide glyph on top of a\n // glyph-less icon instead.\n const Glyph =\n FILE_ICON_GLYPH_BY_EXTENSION[extension] ??\n (type === \"image\" ? Image : null);\n\n return (\n <div\n aria-hidden=\"true\"\n className={classnames(\n \"ne-file-icon\",\n `ne-file-icon--${getCategory(extension, type)}`,\n className\n )}\n >\n <ReactFileIcon\n {...{ extension }}\n labelUppercase\n type={Glyph ? undefined : type}\n />\n {Glyph && <Glyph className=\"ne-file-icon__glyph\" />}\n </div>\n );\n};\n\nexport default File;\n"],"names":["DEFAULT_FILE_UPLOAD_CONFIG","directUploadEndpoint","DIRECT_UPLOAD_ENDPOINT","restrictions","maxFileSize","globalProps","endUserUploadedFileSizeLimitInMb","ATTACHMENT_OPTIONS","OPEN_IN_NEW_TAB","t","DOWNLOAD","RENAME","DELETE","ATTACHMENTS_PREVIEW_DATA_CY","MAX_VIDEO_SIZE_IN_MB","maxVideoSizeInMb","directUploadsMaxFileSizeInMb","Math","min","FILE_SIZE_UNITS","ALLOWED_IMAGE_TYPES","ALLOWED_VIDEO_TYPES","DEFAULT_IMAGE_UPLOAD_CONFIG","maxNumberOfFiles","allowedFileTypes","DEFAULT_VIDEO_UPLOAD_CONFIG","VIDEO_EMBED_FORM_VALIDATION_SCHEMA","yup","object","shape","url","string","required","matches","URL_REGEXP","DEFAULT_ASPECT_RATIO","convertToFileSize","size","arguments","length","undefined","fileSize","i","concat","toFixed","getTabs","mediaUploader","video","title","key","getFileExtension","filename","parts","split","pop","showWarningToastr","_ref","selectedFiles","initialFiles","config","largeFilesCount","unSupportedFilesCount","_config$restrictions","Toastr","error","warning","entity","shouldAddFile","file","_config$restrictions2","isPresent","canAdd","fileExtension","name","mimeType","type","extensionAllowed","includes","mimeAllowed","isUnsupportedFile","selectFiles","_ref2","previousAttachmentsCount","files","addedFilesCount","fallbackMaxNumberOfFiles","_config$restrictions$","canAddFile","remainingAttachments","filter","_canAddFile","uploadControllers","useFileUploader","_ref$attachments","attachments","previousAttachments","_ref$setIsUploadingOn","setIsUploadingOnHost","noop","contextIdRef","useRef","getRandomString","_useTranslation","useTranslation","contextId","current","_useFileUploadStore","useFileUploadStore","store","addFiles","getNextQueuedFile","updateFileStatus","removeFilesFromQueue","setIsUploading","updateFileUploadProgress","removeFile","shallow","addFilesToStore","_useFileUploadStore2","_store$contextId","_store$contextId2","isUploading","_useFileUploadStore2$","handleUploadProgress","xhr","event","lengthComputable","bytesUploaded","loaded","bytesTotal","total","progress","round","id","uploadFile","_asyncToGenerator","_regeneratorRuntime","mark","_callee","upload","_data$signed_id","_data$blob_url","_data$content_type","_yield$upload$create","_yield$upload$create$","data","response","wrap","_callee$","_context","prev","next","DirectUpload","create","sent","_objectWithoutProperties","_excluded","FILE_UPLOAD_STATUS","UPLOADED","abrupt","signedId","signed_id","blob_url","contentType","content_type","t0","axios","isCancel","console","stop","_x","apply","handleUploadFiles","_ref3","_callee2","queuedFile","_yield$Promise$all","_yield$Promise$all2","uploadedFile","remainingUploadedFiles","uploadedFiles","uploadedFileIds","_callee2$","_context2","isNotPresent","UPLOADING","Promise","all","_slicedToArray","_toConsumableArray","pluck","omit","isNot","uploadFiles","addedFiles","Array","from","map","hyphenate","toLowerCase","Date","now","status","QUEUED","cancelUpload","fileId","_uploadControllers$fi","_uploadControllers$fi2","abort","call","queuedFiles","EXTRA_FILE_ICON_STYLES","avif","heic","heif","webp","xml","FILE_ICON_GLYPH_BY_EXTENSION","bmp","Grid3x3","tif","Layers","tiff","Globe","FILE_ICON_CATEGORY_BY_EXTENSION","pdf","ppt","pptx","csv","numbers","xls","xlsx","doc","docx","md","pages","rtf","txt","FILE_ICON_CATEGORY_BY_TYPE","audio","image","vector","getExtension","fileName","_fileName$match","match","getCategory","extension","_FILE_ICON_CATEGORY_B","File","_EXTRA_FILE_ICON_STYL","_FILE_ICON_GLYPH_BY_E","className","defaultStyles","Glyph","Image","_jsxs","classnames","children","_jsx","ReactFileIcon","labelUppercase"],"mappings":"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"}
@@ -89,11 +89,22 @@ var EDITOR_SIZES = {
89
89
  SMALL: "small"
90
90
  };
91
91
 
92
+ // TodoList renames Tiptap's taskList wrapper to todoList, so ListKeymap's
93
+ // default listTypes would not match our schema.
94
+ var LIST_KEYMAP_LIST_TYPES = [{
95
+ itemName: "listItem",
96
+ wrapperNames: ["bulletList", "orderedList"]
97
+ }, {
98
+ itemName: "taskItem",
99
+ wrapperNames: ["todoList"]
100
+ }];
101
+
92
102
  exports.ALL_PROTOCOL_URL_REGEXP = ALL_PROTOCOL_URL_REGEXP;
93
103
  exports.COMBINED_REGEX = COMBINED_REGEX;
94
104
  exports.DIRECT_UPLOAD_ENDPOINT = DIRECT_UPLOAD_ENDPOINT;
95
105
  exports.EDITOR_OPTIONS = EDITOR_OPTIONS;
96
106
  exports.EDITOR_SIZES = EDITOR_SIZES;
107
+ exports.LIST_KEYMAP_LIST_TYPES = LIST_KEYMAP_LIST_TYPES;
97
108
  exports.URL_REGEXP = URL_REGEXP;
98
109
  exports.URL_VALIDATORS = URL_VALIDATORS;
99
- //# sourceMappingURL=chunk-BNUTjVYA.cjs.js.map
110
+ //# sourceMappingURL=chunk-BxKa_XOs.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunk-BNUTjVYA.cjs.js","sources":["../../app/javascript/src/common/constants.js"],"sourcesContent":["import { pluck } from \"ramda\";\n\nexport const EDITOR_OPTIONS = {\n // DEFAULT EDITOR OPTIONS\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n STRIKETHROUGH: \"strike\",\n LINK: \"link\",\n PARAGRAPH: \"paragraph\",\n H1: \"h1\",\n H2: \"h2\",\n H3: \"h3\",\n H4: \"h4\",\n H5: \"h5\",\n H6: \"h6\",\n LIST_BULLETS: \"bullet-list\",\n LIST_ORDERED: \"ordered-list\",\n CODE: \"code\",\n\n // ADDON EDITOR OPTIONS\n CODE_BLOCK: \"code-block\",\n BLOCKQUOTE: \"block-quote\",\n CALLOUT: \"callout\",\n ATTACHMENTS: \"attachments\",\n TODO_LIST: \"todo-list\",\n UNDO: \"undo\",\n REDO: \"redo\",\n HIGHLIGHT: \"highlight\",\n EMOJI: \"emoji\",\n IMAGE_UPLOAD: \"image-upload\",\n IMAGE_UPLOAD_UNSPLASH: \"image-upload-unsplash\",\n VIDEO_UPLOAD: \"video-upload\",\n DIVIDER: \"divider\",\n PASTE_UNFORMATTED: \"paste-unformatted\",\n TABLE: \"table\",\n TEXT_COLOR: \"text-color\",\n NEETO_KB_ARTICLE: \"neeto-kb-article\",\n};\n\nexport const UNSPLASH_BASE_URL = \"https://api.unsplash.com/search/photos\";\n\nexport const DIRECT_UPLOAD_ENDPOINT = \"/api/direct_uploads\";\n\nexport const URL_REGEXP =\n /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{1,63}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/;\n\n// HTTP/HTTPS/FTP with :// or Non-slash protocols like mailto:, tel: or Host without\n// protocol. The host can be a domain name, an IPv4 address, a bracketed IPv6 address\n// or localhost, each optionally followed by a port.\nexport const ALL_PROTOCOL_URL_REGEXP =\n /^[a-zA-Z]\\w*:\\/\\/(?:[a-zA-Z0-9@:%._+~#=-]{1,256}\\.[a-z]{1,63}\\b|(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|\\[(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}|:){1,7}|::[0-9a-fA-F:.]*)\\]|localhost)(?::\\d+)?([-a-zA-Z0-9@:%_+.~#?&//=]*)|^[a-zA-Z]\\w*:[^//][a-zA-Z0-9@:%._+~#=?&-]*|^(?:[a-zA-Z0-9@:%._+~#=-]{1,256}\\.[a-z]{1,63}\\b|(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|\\[(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}|:){1,7}|::[0-9a-fA-F:.]*)\\]|localhost)(?::\\d+)?([-a-zA-Z0-9@:%_+.~#?&//=]*)/i;\n\nexport const YOUTUBE_URL_REGEXP =\n /^((?:https?:)?\\/\\/)?((?:www|m)\\.)?((?:youtube\\.com|youtu.be))(\\/(?:[\\w-]+\\?v=|embed\\/|v\\/)?)([\\w-]+)(\\S*?)(\\?[^#]*)?$/;\n\nexport const VIMEO_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.|player\\.)?vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|(?:manage\\/)?videos?\\/|)(\\d+)(?:(?:\\/|\\?h=)(\\w+))?(?:|\\/\\?)(\\?[^#]*)?/;\n\nexport const LOOM_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?loom\\.com\\/(share|embed)\\/([a-f0-9]{32})(?:\\?sid=([a-f0-9-]{36}))?(?:\\?t=(\\d+))?(\\?[^#]*)?/;\n\nexport const NEETO_RECORD_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?[a-zA-Z0-9-]+\\.(neetorecord\\.com)\\/(watch)\\/([^/\\s?#]+)/;\n\nexport const NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?(\\w+(?:[\\w-]*\\w)?(?:\\.\\w+(?:[\\w-]*\\w)?)+)\\/(watch)\\/([^/\\s?#]+)/;\n\nexport const SUPA_DEMO_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?([a-zA-Z0-9-]+)\\.([a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+)\\/(demo|embed)\\/([0-9a-z]+)/;\n\nexport const TWITTER_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.|mobile\\.)?(twitter\\.com|x\\.com)\\/(?:#!\\/)?(\\w+)\\/status(?:es)?\\/(\\d+)(?:\\?[^#]*)?/;\n\nexport const COMBINED_REGEX = new RegExp(\n pluck(\"source\", [\n YOUTUBE_URL_REGEXP,\n VIMEO_URL_REGEXP,\n LOOM_URL_REGEXP,\n NEETO_RECORD_URL_REGEXP,\n NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP,\n SUPA_DEMO_URL_REGEXP,\n TWITTER_URL_REGEXP,\n ]).join(\"|\"),\n \"g\"\n);\n\nexport const URL_VALIDATORS = {\n youtube: url => {\n const match = url.match(YOUTUBE_URL_REGEXP);\n\n return match && `https://www.youtube.com/embed/${match[5]}`;\n },\n vimeo: url => {\n const match = url.match(VIMEO_URL_REGEXP);\n\n return match && `https://player.vimeo.com/video/${match[4]}?h=${match[5]}`;\n },\n loom: url => {\n const match = url.match(LOOM_URL_REGEXP);\n\n return (\n match && `https://www.loom.com/embed/${match[4]}?t=${match[5] || \"\"}`\n );\n },\n neetoRecord: url => {\n const match = url.match(NEETO_RECORD_URL_REGEXP);\n\n return match && url.replace(\"watch\", \"embeds\");\n },\n neetoRecordCustom: url => {\n const match = url.match(NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP);\n\n return match && url.replace(\"watch\", \"embeds\");\n },\n supademo: url => {\n const match = url.match(SUPA_DEMO_URL_REGEXP);\n\n return (\n match && `https://${match[3]}.${match[4]}/embed/${match[6]}?embed_v=2`\n );\n },\n twitter: url => {\n const match = url.match(TWITTER_URL_REGEXP);\n\n return (\n match && `https://platform.twitter.com/embed/Tweet.html?id=${match[5]}`\n );\n },\n};\n\nexport const EDITOR_SIZES = {\n MEDIUM: \"medium\",\n LARGE: \"large\",\n SMALL: \"small\",\n};\n"],"names":["EDITOR_OPTIONS","BOLD","ITALIC","UNDERLINE","STRIKETHROUGH","LINK","PARAGRAPH","H1","H2","H3","H4","H5","H6","LIST_BULLETS","LIST_ORDERED","CODE","CODE_BLOCK","BLOCKQUOTE","CALLOUT","ATTACHMENTS","TODO_LIST","UNDO","REDO","HIGHLIGHT","EMOJI","IMAGE_UPLOAD","IMAGE_UPLOAD_UNSPLASH","VIDEO_UPLOAD","DIVIDER","PASTE_UNFORMATTED","TABLE","TEXT_COLOR","NEETO_KB_ARTICLE","DIRECT_UPLOAD_ENDPOINT","URL_REGEXP","ALL_PROTOCOL_URL_REGEXP","YOUTUBE_URL_REGEXP","VIMEO_URL_REGEXP","LOOM_URL_REGEXP","NEETO_RECORD_URL_REGEXP","NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP","SUPA_DEMO_URL_REGEXP","TWITTER_URL_REGEXP","COMBINED_REGEX","RegExp","pluck","join","URL_VALIDATORS","youtube","url","match","concat","vimeo","loom","neetoRecord","replace","neetoRecordCustom","supademo","twitter","EDITOR_SIZES","MEDIUM","LARGE","SMALL"],"mappings":"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"}
1
+ {"version":3,"file":"chunk-BxKa_XOs.cjs.js","sources":["../../app/javascript/src/common/constants.js"],"sourcesContent":["import { pluck } from \"ramda\";\n\nexport const EDITOR_OPTIONS = {\n // DEFAULT EDITOR OPTIONS\n BOLD: \"bold\",\n ITALIC: \"italic\",\n UNDERLINE: \"underline\",\n STRIKETHROUGH: \"strike\",\n LINK: \"link\",\n PARAGRAPH: \"paragraph\",\n H1: \"h1\",\n H2: \"h2\",\n H3: \"h3\",\n H4: \"h4\",\n H5: \"h5\",\n H6: \"h6\",\n LIST_BULLETS: \"bullet-list\",\n LIST_ORDERED: \"ordered-list\",\n CODE: \"code\",\n\n // ADDON EDITOR OPTIONS\n CODE_BLOCK: \"code-block\",\n BLOCKQUOTE: \"block-quote\",\n CALLOUT: \"callout\",\n ATTACHMENTS: \"attachments\",\n TODO_LIST: \"todo-list\",\n UNDO: \"undo\",\n REDO: \"redo\",\n HIGHLIGHT: \"highlight\",\n EMOJI: \"emoji\",\n IMAGE_UPLOAD: \"image-upload\",\n IMAGE_UPLOAD_UNSPLASH: \"image-upload-unsplash\",\n VIDEO_UPLOAD: \"video-upload\",\n DIVIDER: \"divider\",\n PASTE_UNFORMATTED: \"paste-unformatted\",\n TABLE: \"table\",\n TEXT_COLOR: \"text-color\",\n NEETO_KB_ARTICLE: \"neeto-kb-article\",\n};\n\nexport const UNSPLASH_BASE_URL = \"https://api.unsplash.com/search/photos\";\n\nexport const DIRECT_UPLOAD_ENDPOINT = \"/api/direct_uploads\";\n\nexport const URL_REGEXP =\n /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{1,256}\\.[a-z]{1,63}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/;\n\n// HTTP/HTTPS/FTP with :// or Non-slash protocols like mailto:, tel: or Host without\n// protocol. The host can be a domain name, an IPv4 address, a bracketed IPv6 address\n// or localhost, each optionally followed by a port.\nexport const ALL_PROTOCOL_URL_REGEXP =\n /^[a-zA-Z]\\w*:\\/\\/(?:[a-zA-Z0-9@:%._+~#=-]{1,256}\\.[a-z]{1,63}\\b|(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|\\[(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}|:){1,7}|::[0-9a-fA-F:.]*)\\]|localhost)(?::\\d+)?([-a-zA-Z0-9@:%_+.~#?&//=]*)|^[a-zA-Z]\\w*:[^//][a-zA-Z0-9@:%._+~#=?&-]*|^(?:[a-zA-Z0-9@:%._+~#=-]{1,256}\\.[a-z]{1,63}\\b|(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}|\\[(?:[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4}|:){1,7}|::[0-9a-fA-F:.]*)\\]|localhost)(?::\\d+)?([-a-zA-Z0-9@:%_+.~#?&//=]*)/i;\n\nexport const YOUTUBE_URL_REGEXP =\n /^((?:https?:)?\\/\\/)?((?:www|m)\\.)?((?:youtube\\.com|youtu.be))(\\/(?:[\\w-]+\\?v=|embed\\/|v\\/)?)([\\w-]+)(\\S*?)(\\?[^#]*)?$/;\n\nexport const VIMEO_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.|player\\.)?vimeo\\.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/([^/]*)\\/videos\\/|(?:manage\\/)?videos?\\/|)(\\d+)(?:(?:\\/|\\?h=)(\\w+))?(?:|\\/\\?)(\\?[^#]*)?/;\n\nexport const LOOM_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?loom\\.com\\/(share|embed)\\/([a-f0-9]{32})(?:\\?sid=([a-f0-9-]{36}))?(?:\\?t=(\\d+))?(\\?[^#]*)?/;\n\nexport const NEETO_RECORD_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?[a-zA-Z0-9-]+\\.(neetorecord\\.com)\\/(watch)\\/([^/\\s?#]+)/;\n\nexport const NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?(\\w+(?:[\\w-]*\\w)?(?:\\.\\w+(?:[\\w-]*\\w)?)+)\\/(watch)\\/([^/\\s?#]+)/;\n\nexport const SUPA_DEMO_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.)?([a-zA-Z0-9-]+)\\.([a-zA-Z0-9-]+\\.[a-zA-Z0-9-]+)\\/(demo|embed)\\/([0-9a-z]+)/;\n\nexport const TWITTER_URL_REGEXP =\n /((?:http|https):\\/\\/)?(www\\.|mobile\\.)?(twitter\\.com|x\\.com)\\/(?:#!\\/)?(\\w+)\\/status(?:es)?\\/(\\d+)(?:\\?[^#]*)?/;\n\nexport const COMBINED_REGEX = new RegExp(\n pluck(\"source\", [\n YOUTUBE_URL_REGEXP,\n VIMEO_URL_REGEXP,\n LOOM_URL_REGEXP,\n NEETO_RECORD_URL_REGEXP,\n NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP,\n SUPA_DEMO_URL_REGEXP,\n TWITTER_URL_REGEXP,\n ]).join(\"|\"),\n \"g\"\n);\n\nexport const URL_VALIDATORS = {\n youtube: url => {\n const match = url.match(YOUTUBE_URL_REGEXP);\n\n return match && `https://www.youtube.com/embed/${match[5]}`;\n },\n vimeo: url => {\n const match = url.match(VIMEO_URL_REGEXP);\n\n return match && `https://player.vimeo.com/video/${match[4]}?h=${match[5]}`;\n },\n loom: url => {\n const match = url.match(LOOM_URL_REGEXP);\n\n return (\n match && `https://www.loom.com/embed/${match[4]}?t=${match[5] || \"\"}`\n );\n },\n neetoRecord: url => {\n const match = url.match(NEETO_RECORD_URL_REGEXP);\n\n return match && url.replace(\"watch\", \"embeds\");\n },\n neetoRecordCustom: url => {\n const match = url.match(NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP);\n\n return match && url.replace(\"watch\", \"embeds\");\n },\n supademo: url => {\n const match = url.match(SUPA_DEMO_URL_REGEXP);\n\n return (\n match && `https://${match[3]}.${match[4]}/embed/${match[6]}?embed_v=2`\n );\n },\n twitter: url => {\n const match = url.match(TWITTER_URL_REGEXP);\n\n return (\n match && `https://platform.twitter.com/embed/Tweet.html?id=${match[5]}`\n );\n },\n};\n\nexport const EDITOR_SIZES = {\n MEDIUM: \"medium\",\n LARGE: \"large\",\n SMALL: \"small\",\n};\n\n// TodoList renames Tiptap's taskList wrapper to todoList, so ListKeymap's\n// default listTypes would not match our schema.\nexport const LIST_KEYMAP_LIST_TYPES = [\n { itemName: \"listItem\", wrapperNames: [\"bulletList\", \"orderedList\"] },\n { itemName: \"taskItem\", wrapperNames: [\"todoList\"] },\n];\n"],"names":["EDITOR_OPTIONS","BOLD","ITALIC","UNDERLINE","STRIKETHROUGH","LINK","PARAGRAPH","H1","H2","H3","H4","H5","H6","LIST_BULLETS","LIST_ORDERED","CODE","CODE_BLOCK","BLOCKQUOTE","CALLOUT","ATTACHMENTS","TODO_LIST","UNDO","REDO","HIGHLIGHT","EMOJI","IMAGE_UPLOAD","IMAGE_UPLOAD_UNSPLASH","VIDEO_UPLOAD","DIVIDER","PASTE_UNFORMATTED","TABLE","TEXT_COLOR","NEETO_KB_ARTICLE","DIRECT_UPLOAD_ENDPOINT","URL_REGEXP","ALL_PROTOCOL_URL_REGEXP","YOUTUBE_URL_REGEXP","VIMEO_URL_REGEXP","LOOM_URL_REGEXP","NEETO_RECORD_URL_REGEXP","NEETO_RECORD_CUSTOM_DOMAIN_URL_REGEXP","SUPA_DEMO_URL_REGEXP","TWITTER_URL_REGEXP","COMBINED_REGEX","RegExp","pluck","join","URL_VALIDATORS","youtube","url","match","concat","vimeo","loom","neetoRecord","replace","neetoRecordCustom","supademo","twitter","EDITOR_SIZES","MEDIUM","LARGE","SMALL","LIST_KEYMAP_LIST_TYPES","itemName","wrapperNames"],"mappings":"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"}
@@ -15,6 +15,7 @@ var neetoCist = require('@bigbinary/neeto-cist');
15
15
  var useEditorStore = require('./chunk-CohcWDmm.cjs.js');
16
16
  var index = require('./chunk-Crp27WMe.cjs.js');
17
17
  var Y = require('yjs');
18
+ var constants = require('./chunk-BxKa_XOs.cjs.js');
18
19
  var ReactDOM = require('react-dom');
19
20
 
20
21
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
@@ -58,8 +59,8 @@ var MODAL_TOP_OFFSET = 22;
58
59
  var MODAL_TRANSFORM_Y = 52;
59
60
  var MODAL_TRANSFORM_X = 8;
60
61
 
61
- function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
62
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
62
+ function ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
63
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
63
64
  var buildArticleFullUrl = function buildArticleFullUrl(slug) {
64
65
  return slug ? "".concat(NEETO_KB_ENDPOINT, "/articles/").concat(slug) : null;
65
66
  };
@@ -68,7 +69,7 @@ var createArticleOptions = function createArticleOptions(articles) {
68
69
  return {
69
70
  label: common.decodeHtmlEntities(article.title),
70
71
  value: article.id,
71
- data: _objectSpread$2({
72
+ data: _objectSpread$3({
72
73
  type: "article"
73
74
  }, article)
74
75
  };
@@ -95,8 +96,8 @@ var QUERY_KEYS = {
95
96
  };
96
97
 
97
98
  var _globalProps$organiza;
98
- function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
99
- function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
99
+ function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
100
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
100
101
  var apiConfig = {
101
102
  baseURL: NEETO_KB_ENDPOINT,
102
103
  headers: {
@@ -106,7 +107,7 @@ var apiConfig = {
106
107
  transformRequestCase: false
107
108
  };
108
109
  var fetchArticles = function fetchArticles(params) {
109
- return axios__default.default.get(NEETO_KB_ARTICLES_URL, _objectSpread$1(_objectSpread$1({}, apiConfig), {}, {
110
+ return axios__default.default.get(NEETO_KB_ARTICLES_URL, _objectSpread$2(_objectSpread$2({}, apiConfig), {}, {
110
111
  params: params
111
112
  }));
112
113
  };
@@ -114,8 +115,8 @@ var neetoKbApi = {
114
115
  fetchArticles: fetchArticles
115
116
  };
116
117
 
117
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
118
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
118
+ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
119
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
119
120
  var useFetchKbArticles = function useFetchKbArticles() {
120
121
  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
121
122
  _ref$searchTerm = _ref.searchTerm,
@@ -125,7 +126,7 @@ var useFetchKbArticles = function useFetchKbArticles() {
125
126
  var queryParams = searchTerm ? {
126
127
  search_term: searchTerm
127
128
  } : {};
128
- return reactQuery.useQuery(_objectSpread({
129
+ return reactQuery.useQuery(_objectSpread$1({
129
130
  queryKey: [QUERY_KEYS.KB_ARTICLES, queryParams],
130
131
  queryFn: function () {
131
132
  var _queryFn = _asyncToGenerator__default.default(/*#__PURE__*/_regeneratorRuntime__default.default.mark(function _callee() {
@@ -13281,6 +13282,44 @@ const StarterKit = useEditorStore.Extension.create({
13281
13282
  //#region src/index.ts
13282
13283
  var src_default$3 = StarterKit;
13283
13284
 
13285
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13286
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty__default.default(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13287
+
13288
+ // Tiptap's ListKeymap backspace handler calls `$anchor.before()` to locate the
13289
+ // list to merge the cursor's block into. A gap cursor resolves at the top level
13290
+ // of the document, where `before()` raises
13291
+ // `RangeError: There is no position before the top-level node`. That merge is
13292
+ // only meaningful from inside a textblock, so decline the shortcut and let
13293
+ // ProseMirror's default backspace handle the gap cursor.
13294
+ var guard = function guard(handler) {
13295
+ return function (props) {
13296
+ return props.editor.state.selection.$anchor.depth === 0 ? false : handler(props);
13297
+ };
13298
+ };
13299
+
13300
+ // Only wrap a shortcut the parent actually defines, so a future upstream that
13301
+ // drops one of these keys does not leave us registering `guard(undefined)`.
13302
+ var guarded = function guarded(shortcuts, key) {
13303
+ return typeof shortcuts[key] === "function" ? _defineProperty__default.default({}, key, guard(shortcuts[key])) : {};
13304
+ };
13305
+
13306
+ // Deliberately no `priority`: `.extend()` inherits ListKeymap's default (100),
13307
+ // which keeps the ordering this keymap already had against the other
13308
+ // Backspace handlers (e.g. Callout) now that StarterKit's copy is disabled.
13309
+ var safeListKeymap = ListKeymap.extend({
13310
+ addOptions: function addOptions() {
13311
+ var _this$parent;
13312
+ return _objectSpread(_objectSpread({}, (_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.call(this)), {}, {
13313
+ listTypes: constants.LIST_KEYMAP_LIST_TYPES
13314
+ });
13315
+ },
13316
+ addKeyboardShortcuts: function addKeyboardShortcuts() {
13317
+ var _this$parent2, _this$parent3;
13318
+ var shortcuts = (_this$parent2 = (_this$parent3 = this.parent) === null || _this$parent3 === void 0 ? void 0 : _this$parent3.call(this)) !== null && _this$parent2 !== void 0 ? _this$parent2 : {};
13319
+ return _objectSpread(_objectSpread(_objectSpread({}, shortcuts), guarded(shortcuts, "Backspace")), guarded(shortcuts, "Mod-Backspace"));
13320
+ }
13321
+ });
13322
+
13284
13323
  var ensureMarks = function ensureMarks(state, splittableMarks) {
13285
13324
  var marks = state.storedMarks || state.selection.$to.parentOffset && state.selection.$from.marks();
13286
13325
  if (marks) {
@@ -15307,6 +15346,7 @@ exports.TextStyle = TextStyle;
15307
15346
  exports.buildArticleFullUrl = buildArticleFullUrl;
15308
15347
  exports.createArticleOptions = createArticleOptions;
15309
15348
  exports.fuzzySearch = fuzzySearch;
15349
+ exports.safeListKeymap = safeListKeymap;
15310
15350
  exports.safeSplitBlock = safeSplitBlock;
15311
15351
  exports.scrollHandler = scrollHandler;
15312
15352
  exports.src_default = src_default$2;
@@ -15323,4 +15363,4 @@ exports.src_default$9 = src_default$9;
15323
15363
  exports.useDeletedArticles = useDeletedArticles;
15324
15364
  exports.useEditorWarnings = useEditorWarnings;
15325
15365
  exports.useFetchKbArticles = useFetchKbArticles;
15326
- //# sourceMappingURL=chunk-DxXc6tiG.cjs.js.map
15366
+ //# sourceMappingURL=chunk-CNhef3wf.cjs.js.map