@elliemae/ds-wysiwygeditor 3.16.3 → 3.16.4-rc.0

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 (29) hide show
  1. package/dist/cjs/DSWYSIWYGEditor.js +0 -1
  2. package/dist/cjs/DSWYSIWYGEditor.js.map +2 -2
  3. package/dist/cjs/components/CustomToolbar.js +22 -1
  4. package/dist/cjs/components/CustomToolbar.js.map +2 -2
  5. package/dist/cjs/components/DSWYSIWYGEditorImpl.js +33 -81
  6. package/dist/cjs/components/DSWYSIWYGEditorImpl.js.map +3 -3
  7. package/dist/cjs/components/ImageLibraryModal.js +13 -13
  8. package/dist/cjs/components/ImageLibraryModal.js.map +3 -3
  9. package/dist/cjs/components/InsertFieldModal.js +13 -13
  10. package/dist/cjs/components/InsertFieldModal.js.map +3 -3
  11. package/dist/cjs/config/quillSingletonConfigurations.js +86 -0
  12. package/dist/cjs/config/quillSingletonConfigurations.js.map +7 -0
  13. package/dist/esm/DSWYSIWYGEditor.js +0 -1
  14. package/dist/esm/DSWYSIWYGEditor.js.map +2 -2
  15. package/dist/esm/components/CustomToolbar.js +22 -1
  16. package/dist/esm/components/CustomToolbar.js.map +2 -2
  17. package/dist/esm/components/DSWYSIWYGEditorImpl.js +33 -81
  18. package/dist/esm/components/DSWYSIWYGEditorImpl.js.map +2 -2
  19. package/dist/esm/components/ImageLibraryModal.js +1 -1
  20. package/dist/esm/components/ImageLibraryModal.js.map +2 -2
  21. package/dist/esm/components/InsertFieldModal.js +1 -1
  22. package/dist/esm/components/InsertFieldModal.js.map +2 -2
  23. package/dist/esm/config/quillSingletonConfigurations.js +56 -0
  24. package/dist/esm/config/quillSingletonConfigurations.js.map +7 -0
  25. package/dist/types/components/DSWYSIWYGEditorImpl.d.ts +2 -1
  26. package/dist/types/components/ImageLibraryModal.d.ts +5 -13
  27. package/dist/types/components/InsertFieldModal.d.ts +12 -13
  28. package/dist/types/config/quillSingletonConfigurations.d.ts +2 -0
  29. package/package.json +13 -16
@@ -57,7 +57,6 @@ const DSWYSIWYGEditor = ({
57
57
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
58
58
  import_DSWYSIWYGEditorImpl.default,
59
59
  {
60
- forceHttpLink: true,
61
60
  handleCustomFieldClick: emptyAction,
62
61
  handleImageClick: emptyAction,
63
62
  quillOverrides: [],
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/DSWYSIWYGEditor.tsx", "../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useState, useEffect } from 'react';\nimport { describe, PropTypes } from '@elliemae/ds-props-helpers';\nimport DSWYSIWYGEditorImpl from './components/DSWYSIWYGEditorImpl.js';\n\nconst DSWYSIWYGEditor = ({\n value = '',\n onChange = () => null,\n getQuillRef = () => null,\n quillModules = {},\n customToolbar,\n toolbarHandlers,\n showRawHTML = false,\n height,\n hideItems,\n ...rest\n}) => {\n const emptyAction = () => {};\n const [showHTML, setShowHTML] = useState(showRawHTML);\n\n useEffect(() => setShowHTML(showRawHTML), [showRawHTML]);\n\n return (\n <DSWYSIWYGEditorImpl\n forceHttpLink\n handleCustomFieldClick={emptyAction}\n handleImageClick={emptyAction}\n quillOverrides={[]}\n value={value}\n onChange={onChange}\n getQuillRef={getQuillRef}\n quillModules={quillModules}\n customToolbar={customToolbar}\n toolbarHandlers={toolbarHandlers}\n showRawHTML={showHTML}\n onShowHTML={() => setShowHTML(!showHTML)}\n height={height}\n hideItems={hideItems}\n {...rest}\n />\n );\n};\n\nconst wysiwygEditorProps = {\n value: PropTypes.string.description('editors value').isRequired,\n onChange: PropTypes.func.description(\n `(content, delta, source, editor) : Called back with the new contents of the editor after change. \n It will be passed the HTML contents of the editor, a delta object expressing the change, the source of the change, and finally a read-only proxy to editor accessors such as getHTML(). \n \u26A0\uFE0F Do not use this delta object as value, as it will cause a loop. \n Use editor.getContents() instead. See Using Deltas for details. \n Read more: https://github.com/zenoamaro/react-quill#props`,\n ).isRequired,\n getQuillRef: PropTypes.func.description('function to use quill.js ref'),\n quillModules: PropTypes.object.description('object to override quill modules'),\n customToolbar: PropTypes.element.description('custom toolbar'),\n toolbarHandlers: PropTypes.object.description('object with toolbar handlers'),\n showRawHTML: PropTypes.bool.description('whether to display html view or not').defaultValue(false),\n height: PropTypes.string.description('heigth of the editors text area'),\n readOnly: PropTypes.string.description(\n \"If true, the editor won't allow changing its contents. Wraps the Quill disable API.\",\n ),\n hideItems: PropTypes.object.description('object of defaultItems to be removed from toolbar').defaultValue({}),\n zIndex: PropTypes.number.description(\n 'zIndex to be used (required when used in a modal for correct tooltips displaying)',\n ),\n};\n\nDSWYSIWYGEditor.propTypes = wysiwygEditorProps;\nDSWYSIWYGEditor.displayName = 'DSWYSIWYGEditor';\nconst WYSIWYWithSchema = describe(DSWYSIWYGEditor);\nWYSIWYWithSchema.propTypes = wysiwygEditorProps;\n\nexport { WYSIWYWithSchema, DSWYSIWYGEditor };\nexport default DSWYSIWYGEditor;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsBnB;AAtBJ,mBAA2C;AAC3C,8BAAoC;AACpC,iCAAgC;AAEhC,MAAM,kBAAkB,CAAC;AAAA,EACvB,QAAQ;AAAA,EACR,WAAW,MAAM;AAAA,EACjB,cAAc,MAAM;AAAA,EACpB,eAAe,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,MAAM;AAAA,EAAC;AAC3B,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,WAAW;AAEpD,8BAAU,MAAM,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;AAEvD,SACE;AAAA,IAAC,2BAAAA;AAAA,IAAA;AAAA,MACC,eAAa;AAAA,MACb,wBAAwB;AAAA,MACxB,kBAAkB;AAAA,MAClB,gBAAgB,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,YAAY,MAAM,YAAY,CAAC,QAAQ;AAAA,MACvC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,qBAAqB;AAAA,EACzB,OAAO,kCAAU,OAAO,YAAY,eAAe,EAAE;AAAA,EACrD,UAAU,kCAAU,KAAK;AAAA,IACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EAAE;AAAA,EACF,aAAa,kCAAU,KAAK,YAAY,8BAA8B;AAAA,EACtE,cAAc,kCAAU,OAAO,YAAY,kCAAkC;AAAA,EAC7E,eAAe,kCAAU,QAAQ,YAAY,gBAAgB;AAAA,EAC7D,iBAAiB,kCAAU,OAAO,YAAY,8BAA8B;AAAA,EAC5E,aAAa,kCAAU,KAAK,YAAY,qCAAqC,EAAE,aAAa,KAAK;AAAA,EACjG,QAAQ,kCAAU,OAAO,YAAY,iCAAiC;AAAA,EACtE,UAAU,kCAAU,OAAO;AAAA,IACzB;AAAA,EACF;AAAA,EACA,WAAW,kCAAU,OAAO,YAAY,mDAAmD,EAAE,aAAa,CAAC,CAAC;AAAA,EAC5G,QAAQ,kCAAU,OAAO;AAAA,IACvB;AAAA,EACF;AACF;AAEA,gBAAgB,YAAY;AAC5B,gBAAgB,cAAc;AAC9B,MAAM,uBAAmB,kCAAS,eAAe;AACjD,iBAAiB,YAAY;AAG7B,IAAO,0BAAQ;",
4
+ "sourcesContent": ["import React, { useState, useEffect } from 'react';\nimport { describe, PropTypes } from '@elliemae/ds-props-helpers';\nimport DSWYSIWYGEditorImpl from './components/DSWYSIWYGEditorImpl.js';\n\nconst DSWYSIWYGEditor = ({\n value = '',\n onChange = () => null,\n getQuillRef = () => null,\n quillModules = {},\n customToolbar,\n toolbarHandlers,\n showRawHTML = false,\n height,\n hideItems,\n ...rest\n}) => {\n const emptyAction = () => {};\n const [showHTML, setShowHTML] = useState(showRawHTML);\n\n useEffect(() => setShowHTML(showRawHTML), [showRawHTML]);\n\n return (\n <DSWYSIWYGEditorImpl\n handleCustomFieldClick={emptyAction}\n handleImageClick={emptyAction}\n quillOverrides={[]}\n value={value}\n onChange={onChange}\n getQuillRef={getQuillRef}\n quillModules={quillModules}\n customToolbar={customToolbar}\n toolbarHandlers={toolbarHandlers}\n showRawHTML={showHTML}\n onShowHTML={() => setShowHTML(!showHTML)}\n height={height}\n hideItems={hideItems}\n {...rest}\n />\n );\n};\n\nconst wysiwygEditorProps = {\n value: PropTypes.string.description('editors value').isRequired,\n onChange: PropTypes.func.description(\n `(content, delta, source, editor) : Called back with the new contents of the editor after change. \n It will be passed the HTML contents of the editor, a delta object expressing the change, the source of the change, and finally a read-only proxy to editor accessors such as getHTML(). \n \u26A0\uFE0F Do not use this delta object as value, as it will cause a loop. \n Use editor.getContents() instead. See Using Deltas for details. \n Read more: https://github.com/zenoamaro/react-quill#props`,\n ).isRequired,\n getQuillRef: PropTypes.func.description('function to use quill.js ref'),\n quillModules: PropTypes.object.description('object to override quill modules'),\n customToolbar: PropTypes.element.description('custom toolbar'),\n toolbarHandlers: PropTypes.object.description('object with toolbar handlers'),\n showRawHTML: PropTypes.bool.description('whether to display html view or not').defaultValue(false),\n height: PropTypes.string.description('heigth of the editors text area'),\n readOnly: PropTypes.string.description(\n \"If true, the editor won't allow changing its contents. Wraps the Quill disable API.\",\n ),\n hideItems: PropTypes.object.description('object of defaultItems to be removed from toolbar').defaultValue({}),\n zIndex: PropTypes.number.description(\n 'zIndex to be used (required when used in a modal for correct tooltips displaying)',\n ),\n};\n\nDSWYSIWYGEditor.propTypes = wysiwygEditorProps;\nDSWYSIWYGEditor.displayName = 'DSWYSIWYGEditor';\nconst WYSIWYWithSchema = describe(DSWYSIWYGEditor);\nWYSIWYWithSchema.propTypes = wysiwygEditorProps;\n\nexport { WYSIWYWithSchema, DSWYSIWYGEditor };\nexport default DSWYSIWYGEditor;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsBnB;AAtBJ,mBAA2C;AAC3C,8BAAoC;AACpC,iCAAgC;AAEhC,MAAM,kBAAkB,CAAC;AAAA,EACvB,QAAQ;AAAA,EACR,WAAW,MAAM;AAAA,EACjB,cAAc,MAAM;AAAA,EACpB,eAAe,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,cAAc,MAAM;AAAA,EAAC;AAC3B,QAAM,CAAC,UAAU,WAAW,QAAI,uBAAS,WAAW;AAEpD,8BAAU,MAAM,YAAY,WAAW,GAAG,CAAC,WAAW,CAAC;AAEvD,SACE;AAAA,IAAC,2BAAAA;AAAA,IAAA;AAAA,MACC,wBAAwB;AAAA,MACxB,kBAAkB;AAAA,MAClB,gBAAgB,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAa;AAAA,MACb,YAAY,MAAM,YAAY,CAAC,QAAQ;AAAA,MACvC;AAAA,MACA;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,MAAM,qBAAqB;AAAA,EACzB,OAAO,kCAAU,OAAO,YAAY,eAAe,EAAE;AAAA,EACrD,UAAU,kCAAU,KAAK;AAAA,IACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EAAE;AAAA,EACF,aAAa,kCAAU,KAAK,YAAY,8BAA8B;AAAA,EACtE,cAAc,kCAAU,OAAO,YAAY,kCAAkC;AAAA,EAC7E,eAAe,kCAAU,QAAQ,YAAY,gBAAgB;AAAA,EAC7D,iBAAiB,kCAAU,OAAO,YAAY,8BAA8B;AAAA,EAC5E,aAAa,kCAAU,KAAK,YAAY,qCAAqC,EAAE,aAAa,KAAK;AAAA,EACjG,QAAQ,kCAAU,OAAO,YAAY,iCAAiC;AAAA,EACtE,UAAU,kCAAU,OAAO;AAAA,IACzB;AAAA,EACF;AAAA,EACA,WAAW,kCAAU,OAAO,YAAY,mDAAmD,EAAE,aAAa,CAAC,CAAC;AAAA,EAC5G,QAAQ,kCAAU,OAAO;AAAA,IACvB;AAAA,EACF;AACF;AAEA,gBAAgB,YAAY;AAC5B,gBAAgB,cAAc;AAC9B,MAAM,uBAAmB,kCAAS,eAAe;AACjD,iBAAiB,YAAY;AAG7B,IAAO,0BAAQ;",
6
6
  "names": ["DSWYSIWYGEditorImpl"]
7
7
  }
@@ -184,7 +184,28 @@ const CustomToolbar = ({
184
184
  !INDENT_PLUS_ONE && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TippedButton.TippedButton, { zIndex: userProps?.zIndex || 1, className: "ql-indent", tip: "Indent +1", value: "+1" })
185
185
  ] }),
186
186
  !ALIGN && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "ql-formats", children: [
187
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TippedSelect.TippedSelect, { zIndex: userProps?.zIndex || 1, className: "ql-align", tip: "Align" }),
187
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "ql-formats", children: [
188
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TippedButton.TippedButton, { zIndex: userProps?.zIndex || 1, className: "ql-align", tip: "Left", value: "" }),
189
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
190
+ import_TippedButton.TippedButton,
191
+ {
192
+ zIndex: userProps?.zIndex || 1,
193
+ className: "ql-align",
194
+ tip: "Center",
195
+ value: "center"
196
+ }
197
+ ),
198
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_TippedButton.TippedButton, { zIndex: userProps?.zIndex || 1, className: "ql-align", tip: "Right", value: "right" }),
199
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
200
+ import_TippedButton.TippedButton,
201
+ {
202
+ zIndex: userProps?.zIndex || 1,
203
+ className: "ql-align",
204
+ tip: "Justify",
205
+ value: "justify"
206
+ }
207
+ )
208
+ ] }),
188
209
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Divider, {})
189
210
  ] }),
