@pie-lib/editable-html-tip-tap 1.0.3 → 1.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.
- package/lib/components/CharacterPicker.js.map +1 -0
- package/lib/components/EditableHtml.js.map +1 -0
- package/lib/components/MenuBar.js +9 -8
- package/lib/components/MenuBar.js.map +1 -0
- package/lib/components/TiptapContainer.js.map +1 -0
- package/lib/components/characters/characterUtils.js.map +1 -0
- package/lib/components/characters/custom-popper.js.map +1 -0
- package/lib/components/common/done-button.js.map +1 -0
- package/lib/components/common/toolbar-buttons.js +194 -0
- package/lib/components/common/toolbar-buttons.js.map +1 -0
- package/lib/components/icons/CssIcon.js.map +1 -0
- package/lib/components/icons/RespArea.js.map +1 -0
- package/lib/components/icons/TableIcons.js.map +1 -0
- package/lib/components/icons/TextAlign.js.map +1 -0
- package/lib/components/image/AltDialog.js +129 -0
- package/lib/components/image/AltDialog.js.map +1 -0
- package/lib/components/image/ImageToolbar.js +167 -6
- package/lib/components/image/ImageToolbar.js.map +1 -0
- package/lib/components/image/InsertImageHandler.js +106 -7
- package/lib/components/image/InsertImageHandler.js.map +1 -0
- package/lib/components/image/alt-dialog.js +2 -0
- package/lib/components/media/MediaDialog.js +699 -6
- package/lib/components/media/MediaDialog.js.map +1 -0
- package/lib/components/media/MediaToolbar.js +91 -6
- package/lib/components/media/MediaToolbar.js.map +1 -0
- package/lib/components/media/MediaWrapper.js +93 -0
- package/lib/components/media/MediaWrapper.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/DragInTheBlank.js.map +1 -0
- package/lib/components/respArea/DragInTheBlank/choice.js.map +1 -0
- package/lib/components/respArea/ExplicitConstructedResponse.js.map +1 -0
- package/lib/components/respArea/InlineDropdown.js.map +1 -0
- package/lib/components/respArea/ToolbarIcon.js.map +1 -0
- package/lib/constants.js.map +1 -0
- package/lib/extensions/component.js.map +1 -0
- package/lib/extensions/css.js.map +1 -0
- package/lib/extensions/custom-toolbar-wrapper.js.map +1 -0
- package/lib/extensions/extended-table.js.map +1 -0
- package/lib/extensions/image.js +2 -8
- package/lib/extensions/image.js.map +1 -0
- package/lib/extensions/index.js.map +1 -0
- package/lib/extensions/math.js.map +1 -0
- package/lib/extensions/media.js +3 -3
- package/lib/extensions/media.js.map +1 -0
- package/lib/extensions/responseArea.js.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/editorContainerStyles.js.map +1 -0
- package/lib/theme.js.map +1 -0
- package/lib/utils/size.js.map +1 -0
- package/package.json +1 -1
- package/src/components/MenuBar.jsx +3 -3
- package/src/components/common/toolbar-buttons.jsx +138 -0
- package/src/components/image/AltDialog.jsx +82 -0
- package/src/components/image/ImageToolbar.jsx +100 -1
- package/src/components/image/InsertImageHandler.js +78 -1
- package/src/components/media/MediaDialog.js +624 -1
- package/src/components/media/MediaToolbar.jsx +56 -1
- package/src/components/media/MediaWrapper.jsx +43 -0
- package/src/extensions/image.js +2 -2
- package/src/extensions/media.js +2 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/extensions/image.js"],"names":["ImageUploadNode","Node","create","name","group","atom","selectable","draggable","addAttributes","loaded","deleteStatus","alignment","percent","width","height","src","alt","parseHTML","tag","renderHTML","HTMLAttributes","addNodeView","props","options","addCommands","setImageUploadNode","commands","insertContent","type"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;AAEA;AAEO,IAAMA,eAAe,GAAGC,WAAKC,MAAL,CAAY;AACzCC,EAAAA,IAAI,EAAE,iBADmC;AAGzCC,EAAAA,KAAK,EAAE,OAHkC;AAIzCC,EAAAA,IAAI,EAAE,IAJmC;AAI7B;AACZC,EAAAA,UAAU,EAAE,IAL6B;AAKvB;AAClBC,EAAAA,SAAS,EAAE,IAN8B;AAMxB;AAEjBC,EAAAA,aARyC,2BAQzB;AACd,WAAO;AACLC,MAAAA,MAAM,EAAE;AAAE,mBAAS;AAAX,OADH;AAELC,MAAAA,YAAY,EAAE;AAAE,mBAAS;AAAX,OAFT;AAGLC,MAAAA,SAAS,EAAE;AAAE,mBAAS;AAAX,OAHN;AAILC,MAAAA,OAAO,EAAE;AAAE,mBAAS;AAAX,OAJJ;AAKLC,MAAAA,KAAK,EAAE;AAAE,mBAAS;AAAX,OALF;AAMLC,MAAAA,MAAM,EAAE;AAAE,mBAAS;AAAX,OANH;AAOLC,MAAAA,GAAG,EAAE;AAAE,mBAAS;AAAX,OAPA;AAQLC,MAAAA,GAAG,EAAE;AAAE,mBAAS;AAAX;AARA,KAAP;AAUD,GAnBwC;AAqBzCC,EAAAA,SArByC,uBAqB7B;AACV,WAAO,CACL;AACEC,MAAAA,GAAG,EAAE;AADP,KADK,CAAP;AAKD,GA3BwC;AA6BzC;AACAC,EAAAA,UA9ByC,4BA8BV;AAAA,QAAlBC,cAAkB,QAAlBA,cAAkB;AAC7B,WAAO,CAAC,KAAD,EAAQ,2BAAgBA,cAAhB,EAAgC;AAAE,mBAAa;AAAf,KAAhC,CAAR,CAAP;AACD,GAhCwC;AAkCzCC,EAAAA,WAlCyC,yBAkC3B;AAAA;;AACZ,WAAO,kCAAsB,UAACC,KAAD;AAAA,0BAAW,iCAAC,qBAAD,kCAAyBA,KAAzB;AAAgCC,QAAAA,OAAO,EAAE,KAAI,CAACA;AAA9C,SAAX;AAAA,KAAtB,CAAP;AACD,GApCwC;AAsCzCC,EAAAA,WAtCyC,yBAsC3B;AAAA;;AACZ,WAAO;AACLC,MAAAA,kBAAkB,EAAE;AAAA,eAAM,iBAAkB;AAAA,cAAfC,QAAe,SAAfA,QAAe;AAC1C,iBAAOA,QAAQ,CAACC,aAAT,CAAuB;AAC5BC,YAAAA,IAAI,EAAE,MAAI,CAACzB;AADiB,WAAvB,CAAP;AAGD,SAJmB;AAAA;AADf,KAAP;AAOD;AA9CwC,CAAZ,CAAxB","sourcesContent":["import { Node, mergeAttributes } from '@tiptap/core';\nimport { ReactNodeViewRenderer } from '@tiptap/react';\nimport React from 'react';\nimport ImageComponent from './component';\n\n// ---- Tiptap Extension ---- //\n\nexport const ImageUploadNode = Node.create({\n name: 'imageUploadNode',\n\n group: 'block',\n atom: true, // ✅ prevents content holes\n selectable: true, // optional\n draggable: true, // optional\n\n addAttributes() {\n return {\n loaded: { default: false },\n deleteStatus: { default: null },\n alignment: { default: null },\n percent: { default: null },\n width: { default: null },\n height: { default: null },\n src: { default: null },\n alt: { default: null },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'div[data-type=\"image-upload-node\"]',\n },\n ];\n },\n\n // ✅ No `0` here!\n renderHTML({ HTMLAttributes }) {\n return ['img', mergeAttributes(HTMLAttributes, { 'data-type': 'image-upload-node' })];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer((props) => <ImageComponent {...{ ...props, options: this.options }} />);\n },\n\n addCommands() {\n return {\n setImageUploadNode: () => ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n });\n },\n };\n },\n});\n"],"file":"image.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/extensions/index.js"],"names":["log","ALL_PLUGINS","DEFAULT_EXTENSIONS","filter","plug","includes","buildExtensions","activeExtensions","customExtensions","opts","addIf","key","shouldAdd","imagePlugin","image","onDelete","mathPlugin","math","respAreaPlugin","responseArea","type","cssPlugin","extraCSSRules","languageCharactersPlugins","languageCharacters","map","plugin","html"],"mappings":"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","sourcesContent":["import React from 'react';\nimport compact from 'lodash/compact';\nimport isEmpty from 'lodash/isEmpty';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins');\nexport const ALL_PLUGINS = [\n 'bold',\n // 'code',\n 'html',\n 'extraCSSRules',\n 'italic',\n 'underline',\n 'strikethrough',\n 'bulleted-list',\n 'numbered-list',\n 'image',\n 'math',\n 'languageCharacters',\n 'text-align',\n 'blockquote',\n 'h3',\n 'table',\n 'video',\n 'audio',\n 'responseArea',\n 'redo',\n 'undo',\n 'superscript',\n 'subscript',\n];\n\nexport const DEFAULT_EXTENSIONS = ALL_PLUGINS.filter((plug) => !['responseArea', 'h3', 'blockquote'].includes(plug));\n\nexport const buildExtensions = (activeExtensions, customExtensions, opts) => {\n log('[buildPlugins] opts: ', opts);\n\n activeExtensions = activeExtensions || DEFAULT_EXTENSIONS;\n\n const addIf = (key, shouldAdd = true) => activeExtensions.includes(key) && shouldAdd && key;\n\n const imagePlugin = opts.image && opts.image.onDelete;\n const mathPlugin = opts.math;\n const respAreaPlugin = opts.responseArea && opts.responseArea.type;\n const cssPlugin = !isEmpty(opts.extraCSSRules);\n\n const languageCharactersPlugins = opts?.languageCharacters || [];\n\n return compact([\n addIf('table'),\n addIf('bold'),\n // addIf('code', MarkHotkey({ key: '`', type: 'code', icon: <Code /> })),\n addIf('italic'),\n addIf('strikethrough'),\n addIf('underline'),\n // icon should be modifies accordingly\n addIf('superscript'),\n // icon should be modifies accordingly\n addIf('subscript'),\n addIf('image', imagePlugin),\n addIf('video'),\n addIf('audio'),\n addIf('math', mathPlugin),\n ...languageCharactersPlugins.map((plugin) => addIf('languageCharacters', plugin)),\n addIf('text-align'),\n addIf('blockquote'),\n addIf('h3'),\n addIf('bulleted-list'),\n addIf('numbered-list'),\n addIf('undo'),\n addIf('redo'),\n addIf('responseArea', respAreaPlugin),\n addIf('css', cssPlugin),\n addIf('html', !!opts.html),\n ]);\n};\n"],"file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/extensions/math.js"],"names":["ensureTextAfterMathPluginKey","PluginKey","EnsureTextAfterMathPlugin","mathNodeName","Plugin","key","appendTransaction","transactions","oldState","newState","some","tr","docChanged","changed","doc","descendants","node","pos","type","name","nextPos","nodeSize","nextNode","nodeAt","insert","schema","text","ZeroWidthSpaceHandlingPlugin","props","handleKeyDown","view","event","state","dispatch","selection","from","empty","prevChar","textBetween","posBefore","resolved","resolve","maybeNode","nodeAfter","nodeBefore","nodePos","nodeResolved","setSelection","NodeSelection","create","TextSelection","MathNode","Node","group","inline","atom","addAttributes","latex","wrapper","html","addProseMirrorPlugins","parseHTML","tag","getAttrs","el","getAttribute","textContent","innerHTML","addCommands","insertMath","editor","nodes","math","$from","sel","renderHTML","HTMLAttributes","dangerouslySetInnerHTML","__html","addNodeView","options","MathNodeView","updateAttributes","selected","showToolbar","setShowToolbar","toolbarRef","attrs","_toolbarOpened","handleClickOutside","current","contains","target","closest","document","addEventListener","removeEventListener","handleChange","newLatex","handleDone","commands","focus","display","cursor","margin","position","top","left","zIndex","background","boxShadow"],"mappings":"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","sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { Extension, Node, mergeAttributes } from '@tiptap/core';\nimport { NodeViewWrapper, ReactRenderer, ReactNodeViewRenderer } from '@tiptap/react';\nimport { Plugin, PluginKey, NodeSelection, TextSelection } from 'prosemirror-state';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, mmlToLatex, renderMath } from '@pie-lib/math-rendering';\n\nconst ensureTextAfterMathPluginKey = new PluginKey('ensureTextAfterMath');\n\nexport const EnsureTextAfterMathPlugin = (mathNodeName) =>\n new Plugin({\n key: ensureTextAfterMathPluginKey,\n appendTransaction: (transactions, oldState, newState) => {\n // Only act when the doc actually changed\n if (!transactions.some((tr) => tr.docChanged)) return null;\n\n const tr = newState.tr;\n let changed = false;\n\n newState.doc.descendants((node, pos) => {\n if (node.type.name === mathNodeName) {\n const nextPos = pos + node.nodeSize;\n const nextNode = newState.doc.nodeAt(nextPos);\n\n // If there's no node after, or the next node isn't text, insert a space\n if (!nextNode || nextNode.type.name !== 'text') {\n tr.insert(nextPos, newState.schema.text('\\u200b'));\n changed = true;\n }\n }\n });\n\n return changed ? tr : null;\n },\n });\n\nexport const ZeroWidthSpaceHandlingPlugin = new Plugin({\n key: new PluginKey('zeroWidthSpaceHandling'),\n props: {\n handleKeyDown(view, event) {\n const { state, dispatch } = view;\n const { selection, doc } = state;\n const { from, empty } = selection;\n\n if (empty && event.key === 'Backspace' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n if (prevChar === '\\u200b') {\n const tr = state.tr.delete(from - 2, from);\n dispatch(tr);\n return true; // handled\n }\n }\n\n if (empty && event.key === 'ArrowLeft' && from > 0) {\n const prevChar = doc.textBetween(from - 1, from, '\\uFFFC', '\\uFFFC');\n // If the previous character is the zero-width space...\n if (prevChar === '\\u200b') {\n const posBefore = from - 1;\n const resolved = state.doc.resolve(posBefore - 1); // look just before the zwsp\n const maybeNode = resolved.nodeAfter || resolved.nodeBefore;\n\n // Check if there's an inline selectable node (e.g., your math node)\n if (maybeNode) {\n const nodePos = posBefore - maybeNode.nodeSize;\n const nodeResolved = state.doc.resolve(nodePos);\n const tr = state.tr.setSelection(NodeSelection.create(state.doc, nodeResolved.pos));\n dispatch(tr);\n return true;\n } else {\n // Just move the text cursor before the zwsp\n const tr = state.tr.setSelection(TextSelection.create(state.doc, from - 2));\n dispatch(tr);\n return true;\n }\n }\n }\n\n return false;\n },\n },\n});\n\nexport const MathNode = Node.create({\n name: 'math',\n group: 'inline',\n inline: true,\n atom: true,\n\n addAttributes() {\n return {\n latex: { default: '' },\n wrapper: { default: null },\n html: { default: null },\n };\n },\n\n addProseMirrorPlugins() {\n return [EnsureTextAfterMathPlugin(this.name), ZeroWidthSpaceHandlingPlugin];\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[data-latex]',\n getAttrs: (el) => ({\n latex: el.getAttribute('data-raw') || el.textContent,\n }),\n },\n {\n tag: 'span[data-type=\"mathml\"]',\n getAttrs: (el) => ({\n html: el.innerHTML,\n }),\n },\n ];\n },\n\n addCommands() {\n return {\n insertMath: (latex = '') => ({ tr, editor, dispatch }) => {\n // 2) Now the editor.view.state reflects the insertion\n const { state } = editor.view;\n const node = state.schema.nodes.math.create({\n latex,\n });\n const { selection } = state;\n\n // The inserted node is typically just before the cursor\n const pos = selection.$from.pos;\n\n tr.insert(pos, node);\n\n if (node?.type?.name === this.name) {\n // Create a NodeSelection from the current doc\n const sel = NodeSelection.create(tr.doc, selection.$from.pos);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n }\n\n dispatch(tr);\n\n return true;\n },\n // insertMath: (latex = '') => ({ commands }) => {\n // return commands.insertContent({\n // type: this.name,\n // attrs: { latex },\n // });\n // },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n if (HTMLAttributes.html) {\n return ['span', { 'data-type': 'mathml', dangerouslySetInnerHTML: { __html: HTMLAttributes.html } }];\n }\n\n return [\n 'span',\n { 'data-latex': '', 'data-raw': HTMLAttributes.latex },\n wrapMath(HTMLAttributes.latex, HTMLAttributes.wrapper),\n ];\n },\n\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MathNodeView {...{ ...props, options: this.options }} />);\n },\n});\n\nexport const MathNodeView = (props) => {\n const { node, updateAttributes, editor, selected, options } = props;\n const [showToolbar, setShowToolbar] = useState(selected);\n const toolbarRef = useRef(null);\n\n const latex = node.attrs.latex || '';\n\n useEffect(() => {\n if (selected) {\n setShowToolbar(true);\n }\n }, [selected]);\n\n useEffect(() => {\n editor._toolbarOpened = !!showToolbar;\n }, [showToolbar]);\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (\n toolbarRef.current &&\n !toolbarRef.current.contains(event.target) &&\n !event.target.closest('[data-inline-node]')\n ) {\n setShowToolbar(false);\n }\n };\n\n if (showToolbar) {\n document.addEventListener('mousedown', handleClickOutside);\n } else {\n document.removeEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [showToolbar]);\n\n const handleChange = (newLatex) => {\n updateAttributes({ latex: newLatex });\n };\n\n const handleDone = (newLatex) => {\n updateAttributes({ latex: newLatex });\n setShowToolbar(false);\n\n editor._toolbarOpened = false;\n\n const { selection, tr, doc } = editor.state;\n const sel = TextSelection.create(doc, selection.from + 1);\n\n // Build a fresh transaction from the current state and set the selection\n tr.setSelection(sel);\n editor.view.dispatch(tr);\n editor.commands.focus();\n };\n\n return (\n <NodeViewWrapper\n className=\"math-node\"\n style={{\n display: 'inline-flex',\n cursor: 'pointer',\n margin: '0 4px',\n }}\n data-selected={selected}\n >\n <div onClick={() => setShowToolbar(true)} contentEditable={false}>\n <MathPreview latex={latex} />\n </div>\n\n {showToolbar && (\n <div\n ref={toolbarRef}\n style={{\n position: 'absolute',\n top: '100%',\n left: 0,\n zIndex: 20,\n background: 'var(--editable-html-toolbar-bg, #efefef)',\n boxShadow:\n '0px 1px 5px 0px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 3px 1px -2px rgba(0, 0, 0, 0.12)',\n }}\n >\n <MathToolbar latex={latex} autoFocus onChange={handleChange} onDone={handleDone} keypadMode=\"basic\" />\n </div>\n )}\n </NodeViewWrapper>\n );\n};\n"],"file":"math.js"}
|
package/lib/extensions/media.js
CHANGED
|
@@ -225,12 +225,11 @@ function MediaNodeView(_ref4) {
|
|
|
225
225
|
|
|
226
226
|
var handleEdit = function handleEdit() {
|
|
227
227
|
insertDialog(_objectSpread(_objectSpread({}, node.attrs), {}, {
|
|
228
|
+
options: options,
|
|
228
229
|
edit: true,
|
|
229
230
|
callback: function callback(val, data) {
|
|
230
231
|
if (val) {
|
|
231
232
|
updateAttributes(data);
|
|
232
|
-
} else {
|
|
233
|
-
deleteNode();
|
|
234
233
|
}
|
|
235
234
|
|
|
236
235
|
editor.chain().focus().run();
|
|
@@ -263,6 +262,7 @@ function MediaNodeView(_ref4) {
|
|
|
263
262
|
controls: true,
|
|
264
263
|
controlsList: "nodownload"
|
|
265
264
|
}, /*#__PURE__*/_react["default"].createElement("source", {
|
|
265
|
+
type: "audio/mp3",
|
|
266
266
|
src: src
|
|
267
267
|
})) : /*#__PURE__*/_react["default"].createElement("iframe", {
|
|
268
268
|
src: src,
|
|
@@ -273,4 +273,4 @@ function MediaNodeView(_ref4) {
|
|
|
273
273
|
onRemove: deleteNode
|
|
274
274
|
}));
|
|
275
275
|
}
|
|
276
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL21lZGlhLmpzIl0sIm5hbWVzIjpbIk1lZGlhIiwiTm9kZSIsImNyZWF0ZSIsIm5hbWUiLCJncm91cCIsImlubGluZSIsImF0b20iLCJhZGRBdHRyaWJ1dGVzIiwidHlwZSIsInNyYyIsIndpZHRoIiwiaGVpZ2h0IiwidGl0bGUiLCJzdGFydHMiLCJlbmRzIiwiZWRpdGluZyIsInRhZyIsInVybCIsInBhcnNlSFRNTCIsImdldEF0dHJzIiwiZWwiLCJnZXRBdHRyaWJ1dGUiLCJkYXRhc2V0IiwicXVlcnlTZWxlY3RvciIsInJlbmRlckhUTUwiLCJIVE1MQXR0cmlidXRlcyIsImNvbnRyb2xzIiwiY29udHJvbHNMaXN0IiwiZnJhbWVib3JkZXIiLCJhbGxvdyIsImFsbG93ZnVsbHNjcmVlbiIsImFkZENvbW1hbmRzIiwiaW5zZXJ0TWVkaWEiLCJhdHRycyIsImNvbW1hbmRzIiwiaW5zZXJ0Q29udGVudCIsInVwZGF0ZU1lZGlhIiwidXBkYXRlQXR0cmlidXRlcyIsImFkZE5vZGVWaWV3IiwicHJvcHMiLCJvcHRpb25zIiwicmVtb3ZlRGlhbG9ncyIsInByZXZEaWFsb2dzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZW1vdmUiLCJpbnNlcnREaWFsb2ciLCJuZXdFbCIsImNyZWF0ZUVsZW1lbnQiLCJjYWxsYmFjayIsInJlc3QiLCJpbml0aWFsQm9keU92ZXJmbG93IiwiYm9keSIsInN0eWxlIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoYW5kbGVDbG9zZSIsInZhbCIsImRhdGEiLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJSZWFjdERPTSIsInJlbmRlciIsImFwcGVuZENoaWxkIiwiTWVkaWFOb2RlVmlldyIsImVkaXRvciIsIm5vZGUiLCJkZWxldGVOb2RlIiwiaGFuZGxlRWRpdCIsImVkaXQiLCJjaGFpbiIsImZvY3VzIiwicnVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7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QVEsSUFBQSxHQUFHLEVBQUVBLEdBQWI7QUFBa0IsSUFBQSxlQUFlLE1BQWpDO0FBQWtDLElBQUEsV0FBVyxFQUFDO0FBQTlDLElBTkosZUFTRSxnQ0FBQyx3QkFBRDtBQUFjLElBQUEsTUFBTSxFQUFFNEQsVUFBdEI7QUFBa0MsSUFBQSxRQUFRLEVBQUVEO0FBQTVDLElBVEYsQ0FERjtBQWFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgbWVyZ2VBdHRyaWJ1dGVzLCBOb2RlIH0gZnJvbSAnQHRpcHRhcC9jb3JlJztcbmltcG9ydCB7IE5vZGVWaWV3V3JhcHBlciwgUmVhY3ROb2RlVmlld1JlbmRlcmVyIH0gZnJvbSAnQHRpcHRhcC9yZWFjdCc7XG5pbXBvcnQgTWVkaWFEaWFsb2cgZnJvbSAnLi4vY29tcG9uZW50cy9tZWRpYS9NZWRpYURpYWxvZyc7XG5pbXBvcnQgTWVkaWFUb29sYmFyIGZyb20gJy4uL2NvbXBvbmVudHMvbWVkaWEvTWVkaWFUb29sYmFyJztcblxuZXhwb3J0IGNvbnN0IE1lZGlhID0gTm9kZS5jcmVhdGUoe1xuICBuYW1lOiAnbWVkaWEnLFxuICBncm91cDogJ2lubGluZScsXG4gIGlubGluZTogdHJ1ZSxcbiAgYXRvbTogdHJ1ZSxcblxuICBhZGRBdHRyaWJ1dGVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB7IGRlZmF1bHQ6ICd2aWRlbycgfSxcbiAgICAgIHNyYzogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgICB3aWR0aDogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgICBoZWlnaHQ6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgdGl0bGU6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgc3RhcnRzOiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIGVuZHM6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgZWRpdGluZzogeyBkZWZhdWx0OiBmYWxzZSB9LFxuICAgICAgdGFnOiB7IGRlZmF1bHQ6ICdpZnJhbWUnIH0sIC8vICdpZnJhbWUnIG9yICdhdWRpbydcbiAgICAgIHVybDogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgfTtcbiAgfSxcblxuICBwYXJzZUhUTUwoKSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdGFnOiAnaWZyYW1lW2RhdGEtdHlwZT1cInZpZGVvXCJdJyxcbiAgICAgICAgZ2V0QXR0cnM6IChlbCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICAgIHRhZzogJ2lmcmFtZScsXG4gICAgICAgICAgc3JjOiBlbC5nZXRBdHRyaWJ1dGUoJ3NyYycpLFxuICAgICAgICAgIHdpZHRoOiBlbC5nZXRBdHRyaWJ1dGUoJ3dpZHRoJyksXG4gICAgICAgICAgaGVpZ2h0OiBlbC5nZXRBdHRyaWJ1dGUoJ2hlaWdodCcpLFxuICAgICAgICAgIHRpdGxlOiBlbC5kYXRhc2V0LnRpdGxlLFxuICAgICAgICAgIHN0YXJ0czogZWwuZGF0YXNldC5zdGFydHMsXG4gICAgICAgICAgZW5kczogZWwuZGF0YXNldC5lbmRzLFxuICAgICAgICAgIHVybDogZWwuZGF0YXNldC51cmwsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgdGFnOiAnYXVkaW8nLFxuICAgICAgICBnZXRBdHRyczogKGVsKSA9PiAoe1xuICAgICAgICAgIHR5cGU6ICdhdWRpbycsXG4gICAgICAgICAgdGFnOiAnYXVkaW8nLFxuICAgICAgICAgIHNyYzogZWwucXVlcnlTZWxlY3Rvcignc291cmNlJyk/LmdldEF0dHJpYnV0ZSgnc3JjJyksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICBdO1xuICB9LFxuXG4gIHJlbmRlckhUTUwoeyBIVE1MQXR0cmlidXRlcyB9KSB7XG4gICAgY29uc3QgeyB0YWcsIHNyYywgd2lkdGgsIGhlaWdodCB9ID0gSFRNTEF0dHJpYnV0ZXM7XG5cbiAgICBpZiAodGFnID09PSAnYXVkaW8nKSB7XG4gICAgICByZXR1cm4gWydhdWRpbycsIHsgY29udHJvbHM6ICdjb250cm9scycsIGNvbnRyb2xzTGlzdDogJ25vZG93bmxvYWQnIH0sIFsnc291cmNlJywgeyBzcmMsIHR5cGU6ICdhdWRpby9tcDMnIH1dXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW1xuICAgICAgJ2lmcmFtZScsXG4gICAgICBtZXJnZUF0dHJpYnV0ZXMoXG4gICAgICAgIHtcbiAgICAgICAgICAnZGF0YS10eXBlJzogJ3ZpZGVvJyxcbiAgICAgICAgICBmcmFtZWJvcmRlcjogJzAnLFxuICAgICAgICAgIGFsbG93OiAnYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZScsXG4gICAgICAgICAgYWxsb3dmdWxsc2NyZWVuOiAnJyxcbiAgICAgICAgICBzcmMsXG4gICAgICAgIH0sXG4gICAgICAgIHdpZHRoID8geyB3aWR0aCB9IDoge30sXG4gICAgICAgIGhlaWdodCA/IHsgaGVpZ2h0IH0gOiB7fSxcbiAgICAgICksXG4gICAgXTtcbiAgfSxcblxuICBhZGRDb21tYW5kcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaW5zZXJ0TWVkaWE6IChhdHRycykgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMuaW5zZXJ0Q29udGVudCh7IHR5cGU6IHRoaXMubmFtZSwgYXR0cnMgfSk7XG4gICAgICB9LFxuICAgICAgdXBkYXRlTWVkaWE6IChhdHRycykgPT4gKHsgY29tbWFuZHMgfSkgPT4ge1xuICAgICAgICByZXR1cm4gY29tbWFuZHMudXBkYXRlQXR0cmlidXRlcyh0aGlzLm5hbWUsIGF0dHJzKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcblxuICBhZGROb2RlVmlldygpIHtcbiAgICByZXR1cm4gUmVhY3ROb2RlVmlld1JlbmRlcmVyKChwcm9wcykgPT4gPE1lZGlhTm9kZVZpZXcgey4uLnsgLi4ucHJvcHMsIG9wdGlvbnM6IHRoaXMub3B0aW9ucyB9fSAvPik7XG4gIH0sXG59KTtcblxuY29uc3QgcmVtb3ZlRGlhbG9ncyA9ICgpID0+IHtcbiAgY29uc3QgcHJldkRpYWxvZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW5zZXJ0LW1lZGlhLWRpYWxvZycpO1xuXG4gIHByZXZEaWFsb2dzLmZvckVhY2goKHMpID0+IHMucmVtb3ZlKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydERpYWxvZyA9IChwcm9wcykgPT4ge1xuICBjb25zdCBuZXdFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb25zdCB7IHR5cGUsIGNhbGxiYWNrLCBvcHRpb25zLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgaW5pdGlhbEJvZHlPdmVyZmxvdyA9IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtbWVkaWEtZGlhbG9nJztcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gKHZhbCwgZGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKHZhbCwgZGF0YSk7XG4gICAgbmV3RWwucmVtb3ZlKCk7XG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IGluaXRpYWxCb2R5T3ZlcmZsb3c7XG4gIH07XG5cbiAgY29uc3QgZWwgPSAoXG4gICAgPE1lZGlhRGlhbG9nXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydD17b3B0aW9ucy51cGxvYWRTb3VuZFN1cHBvcnR9XG4gICAgICB0eXBlPXt0eXBlfVxuICAgICAgZGlzYWJsZVBvcnRhbD17dHJ1ZX1cbiAgICAgIG9wZW49e3RydWV9XG4gICAgICBoYW5kbGVDbG9zZT17aGFuZGxlQ2xvc2V9XG4gICAgLz5cbiAgKTtcblxuICBSZWFjdERPTS5yZW5kZXIoZWwsIG5ld0VsKTtcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ld0VsKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1lZGlhTm9kZVZpZXcoeyBlZGl0b3IsIG5vZGUsIHVwZGF0ZUF0dHJpYnV0ZXMsIGRlbGV0ZU5vZGUsIG9wdGlvbnMgfSkge1xuICBjb25zdCB7IHR5cGUsIHNyYywgd2lkdGgsIGhlaWdodCwgdGFnIH0gPSBub2RlLmF0dHJzO1xuXG4gIGNvbnN0IGhhbmRsZUVkaXQgPSAoKSA9PiB7XG4gICAgaW5zZXJ0RGlhbG9nKHtcbiAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY2FsbGJhY2s6ICh2YWwsIGRhdGEpID0+IHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHVwZGF0ZUF0dHJpYnV0ZXMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlTm9kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yXG4gICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgIC5ydW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbnNlcnREaWFsb2coe1xuICAgICAgLi4ubm9kZS5hdHRycyxcbiAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICBlZGl0OiB0cnVlLFxuICAgICAgY2FsbGJhY2s6ICh2YWwsIGRhdGEpID0+IHtcbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIHVwZGF0ZUF0dHJpYnV0ZXMoZGF0YSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVsZXRlTm9kZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZWRpdG9yXG4gICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgIC5ydW4oKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxOb2RlVmlld1dyYXBwZXIgZGF0YS10eXBlPXt0eXBlfSBzdHlsZT17eyB3aWR0aCwgaGVpZ2h0IH19PlxuICAgICAge3RhZyA9PT0gJ2F1ZGlvJyA/IChcbiAgICAgICAgPGF1ZGlvIGNvbnRyb2xzIGNvbnRyb2xzTGlzdD1cIm5vZG93bmxvYWRcIj5cbiAgICAgICAgICA8c291cmNlIHNyYz17c3JjfSAvPlxuICAgICAgICA8L2F1ZGlvPlxuICAgICAgKSA6IChcbiAgICAgICAgPGlmcmFtZSBzcmM9e3NyY30gYWxsb3dGdWxsU2NyZWVuIGZyYW1lQm9yZGVyPVwiMFwiIC8+XG4gICAgICApfVxuXG4gICAgICA8TWVkaWFUb29sYmFyIG9uRWRpdD17aGFuZGxlRWRpdH0gb25SZW1vdmU9e2RlbGV0ZU5vZGV9IC8+XG4gICAgPC9Ob2RlVmlld1dyYXBwZXI+XG4gICk7XG59XG4iXX0=
|
|
276
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL21lZGlhLmpzIl0sIm5hbWVzIjpbIk1lZGlhIiwiTm9kZSIsImNyZWF0ZSIsIm5hbWUiLCJncm91cCIsImlubGluZSIsImF0b20iLCJhZGRBdHRyaWJ1dGVzIiwidHlwZSIsInNyYyIsIndpZHRoIiwiaGVpZ2h0IiwidGl0bGUiLCJzdGFydHMiLCJlbmRzIiwiZWRpdGluZyIsInRhZyIsInVybCIsInBhcnNlSFRNTCIsImdldEF0dHJzIiwiZWwiLCJnZXRBdHRyaWJ1dGUiLCJkYXRhc2V0IiwicXVlcnlTZWxlY3RvciIsInJlbmRlckhUTUwiLCJIVE1MQXR0cmlidXRlcyIsImNvbnRyb2xzIiwiY29udHJvbHNMaXN0IiwiZnJhbWVib3JkZXIiLCJhbGxvdyIsImFsbG93ZnVsbHNjcmVlbiIsImFkZENvbW1hbmRzIiwiaW5zZXJ0TWVkaWEiLCJhdHRycyIsImNvbW1hbmRzIiwiaW5zZXJ0Q29udGVudCIsInVwZGF0ZU1lZGlhIiwidXBkYXRlQXR0cmlidXRlcyIsImFkZE5vZGVWaWV3IiwicHJvcHMiLCJvcHRpb25zIiwicmVtb3ZlRGlhbG9ncyIsInByZXZEaWFsb2dzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZW1vdmUiLCJpbnNlcnREaWFsb2ciLCJuZXdFbCIsImNyZWF0ZUVsZW1lbnQiLCJjYWxsYmFjayIsInJlc3QiLCJpbml0aWFsQm9keU92ZXJmbG93IiwiYm9keSIsInN0eWxlIiwib3ZlcmZsb3ciLCJjbGFzc05hbWUiLCJoYW5kbGVDbG9zZSIsInZhbCIsImRhdGEiLCJ1cGxvYWRTb3VuZFN1cHBvcnQiLCJSZWFjdERPTSIsInJlbmRlciIsImFwcGVuZENoaWxkIiwiTWVkaWFOb2RlVmlldyIsImVkaXRvciIsIm5vZGUiLCJkZWxldGVOb2RlIiwiaGFuZGxlRWRpdCIsImVkaXQiLCJjaGFpbiIsImZvY3VzIiwicnVuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7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QTlCLElBREYsQ0FERCxnQkFLQztBQUFRLElBQUEsR0FBRyxFQUFFQSxHQUFiO0FBQWtCLElBQUEsZUFBZSxNQUFqQztBQUFrQyxJQUFBLFdBQVcsRUFBQztBQUE5QyxJQU5KLGVBU0UsZ0NBQUMsd0JBQUQ7QUFBYyxJQUFBLE1BQU0sRUFBRTRELFVBQXRCO0FBQWtDLElBQUEsUUFBUSxFQUFFRDtBQUE1QyxJQVRGLENBREY7QUFhRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCB7IG1lcmdlQXR0cmlidXRlcywgTm9kZSB9IGZyb20gJ0B0aXB0YXAvY29yZSc7XG5pbXBvcnQgeyBOb2RlVmlld1dyYXBwZXIsIFJlYWN0Tm9kZVZpZXdSZW5kZXJlciB9IGZyb20gJ0B0aXB0YXAvcmVhY3QnO1xuaW1wb3J0IE1lZGlhRGlhbG9nIGZyb20gJy4uL2NvbXBvbmVudHMvbWVkaWEvTWVkaWFEaWFsb2cnO1xuaW1wb3J0IE1lZGlhVG9vbGJhciBmcm9tICcuLi9jb21wb25lbnRzL21lZGlhL01lZGlhVG9vbGJhcic7XG5cbmV4cG9ydCBjb25zdCBNZWRpYSA9IE5vZGUuY3JlYXRlKHtcbiAgbmFtZTogJ21lZGlhJyxcbiAgZ3JvdXA6ICdpbmxpbmUnLFxuICBpbmxpbmU6IHRydWUsXG4gIGF0b206IHRydWUsXG5cbiAgYWRkQXR0cmlidXRlcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogeyBkZWZhdWx0OiAndmlkZW8nIH0sXG4gICAgICBzcmM6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgd2lkdGg6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgICAgaGVpZ2h0OiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIHRpdGxlOiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIHN0YXJ0czogeyBkZWZhdWx0OiBudWxsIH0sXG4gICAgICBlbmRzOiB7IGRlZmF1bHQ6IG51bGwgfSxcbiAgICAgIGVkaXRpbmc6IHsgZGVmYXVsdDogZmFsc2UgfSxcbiAgICAgIHRhZzogeyBkZWZhdWx0OiAnaWZyYW1lJyB9LCAvLyAnaWZyYW1lJyBvciAnYXVkaW8nXG4gICAgICB1cmw6IHsgZGVmYXVsdDogbnVsbCB9LFxuICAgIH07XG4gIH0sXG5cbiAgcGFyc2VIVE1MKCkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIHRhZzogJ2lmcmFtZVtkYXRhLXR5cGU9XCJ2aWRlb1wiXScsXG4gICAgICAgIGdldEF0dHJzOiAoZWwpID0+ICh7XG4gICAgICAgICAgdHlwZTogJ3ZpZGVvJyxcbiAgICAgICAgICB0YWc6ICdpZnJhbWUnLFxuICAgICAgICAgIHNyYzogZWwuZ2V0QXR0cmlidXRlKCdzcmMnKSxcbiAgICAgICAgICB3aWR0aDogZWwuZ2V0QXR0cmlidXRlKCd3aWR0aCcpLFxuICAgICAgICAgIGhlaWdodDogZWwuZ2V0QXR0cmlidXRlKCdoZWlnaHQnKSxcbiAgICAgICAgICB0aXRsZTogZWwuZGF0YXNldC50aXRsZSxcbiAgICAgICAgICBzdGFydHM6IGVsLmRhdGFzZXQuc3RhcnRzLFxuICAgICAgICAgIGVuZHM6IGVsLmRhdGFzZXQuZW5kcyxcbiAgICAgICAgICB1cmw6IGVsLmRhdGFzZXQudXJsLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHRhZzogJ2F1ZGlvJyxcbiAgICAgICAgZ2V0QXR0cnM6IChlbCkgPT4gKHtcbiAgICAgICAgICB0eXBlOiAnYXVkaW8nLFxuICAgICAgICAgIHRhZzogJ2F1ZGlvJyxcbiAgICAgICAgICBzcmM6IGVsLnF1ZXJ5U2VsZWN0b3IoJ3NvdXJjZScpPy5nZXRBdHRyaWJ1dGUoJ3NyYycpLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgXTtcbiAgfSxcblxuICByZW5kZXJIVE1MKHsgSFRNTEF0dHJpYnV0ZXMgfSkge1xuICAgIGNvbnN0IHsgdGFnLCBzcmMsIHdpZHRoLCBoZWlnaHQgfSA9IEhUTUxBdHRyaWJ1dGVzO1xuXG4gICAgaWYgKHRhZyA9PT0gJ2F1ZGlvJykge1xuICAgICAgcmV0dXJuIFsnYXVkaW8nLCB7IGNvbnRyb2xzOiAnY29udHJvbHMnLCBjb250cm9sc0xpc3Q6ICdub2Rvd25sb2FkJyB9LCBbJ3NvdXJjZScsIHsgc3JjLCB0eXBlOiAnYXVkaW8vbXAzJyB9XV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgICdpZnJhbWUnLFxuICAgICAgbWVyZ2VBdHRyaWJ1dGVzKFxuICAgICAgICB7XG4gICAgICAgICAgJ2RhdGEtdHlwZSc6ICd2aWRlbycsXG4gICAgICAgICAgZnJhbWVib3JkZXI6ICcwJyxcbiAgICAgICAgICBhbGxvdzogJ2FjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmUnLFxuICAgICAgICAgIGFsbG93ZnVsbHNjcmVlbjogJycsXG4gICAgICAgICAgc3JjLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aCA/IHsgd2lkdGggfSA6IHt9LFxuICAgICAgICBoZWlnaHQgPyB7IGhlaWdodCB9IDoge30sXG4gICAgICApLFxuICAgIF07XG4gIH0sXG5cbiAgYWRkQ29tbWFuZHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluc2VydE1lZGlhOiAoYXR0cnMpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmluc2VydENvbnRlbnQoeyB0eXBlOiB0aGlzLm5hbWUsIGF0dHJzIH0pO1xuICAgICAgfSxcbiAgICAgIHVwZGF0ZU1lZGlhOiAoYXR0cnMpID0+ICh7IGNvbW1hbmRzIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIGNvbW1hbmRzLnVwZGF0ZUF0dHJpYnV0ZXModGhpcy5uYW1lLCBhdHRycyk7XG4gICAgICB9LFxuICAgIH07XG4gIH0sXG5cbiAgYWRkTm9kZVZpZXcoKSB7XG4gICAgcmV0dXJuIFJlYWN0Tm9kZVZpZXdSZW5kZXJlcigocHJvcHMpID0+IDxNZWRpYU5vZGVWaWV3IHsuLi57IC4uLnByb3BzLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMgfX0gLz4pO1xuICB9LFxufSk7XG5cbmNvbnN0IHJlbW92ZURpYWxvZ3MgPSAoKSA9PiB7XG4gIGNvbnN0IHByZXZEaWFsb2dzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmluc2VydC1tZWRpYS1kaWFsb2cnKTtcblxuICBwcmV2RGlhbG9ncy5mb3JFYWNoKChzKSA9PiBzLnJlbW92ZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnREaWFsb2cgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgbmV3RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgY29uc3QgeyB0eXBlLCBjYWxsYmFjaywgb3B0aW9ucywgLi4ucmVzdCB9ID0gcHJvcHM7XG4gIGNvbnN0IGluaXRpYWxCb2R5T3ZlcmZsb3cgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93O1xuXG4gIHJlbW92ZURpYWxvZ3MoKTtcblxuICBuZXdFbC5jbGFzc05hbWUgPSAnaW5zZXJ0LW1lZGlhLWRpYWxvZyc7XG4gIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICh2YWwsIGRhdGEpID0+IHtcbiAgICBjYWxsYmFjayh2YWwsIGRhdGEpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBpbml0aWFsQm9keU92ZXJmbG93O1xuICB9O1xuXG4gIGNvbnN0IGVsID0gKFxuICAgIDxNZWRpYURpYWxvZ1xuICAgICAgey4uLnJlc3R9XG4gICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ9e29wdGlvbnMudXBsb2FkU291bmRTdXBwb3J0fVxuICAgICAgdHlwZT17dHlwZX1cbiAgICAgIGRpc2FibGVQb3J0YWw9e3RydWV9XG4gICAgICBvcGVuPXt0cnVlfVxuICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlfVxuICAgIC8+XG4gICk7XG5cbiAgUmVhY3RET00ucmVuZGVyKGVsLCBuZXdFbCk7XG5cbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXdFbCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNZWRpYU5vZGVWaWV3KHsgZWRpdG9yLCBub2RlLCB1cGRhdGVBdHRyaWJ1dGVzLCBkZWxldGVOb2RlLCBvcHRpb25zIH0pIHtcbiAgY29uc3QgeyB0eXBlLCBzcmMsIHdpZHRoLCBoZWlnaHQsIHRhZyB9ID0gbm9kZS5hdHRycztcblxuICBjb25zdCBoYW5kbGVFZGl0ID0gKCkgPT4ge1xuICAgIGluc2VydERpYWxvZyh7XG4gICAgICAuLi5ub2RlLmF0dHJzLFxuICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgIGVkaXQ6IHRydWUsXG4gICAgICBjYWxsYmFjazogKHZhbCwgZGF0YSkgPT4ge1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgdXBkYXRlQXR0cmlidXRlcyhkYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRvclxuICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAucnVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5zZXJ0RGlhbG9nKHtcbiAgICAgIC4uLm5vZGUuYXR0cnMsXG4gICAgICBvcHRpb25zOiBvcHRpb25zLFxuICAgICAgZWRpdDogdHJ1ZSxcbiAgICAgIGNhbGxiYWNrOiAodmFsLCBkYXRhKSA9PiB7XG4gICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICB1cGRhdGVBdHRyaWJ1dGVzKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZU5vZGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGVkaXRvclxuICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAucnVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Tm9kZVZpZXdXcmFwcGVyIGRhdGEtdHlwZT17dHlwZX0gc3R5bGU9e3sgd2lkdGgsIGhlaWdodCB9fT5cbiAgICAgIHt0YWcgPT09ICdhdWRpbycgPyAoXG4gICAgICAgIDxhdWRpbyBjb250cm9scyBjb250cm9sc0xpc3Q9XCJub2Rvd25sb2FkXCI+XG4gICAgICAgICAgPHNvdXJjZSB0eXBlPVwiYXVkaW8vbXAzXCIgc3JjPXtzcmN9IC8+XG4gICAgICAgIDwvYXVkaW8+XG4gICAgICApIDogKFxuICAgICAgICA8aWZyYW1lIHNyYz17c3JjfSBhbGxvd0Z1bGxTY3JlZW4gZnJhbWVCb3JkZXI9XCIwXCIgLz5cbiAgICAgICl9XG5cbiAgICAgIDxNZWRpYVRvb2xiYXIgb25FZGl0PXtoYW5kbGVFZGl0fSBvblJlbW92ZT17ZGVsZXRlTm9kZX0gLz5cbiAgICA8L05vZGVWaWV3V3JhcHBlcj5cbiAgKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/extensions/media.js"],"names":["Media","Node","create","name","group","inline","atom","addAttributes","type","src","width","height","title","starts","ends","editing","tag","url","parseHTML","getAttrs","el","getAttribute","dataset","querySelector","renderHTML","HTMLAttributes","controls","controlsList","frameborder","allow","allowfullscreen","addCommands","insertMedia","attrs","commands","insertContent","updateMedia","updateAttributes","addNodeView","props","options","removeDialogs","prevDialogs","document","querySelectorAll","forEach","s","remove","insertDialog","newEl","createElement","callback","rest","initialBodyOverflow","body","style","overflow","className","handleClose","val","data","uploadSoundSupport","ReactDOM","render","appendChild","MediaNodeView","editor","node","deleteNode","handleEdit","edit","chain","focus","run"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport ReactDOM from 'react-dom';\nimport { mergeAttributes, Node } from '@tiptap/core';\nimport { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';\nimport MediaDialog from '../components/media/MediaDialog';\nimport MediaToolbar from '../components/media/MediaToolbar';\n\nexport const Media = Node.create({\n name: 'media',\n group: 'inline',\n inline: true,\n atom: true,\n\n addAttributes() {\n return {\n type: { default: 'video' },\n src: { default: null },\n width: { default: null },\n height: { default: null },\n title: { default: null },\n starts: { default: null },\n ends: { default: null },\n editing: { default: false },\n tag: { default: 'iframe' }, // 'iframe' or 'audio'\n url: { default: null },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'iframe[data-type=\"video\"]',\n getAttrs: (el) => ({\n type: 'video',\n tag: 'iframe',\n src: el.getAttribute('src'),\n width: el.getAttribute('width'),\n height: el.getAttribute('height'),\n title: el.dataset.title,\n starts: el.dataset.starts,\n ends: el.dataset.ends,\n url: el.dataset.url,\n }),\n },\n {\n tag: 'audio',\n getAttrs: (el) => ({\n type: 'audio',\n tag: 'audio',\n src: el.querySelector('source')?.getAttribute('src'),\n }),\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const { tag, src, width, height } = HTMLAttributes;\n\n if (tag === 'audio') {\n return ['audio', { controls: 'controls', controlsList: 'nodownload' }, ['source', { src, type: 'audio/mp3' }]];\n }\n\n return [\n 'iframe',\n mergeAttributes(\n {\n 'data-type': 'video',\n frameborder: '0',\n allow: 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture',\n allowfullscreen: '',\n src,\n },\n width ? { width } : {},\n height ? { height } : {},\n ),\n ];\n },\n\n addCommands() {\n return {\n insertMedia: (attrs) => ({ commands }) => {\n return commands.insertContent({ type: this.name, attrs });\n },\n updateMedia: (attrs) => ({ commands }) => {\n return commands.updateAttributes(this.name, attrs);\n },\n };\n },\n\n addNodeView() {\n return ReactNodeViewRenderer((props) => <MediaNodeView {...{ ...props, options: this.options }} />);\n },\n});\n\nconst removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-media-dialog');\n\n prevDialogs.forEach((s) => s.remove());\n};\n\nexport const insertDialog = (props) => {\n const newEl = document.createElement('div');\n const { type, callback, options, ...rest } = props;\n const initialBodyOverflow = document.body.style.overflow;\n\n removeDialogs();\n\n newEl.className = 'insert-media-dialog';\n document.body.style.overflow = 'hidden';\n\n const handleClose = (val, data) => {\n callback(val, data);\n newEl.remove();\n document.body.style.overflow = initialBodyOverflow;\n };\n\n const el = (\n <MediaDialog\n {...rest}\n uploadSoundSupport={options.uploadSoundSupport}\n type={type}\n disablePortal={true}\n open={true}\n handleClose={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl);\n\n document.body.appendChild(newEl);\n};\n\nexport default function MediaNodeView({ editor, node, updateAttributes, deleteNode, options }) {\n const { type, src, width, height, tag } = node.attrs;\n\n const handleEdit = () => {\n insertDialog({\n ...node.attrs,\n options: options,\n edit: true,\n callback: (val, data) => {\n if (val) {\n updateAttributes(data);\n }\n\n editor\n .chain()\n .focus()\n .run();\n },\n });\n };\n\n useEffect(() => {\n insertDialog({\n ...node.attrs,\n options: options,\n edit: true,\n callback: (val, data) => {\n if (val) {\n updateAttributes(data);\n } else {\n deleteNode();\n }\n\n editor\n .chain()\n .focus()\n .run();\n },\n });\n }, []);\n\n return (\n <NodeViewWrapper data-type={type} style={{ width, height }}>\n {tag === 'audio' ? (\n <audio controls controlsList=\"nodownload\">\n <source type=\"audio/mp3\" src={src} />\n </audio>\n ) : (\n <iframe src={src} allowFullScreen frameBorder=\"0\" />\n )}\n\n <MediaToolbar onEdit={handleEdit} onRemove={deleteNode} />\n </NodeViewWrapper>\n );\n}\n"],"file":"media.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/extensions/responseArea.js"],"names":["ResponseAreaExtension","Extension","create","name","addCommands","insertResponseArea","type","tr","state","dispatch","schema","selection","position","$from","pos","RESP_MAP","node","nodes","index","id","value","insert","ExplicitConstructedResponseNode","Node","group","inline","atom","addAttributes","parseHTML","tag","getAttrs","el","dataset","renderHTML","HTMLAttributes","addNodeView","props","options","MathTemplatedNode","DragInTheBlankNode","inTable","InlineDropdownNode"],"mappings":"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","sourcesContent":["// InlineNodes.js\nimport React from 'react';\nimport { Node, ReactNodeViewRenderer, ReactRenderer } from '@tiptap/react';\nimport ExplicitConstructedResponse from '../components/respArea/ExplicitConstructedResponse';\nimport DragInTheBlank from '../components/respArea/DragInTheBlank/DragInTheBlank';\nimport InlineDropdown from '../components/respArea/InlineDropdown';\nimport { Extension } from '@tiptap/core';\nimport { MathToolbar } from '@pie-lib/math-toolbar';\nimport tippy from 'tippy.js';\n\nexport const ResponseAreaExtension = Extension.create({\n name: 'responseArea',\n addCommands() {\n return {\n insertResponseArea: (type) => ({ tr, state, dispatch }) => {\n const { schema, selection } = state;\n const position = selection.$from.pos;\n const RESP_MAP = {\n 'drag-in-the-blank': 'drag_in_the_blank',\n 'explicit-constructed-response': 'explicit_constructed_response',\n 'inline-dropdown': 'inline_dropdown',\n };\n\n const node = schema.nodes[RESP_MAP[type]].create({\n index: '1',\n id: '1',\n value: '',\n });\n\n if (dispatch) {\n tr.insert(position, node);\n dispatch(tr);\n }\n\n return true;\n },\n };\n },\n});\n\n/**\n * ExplicitConstructedResponse Node\n */\nexport const ExplicitConstructedResponseNode = Node.create({\n name: 'explicit_constructed_response',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"explicit_constructed_response\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'explicit_constructed_response',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <ExplicitConstructedResponse {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * MathTemplated Node\n */\nexport const MathTemplatedNode = Node.create({\n name: 'math_templated',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"math_templated\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'math_templated',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer(() => <div></div>);\n },\n});\n\n/**\n * DragInTheBlank Node\n */\nexport const DragInTheBlankNode = Node.create({\n name: 'drag_in_the_blank',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n id: { default: null },\n value: { default: '' },\n inTable: { default: null },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"drag_in_the_blank\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n id: el.dataset.id,\n value: el.dataset.value,\n inTable: el.dataset.inTable,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'drag_in_the_blank',\n 'data-index': HTMLAttributes.index,\n 'data-id': HTMLAttributes.id,\n 'data-value': HTMLAttributes.value,\n 'data-in-table': HTMLAttributes.inTable,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <DragInTheBlank {...{ ...props, options: this.options }} />);\n },\n});\n\n/**\n * InlineDropdown Node\n */\nexport const InlineDropdownNode = Node.create({\n name: 'inline_dropdown',\n group: 'inline',\n inline: true,\n atom: true,\n addAttributes() {\n return {\n index: { default: null },\n value: { default: '' },\n };\n },\n parseHTML() {\n return [\n {\n tag: 'span[data-type=\"inline_dropdown\"]',\n getAttrs: (el) => ({\n index: el.dataset.index,\n value: el.dataset.value,\n }),\n },\n ];\n },\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n {\n 'data-type': 'inline_dropdown',\n 'data-index': HTMLAttributes.index,\n 'data-value': HTMLAttributes.value,\n },\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => <InlineDropdown {...{ ...props, options: this.options }} />);\n },\n});\n"],"file":"responseArea.js"}
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.jsx"],"names":["StyledEditor"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;eAGeA,wB","sourcesContent":["import StyledEditor, { EditableHtml } from './components/EditableHtml';\nimport { ALL_PLUGINS } from './extensions';\n\nexport { EditableHtml, ALL_PLUGINS };\nexport default StyledEditor;\n"],"file":"index.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/styles/editorContainerStyles.js"],"names":["styles","theme","root","position","padding","border","borderRadius","cursor","wordBreak","overflow","maxHeight","marginTop","margin","marginBottom","lineHeight","textWrap","fontSize","backgroundColor","color","background","fontFamily","borderLeft","paddingLeft","borderTop","tableLayout","width","borderCollapse","text","textAlign","children","editorHolder","left","right","bottom","height","content","transition","pointerEvents","transform","disabledUnderline","display","disabledScrollbar","scrollbarWidth","readOnly","backgroundSize","backgroundImage","backgroundRepeat","backgroundPosition","palette","common","black","error","main","noBorder","noPadding","toolbarOnTop"],"mappings":"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","sourcesContent":["import { color } from '@pie-lib/render-ui';\nimport { primary } from '../theme';\n\nconst styles = (theme) => ({\n root: {\n position: 'relative',\n padding: '0px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n cursor: 'text',\n '& [data-slate-editor=\"true\"]': {\n wordBreak: 'break-word',\n overflow: 'visible',\n maxHeight: '500px',\n // needed in order to be able to put the focus before a void element when it is the first one in the editor\n padding: '5px',\n },\n\n '&:first-child': {\n marginTop: 0,\n },\n\n '& ul, & ol': {\n padding: '0 1rem',\n margin: '1.25rem 1rem 1.25rem 0.4rem',\n },\n\n '& ul li p, & ol li p': {\n marginTop: '0.25em',\n marginBottom: '0.25em',\n },\n\n '& h1, & h2, & h3, & h4, & h5, & h6': {\n lineHeight: 1.1,\n marginTop: '2.5rem',\n textWrap: 'pretty',\n },\n\n '& h1, & h2': {\n marginTop: '3.5rem',\n marginBottom: '1.5rem',\n },\n\n '& h1': {\n fontSize: '1.4rem',\n },\n\n '& h2': {\n fontSize: '1.2rem',\n },\n\n '& h3': {\n fontSize: '1.1rem',\n },\n\n '& h4, & h5, & h6': {\n fontSize: '1rem',\n },\n\n '& code': {\n backgroundColor: 'var(--purple-light)',\n borderRadius: '0.4rem',\n color: 'var(--black)',\n fontSize: '0.85rem',\n padding: '0.25em 0.3em',\n },\n\n '& pre': {\n background: 'var(--black)',\n borderRadius: '0.5rem',\n color: 'var(--white)',\n fontFamily: \"'JetBrainsMono', monospace\",\n margin: '1.5rem 0',\n padding: '0.75rem 1rem',\n\n '& code': {\n background: 'none',\n color: 'inherit',\n fontSize: '0.8rem',\n padding: 0,\n },\n },\n\n '& blockquote': {\n borderLeft: '3px solid var(--gray-3)',\n margin: '1.5rem 0',\n paddingLeft: '1rem',\n },\n\n '& hr': {\n border: 'none',\n borderTop: '1px solid var(--gray-2)',\n margin: '2rem 0',\n },\n\n '& table': {\n tableLayout: 'fixed',\n width: '100%',\n borderCollapse: 'collapse',\n color: color.text(),\n backgroundColor: color.background(),\n },\n '& table:not([border=\"1\"]) tr': {\n borderTop: '1px solid #dfe2e5',\n },\n '& td, th': {\n padding: '.6em 1em',\n textAlign: 'center',\n },\n '& table:not([border=\"1\"]) td, th': {\n border: '1px solid #dfe2e5',\n },\n },\n children: {\n padding: '10px 16px',\n },\n editorHolder: {\n position: 'relative',\n padding: '0px',\n // overflowY: 'auto',\n overflow: 'visible',\n color: color.text(),\n backgroundColor: color.background(),\n '&::before': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transition: 'background-color 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms',\n pointerEvents: 'none',\n backgroundColor: 'rgba(0, 0, 0, 0.42)',\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 200ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0.42)',\n },\n },\n disabledUnderline: {\n '&::before': {\n display: 'none',\n },\n '&::after': {\n display: 'none',\n },\n },\n disabledScrollbar: {\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n scrollbarWidth: 'none',\n '-ms-overflow-style': 'none',\n },\n readOnly: {\n '&::before': {\n background: 'transparent',\n backgroundSize: '5px 1px',\n backgroundImage: 'linear-gradient(to right, rgba(0, 0, 0, 0.42) 33%, transparent 0%)',\n backgroundRepeat: 'repeat-x',\n backgroundPosition: 'left top',\n },\n '&::after': {\n left: '0',\n right: '0',\n bottom: '0',\n height: '1px',\n content: '\"\"',\n position: 'absolute',\n transform: 'scaleX(0)',\n transition: 'transform 200ms cubic-bezier(0.0, 0.0, 0.2, 1) 0ms, background-color 0ms linear',\n backgroundColor: 'rgba(0, 0, 0, 0)',\n },\n '&:hover': {\n '&::after': {\n transform: 'scaleX(0)',\n backgroundColor: theme.palette.common.black,\n height: '2px',\n },\n },\n },\n error: {\n border: `2px solid ${theme.palette.error.main} !important`,\n },\n noBorder: {\n border: 'none',\n },\n noPadding: {\n padding: 0,\n },\n toolbarOnTop: {\n marginTop: '45px',\n },\n});\n\nexport default styles;\n"],"file":"editorContainerStyles.js"}
|
package/lib/theme.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/theme.js"],"names":["primary"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAhB","sourcesContent":["export const primary = '#304ffe';\n"],"file":"theme.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/size.js"],"names":["valueToSize","v","calcRegex","endsWith","undefined","match","value","parseInt","Number","isNaN"],"mappings":";;;;;;;AAAO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAO;AAChC,MAAI,CAACA,CAAL,EAAQ;AACN;AACD;;AAED,MAAMC,SAAS,GAAG,gBAAlB;;AAEA,MAAI,OAAOD,CAAP,KAAa,QAAjB,EAA2B;AACzB,QAAIA,CAAC,CAACE,QAAF,CAAW,GAAX,CAAJ,EAAqB;AACnB,aAAOC,SAAP;AACD;;AAED,QACEH,CAAC,CAACE,QAAF,CAAW,IAAX,KACAF,CAAC,CAACE,QAAF,CAAW,IAAX,CADA,IAEAF,CAAC,CAACE,QAAF,CAAW,IAAX,CAFA,IAGAF,CAAC,CAACE,QAAF,CAAW,IAAX,CAHA,IAIAF,CAAC,CAACE,QAAF,CAAW,IAAX,CAJA,IAKAF,CAAC,CAACI,KAAF,CAAQH,SAAR,CANF,EAOE;AACA,aAAOD,CAAP;AACD;;AAED,QAAMK,KAAK,GAAGC,QAAQ,CAACN,CAAD,EAAI,EAAJ,CAAtB;AAEA,WAAOO,MAAM,CAACC,KAAP,CAAaH,KAAb,IAAsBA,KAAtB,aAAiCA,KAAjC,OAAP;AACD;;AAED,MAAI,OAAOL,CAAP,KAAa,QAAjB,EAA2B;AACzB,qBAAUA,CAAV;AACD;AACF,CA/BM","sourcesContent":["export const valueToSize = (v) => {\n if (!v) {\n return;\n }\n\n const calcRegex = /^calc\\((.*)\\)$/;\n\n if (typeof v === 'string') {\n if (v.endsWith('%')) {\n return undefined;\n }\n\n if (\n v.endsWith('px') ||\n v.endsWith('vh') ||\n v.endsWith('vw') ||\n v.endsWith('ch') ||\n v.endsWith('em') ||\n v.match(calcRegex)\n ) {\n return v;\n }\n\n const value = parseInt(v, 10);\n\n return Number.isNaN(value) ? value : `${value}px`;\n }\n\n if (typeof v === 'number') {\n return `${v}px`;\n }\n};\n"],"file":"size.js"}
|
package/package.json
CHANGED
|
@@ -26,7 +26,7 @@ import { ToolbarIcon } from './respArea/ToolbarIcon';
|
|
|
26
26
|
import { spanishConfig, specialConfig } from './characters/characterUtils';
|
|
27
27
|
import TextAlignIcon from './icons/TextAlign';
|
|
28
28
|
import CSSIcon from './icons/CssIcon';
|
|
29
|
-
import { AddColumn, AddRow, RemoveColumn, RemoveRow, RemoveTable } from './icons/
|
|
29
|
+
import { AddColumn, AddRow, RemoveColumn, RemoveRow, RemoveTable } from './icons/TableIcons';
|
|
30
30
|
|
|
31
31
|
import { CharacterIcon, CharacterPicker } from './CharacterPicker';
|
|
32
32
|
import { DoneButton } from './common/done-button';
|
|
@@ -368,7 +368,7 @@ function MenuBar({ editor, classes, activePlugins, toolbarOpts: toolOpts, respon
|
|
|
368
368
|
editor
|
|
369
369
|
.chain()
|
|
370
370
|
.focus()
|
|
371
|
-
.insertMedia({
|
|
371
|
+
.insertMedia({ type: 'video' })
|
|
372
372
|
.run(),
|
|
373
373
|
},
|
|
374
374
|
{
|
|
@@ -378,7 +378,7 @@ function MenuBar({ editor, classes, activePlugins, toolbarOpts: toolOpts, respon
|
|
|
378
378
|
editor
|
|
379
379
|
.chain()
|
|
380
380
|
.focus()
|
|
381
|
-
.insertMedia({ tag: 'audio' })
|
|
381
|
+
.insertMedia({ type: 'audio', tag: 'audio' })
|
|
382
382
|
.run(),
|
|
383
383
|
},
|
|
384
384
|
{
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import debug from 'debug';
|
|
3
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
4
|
+
import classNames from 'classnames';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
|
|
7
|
+
const styles = (theme) => ({
|
|
8
|
+
button: {
|
|
9
|
+
color: 'grey',
|
|
10
|
+
display: 'inline-flex',
|
|
11
|
+
padding: '2px',
|
|
12
|
+
background: 'none',
|
|
13
|
+
border: 'none',
|
|
14
|
+
cursor: 'pointer',
|
|
15
|
+
'&:hover': {
|
|
16
|
+
color: 'black',
|
|
17
|
+
},
|
|
18
|
+
'&:focus': {
|
|
19
|
+
outline: `2px solid ${theme.palette.grey[700]}`,
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
active: {
|
|
23
|
+
color: 'black',
|
|
24
|
+
},
|
|
25
|
+
disabled: {
|
|
26
|
+
opacity: 0.7,
|
|
27
|
+
cursor: 'not-allowed',
|
|
28
|
+
'& :hover': {
|
|
29
|
+
color: 'grey',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const log = debug('pie-elements:editable-html:raw-button');
|
|
35
|
+
|
|
36
|
+
export class RawButton extends React.Component {
|
|
37
|
+
static propTypes = {
|
|
38
|
+
onClick: PropTypes.func.isRequired,
|
|
39
|
+
classes: PropTypes.object.isRequired,
|
|
40
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
41
|
+
active: PropTypes.bool,
|
|
42
|
+
disabled: PropTypes.bool,
|
|
43
|
+
extraStyles: PropTypes.object,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
constructor(props) {
|
|
47
|
+
super(props);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
onClick = (e) => {
|
|
51
|
+
log('[onClick]');
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
const { onClick } = this.props;
|
|
54
|
+
onClick(e);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
onKeyDown = (e) => {
|
|
58
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
59
|
+
log('[onKeyDown]');
|
|
60
|
+
e.preventDefault();
|
|
61
|
+
const { onClick } = this.props;
|
|
62
|
+
onClick(e);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
render() {
|
|
67
|
+
const { active, classes, children, disabled, extraStyles, ariaLabel } = this.props;
|
|
68
|
+
|
|
69
|
+
const names = classNames(classes.button, {
|
|
70
|
+
[classes.active]: active,
|
|
71
|
+
[classes.disabled]: disabled,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
return (
|
|
75
|
+
<button
|
|
76
|
+
style={extraStyles}
|
|
77
|
+
className={names}
|
|
78
|
+
onMouseDown={this.onClick}
|
|
79
|
+
onKeyDown={this.onKeyDown}
|
|
80
|
+
disabled={disabled}
|
|
81
|
+
aria-label={ariaLabel}
|
|
82
|
+
aria-pressed={active}
|
|
83
|
+
tabIndex={0}
|
|
84
|
+
>
|
|
85
|
+
{children}
|
|
86
|
+
</button>
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const Button = withStyles(styles)(RawButton);
|
|
92
|
+
|
|
93
|
+
export class RawMarkButton extends React.Component {
|
|
94
|
+
static propTypes = {
|
|
95
|
+
onToggle: PropTypes.func.isRequired,
|
|
96
|
+
mark: PropTypes.string,
|
|
97
|
+
label: PropTypes.string.isRequired,
|
|
98
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
99
|
+
classes: PropTypes.object.isRequired,
|
|
100
|
+
active: PropTypes.bool,
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
constructor(props) {
|
|
104
|
+
super(props);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
onToggle = (e) => {
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
this.props.onToggle(this.props.mark);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
onKeyDown = (e) => {
|
|
113
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
this.props.onToggle(this.props.mark);
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
render() {
|
|
120
|
+
const { classes, children, active, label } = this.props;
|
|
121
|
+
|
|
122
|
+
const names = classNames(classes.button, active && classes.active);
|
|
123
|
+
return (
|
|
124
|
+
<button
|
|
125
|
+
className={names}
|
|
126
|
+
onMouseDown={this.onToggle}
|
|
127
|
+
aria-pressed={active}
|
|
128
|
+
onKeyDown={this.onKeyDown}
|
|
129
|
+
aria-label={label}
|
|
130
|
+
tabIndex={0}
|
|
131
|
+
>
|
|
132
|
+
{children}
|
|
133
|
+
</button>
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export const MarkButton = withStyles(styles)(RawMarkButton);
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import DialogContent from '@material-ui/core/DialogContent';
|
|
3
|
+
import ArrowBackIos from '@material-ui/icons/ArrowBackIos';
|
|
4
|
+
import TextField from '@material-ui/core/TextField';
|
|
5
|
+
import DialogActions from '@material-ui/core/DialogActions';
|
|
6
|
+
import Button from '@material-ui/core/Button';
|
|
7
|
+
import Dialog from '@material-ui/core/Dialog';
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
|
|
10
|
+
export class AltDialog extends React.Component {
|
|
11
|
+
static propTypes = {
|
|
12
|
+
onDone: PropTypes.func.isRequired,
|
|
13
|
+
alt: PropTypes.string,
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
constructor(props) {
|
|
17
|
+
super(props);
|
|
18
|
+
|
|
19
|
+
const { alt } = props;
|
|
20
|
+
|
|
21
|
+
this.state = {
|
|
22
|
+
value: alt,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
closeDialog = () => {
|
|
27
|
+
const allDialogs = document.querySelectorAll('#text-dialog');
|
|
28
|
+
|
|
29
|
+
allDialogs.forEach(function(s) {
|
|
30
|
+
return s.remove();
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
onDone = () => {
|
|
35
|
+
const { onDone } = this.props;
|
|
36
|
+
const { value } = this.state;
|
|
37
|
+
|
|
38
|
+
onDone(value);
|
|
39
|
+
this.closeDialog();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
handleOverflow = () => {
|
|
43
|
+
document.body.style.removeProperty('overflow');
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
render() {
|
|
47
|
+
const { value } = this.state;
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<Dialog
|
|
51
|
+
open
|
|
52
|
+
disablePortal
|
|
53
|
+
onClose={this.closeDialog}
|
|
54
|
+
id="text-dialog"
|
|
55
|
+
hideBackdrop
|
|
56
|
+
disableScrollLock
|
|
57
|
+
onEntered={this.handleOverflow}
|
|
58
|
+
>
|
|
59
|
+
<DialogContent>
|
|
60
|
+
<div style={{ display: 'flex' }}>
|
|
61
|
+
<ArrowBackIos style={{ paddingTop: '6px' }} />
|
|
62
|
+
<TextField
|
|
63
|
+
multiline
|
|
64
|
+
placeholder={'Enter an Alt Text description of this image'}
|
|
65
|
+
helperText={
|
|
66
|
+
'Users with visual limitations rely on Alt Text, since screen readers cannot otherwise describe the contents of an image.'
|
|
67
|
+
}
|
|
68
|
+
value={value}
|
|
69
|
+
onChange={(event) => this.setState({ value: event.target.value })}
|
|
70
|
+
FormHelperTextProps={{ style: { fontSize: 14 } }}
|
|
71
|
+
/>
|
|
72
|
+
</div>
|
|
73
|
+
</DialogContent>
|
|
74
|
+
<DialogActions>
|
|
75
|
+
<Button onClick={this.onDone}>Done</Button>
|
|
76
|
+
</DialogActions>
|
|
77
|
+
</Dialog>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export default AltDialog;
|
|
@@ -1 +1,100 @@
|
|
|
1
|
-
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import debug from 'debug';
|
|
4
|
+
import ReactDOM from 'react-dom';
|
|
5
|
+
import { withStyles } from '@material-ui/core/styles';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
|
|
8
|
+
import AltDialog from './AltDialog';
|
|
9
|
+
import { MarkButton } from '../common/toolbar-buttons';
|
|
10
|
+
|
|
11
|
+
const log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');
|
|
12
|
+
|
|
13
|
+
const AlignmentButton = ({ alignment, active, onClick }) => {
|
|
14
|
+
return (
|
|
15
|
+
<MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>
|
|
16
|
+
{alignment}
|
|
17
|
+
</MarkButton>
|
|
18
|
+
);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
AlignmentButton.propTypes = {
|
|
22
|
+
alignment: PropTypes.string.isRequired,
|
|
23
|
+
active: PropTypes.bool.isRequired,
|
|
24
|
+
onClick: PropTypes.func.isRequired,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export class ImageToolbar extends React.Component {
|
|
28
|
+
static propTypes = {
|
|
29
|
+
onChange: PropTypes.func.isRequired,
|
|
30
|
+
classes: PropTypes.object.isRequired,
|
|
31
|
+
alignment: PropTypes.string,
|
|
32
|
+
alt: PropTypes.string,
|
|
33
|
+
imageLoaded: PropTypes.bool,
|
|
34
|
+
disableImageAlignmentButtons: PropTypes.bool,
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
onAltTextDone = (newAlt) => {
|
|
38
|
+
log('[onAltTextDone]: alt:', newAlt);
|
|
39
|
+
|
|
40
|
+
this.props.onChange({ alt: newAlt }, true);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
onAlignmentClick = (alignment) => {
|
|
44
|
+
log('[onAlignmentClick]: alignment:', alignment);
|
|
45
|
+
this.props.onChange({ alignment });
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
renderDialog = () => {
|
|
49
|
+
const { alt } = this.props;
|
|
50
|
+
const popoverEl = document.createElement('div');
|
|
51
|
+
|
|
52
|
+
const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;
|
|
53
|
+
|
|
54
|
+
ReactDOM.render(el, popoverEl);
|
|
55
|
+
|
|
56
|
+
document.body.appendChild(popoverEl);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
render() {
|
|
60
|
+
const { classes, alignment, imageLoaded, disableImageAlignmentButtons } = this.props;
|
|
61
|
+
return (
|
|
62
|
+
<div className={classes.holder}>
|
|
63
|
+
{!disableImageAlignmentButtons && (
|
|
64
|
+
<>
|
|
65
|
+
<AlignmentButton alignment={'left'} active={alignment === 'left'} onClick={this.onAlignmentClick} />
|
|
66
|
+
<AlignmentButton alignment={'center'} active={alignment === 'center'} onClick={this.onAlignmentClick} />
|
|
67
|
+
<AlignmentButton alignment={'right'} active={alignment === 'right'} onClick={this.onAlignmentClick} />
|
|
68
|
+
</>
|
|
69
|
+
)}
|
|
70
|
+
<span
|
|
71
|
+
className={classNames({
|
|
72
|
+
[classes.disabled]: !imageLoaded,
|
|
73
|
+
[classes.altButton]: !disableImageAlignmentButtons,
|
|
74
|
+
})}
|
|
75
|
+
onMouseDown={(event) => imageLoaded && this.renderDialog(event)}
|
|
76
|
+
>
|
|
77
|
+
Alt text
|
|
78
|
+
</span>
|
|
79
|
+
</div>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const styles = (theme) => ({
|
|
85
|
+
holder: {
|
|
86
|
+
paddingLeft: theme.spacing.unit,
|
|
87
|
+
display: 'flex',
|
|
88
|
+
alignItems: 'center',
|
|
89
|
+
},
|
|
90
|
+
disabled: {
|
|
91
|
+
opacity: 0.5,
|
|
92
|
+
},
|
|
93
|
+
altButton: {
|
|
94
|
+
borderLeft: '1px solid grey',
|
|
95
|
+
paddingLeft: 8,
|
|
96
|
+
marginLeft: 4,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
export default withStyles(styles)(ImageToolbar);
|