190
211
  (!FONT_COLOR || !FONT_BACKGROUND_COLOR) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "ql-formats", children: [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/CustomToolbar.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/control-has-associated-label */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\n/* eslint-disable react/button-has-type */\nimport React, { useState } from 'react';\nimport DSButton from '@elliemae/ds-button';\nimport { ArrowheadDown } from '@elliemae/ds-icons';\nimport DSDropdownMenu from '@elliemae/ds-dropdownmenu';\nimport { colors, fonts, sizes, sizesReal } from '../constants.js';\nimport { TippedButton } from './TippedButton.js';\nimport { TippedSelect } from './TippedSelect.js';\n\n// Functions -----------------------------------------\nconst optionsToValues = (options) => options.map((opt) => opt.toLowerCase().replace(' ', '-'));\n\n// Stateless Components -----------------------------------------\n\nconst CustomFields = () => <span>\u1438\u1433</span>; // eslint-disable-line react/jsx-one-expression-per-line\nconst Color = ({ color }) => <option value={color} />;\nconst Colors = ({ className, tip, zIndex }) => (\n <TippedSelect className={className} tip={tip} zIndex={zIndex}>\n {colors.map((color) => (\n <Color key={color} color={color} />\n ))}\n </TippedSelect>\n);\n\nexport const CustomDropdown = ({\n options,\n label,\n onSelectMenuItem = () => null,\n onClickOutsideMenu = () => null,\n onClose = () => null,\n closeMenuOnItemSelection,\n isOpen,\n minWidth,\n maxWidth,\n zIndex = 10,\n}) => (\n <DSDropdownMenu\n onClickOutsideMenu={onClickOutsideMenu}\n options={options}\n onSelectMenuItem={onSelectMenuItem}\n onClose={onClose}\n closeMenuOnItemSelection={closeMenuOnItemSelection}\n isOpen={isOpen}\n minWidth={minWidth}\n maxWidth={maxWidth}\n zIndex={zIndex}\n preventOverflow=\"scrollParent\"\n triggerComponent={<DSButton labelText={label} buttonType=\"text\" icon={<ArrowheadDown />} />}\n />\n);\n\nconst Divider = () => (\n <div\n style={{\n height: '21px',\n width: '1px',\n margin: '0 10px',\n padding: '0',\n borderLeft: '1px solid #bbb',\n display: 'inline-block',\n }}\n ></div>\n);\n\nexport const CustomToolbar = ({\n customFields,\n customItems = [],\n hideItems = {},\n onShowHTML = () => {},\n id = 'toolbar',\n userProps,\n}) => {\n const {\n HEADER,\n FONT,\n FONT_SIZE,\n BOLD,\n ITALIC,\n UNDERLINE,\n STRIKE,\n SUB,\n SUPER,\n ORDERED_LIST,\n BULLET_LIST,\n INDENT_MINUS_ONE,\n INDENT_PLUS_ONE,\n ALIGN,\n FONT_COLOR,\n FONT_BACKGROUND_COLOR,\n HYPERLINK,\n IMAGE,\n CLEAR_FORMAT,\n SHOW_HTML,\n } = hideItems;\n const [showHTML, setShowHTML] = useState(false);\n\n const handleShowHTML = (e) => {\n e.preventDefault();\n setShowHTML(!showHTML);\n onShowHTML();\n };\n\n return (\n <div id={id} className=\"ds-ql-custom-toolbar\">\n {(!HEADER || !FONT || !FONT_SIZE) && (\n <span className=\"ql-formats\">\n {!HEADER && (\n <>\n <TippedSelect\n className=\"ql-header\"\n tip=\"Header\"\n values={['', '1', '2', '3', '4', '5', '6']}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n {!FONT && (\n <>\n <TippedSelect\n className=\"ql-font\"\n defaultValue=\"sans-serif\"\n options={fonts}\n tip=\"Font\"\n values={optionsToValues(fonts)}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n {!FONT_SIZE && (\n <>\n <TippedSelect\n className=\"ql-size\"\n options={sizes}\n tip=\"Font Size\"\n values={optionsToValues(sizesReal)}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n </span>\n )}\n {(!BOLD || !ITALIC || !UNDERLINE || !STRIKE) && (\n <span className=\"ql-formats\">\n {!BOLD && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-bold\" tip=\"Bold\" />}\n {!ITALIC && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-italic\" tip=\"Italic\" />}\n {!UNDERLINE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-underline\" tip=\"Underline\" />}\n {!STRIKE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-strike\" tip=\"Strike\" />}\n </span>\n )}\n {(!SUB || !SUPER) && (\n <span className=\"ql-formats\">\n {!SUB && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-script\" tip=\"Sub\" value=\"sub\" />}\n {!SUPER && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-script\" tip=\"Super\" value=\"super\" />}\n <Divider />\n </span>\n )}\n {(!ORDERED_LIST || !BULLET_LIST) && (\n <span className=\"ql-formats\">\n {!ORDERED_LIST && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-list\" tip=\"Ordered List\" value=\"ordered\" />\n )}\n {!BULLET_LIST && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-list\" tip=\"Bullet List\" value=\"bullet\" />\n )}\n </span>\n )}\n {(!INDENT_MINUS_ONE || !INDENT_PLUS_ONE) && (\n <span className=\"ql-formats\">\n {!INDENT_MINUS_ONE && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-indent\" tip=\"Indent -1\" value=\"-1\" />\n )}\n {!INDENT_PLUS_ONE && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-indent\" tip=\"Indent +1\" value=\"+1\" />\n )}\n </span>\n )}\n {!ALIGN && (\n <span className=\"ql-formats\">\n <TippedSelect zIndex={userProps?.zIndex || 1} className=\"ql-align\" tip=\"Align\" />\n <Divider />\n </span>\n )}\n {(!FONT_COLOR || !FONT_BACKGROUND_COLOR) && (\n <span className=\"ql-formats\">\n {!FONT_COLOR && <Colors zIndex={userProps?.zIndex || 1} className=\"ql-color\" tip=\"Font Color\" />}\n {!FONT_BACKGROUND_COLOR && (\n <Colors zIndex={userProps?.zIndex || 1} className=\"ql-background\" tip=\"Font Background Color\" />\n )}\n <Divider />\n </span>\n )}\n {(!HYPERLINK || !IMAGE) && (\n <span className=\"ql-formats\">\n {!HYPERLINK && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-link\" tip=\"Hyperlink: Select Text First\" />\n )}\n {!IMAGE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-image\" tip=\"Insert Image\" />}\n <Divider />\n </span>\n )}\n {!CLEAR_FORMAT && (\n <span className=\"ql-formats\">\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-clean\" tip=\"Clear Format (Select Text)\" />\n </span>\n )}\n {!SHOW_HTML && (\n <span className=\"ql-formats\">\n <Divider />\n <TippedButton\n zIndex={userProps?.zIndex || 1}\n style={{\n width: 'fit-content',\n color: '#1e79c2',\n fontWeight: '500',\n }}\n onClick={handleShowHTML}\n tip={showHTML ? 'SHOW TEXT' : 'SHOW HTML'}\n className=\"ql-customFields-html\"\n >\n {showHTML ? 'SHOW TEXT' : 'SHOW HTML'}\n </TippedButton>\n </span>\n )}\n {customFields && (\n <span className=\"ql-formats\">\n <Divider />\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-customFields\" tip=\"Insert Custom Field\">\n <CustomFields />\n </TippedButton>\n </span>\n )}\n {customItems && (\n <span style={{ display: 'inline-flex' }}>\n {customItems.map((Item) => (\n <>\n <Divider />\n <Item />\n </>\n ))}\n </span>\n )}\n </div>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable complexity */\n/* eslint-disable jsx-a11y/control-has-associated-label */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\n/* eslint-disable react/button-has-type */\nimport React, { useState } from 'react';\nimport DSButton from '@elliemae/ds-button';\nimport { ArrowheadDown } from '@elliemae/ds-icons';\nimport DSDropdownMenu from '@elliemae/ds-dropdownmenu';\nimport { colors, fonts, sizes, sizesReal } from '../constants.js';\nimport { TippedButton } from './TippedButton.js';\nimport { TippedSelect } from './TippedSelect.js';\n\n// Functions -----------------------------------------\nconst optionsToValues = (options) => options.map((opt) => opt.toLowerCase().replace(' ', '-'));\n\n// Stateless Components -----------------------------------------\n\nconst CustomFields = () => <span>\u1438\u1433</span>; // eslint-disable-line react/jsx-one-expression-per-line\nconst Color = ({ color }) => <option value={color} />;\nconst Colors = ({ className, tip, zIndex }) => (\n <TippedSelect className={className} tip={tip} zIndex={zIndex}>\n {colors.map((color) => (\n <Color key={color} color={color} />\n ))}\n </TippedSelect>\n);\n\nexport const CustomDropdown = ({\n options,\n label,\n onSelectMenuItem = () => null,\n onClickOutsideMenu = () => null,\n onClose = () => null,\n closeMenuOnItemSelection,\n isOpen,\n minWidth,\n maxWidth,\n zIndex = 10,\n}) => (\n <DSDropdownMenu\n onClickOutsideMenu={onClickOutsideMenu}\n options={options}\n onSelectMenuItem={onSelectMenuItem}\n onClose={onClose}\n closeMenuOnItemSelection={closeMenuOnItemSelection}\n isOpen={isOpen}\n minWidth={minWidth}\n maxWidth={maxWidth}\n zIndex={zIndex}\n preventOverflow=\"scrollParent\"\n triggerComponent={<DSButton labelText={label} buttonType=\"text\" icon={<ArrowheadDown />} />}\n />\n);\n\nconst Divider = () => (\n <div\n style={{\n height: '21px',\n width: '1px',\n margin: '0 10px',\n padding: '0',\n borderLeft: '1px solid #bbb',\n display: 'inline-block',\n }}\n ></div>\n);\n\nexport const CustomToolbar = ({\n customFields,\n customItems = [],\n hideItems = {},\n onShowHTML = () => {},\n id = 'toolbar',\n userProps,\n}) => {\n const {\n HEADER,\n FONT,\n FONT_SIZE,\n BOLD,\n ITALIC,\n UNDERLINE,\n STRIKE,\n SUB,\n SUPER,\n ORDERED_LIST,\n BULLET_LIST,\n INDENT_MINUS_ONE,\n INDENT_PLUS_ONE,\n ALIGN,\n FONT_COLOR,\n FONT_BACKGROUND_COLOR,\n HYPERLINK,\n IMAGE,\n CLEAR_FORMAT,\n SHOW_HTML,\n } = hideItems;\n const [showHTML, setShowHTML] = useState(false);\n\n const handleShowHTML = (e) => {\n e.preventDefault();\n setShowHTML(!showHTML);\n onShowHTML();\n };\n\n return (\n <div id={id} className=\"ds-ql-custom-toolbar\">\n {(!HEADER || !FONT || !FONT_SIZE) && (\n <span className=\"ql-formats\">\n {!HEADER && (\n <>\n <TippedSelect\n className=\"ql-header\"\n tip=\"Header\"\n values={['', '1', '2', '3', '4', '5', '6']}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n {!FONT && (\n <>\n <TippedSelect\n className=\"ql-font\"\n defaultValue=\"sans-serif\"\n options={fonts}\n tip=\"Font\"\n values={optionsToValues(fonts)}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n {!FONT_SIZE && (\n <>\n <TippedSelect\n className=\"ql-size\"\n options={sizes}\n tip=\"Font Size\"\n values={optionsToValues(sizesReal)}\n zIndex={userProps?.zIndex || 1}\n />\n <Divider />\n </>\n )}\n </span>\n )}\n {(!BOLD || !ITALIC || !UNDERLINE || !STRIKE) && (\n <span className=\"ql-formats\">\n {!BOLD && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-bold\" tip=\"Bold\" />}\n {!ITALIC && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-italic\" tip=\"Italic\" />}\n {!UNDERLINE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-underline\" tip=\"Underline\" />}\n {!STRIKE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-strike\" tip=\"Strike\" />}\n </span>\n )}\n {(!SUB || !SUPER) && (\n <span className=\"ql-formats\">\n {!SUB && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-script\" tip=\"Sub\" value=\"sub\" />}\n {!SUPER && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-script\" tip=\"Super\" value=\"super\" />}\n <Divider />\n </span>\n )}\n {(!ORDERED_LIST || !BULLET_LIST) && (\n <span className=\"ql-formats\">\n {!ORDERED_LIST && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-list\" tip=\"Ordered List\" value=\"ordered\" />\n )}\n {!BULLET_LIST && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-list\" tip=\"Bullet List\" value=\"bullet\" />\n )}\n </span>\n )}\n {(!INDENT_MINUS_ONE || !INDENT_PLUS_ONE) && (\n <span className=\"ql-formats\">\n {!INDENT_MINUS_ONE && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-indent\" tip=\"Indent -1\" value=\"-1\" />\n )}\n {!INDENT_PLUS_ONE && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-indent\" tip=\"Indent +1\" value=\"+1\" />\n )}\n </span>\n )}\n {!ALIGN && (\n <span className=\"ql-formats\">\n {/* <TippedSelect zIndex={userProps?.zIndex || 1} className=\"ql-align\" tip=\"Align\"/> */}\n {/* \n quill js has a bug where using ql-align with the html tag \"select\" leave us with a can not read property innerhtml of undefined\n we can't update quill js because it's a peer dependency of react-quill\n this is a workaround to keep provide the ql-align module but not use the html tag \"select\"\n */}\n <span className=\"ql-formats\">\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-align\" tip=\"Left\" value=\"\"></TippedButton>\n <TippedButton\n zIndex={userProps?.zIndex || 1}\n className=\"ql-align\"\n tip=\"Center\"\n value=\"center\"\n ></TippedButton>\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-align\" tip=\"Right\" value=\"right\"></TippedButton>\n <TippedButton\n zIndex={userProps?.zIndex || 1}\n className=\"ql-align\"\n tip=\"Justify\"\n value=\"justify\"\n ></TippedButton>\n </span>\n <Divider />\n </span>\n )}\n {(!FONT_COLOR || !FONT_BACKGROUND_COLOR) && (\n <span className=\"ql-formats\">\n {!FONT_COLOR && <Colors zIndex={userProps?.zIndex || 1} className=\"ql-color\" tip=\"Font Color\" />}\n {!FONT_BACKGROUND_COLOR && (\n <Colors zIndex={userProps?.zIndex || 1} className=\"ql-background\" tip=\"Font Background Color\" />\n )}\n <Divider />\n </span>\n )}\n {(!HYPERLINK || !IMAGE) && (\n <span className=\"ql-formats\">\n {!HYPERLINK && (\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-link\" tip=\"Hyperlink: Select Text First\" />\n )}\n {!IMAGE && <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-image\" tip=\"Insert Image\" />}\n <Divider />\n </span>\n )}\n {!CLEAR_FORMAT && (\n <span className=\"ql-formats\">\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-clean\" tip=\"Clear Format (Select Text)\" />\n </span>\n )}\n {!SHOW_HTML && (\n <span className=\"ql-formats\">\n <Divider />\n <TippedButton\n zIndex={userProps?.zIndex || 1}\n style={{\n width: 'fit-content',\n color: '#1e79c2',\n fontWeight: '500',\n }}\n onClick={handleShowHTML}\n tip={showHTML ? 'SHOW TEXT' : 'SHOW HTML'}\n className=\"ql-customFields-html\"\n >\n {showHTML ? 'SHOW TEXT' : 'SHOW HTML'}\n </TippedButton>\n </span>\n )}\n {customFields && (\n <span className=\"ql-formats\">\n <Divider />\n <TippedButton zIndex={userProps?.zIndex || 1} className=\"ql-customFields\" tip=\"Insert Custom Field\">\n <CustomFields />\n </TippedButton>\n </span>\n )}\n {customItems && (\n <span style={{ display: 'inline-flex' }}>\n {customItems.map((Item) => (\n <>\n <Divider />\n <Item />\n </>\n ))}\n </span>\n )}\n </div>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
6
  "names": ["DSDropdownMenu", "DSButton"]
7
7
  }
@@ -35,65 +35,16 @@ var React = __toESM(require("react"));
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_react_quill = __toESM(require("react-quill"));
38
- var import_quill_blot_formatter = __toESM(require("quill-blot-formatter"));
38
+ var import_uid = require("uid");
39
39
  var import_ImageLibraryModal = __toESM(require("./ImageLibraryModal.js"));
40
40
  var import_InsertFieldModal = __toESM(require("./InsertFieldModal.js"));
41
41
  var import_CustomToolbar = require("./CustomToolbar.js");
42
- var import_IndentStyle = __toESM(require("../quillOverrides/IndentStyle.js"));
43
- var import_LinkFormat = __toESM(require("../quillOverrides/LinkFormat.js"));
44
- var import_Image = __toESM(require("../quillOverrides/Image.js"));
45
42
  var import_utils = require("../utils.js");
46
43
  var import_clipboardLinkWithTagMatcher = require("../quillMatchers/clipboardLinkWithTagMatcher.js");
47
- var import_uid = require("uid");
48
- import_react_quill.Quill.register("modules/blotFormatter", import_quill_blot_formatter.default);
49
- const AlignStyle = import_react_quill.Quill.import("attributors/style/align");
50
- const FontStyle = import_react_quill.Quill.import("attributors/style/font");
51
- FontStyle.whitelist = [
52
- // allow ONLY these fonts and the default
53
- "serif",
54
- "monospace",
55
- "arial",
56
- "comic-sans",
57
- "courier-new",
58
- "georgia",
59
- "helvetica",
60
- "lucida"
61
- ];
62
- const SizeStyle = import_react_quill.Quill.import("attributors/style/size");
63
- SizeStyle.whitelist = [
64
- // allow ONLY these sizes and the default
65
- "x-small",
66
- "large",
67
- "x-large"
68
- ];
69
- const Block = import_react_quill.Quill.import("blots/block");
70
- Block.tagName = "p";
71
- import_react_quill.Quill.register(Block);
72
- import_react_quill.Quill.register(AlignStyle, true);
73
- import_react_quill.Quill.register(import_IndentStyle.default, true);
74
- import_react_quill.Quill.register(FontStyle, true);
75
- import_react_quill.Quill.register(SizeStyle, true);
76
- import_react_quill.Quill.register(import_Image.default, true);
44
+ var import_quillSingletonConfigurations = __toESM(require("../config/quillSingletonConfigurations.js"));
77
45
  class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
78
46
  constructor(props) {
79
47
  super(props);
80
- this.quillModules = {
81
- toolbar: {
82
- container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : "#toolbar",
83
- handlers: {
84
- ...this.props.toolbarHandlers
85
- }
86
- },
87
- clipboard: {
88
- // toggle to add extra line breaks when pasting HTML:
89
- matchVisual: false
90
- },
91
- // this next line breaks the component with the last version 2.0.0
92
- // blotFormatter: {
93
- // options... https://github.com/Fandom-OSS/quill-blot-formatter
94
- // },
95
- ...this.props.quillModules
96
- };
97
48
  this.getEditor = () => this.quill?.getEditor();
98
49
  // eslint-disable-next-line max-params
99
50
  this.onChangeQuill = (html, delta, source, editor) => {
@@ -126,20 +77,40 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
126
77
  this.setState({ isImageModalOpen: false });
127
78
  };
128
79
  this.quillRef = (ref) => {
80
+ const editor = ref?.getEditor();
81
+ if (this.getEditor() !== editor) {
82
+ editor?.clipboard.addMatcher("a", import_clipboardLinkWithTagMatcher.clipboardLinkWithTagMatcher);
83
+ }
84
+ this.props.getQuillRef(ref);
129
85
  this.quill = ref;
130
86
  };
131
- import_react_quill.Quill.register(import_LinkFormat.default, true);
87
+ this.quill = void 0;
88
+ const instanceUid = (0, import_uid.uid)(12);
89
+ const uniqueClassName = `ds-wysiwyg-editor-${instanceUid}`;
90
+ const quillModules = {
91
+ toolbar: {
92
+ container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : `#toolbar-${uniqueClassName}`,
93
+ handlers: {
94
+ ...this.props.toolbarHandlers
95
+ }
96
+ },
97
+ clipboard: {
98
+ // toggle to add extra line breaks when pasting HTML:
99
+ matchVisual: false
100
+ },
101
+ ...this.props.quillModules
102
+ };
132
103
  if (props.quillOverrides.length) {
133
- props.quillOverrides.map((override) => import_react_quill.Quill.register(override, true));
104
+ props.quillOverrides.map((override) => import_quillSingletonConfigurations.default.register(override, true));
134
105
  }
135
- const instanceUid = (0, import_uid.uid)(12);
136
106
  this.state = {
137
107
  isImageModalOpen: false,
138
108
  isFieldModalOpen: false,
139
109
  uid: instanceUid,
140
- uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`
110
+ uniqueClassName,
111
+ quillModules
141
112
  };
142
- const { toolbar } = this.quillModules;
113
+ const { toolbar } = quillModules;
143
114
  if (props.imagesData) {
144
115
  toolbar.handlers.image = (value) => {
145
116
  const { imagesData, handleImageClick } = this.props;
@@ -162,12 +133,6 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
162
133
  }
163
134
  }
164
135
  componentDidMount() {
165
- setTimeout(() => {
166
- const quillDomRef = this.quill;
167
- this.props.getQuillRef(quillDomRef);
168
- const editor = quillDomRef?.getEditor();
169
- editor?.clipboard.addMatcher("a", import_clipboardLinkWithTagMatcher.clipboardLinkWithTagMatcher);
170
- });
171
136
  }
172
137
  render() {
173
138
  const { isFieldModalOpen, isImageModalOpen } = this.state;
@@ -181,32 +146,19 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
181
146
  showRawHTML,
182
147
  onShowHTML,
183
148
  hideItems,
184
- bounds,
149
+ // bounds,
185
150
  // a bunch of props we don't want to pass to the editor
186
151
  onChange,
187
152
  handleImageClick,
188
153
  handleCustomFieldClick,
189
154
  ...editorProps
190
155
  } = this.props;
191
- let finalBoundElement = document.body;
192
- if (typeof bounds !== "undefined" && // there is no sure-fire way to check if something is a DOM element
193
- // checking classList existance && that it's an instance of DOMTokenList is a close enough check for most cases
194
- bounds?.classList && bounds?.classList instanceof DOMTokenList) {
195
- finalBoundElement = bounds;
196
- }
197
- const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);
198
- elementsWithClass.forEach((element) => {
199
- element.classList.remove(this.state.uniqueClassName);
200
- });
201
- if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {
202
- finalBoundElement.classList.add(this.state.uniqueClassName);
203
- }
204
- const boundsWorkaround = `.${this.state.uniqueClassName}`;
205
156
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
206
157
  "div",
207
158
  {
208
159
  ...containerProps,
209
160
  className: `quill-wysiwyg-editor ${showRawHTML ? "show-raw" : ""}`,
161
+ "data-uid": this.state.uid,
210
162
  children: [
211
163
  customToolbar || /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
212
164
  import_CustomToolbar.CustomToolbar,
@@ -214,23 +166,23 @@ class DSWYSIWYGEditorImpl extends import_react.default.PureComponent {
214
166
  customFields,
215
167
  onShowHTML,
216
168
  hideItems,
217
- userProps: this.props
169
+ userProps: this.props,
170
+ id: `toolbar-${this.state.uniqueClassName}`
218
171
  }
219
172
  ),
220
173
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
221
174
  import_react_quill.default,
222
175
  {
223
176
  ref: this.quillRef,
224
- modules: this.quillModules,
177
+ modules: this.state.quillModules,
225
178
  onChange: this.onChangeQuill,
226
179
  value,
227
180
  style: {
228
181
  height,
229
182
  borderBottom: "1px solid #ccc"
230
183
  },
231
- bounds: boundsWorkaround,
232
184
  ...editorProps,
233
- id: "wysiwyg-text-container"
185
+ id: `wysiwyg-text-container-${this.state.uid}`
234
186
  }
235
187
  ),
236
188
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/DSWYSIWYGEditorImpl.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill, { Quill } from 'react-quill';\nimport BlotFormatter from 'quill-blot-formatter';\nimport ImageLibraryModal from './ImageLibraryModal.js';\nimport InsertFieldModal from './InsertFieldModal.js';\nimport { CustomToolbar } from './CustomToolbar.js';\nimport IndentStyle from '../quillOverrides/IndentStyle.js';\nimport LinkFormat from '../quillOverrides/LinkFormat.js';\nimport Image from '../quillOverrides/Image.js';\nimport { formatHTML } from '../utils.js';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher.js';\nimport { uid } from 'uid';\n\n\nQuill.register('modules/blotFormatter', BlotFormatter);\n\n// Fix block styled formats ----------------\nconst AlignStyle = Quill.import('attributors/style/align');\nconst FontStyle = Quill.import('attributors/style/font');\nFontStyle.whitelist = [\n // allow ONLY these fonts and the default\n 'serif',\n 'monospace',\n 'arial',\n 'comic-sans',\n 'courier-new',\n 'georgia',\n 'helvetica',\n 'lucida',\n];\nconst SizeStyle = Quill.import('attributors/style/size');\nSizeStyle.whitelist = [\n // allow ONLY these sizes and the default\n 'x-small',\n 'large',\n 'x-large',\n];\n\n// Fix Doc Viewer p tags extra margin issue ---------\nconst Block = Quill.import('blots/block');\nBlock.tagName = 'p';\nQuill.register(Block);\n\nQuill.register(AlignStyle, true);\nQuill.register(IndentStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(SizeStyle, true);\n// -----------------------------------------\nQuill.register(Image, true);\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : '#toolbar',\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n // this next line breaks the component with the last version 2.0.0\n // blotFormatter: {\n // options... https://github.com/Fandom-OSS/quill-blot-formatter\n // },\n ...this.props.quillModules,\n };\n\n constructor(props) {\n super(props);\n Quill.register(LinkFormat, true);\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n const instanceUid = uid(12);\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n uid: instanceUid,\n uniqueClassName: `ds-wysiwyg-editor-${instanceUid}`,\n };\n const { toolbar } = this.quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {\n // this.quill doesn't exist untill the full call-stack execute\n // we need to \"setTimeout\" so this componentDidMount work as expected\n setTimeout(() => {\n const quillDomRef = this.quill;\n this.props.getQuillRef(quillDomRef);\n\n const editor = quillDomRef?.getEditor();\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n });\n }\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n // console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n height,\n value,\n showRawHTML,\n onShowHTML,\n hideItems,\n bounds,\n // a bunch of props we don't want to pass to the editor\n onChange,\n handleImageClick,\n handleCustomFieldClick,\n ...editorProps\n } = this.props;\n\n // workaround monkeypatch for quill bug, when bounds is set to element, it doesn't work\n // we force it to be a string instead and as such we make sure the css selector is present\n // by adding a class to the element if the bounds is set to element\n // adding a class to the body if the bounds is not set (default bounds is document.body)\n let finalBoundElement = document.body;\n if (\n typeof bounds !== 'undefined' &&\n // there is no sure-fire way to check if something is a DOM element\n // checking classList existance && that it's an instance of DOMTokenList is a close enough check for most cases\n bounds?.classList &&\n bounds?.classList instanceof DOMTokenList\n ) {\n finalBoundElement = bounds;\n }\n // we need to make sure only one element in the DOM has the class we are about to add\n // so we remove the class from all elements that have it before adding it to the finalBoundElement\n const elementsWithClass = document.querySelectorAll(`.${this.state.uniqueClassName}`);\n elementsWithClass.forEach((element) => {\n element.classList.remove(this.state.uniqueClassName);\n });\n\n if (!finalBoundElement.classList.contains(this.state.uniqueClassName)) {\n finalBoundElement.classList.add(this.state.uniqueClassName);\n }\n // we need to set the bounds to the class name we just added\n const boundsWorkaround = `.${this.state.uniqueClassName}`;\n\n return (\n <div\n // data-testid=\"wysiwyg-text-container\"\n {...containerProps}\n className={`quill-wysiwyg-editor ${showRawHTML ? 'show-raw' : ''}`}\n >\n {customToolbar || (\n <CustomToolbar\n customFields={customFields}\n onShowHTML={onShowHTML}\n hideItems={hideItems}\n userProps={this.props}\n />\n )}\n <ReactQuill\n ref={this.quillRef}\n modules={this.quillModules}\n onChange={this.onChangeQuill}\n value={value}\n style={{\n height,\n borderBottom: '1px solid #ccc',\n }}\n bounds={boundsWorkaround}\n {...editorProps}\n id=\"wysiwyg-text-container\"\n />\n <textarea\n className=\"raw-editor ql-container ql-snow ql-editor\"\n style={{\n width: '100%',\n resize: 'none',\n height,\n minHeight: '200px',\n }}\n onChange={this.onChangeTextArea}\n value={formatHTML(value)}\n />\n {imagesData && imagesData.length && (\n <ImageLibraryModal\n imagesData={imagesData}\n isOpen={isImageModalOpen}\n onClose={this.onImageModalClose}\n onConfirm={this.onImageConfirm}\n />\n )}\n {customFields && customFields.length && (\n <InsertFieldModal\n customFields={customFields}\n isOpen={isFieldModalOpen}\n onClose={this.onFieldModalClose}\n onConfirm={this.onInserFieldConfirm}\n />\n )}\n </div>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
6
- "names": ["BlotFormatter", "IndentStyle", "Image", "React", "LinkFormat", "ReactQuill", "ImageLibraryModal", "InsertFieldModal"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-return */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable complexity */\n/* eslint-disable react/prop-types */\n/* eslint-disable max-lines */\nimport React from 'react';\nimport ReactQuill from 'react-quill';\nimport { uid } from 'uid';\n\nimport ImageLibraryModal from './ImageLibraryModal.js';\nimport InsertFieldModal from './InsertFieldModal.js';\nimport { CustomToolbar } from './CustomToolbar.js';\nimport { formatHTML } from '../utils.js';\nimport { clipboardLinkWithTagMatcher } from '../quillMatchers/clipboardLinkWithTagMatcher.js';\nimport Quill from '../config/quillSingletonConfigurations.js';\n\nexport default class DSWYSIWYGEditorImpl extends React.PureComponent {\n quill: undefined | typeof ReactQuill;\n\n constructor(props) {\n super(props);\n this.quill = undefined; // this will hold the quill instance reference\n const instanceUid = uid(12);\n const uniqueClassName = `ds-wysiwyg-editor-${instanceUid}`;\n const quillModules = {\n toolbar: {\n container: this.props.toolbarContainer ? `#${this.props.toolbarContainer}` : `#toolbar-${uniqueClassName}`,\n handlers: {\n ...this.props.toolbarHandlers,\n },\n },\n clipboard: {\n // toggle to add extra line breaks when pasting HTML:\n matchVisual: false,\n },\n ...this.props.quillModules,\n };\n if (props.quillOverrides.length) {\n props.quillOverrides.map((override) => Quill.register(override, true));\n }\n this.state = {\n isImageModalOpen: false,\n isFieldModalOpen: false,\n uid: instanceUid,\n uniqueClassName,\n quillModules,\n };\n const { toolbar } = quillModules;\n if (props.imagesData) {\n toolbar.handlers.image = (value) => {\n const { imagesData, handleImageClick } = this.props;\n if (!imagesData.length) {\n return;\n }\n this.setState({ isImageModalOpen: !!value });\n handleImageClick(value);\n };\n }\n if (props.customFields) {\n toolbar.handlers.customFields = (value) => {\n const { customFields, handleCustomFieldClick } = this.props;\n if (!customFields.length) {\n return;\n }\n this.setState({ isFieldModalOpen: !!value });\n handleCustomFieldClick(value);\n };\n }\n }\n\n componentDidMount() {}\n\n getEditor = () => this.quill?.getEditor();\n\n // eslint-disable-next-line max-params\n onChangeQuill = (html, delta, source, editor) => {\n // console.log('quill detected a change');\n const { showRawHTML, onChange } = this.props;\n if (!showRawHTML) onChange(html, delta, source, editor);\n };\n\n onChangeTextArea = (e) => {\n const { showRawHTML, onChange } = this.props;\n if (showRawHTML) onChange(e.target.value);\n };\n\n onInserFieldConfirm = (fieldCode) => {\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertText(range.index, fieldCode);\n };\n\n onImageConfirm = (image) => {\n if (!image) {\n return;\n }\n const editor = this.getEditor();\n const range = editor.getSelection(true);\n editor.insertEmbed(range.index, 'image', image.url);\n };\n\n onFieldModalClose = () => {\n this.setState({ isFieldModalOpen: false });\n };\n\n onImageModalClose = () => {\n this.setState({ isImageModalOpen: false });\n };\n\n quillRef = (ref) => {\n const editor = ref?.getEditor();\n if (this.getEditor() !== editor) {\n // the underlying quill instance has changed\n // this may happens because it's the first render or for other reasons\n // but any instance configuration must happen again in this case\n\n // we add a clipboard matcher\n // https://github.com/quilljs/quill/issues/2677\n editor?.clipboard.addMatcher('a', clipboardLinkWithTagMatcher);\n }\n this.props.getQuillRef(ref);\n this.quill = ref;\n };\n\n render() {\n const { isFieldModalOpen, isImageModalOpen } = this.state;\n const {\n containerProps = {},\n customFields,\n imagesData,\n customToolbar,\n height,\n value,\n showRawHTML,\n onShowHTML,\n hideItems,\n // bounds,\n // a bunch of props we don't want to pass to the editor\n onChange,\n handleImageClick,\n handleCustomFieldClick,\n ...editorProps\n } = this.props;\n\n return (\n <div\n // data-testid=\"wysiwyg-text-container\"\n {...containerProps}\n className={`quill-wysiwyg-editor ${showRawHTML ? 'show-raw' : ''}`}\n data-uid={this.state.uid}\n >\n {customToolbar || (\n <CustomToolbar\n customFields={customFields}\n onShowHTML={onShowHTML}\n hideItems={hideItems}\n userProps={this.props}\n id={`toolbar-${this.state.uniqueClassName}`}\n />\n )}\n <ReactQuill\n ref={this.quillRef}\n modules={this.state.quillModules}\n onChange={this.onChangeQuill}\n value={value}\n style={{\n height,\n borderBottom: '1px solid #ccc',\n }}\n {...editorProps}\n id={`wysiwyg-text-container-${this.state.uid}`}\n />\n <textarea\n className=\"raw-editor ql-container ql-snow ql-editor\"\n style={{\n width: '100%',\n resize: 'none',\n height,\n minHeight: '200px',\n }}\n onChange={this.onChangeTextArea}\n value={formatHTML(value)}\n />\n {imagesData && imagesData.length && (\n <ImageLibraryModal\n imagesData={imagesData}\n isOpen={isImageModalOpen}\n onClose={this.onImageModalClose}\n onConfirm={this.onImageConfirm}\n />\n )}\n {customFields && customFields.length && (\n <InsertFieldModal\n customFields={customFields}\n isOpen={isFieldModalOpen}\n onClose={this.onFieldModalClose}\n onConfirm={this.onInserFieldConfirm}\n />\n )}\n </div>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "Quill", "ReactQuill", "ImageLibraryModal", "InsertFieldModal"]
7
7
  }
@@ -35,7 +35,7 @@ var React = __toESM(require("react"));
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
37
  var import_ds_imagelibrarymodal = __toESM(require("@elliemae/ds-imagelibrarymodal"));
38
- var import_prop_types = __toESM(require("prop-types"));
38
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
39
39
  class ImageLibraryModal extends import_react.default.PureComponent {
40
40
  constructor(props) {
41
41
  super(props);
@@ -57,20 +57,20 @@ class ImageLibraryModal extends import_react.default.PureComponent {
57
57
  }
58
58
  }
59
59
  ImageLibraryModal.propTypes = {
60
- onConfirm: import_prop_types.default.func.isRequired,
61
- onClose: import_prop_types.default.func.isRequired,
62
- onReject: import_prop_types.default.func,
63
- imagesData: import_prop_types.default.arrayOf(
64
- import_prop_types.default.shape({
65
- id: import_prop_types.default.string,
66
- url: import_prop_types.default.string.isRequired,
67
- name: import_prop_types.default.string.isRequired,
68
- description: import_prop_types.default.string,
69
- createdBy: import_prop_types.default.string.isRequired,
70
- createdDate: import_prop_types.default.string.isRequired
60
+ onConfirm: import_ds_props_helpers.PropTypes.func.isRequired,
61
+ onClose: import_ds_props_helpers.PropTypes.func.isRequired,
62
+ onReject: import_ds_props_helpers.PropTypes.func,
63
+ imagesData: import_ds_props_helpers.PropTypes.arrayOf(
64
+ import_ds_props_helpers.PropTypes.shape({
65
+ id: import_ds_props_helpers.PropTypes.string,
66
+ url: import_ds_props_helpers.PropTypes.string.isRequired,
67
+ name: import_ds_props_helpers.PropTypes.string.isRequired,
68
+ description: import_ds_props_helpers.PropTypes.string,
69
+ createdBy: import_ds_props_helpers.PropTypes.string.isRequired,
70
+ createdDate: import_ds_props_helpers.PropTypes.string.isRequired
71
71
  })
72
72
  ),
73
- isOpen: import_prop_types.default.bool.isRequired
73
+ isOpen: import_ds_props_helpers.PropTypes.bool.isRequired
74
74
  };
75
75
  ImageLibraryModal.defaultProps = {
76
76
  onReject: void 0,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/ImageLibraryModal.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React from 'react';\nimport DSImageLibraryModal from '@elliemae/ds-imagelibrarymodal';\nimport PropTypes from 'prop-types';\n\nexport default class ImageLibraryModal extends React.PureComponent {\n static propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onReject: PropTypes.func,\n imagesData: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string,\n createdBy: PropTypes.string.isRequired,\n createdDate: PropTypes.string.isRequired,\n }),\n ),\n isOpen: PropTypes.bool.isRequired,\n };\n\n static defaultProps = {\n onReject: undefined,\n imagesData: [\n {\n url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',\n name: 'no image',\n createdBy: 'user:John Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n {\n url: 'https://asset-service-bucket-int.s3.us-west-2.amazonaws.com/bd527d8c-472f-4dff-b8c5-1c90d5bae01e',\n name: 'no image 2',\n createdBy: 'user:Jane Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n ],\n };\n\n constructor(props) {\n super(props);\n this.state = {\n selectedImage: undefined,\n };\n }\n\n onSelect = (selectedImage) => {\n this.setState({ selectedImage });\n };\n\n onConfirm = () => {\n const { selectedImage } = this.state;\n const { onConfirm, onClose } = this.props;\n onConfirm(selectedImage);\n onClose();\n };\n\n render() {\n return <DSImageLibraryModal {...this.props} onConfirm={this.onConfirm} onSelect={this.onSelect} />;\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD2DZ;AA3DX,mBAAkB;AAClB,kCAAgC;AAChC,wBAAsB;AAEtB,MAAO,0BAAwC,aAAAA,QAAM,cAAc;AAAA,EAoCjE,YAAY,OAAO;AACjB,UAAM,KAAK;AAMb,oBAAW,CAAC,kBAAkB;AAC5B,WAAK,SAAS,EAAE,cAAc,CAAC;AAAA,IACjC;AAEA,qBAAY,MAAM;AAChB,YAAM,EAAE,cAAc,IAAI,KAAK;AAC/B,YAAM,EAAE,WAAW,QAAQ,IAAI,KAAK;AACpC,gBAAU,aAAa;AACvB,cAAQ;AAAA,IACV;AAdE,SAAK,QAAQ;AAAA,MACX,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAaA,SAAS;AACP,WAAO,4CAAC,4BAAAC,SAAA,EAAqB,GAAG,KAAK,OAAO,WAAW,KAAK,WAAW,UAAU,KAAK,UAAU;AAAA,EAClG;AACF;AAzDqB,kBACZ,YAAY;AAAA,EACjB,WAAW,kBAAAC,QAAU,KAAK;AAAA,EAC1B,SAAS,kBAAAA,QAAU,KAAK;AAAA,EACxB,UAAU,kBAAAA,QAAU;AAAA,EACpB,YAAY,kBAAAA,QAAU;AAAA,IACpB,kBAAAA,QAAU,MAAM;AAAA,MACd,IAAI,kBAAAA,QAAU;AAAA,MACd,KAAK,kBAAAA,QAAU,OAAO;AAAA,MACtB,MAAM,kBAAAA,QAAU,OAAO;AAAA,MACvB,aAAa,kBAAAA,QAAU;AAAA,MACvB,WAAW,kBAAAA,QAAU,OAAO;AAAA,MAC5B,aAAa,kBAAAA,QAAU,OAAO;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,kBAAAA,QAAU,KAAK;AACzB;AAhBmB,kBAkBZ,eAAe;AAAA,EACpB,UAAU;AAAA,EACV,YAAY;AAAA,IACV;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF;AACF;",
6
- "names": ["React", "DSImageLibraryModal", "PropTypes"]
4
+ "sourcesContent": ["import React from 'react';\nimport DSImageLibraryModal from '@elliemae/ds-imagelibrarymodal';\nimport { PropTypes } from '@elliemae/ds-props-helpers';\n\nexport default class ImageLibraryModal extends React.PureComponent {\n static propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n onReject: PropTypes.func,\n imagesData: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n url: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n description: PropTypes.string,\n createdBy: PropTypes.string.isRequired,\n createdDate: PropTypes.string.isRequired,\n }),\n ),\n isOpen: PropTypes.bool.isRequired,\n };\n\n static defaultProps = {\n onReject: undefined,\n imagesData: [\n {\n url: 'https://www.freeiconspng.com/minicovers/no-image-icon-6.png',\n name: 'no image',\n createdBy: 'user:John Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n {\n url: 'https://asset-service-bucket-int.s3.us-west-2.amazonaws.com/bd527d8c-472f-4dff-b8c5-1c90d5bae01e',\n name: 'no image 2',\n createdBy: 'user:Jane Doe',\n createdDate: '0000-01-01 00:00 AM UTC',\n },\n ],\n };\n\n constructor(props) {\n super(props);\n this.state = {\n selectedImage: undefined,\n };\n }\n\n onSelect = (selectedImage) => {\n this.setState({ selectedImage });\n };\n\n onConfirm = () => {\n const { selectedImage } = this.state;\n const { onConfirm, onClose } = this.props;\n onConfirm(selectedImage);\n onClose();\n };\n\n render() {\n return <DSImageLibraryModal {...this.props} onConfirm={this.onConfirm} onSelect={this.onSelect} />;\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;AD2DZ;AA3DX,mBAAkB;AAClB,kCAAgC;AAChC,8BAA0B;AAE1B,MAAO,0BAAwC,aAAAA,QAAM,cAAc;AAAA,EAoCjE,YAAY,OAAO;AACjB,UAAM,KAAK;AAMb,oBAAW,CAAC,kBAAkB;AAC5B,WAAK,SAAS,EAAE,cAAc,CAAC;AAAA,IACjC;AAEA,qBAAY,MAAM;AAChB,YAAM,EAAE,cAAc,IAAI,KAAK;AAC/B,YAAM,EAAE,WAAW,QAAQ,IAAI,KAAK;AACpC,gBAAU,aAAa;AACvB,cAAQ;AAAA,IACV;AAdE,SAAK,QAAQ;AAAA,MACX,eAAe;AAAA,IACjB;AAAA,EACF;AAAA,EAaA,SAAS;AACP,WAAO,4CAAC,4BAAAC,SAAA,EAAqB,GAAG,KAAK,OAAO,WAAW,KAAK,WAAW,UAAU,KAAK,UAAU;AAAA,EAClG;AACF;AAzDqB,kBACZ,YAAY;AAAA,EACjB,WAAW,kCAAU,KAAK;AAAA,EAC1B,SAAS,kCAAU,KAAK;AAAA,EACxB,UAAU,kCAAU;AAAA,EACpB,YAAY,kCAAU;AAAA,IACpB,kCAAU,MAAM;AAAA,MACd,IAAI,kCAAU;AAAA,MACd,KAAK,kCAAU,OAAO;AAAA,MACtB,MAAM,kCAAU,OAAO;AAAA,MACvB,aAAa,kCAAU;AAAA,MACvB,WAAW,kCAAU,OAAO;AAAA,MAC5B,aAAa,kCAAU,OAAO;AAAA,IAChC,CAAC;AAAA,EACH;AAAA,EACA,QAAQ,kCAAU,KAAK;AACzB;AAhBmB,kBAkBZ,eAAe;AAAA,EACpB,UAAU;AAAA,EACV,YAAY;AAAA,IACV;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,KAAK;AAAA,MACL,MAAM;AAAA,MACN,WAAW;AAAA,MACX,aAAa;AAAA,IACf;AAAA,EACF;AACF;",
6
+ "names": ["React", "DSImageLibraryModal"]
7
7
  }
@@ -34,7 +34,7 @@ module.exports = __toCommonJS(InsertFieldModal_exports);
34
34
  var React = __toESM(require("react"));
35
35
  var import_jsx_runtime = require("react/jsx-runtime");
36
36
  var import_react = __toESM(require("react"));
37
- var import_prop_types = __toESM(require("prop-types"));
37
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
38
38
  var import_ds_modal = __toESM(require("@elliemae/ds-modal"));
39
39
  var import_ds_shared = require("@elliemae/ds-shared");
40
40
  var import_lodash = require("lodash");
@@ -155,18 +155,18 @@ class InsertFieldModal extends import_react.default.PureComponent {
155
155
  }
156
156
  }
157
157
  InsertFieldModal.propTypes = {
158
- onConfirm: import_prop_types.default.func.isRequired,
159
- onClose: import_prop_types.default.func.isRequired,
160
- confirmLabel: import_prop_types.default.string,
161
- customFields: import_prop_types.default.arrayOf(import_prop_types.default.string),
162
- disableDoubleClick: import_prop_types.default.bool,
163
- isOpen: import_prop_types.default.bool,
164
- modalTitle: import_prop_types.default.string,
165
- modalType: import_prop_types.default.string,
166
- rejectLabel: import_prop_types.default.string,
167
- shouldCloseOnOverlayClick: import_prop_types.default.bool,
168
- size: import_prop_types.default.string,
169
- onSelect: import_prop_types.default.func
158
+ onConfirm: import_ds_props_helpers.PropTypes.func.isRequired,
159
+ onClose: import_ds_props_helpers.PropTypes.func.isRequired,
160
+ confirmLabel: import_ds_props_helpers.PropTypes.string,
161
+ customFields: import_ds_props_helpers.PropTypes.arrayOf(import_ds_props_helpers.PropTypes.string),
162
+ disableDoubleClick: import_ds_props_helpers.PropTypes.bool,
163
+ isOpen: import_ds_props_helpers.PropTypes.bool,
164
+ modalTitle: import_ds_props_helpers.PropTypes.string,
165
+ modalType: import_ds_props_helpers.PropTypes.string,
166
+ rejectLabel: import_ds_props_helpers.PropTypes.string,
167
+ shouldCloseOnOverlayClick: import_ds_props_helpers.PropTypes.bool,
168
+ size: import_ds_props_helpers.PropTypes.string,
169
+ onSelect: import_ds_props_helpers.PropTypes.func
170
170
  };
171
171
  InsertFieldModal.defaultProps = {
172
172
  confirmLabel: "Add",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/InsertFieldModal.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable react/static-property-placement */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport DSModal, { MODAL_TYPE } from '@elliemae/ds-modal';\nimport { sizeOptions } from '@elliemae/ds-shared';\nimport { includes } from 'lodash';\nimport { fields, getFieldName, getFieldCode } from './customFields.js';\n\nconst modalTypes = Object.values(MODAL_TYPE);\nconst elementClassName = 'insertfieldmodal-element';\n\nexport default class InsertFieldModal extends React.PureComponent {\n static propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n confirmLabel: PropTypes.string,\n customFields: PropTypes.arrayOf(PropTypes.string),\n disableDoubleClick: PropTypes.bool,\n isOpen: PropTypes.bool,\n modalTitle: PropTypes.string,\n modalType: PropTypes.string,\n rejectLabel: PropTypes.string,\n shouldCloseOnOverlayClick: PropTypes.bool,\n size: PropTypes.string,\n onSelect: PropTypes.func,\n };\n\n static defaultProps = {\n confirmLabel: 'Add',\n customFields: fields,\n disableDoubleClick: false,\n isOpen: true,\n modalTitle: 'Add Field',\n modalType: modalTypes[1],\n rejectLabel: 'Cancel',\n shouldCloseOnOverlayClick: true,\n size: sizeOptions[1],\n onSelect: undefined,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n selectedFieldCode: getFieldCode(fields[0]),\n };\n this.preventSpacebarScroll();\n }\n\n componentDidMount() {\n const { customFields } = this.props;\n if (customFields) {\n this.handleElementClick({}, customFields[0]);\n this.focusFirst = true;\n }\n }\n\n getDerivedStateFromProps(nextProps) {\n const { customFields } = this.props;\n if (!customFields && nextProps.customFields) {\n this.setState({ selectedFieldCode: customFields[0] });\n }\n }\n\n onConfirm = () => {\n const { onConfirm, onClose } = this.props;\n const { selectedFieldCode } = this.state;\n onConfirm(selectedFieldCode);\n onClose();\n };\n\n onReject = () => {\n const { onReject, onClose } = this.props;\n if (onReject) {\n onReject();\n } else {\n onClose();\n }\n };\n\n drawDiv = (className, content, content2) => (\n <div className={className}>\n <span>{content}</span>\n <span>{content2}</span>\n </div>\n );\n\n drawLabel = (className, label, value) => (\n <div className={className}>\n <span className=\"label\">{label}</span>\n <span className=\"value\">{value}</span>\n </div>\n );\n\n handleElementClick = (e, selectedFieldCode) => {\n if (e.key && e.key !== ' ') {\n return;\n }\n const { selectedFieldCode: fCode } = this.state;\n const { disableDoubleClick } = this.props;\n if (selectedFieldCode === fCode && !disableDoubleClick) {\n this.onConfirm();\n return;\n }\n this.setState({\n selectedFieldCode,\n });\n const { onSelect } = this.props;\n if (onSelect) {\n onSelect(selectedFieldCode);\n }\n };\n\n preventSpacebarScroll = () => {\n document.onkeypress = function (e) {\n if (!includes(e.target.className, elementClassName)) {\n return true;\n }\n e = e || window.event;\n const charCode = e.keyCode || e.which;\n if (charCode === 32) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n };\n\n renderElements = () => {\n const { customFields } = this.props;\n if (!customFields) {\n return 'Empty';\n }\n const { selectedFieldCode } = this.state;\n return customFields.map((customField, idx) => {\n const extras = {};\n const fieldCode = getFieldCode(customField);\n if (this.focusFirst && idx === 0) {\n extras.ref = (element) => element && element.focus();\n this.focusFirst = undefined;\n } else if (fieldCode === selectedFieldCode) {\n extras.ref = (element) => element && element.focus();\n }\n return (\n <div\n key={fieldCode}\n className={elementClassName}\n onClick={(e) => this.handleElementClick(e, fieldCode)}\n onKeyUp={(e) => this.handleElementClick(e, fieldCode)}\n role=\"button\"\n tabIndex={0}\n {...extras}\n >\n {this.drawLabel('content', getFieldName(customField), fieldCode)}\n </div>\n );\n });\n };\n\n render() {\n const { customFields, onSelect, ...modalProps } = this.props;\n return (\n <DSModal {...modalProps} className=\"insert-field-modal\" onConfirm={this.onConfirm} onReject={this.onReject}>\n <div className=\"wrapper\">\n <div className=\"col-1\">\n {this.drawDiv('title', 'Field Name', '\u00AB Field ID \u00BB')}\n {this.renderElements()}\n </div>\n </div>\n </DSModal>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": "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",
6
- "names": ["React", "DSModal", "PropTypes"]
4
+ "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable react/static-property-placement */\nimport React from 'react';\nimport { PropTypes } from '@elliemae/ds-props-helpers';\nimport DSModal, { MODAL_TYPE } from '@elliemae/ds-modal';\nimport { sizeOptions } from '@elliemae/ds-shared';\nimport { includes } from 'lodash';\nimport { fields, getFieldName, getFieldCode } from './customFields.js';\n\nconst modalTypes = Object.values(MODAL_TYPE);\nconst elementClassName = 'insertfieldmodal-element';\n\nexport default class InsertFieldModal extends React.PureComponent {\n static propTypes = {\n onConfirm: PropTypes.func.isRequired,\n onClose: PropTypes.func.isRequired,\n confirmLabel: PropTypes.string,\n customFields: PropTypes.arrayOf(PropTypes.string),\n disableDoubleClick: PropTypes.bool,\n isOpen: PropTypes.bool,\n modalTitle: PropTypes.string,\n modalType: PropTypes.string,\n rejectLabel: PropTypes.string,\n shouldCloseOnOverlayClick: PropTypes.bool,\n size: PropTypes.string,\n onSelect: PropTypes.func,\n };\n\n static defaultProps = {\n confirmLabel: 'Add',\n customFields: fields,\n disableDoubleClick: false,\n isOpen: true,\n modalTitle: 'Add Field',\n modalType: modalTypes[1],\n rejectLabel: 'Cancel',\n shouldCloseOnOverlayClick: true,\n size: sizeOptions[1],\n onSelect: undefined,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n selectedFieldCode: getFieldCode(fields[0]),\n };\n this.preventSpacebarScroll();\n }\n\n componentDidMount() {\n const { customFields } = this.props;\n if (customFields) {\n this.handleElementClick({}, customFields[0]);\n this.focusFirst = true;\n }\n }\n\n getDerivedStateFromProps(nextProps) {\n const { customFields } = this.props;\n if (!customFields && nextProps.customFields) {\n this.setState({ selectedFieldCode: customFields[0] });\n }\n }\n\n onConfirm = () => {\n const { onConfirm, onClose } = this.props;\n const { selectedFieldCode } = this.state;\n onConfirm(selectedFieldCode);\n onClose();\n };\n\n onReject = () => {\n const { onReject, onClose } = this.props;\n if (onReject) {\n onReject();\n } else {\n onClose();\n }\n };\n\n drawDiv = (className, content, content2) => (\n <div className={className}>\n <span>{content}</span>\n <span>{content2}</span>\n </div>\n );\n\n drawLabel = (className, label, value) => (\n <div className={className}>\n <span className=\"label\">{label}</span>\n <span className=\"value\">{value}</span>\n </div>\n );\n\n handleElementClick = (e, selectedFieldCode) => {\n if (e.key && e.key !== ' ') {\n return;\n }\n const { selectedFieldCode: fCode } = this.state;\n const { disableDoubleClick } = this.props;\n if (selectedFieldCode === fCode && !disableDoubleClick) {\n this.onConfirm();\n return;\n }\n this.setState({\n selectedFieldCode,\n });\n const { onSelect } = this.props;\n if (onSelect) {\n onSelect(selectedFieldCode);\n }\n };\n\n preventSpacebarScroll = () => {\n document.onkeypress = function (e) {\n if (!includes(e.target.className, elementClassName)) {\n return true;\n }\n e = e || window.event;\n const charCode = e.keyCode || e.which;\n if (charCode === 32) {\n e.preventDefault();\n return false;\n }\n return true;\n };\n };\n\n renderElements = () => {\n const { customFields } = this.props;\n if (!customFields) {\n return 'Empty';\n }\n const { selectedFieldCode } = this.state;\n return customFields.map((customField, idx) => {\n const extras = {};\n const fieldCode = getFieldCode(customField);\n if (this.focusFirst && idx === 0) {\n extras.ref = (element) => element && element.focus();\n this.focusFirst = undefined;\n } else if (fieldCode === selectedFieldCode) {\n extras.ref = (element) => element && element.focus();\n }\n return (\n <div\n key={fieldCode}\n className={elementClassName}\n onClick={(e) => this.handleElementClick(e, fieldCode)}\n onKeyUp={(e) => this.handleElementClick(e, fieldCode)}\n role=\"button\"\n tabIndex={0}\n {...extras}\n >\n {this.drawLabel('content', getFieldName(customField), fieldCode)}\n </div>\n );\n });\n };\n\n render() {\n const { customFields, onSelect, ...modalProps } = this.props;\n return (\n <DSModal {...modalProps} className=\"insert-field-modal\" onConfirm={this.onConfirm} onReject={this.onReject}>\n <div className=\"wrapper\">\n <div className=\"col-1\">\n {this.drawDiv('title', 'Field Name', '\u00AB Field ID \u00BB')}\n {this.renderElements()}\n </div>\n </div>\n </DSModal>\n );\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "DSModal"]
7
7
  }