@pie-lib/editable-html 12.1.0-next.2 → 12.1.0-next.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/CHANGELOG.md +8 -0
- package/lib/block-tags.js +24 -0
- package/lib/block-tags.js.map +1 -0
- package/lib/constants.js +11 -0
- package/lib/constants.js.map +1 -0
- package/lib/editor.js +1224 -0
- package/lib/editor.js.map +1 -0
- package/lib/index.js +208 -0
- package/lib/index.js.map +1 -0
- package/lib/parse-html.js +16 -0
- package/lib/parse-html.js.map +1 -0
- package/lib/plugins/characters/custom-popper.js +57 -0
- package/lib/plugins/characters/custom-popper.js.map +1 -0
- package/lib/plugins/characters/index.js +265 -0
- package/lib/plugins/characters/index.js.map +1 -0
- package/lib/plugins/characters/utils.js +378 -0
- package/lib/plugins/characters/utils.js.map +1 -0
- package/lib/plugins/css/icons/index.js +25 -0
- package/lib/plugins/css/icons/index.js.map +1 -0
- package/lib/plugins/css/index.js +338 -0
- package/lib/plugins/css/index.js.map +1 -0
- package/lib/plugins/customPlugin/index.js +98 -0
- package/lib/plugins/customPlugin/index.js.map +1 -0
- package/lib/plugins/html/icons/index.js +30 -0
- package/lib/plugins/html/icons/index.js.map +1 -0
- package/lib/plugins/html/index.js +71 -0
- package/lib/plugins/html/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +100 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -0
- package/lib/plugins/image/component.js +343 -0
- package/lib/plugins/image/component.js.map +1 -0
- package/lib/plugins/image/image-toolbar.js +137 -0
- package/lib/plugins/image/image-toolbar.js.map +1 -0
- package/lib/plugins/image/index.js +223 -0
- package/lib/plugins/image/index.js.map +1 -0
- package/lib/plugins/image/insert-image-handler.js +140 -0
- package/lib/plugins/image/insert-image-handler.js.map +1 -0
- package/lib/plugins/index.js +342 -0
- package/lib/plugins/index.js.map +1 -0
- package/lib/plugins/list/index.js +288 -0
- package/lib/plugins/list/index.js.map +1 -0
- package/lib/plugins/math/index.js +402 -0
- package/lib/plugins/math/index.js.map +1 -0
- package/lib/plugins/media/index.js +330 -0
- package/lib/plugins/media/index.js.map +1 -0
- package/lib/plugins/media/media-dialog.js +594 -0
- package/lib/plugins/media/media-dialog.js.map +1 -0
- package/lib/plugins/media/media-toolbar.js +76 -0
- package/lib/plugins/media/media-toolbar.js.map +1 -0
- package/lib/plugins/media/media-wrapper.js +64 -0
- package/lib/plugins/media/media-wrapper.js.map +1 -0
- package/lib/plugins/rendering/index.js +36 -0
- package/lib/plugins/rendering/index.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +271 -0
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/index.js +55 -0
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -0
- package/lib/plugins/respArea/drag-in-the-blank/utils.js +38 -0
- package/lib/plugins/respArea/drag-in-the-blank/utils.js.map +1 -0
- package/lib/plugins/respArea/explicit-constructed-response/index.js +50 -0
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -0
- package/lib/plugins/respArea/icons/index.js +72 -0
- package/lib/plugins/respArea/icons/index.js.map +1 -0
- package/lib/plugins/respArea/index.js +287 -0
- package/lib/plugins/respArea/index.js.map +1 -0
- package/lib/plugins/respArea/inline-dropdown/index.js +67 -0
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -0
- package/lib/plugins/respArea/math-templated/index.js +112 -0
- package/lib/plugins/respArea/math-templated/index.js.map +1 -0
- package/lib/plugins/respArea/utils.js +95 -0
- package/lib/plugins/respArea/utils.js.map +1 -0
- package/lib/plugins/table/CustomTablePlugin.js +116 -0
- package/lib/plugins/table/CustomTablePlugin.js.map +1 -0
- package/lib/plugins/table/icons/index.js +55 -0
- package/lib/plugins/table/icons/index.js.map +1 -0
- package/lib/plugins/table/index.js +413 -0
- package/lib/plugins/table/index.js.map +1 -0
- package/lib/plugins/table/table-toolbar.js +138 -0
- package/lib/plugins/table/table-toolbar.js.map +1 -0
- package/lib/plugins/textAlign/icons/index.js +187 -0
- package/lib/plugins/textAlign/icons/index.js.map +1 -0
- package/lib/plugins/textAlign/index.js +26 -0
- package/lib/plugins/textAlign/index.js.map +1 -0
- package/lib/plugins/toolbar/default-toolbar.js +180 -0
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -0
- package/lib/plugins/toolbar/done-button.js +35 -0
- package/lib/plugins/toolbar/done-button.js.map +1 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js +258 -0
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -0
- package/lib/plugins/toolbar/index.js +29 -0
- package/lib/plugins/toolbar/index.js.map +1 -0
- package/lib/plugins/toolbar/toolbar-buttons.js +145 -0
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -0
- package/lib/plugins/toolbar/toolbar.js +307 -0
- package/lib/plugins/toolbar/toolbar.js.map +1 -0
- package/lib/plugins/utils.js +42 -0
- package/lib/plugins/utils.js.map +1 -0
- package/lib/serialization.js +571 -0
- package/lib/serialization.js.map +1 -0
- package/lib/shared/alert-dialog.js +68 -0
- package/lib/theme.js +8 -0
- package/lib/theme.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = exports.ImageToolbar = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
11
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
+
var _client = require("react-dom/client");
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
20
|
+
var _toolbarButtons = require("../toolbar/toolbar-buttons");
|
|
21
|
+
var _altDialog = _interopRequireDefault(require("./alt-dialog"));
|
|
22
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
23
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
24
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image:image-toolbar');
|
|
25
|
+
var AlignmentButton = function AlignmentButton(_ref) {
|
|
26
|
+
var alignment = _ref.alignment,
|
|
27
|
+
active = _ref.active,
|
|
28
|
+
onClick = _ref.onClick;
|
|
29
|
+
return /*#__PURE__*/_react["default"].createElement(_toolbarButtons.MarkButton, {
|
|
30
|
+
active: active,
|
|
31
|
+
onToggle: function onToggle() {
|
|
32
|
+
return onClick(alignment);
|
|
33
|
+
},
|
|
34
|
+
label: alignment
|
|
35
|
+
}, alignment);
|
|
36
|
+
};
|
|
37
|
+
AlignmentButton.propTypes = {
|
|
38
|
+
alignment: _propTypes["default"].string.isRequired,
|
|
39
|
+
active: _propTypes["default"].bool.isRequired,
|
|
40
|
+
onClick: _propTypes["default"].func.isRequired
|
|
41
|
+
};
|
|
42
|
+
var StyledHolder = (0, _styles.styled)('div')(function (_ref2) {
|
|
43
|
+
var theme = _ref2.theme;
|
|
44
|
+
return {
|
|
45
|
+
paddingLeft: theme.spacing(1),
|
|
46
|
+
display: 'flex',
|
|
47
|
+
alignItems: 'center'
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
var StyledAltText = (0, _styles.styled)('span')(function () {
|
|
51
|
+
return {
|
|
52
|
+
'&.disabled': {
|
|
53
|
+
opacity: 0.5
|
|
54
|
+
},
|
|
55
|
+
'&.altButton': {
|
|
56
|
+
borderLeft: '1px solid grey',
|
|
57
|
+
paddingLeft: 8,
|
|
58
|
+
marginLeft: 4
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
var ImageToolbar = exports.ImageToolbar = /*#__PURE__*/function (_React$Component) {
|
|
63
|
+
function ImageToolbar() {
|
|
64
|
+
var _this;
|
|
65
|
+
(0, _classCallCheck2["default"])(this, ImageToolbar);
|
|
66
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
67
|
+
args[_key] = arguments[_key];
|
|
68
|
+
}
|
|
69
|
+
_this = _callSuper(this, ImageToolbar, [].concat(args));
|
|
70
|
+
(0, _defineProperty2["default"])(_this, "dialogRoot", null);
|
|
71
|
+
(0, _defineProperty2["default"])(_this, "onAltTextDone", function (newAlt) {
|
|
72
|
+
log('[onAltTextDone]: alt:', newAlt);
|
|
73
|
+
_this.props.onChange({
|
|
74
|
+
alt: newAlt
|
|
75
|
+
}, true);
|
|
76
|
+
});
|
|
77
|
+
(0, _defineProperty2["default"])(_this, "onAlignmentClick", function (alignment) {
|
|
78
|
+
log('[onAlignmentClick]: alignment:', alignment);
|
|
79
|
+
_this.props.onChange({
|
|
80
|
+
alignment: alignment
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
(0, _defineProperty2["default"])(_this, "renderDialog", function () {
|
|
84
|
+
var alt = _this.props.alt;
|
|
85
|
+
var popoverEl = document.createElement('div');
|
|
86
|
+
var el = /*#__PURE__*/_react["default"].createElement(_altDialog["default"], {
|
|
87
|
+
alt: alt,
|
|
88
|
+
onDone: _this.onAltTextDone
|
|
89
|
+
});
|
|
90
|
+
_this.dialogRoot = (0, _client.createRoot)(popoverEl);
|
|
91
|
+
_this.dialogRoot.render(el);
|
|
92
|
+
document.body.appendChild(popoverEl);
|
|
93
|
+
});
|
|
94
|
+
return _this;
|
|
95
|
+
}
|
|
96
|
+
(0, _inherits2["default"])(ImageToolbar, _React$Component);
|
|
97
|
+
return (0, _createClass2["default"])(ImageToolbar, [{
|
|
98
|
+
key: "render",
|
|
99
|
+
value: function render() {
|
|
100
|
+
var _this2 = this;
|
|
101
|
+
var _this$props = this.props,
|
|
102
|
+
alignment = _this$props.alignment,
|
|
103
|
+
imageLoaded = _this$props.imageLoaded,
|
|
104
|
+
disableImageAlignmentButtons = _this$props.disableImageAlignmentButtons;
|
|
105
|
+
return /*#__PURE__*/_react["default"].createElement(StyledHolder, null, !disableImageAlignmentButtons && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
106
|
+
alignment: 'left',
|
|
107
|
+
active: alignment === 'left',
|
|
108
|
+
onClick: this.onAlignmentClick
|
|
109
|
+
}), /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
110
|
+
alignment: 'center',
|
|
111
|
+
active: alignment === 'center',
|
|
112
|
+
onClick: this.onAlignmentClick
|
|
113
|
+
}), /*#__PURE__*/_react["default"].createElement(AlignmentButton, {
|
|
114
|
+
alignment: 'right',
|
|
115
|
+
active: alignment === 'right',
|
|
116
|
+
onClick: this.onAlignmentClick
|
|
117
|
+
})), /*#__PURE__*/_react["default"].createElement(StyledAltText, {
|
|
118
|
+
className: (0, _classnames["default"])({
|
|
119
|
+
disabled: !imageLoaded,
|
|
120
|
+
altButton: !disableImageAlignmentButtons
|
|
121
|
+
}),
|
|
122
|
+
onMouseDown: function onMouseDown(event) {
|
|
123
|
+
return imageLoaded && _this2.renderDialog(event);
|
|
124
|
+
}
|
|
125
|
+
}, "Alt text"));
|
|
126
|
+
}
|
|
127
|
+
}]);
|
|
128
|
+
}(_react["default"].Component);
|
|
129
|
+
(0, _defineProperty2["default"])(ImageToolbar, "propTypes", {
|
|
130
|
+
onChange: _propTypes["default"].func.isRequired,
|
|
131
|
+
alignment: _propTypes["default"].string,
|
|
132
|
+
alt: _propTypes["default"].string,
|
|
133
|
+
imageLoaded: _propTypes["default"].bool,
|
|
134
|
+
disableImageAlignmentButtons: _propTypes["default"].bool
|
|
135
|
+
});
|
|
136
|
+
var _default = exports["default"] = ImageToolbar;
|
|
137
|
+
//# sourceMappingURL=image-toolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-toolbar.js","names":["_propTypes","_interopRequireDefault","require","_react","_debug","_client","_styles","_classnames","_toolbarButtons","_altDialog","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","log","debug","AlignmentButton","_ref","alignment","active","onClick","createElement","MarkButton","onToggle","label","propTypes","PropTypes","string","isRequired","bool","func","StyledHolder","styled","_ref2","theme","paddingLeft","spacing","display","alignItems","StyledAltText","opacity","borderLeft","marginLeft","ImageToolbar","exports","_React$Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","newAlt","props","onChange","alt","popoverEl","document","el","onDone","onAltTextDone","dialogRoot","createRoot","render","body","appendChild","_inherits2","_createClass2","key","value","_this2","_this$props","imageLoaded","disableImageAlignmentButtons","Fragment","onAlignmentClick","className","classNames","disabled","altButton","onMouseDown","event","renderDialog","React","Component","_default"],"sources":["../../../src/plugins/image/image-toolbar.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\nimport debug from 'debug';\nimport { createRoot } from 'react-dom/client';\nimport { styled } from '@mui/material/styles';\nimport classNames from 'classnames';\n\nimport { MarkButton } from '../toolbar/toolbar-buttons';\nimport AltDialog from './alt-dialog';\n\nconst log = debug('@pie-lib:editable-html:plugins:image:image-toolbar');\n\nconst AlignmentButton = ({ alignment, active, onClick }) => {\n return (\n <MarkButton active={active} onToggle={() => onClick(alignment)} label={alignment}>\n {alignment}\n </MarkButton>\n );\n};\n\nAlignmentButton.propTypes = {\n alignment: PropTypes.string.isRequired,\n active: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n};\n\nconst StyledHolder = styled('div')(({ theme }) => ({\n paddingLeft: theme.spacing(1),\n display: 'flex',\n alignItems: 'center',\n}));\n\nconst StyledAltText = styled('span')(() => ({\n '&.disabled': {\n opacity: 0.5,\n },\n '&.altButton': {\n borderLeft: '1px solid grey',\n paddingLeft: 8,\n marginLeft: 4,\n },\n}));\n\nexport class ImageToolbar extends React.Component {\n static propTypes = {\n onChange: PropTypes.func.isRequired,\n alignment: PropTypes.string,\n alt: PropTypes.string,\n imageLoaded: PropTypes.bool,\n disableImageAlignmentButtons: PropTypes.bool,\n };\n\n dialogRoot = null;\n\n onAltTextDone = (newAlt) => {\n log('[onAltTextDone]: alt:', newAlt);\n\n this.props.onChange({ alt: newAlt }, true);\n };\n\n onAlignmentClick = (alignment) => {\n log('[onAlignmentClick]: alignment:', alignment);\n this.props.onChange({ alignment });\n };\n\n renderDialog = () => {\n const { alt } = this.props;\n const popoverEl = document.createElement('div');\n\n const el = <AltDialog alt={alt} onDone={this.onAltTextDone} />;\n\n this.dialogRoot = createRoot(popoverEl);\n this.dialogRoot.render(el);\n\n document.body.appendChild(popoverEl);\n };\n\n render() {\n const { alignment, imageLoaded, disableImageAlignmentButtons } = this.props;\n return (\n <StyledHolder>\n {!disableImageAlignmentButtons && (\n <>\n <AlignmentButton alignment={'left'} active={alignment === 'left'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'center'} active={alignment === 'center'} onClick={this.onAlignmentClick} />\n <AlignmentButton alignment={'right'} active={alignment === 'right'} onClick={this.onAlignmentClick} />\n </>\n )}\n <StyledAltText\n className={classNames({\n disabled: !imageLoaded,\n altButton: !disableImageAlignmentButtons,\n })}\n onMouseDown={(event) => imageLoaded && this.renderDialog(event)}\n >\n Alt text\n </StyledAltText>\n </StyledHolder>\n );\n }\n}\n\nexport default ImageToolbar;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = ImagePlugin;
|
|
8
|
+
exports.serialization = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _slate = require("slate");
|
|
11
|
+
var _Image = _interopRequireDefault(require("@mui/icons-material/Image"));
|
|
12
|
+
var _component = _interopRequireDefault(require("./component"));
|
|
13
|
+
var _imageToolbar = _interopRequireDefault(require("./image-toolbar"));
|
|
14
|
+
var _insertImageHandler = _interopRequireDefault(require("./insert-image-handler"));
|
|
15
|
+
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:image');
|
|
20
|
+
function ImagePlugin(opts) {
|
|
21
|
+
var toolbar = opts.insertImageRequested && {
|
|
22
|
+
icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
|
|
23
|
+
ariaLabel: 'Insert Image',
|
|
24
|
+
onClick: function onClick(value, onChange) {
|
|
25
|
+
log('[toolbar] onClick');
|
|
26
|
+
var inline = _slate.Inline.create({
|
|
27
|
+
type: 'image',
|
|
28
|
+
isVoid: true,
|
|
29
|
+
data: {
|
|
30
|
+
loaded: false,
|
|
31
|
+
src: undefined
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
var change = value.change().insertInline(inline);
|
|
35
|
+
onChange(change);
|
|
36
|
+
opts.insertImageRequested(inline, function (onFinish, getValue) {
|
|
37
|
+
return new _insertImageHandler["default"](inline, onFinish, getValue, onChange);
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
supports: function supports(node) {
|
|
41
|
+
return node.object === 'inline' && node.type === 'image';
|
|
42
|
+
},
|
|
43
|
+
customToolbar: function customToolbar(node, value, onToolbarDone) {
|
|
44
|
+
var alignment = node.data.get('alignment');
|
|
45
|
+
var alt = node.data.get('alt');
|
|
46
|
+
var imageLoaded = node.data.get('loaded') !== false;
|
|
47
|
+
var onChange = function onChange(newValues, done) {
|
|
48
|
+
var update = _objectSpread(_objectSpread({}, node.data.toObject()), newValues);
|
|
49
|
+
var change = value.change().setNodeByKey(node.key, {
|
|
50
|
+
data: update
|
|
51
|
+
});
|
|
52
|
+
onToolbarDone(change, done);
|
|
53
|
+
};
|
|
54
|
+
var Tb = function Tb() {
|
|
55
|
+
return /*#__PURE__*/_react["default"].createElement(_imageToolbar["default"], {
|
|
56
|
+
disableImageAlignmentButtons: opts.disableImageAlignmentButtons,
|
|
57
|
+
alt: alt,
|
|
58
|
+
imageLoaded: imageLoaded,
|
|
59
|
+
alignment: alignment || 'left',
|
|
60
|
+
onChange: onChange
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
return Tb;
|
|
64
|
+
},
|
|
65
|
+
showDone: true
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
name: 'image',
|
|
69
|
+
toolbar: toolbar,
|
|
70
|
+
deleteNode: function deleteNode(e, node, value, onChange) {
|
|
71
|
+
e.preventDefault();
|
|
72
|
+
if (opts.onDelete) {
|
|
73
|
+
var update = node.data.merge(_slate.Data.create({
|
|
74
|
+
deleteStatus: 'pending'
|
|
75
|
+
}));
|
|
76
|
+
var change = value.change().setNodeByKey(node.key, {
|
|
77
|
+
data: update
|
|
78
|
+
});
|
|
79
|
+
onChange(change);
|
|
80
|
+
opts.onDelete(node, function (err, v) {
|
|
81
|
+
if (!err) {
|
|
82
|
+
change = v.change().removeNodeByKey(node.key);
|
|
83
|
+
} else {
|
|
84
|
+
log('[error]: ', err);
|
|
85
|
+
change = v.change().setNodeByKey(node.key, node.data.merge(_slate.Data.create({
|
|
86
|
+
deleteStatus: 'failed'
|
|
87
|
+
})));
|
|
88
|
+
}
|
|
89
|
+
onChange(change);
|
|
90
|
+
});
|
|
91
|
+
} else {
|
|
92
|
+
var _change = value.change().removeNodeByKey(node.key);
|
|
93
|
+
onChange(_change);
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
stopReset: function stopReset(value) {
|
|
97
|
+
var imgPendingInsertion = value.document.findDescendant(function (n) {
|
|
98
|
+
if (n.type !== 'image') {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
return n.data.get('loaded') === false;
|
|
102
|
+
});
|
|
103
|
+
/** don't reset if there is an image pending insertion */
|
|
104
|
+
return imgPendingInsertion !== undefined && imgPendingInsertion !== null;
|
|
105
|
+
},
|
|
106
|
+
renderNode: function renderNode(props) {
|
|
107
|
+
if (props.node.type === 'image') {
|
|
108
|
+
var all = Object.assign({
|
|
109
|
+
onDelete: opts.onDelete,
|
|
110
|
+
onFocus: opts.onFocus,
|
|
111
|
+
onBlur: opts.onBlur,
|
|
112
|
+
maxImageWidth: opts.maxImageWidth,
|
|
113
|
+
maxImageHeight: opts.maxImageHeight
|
|
114
|
+
}, props);
|
|
115
|
+
return /*#__PURE__*/_react["default"].createElement(_component["default"], all);
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
normalizeNode: function normalizeNode(node) {
|
|
119
|
+
var textNodeMap = {};
|
|
120
|
+
var updateNodesArray = [];
|
|
121
|
+
var index = 0;
|
|
122
|
+
if (node.object !== 'document') return;
|
|
123
|
+
node.findDescendant(function (d) {
|
|
124
|
+
if (d.object === 'text') {
|
|
125
|
+
textNodeMap[index] = d;
|
|
126
|
+
}
|
|
127
|
+
if (d.type === 'image') {
|
|
128
|
+
if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {
|
|
129
|
+
updateNodesArray.push(textNodeMap[index - 1]);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
index++;
|
|
133
|
+
});
|
|
134
|
+
if (!updateNodesArray.length) return;
|
|
135
|
+
return function (change) {
|
|
136
|
+
change.withoutNormalization(function () {
|
|
137
|
+
updateNodesArray.forEach(function (n) {
|
|
138
|
+
return change.insertTextByKey(n.key, 0, ' ');
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
var serialization = exports.serialization = {
|
|
146
|
+
deserialize: function deserialize(el /*, next*/) {
|
|
147
|
+
var name = el.tagName.toLowerCase();
|
|
148
|
+
if (name !== 'img') return;
|
|
149
|
+
log('deserialize: ', name);
|
|
150
|
+
var style = el.style || {
|
|
151
|
+
width: '',
|
|
152
|
+
height: '',
|
|
153
|
+
margin: '',
|
|
154
|
+
justifyContent: ''
|
|
155
|
+
};
|
|
156
|
+
var width = parseInt(style.width.replace('px', ''), 10) || null;
|
|
157
|
+
var height = parseInt(style.height.replace('px', ''), 10) || null;
|
|
158
|
+
var out = {
|
|
159
|
+
object: 'inline',
|
|
160
|
+
type: 'image',
|
|
161
|
+
isVoid: true,
|
|
162
|
+
data: {
|
|
163
|
+
src: el.getAttribute('src'),
|
|
164
|
+
width: width,
|
|
165
|
+
height: height,
|
|
166
|
+
margin: el.style.margin,
|
|
167
|
+
justifyContent: el.style.justifyContent,
|
|
168
|
+
alignment: el.getAttribute('alignment'),
|
|
169
|
+
alt: el.getAttribute('alt')
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
log('return object: ', out);
|
|
173
|
+
return out;
|
|
174
|
+
},
|
|
175
|
+
serialize: function serialize(object /*, children*/) {
|
|
176
|
+
if (object.type !== 'image') return;
|
|
177
|
+
var data = object.data;
|
|
178
|
+
var src = data.get('src');
|
|
179
|
+
var width = data.get('width');
|
|
180
|
+
var height = data.get('height');
|
|
181
|
+
var alignment = data.get('alignment') || 'left';
|
|
182
|
+
var margin = data.get('margin');
|
|
183
|
+
var justifyContent = data.get('margin');
|
|
184
|
+
var alt = data.get('alt');
|
|
185
|
+
var style = {};
|
|
186
|
+
if (width) {
|
|
187
|
+
style.width = "".concat(width, "px");
|
|
188
|
+
}
|
|
189
|
+
if (height) {
|
|
190
|
+
style.height = "".concat(height, "px");
|
|
191
|
+
}
|
|
192
|
+
style.margin = margin;
|
|
193
|
+
style.justifyContent = justifyContent;
|
|
194
|
+
if (alignment) {
|
|
195
|
+
switch (alignment) {
|
|
196
|
+
case 'left':
|
|
197
|
+
style.justifyContent = 'flex-start';
|
|
198
|
+
style.margin = '0';
|
|
199
|
+
break;
|
|
200
|
+
case 'center':
|
|
201
|
+
style.justifyContent = 'center';
|
|
202
|
+
style.margin = '0 auto';
|
|
203
|
+
break;
|
|
204
|
+
case 'right':
|
|
205
|
+
style.justifyContent = 'flex-end';
|
|
206
|
+
style.margin = 'auto 0 0 auto';
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
style.justifyContent = 'flex-start';
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
style.objectFit = 'contain';
|
|
214
|
+
var props = {
|
|
215
|
+
src: src,
|
|
216
|
+
style: style,
|
|
217
|
+
alignment: alignment,
|
|
218
|
+
alt: alt
|
|
219
|
+
};
|
|
220
|
+
return /*#__PURE__*/_react["default"].createElement("img", props);
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_slate","require","_Image","_interopRequireDefault","_component","_imageToolbar","_insertImageHandler","_react","_debug","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","ImagePlugin","opts","toolbar","insertImageRequested","icon","createElement","ariaLabel","onClick","value","onChange","inline","Inline","create","type","isVoid","data","loaded","src","undefined","change","insertInline","onFinish","getValue","InsertImageHandler","supports","node","object","customToolbar","onToolbarDone","alignment","get","alt","imageLoaded","newValues","done","update","toObject","setNodeByKey","key","Tb","disableImageAlignmentButtons","showDone","name","deleteNode","preventDefault","onDelete","merge","Data","deleteStatus","err","v","removeNodeByKey","stopReset","imgPendingInsertion","document","findDescendant","n","renderNode","props","all","assign","onFocus","onBlur","maxImageWidth","maxImageHeight","normalizeNode","textNodeMap","updateNodesArray","index","d","text","withoutNormalization","insertTextByKey","serialization","exports","deserialize","el","tagName","toLowerCase","style","width","height","margin","justifyContent","parseInt","replace","out","getAttribute","serialize","concat","objectFit"],"sources":["../../../src/plugins/image/index.jsx"],"sourcesContent":["import { Data, Inline } from 'slate';\n\nimport Image from '@mui/icons-material/Image';\nimport ImageComponent from './component';\nimport ImageToolbar from './image-toolbar';\nimport InsertImageHandler from './insert-image-handler';\nimport React from 'react';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:image');\n\nexport default function ImagePlugin(opts) {\n const toolbar = opts.insertImageRequested && {\n icon: <Image />,\n ariaLabel: 'Insert Image',\n onClick: (value, onChange) => {\n log('[toolbar] onClick');\n const inline = Inline.create({\n type: 'image',\n isVoid: true,\n data: {\n loaded: false,\n src: undefined,\n },\n });\n\n const change = value.change().insertInline(inline);\n\n onChange(change);\n opts.insertImageRequested(\n inline,\n (onFinish, getValue) => new InsertImageHandler(inline, onFinish, getValue, onChange),\n );\n },\n supports: (node) => node.object === 'inline' && node.type === 'image',\n customToolbar: (node, value, onToolbarDone) => {\n const alignment = node.data.get('alignment');\n const alt = node.data.get('alt');\n const imageLoaded = node.data.get('loaded') !== false;\n const onChange = (newValues, done) => {\n const update = {\n ...node.data.toObject(),\n ...newValues,\n };\n\n const change = value.change().setNodeByKey(node.key, { data: update });\n onToolbarDone(change, done);\n };\n\n const Tb = () => (\n <ImageToolbar\n disableImageAlignmentButtons={opts.disableImageAlignmentButtons}\n alt={alt}\n imageLoaded={imageLoaded}\n alignment={alignment || 'left'}\n onChange={onChange}\n />\n );\n return Tb;\n },\n showDone: true,\n };\n\n return {\n name: 'image',\n toolbar,\n deleteNode: (e, node, value, onChange) => {\n e.preventDefault();\n if (opts.onDelete) {\n const update = node.data.merge(Data.create({ deleteStatus: 'pending' }));\n\n let change = value.change().setNodeByKey(node.key, { data: update });\n\n onChange(change);\n opts.onDelete(node, (err, v) => {\n if (!err) {\n change = v.change().removeNodeByKey(node.key);\n } else {\n log('[error]: ', err);\n change = v.change().setNodeByKey(node.key, node.data.merge(Data.create({ deleteStatus: 'failed' })));\n }\n onChange(change);\n });\n } else {\n let change = value.change().removeNodeByKey(node.key);\n onChange(change);\n }\n },\n stopReset: (value) => {\n const imgPendingInsertion = value.document.findDescendant((n) => {\n if (n.type !== 'image') {\n return;\n }\n return n.data.get('loaded') === false;\n });\n /** don't reset if there is an image pending insertion */\n return imgPendingInsertion !== undefined && imgPendingInsertion !== null;\n },\n renderNode(props) {\n if (props.node.type === 'image') {\n const all = Object.assign(\n {\n onDelete: opts.onDelete,\n onFocus: opts.onFocus,\n onBlur: opts.onBlur,\n maxImageWidth: opts.maxImageWidth,\n maxImageHeight: opts.maxImageHeight,\n },\n props,\n );\n return <ImageComponent {...all} />;\n }\n },\n normalizeNode: (node) => {\n const textNodeMap = {};\n const updateNodesArray = [];\n let index = 0;\n\n if (node.object !== 'document') return;\n\n node.findDescendant((d) => {\n if (d.object === 'text') {\n textNodeMap[index] = d;\n }\n\n if (d.type === 'image') {\n if (index > 0 && textNodeMap[index - 1] && textNodeMap[index - 1].text === '') {\n updateNodesArray.push(textNodeMap[index - 1]);\n }\n }\n\n index++;\n });\n\n if (!updateNodesArray.length) return;\n\n return (change) => {\n change.withoutNormalization(() => {\n updateNodesArray.forEach((n) => change.insertTextByKey(n.key, 0, ' '));\n });\n };\n },\n };\n}\n\nexport const serialization = {\n deserialize(el /*, next*/) {\n const name = el.tagName.toLowerCase();\n if (name !== 'img') return;\n\n log('deserialize: ', name);\n const style = el.style || { width: '', height: '', margin: '', justifyContent: '' };\n const width = parseInt(style.width.replace('px', ''), 10) || null;\n const height = parseInt(style.height.replace('px', ''), 10) || null;\n\n const out = {\n object: 'inline',\n type: 'image',\n isVoid: true,\n data: {\n src: el.getAttribute('src'),\n width,\n height,\n margin: el.style.margin,\n justifyContent: el.style.justifyContent,\n alignment: el.getAttribute('alignment'),\n alt: el.getAttribute('alt'),\n },\n };\n log('return object: ', out);\n return out;\n },\n serialize(object /*, children*/) {\n if (object.type !== 'image') return;\n\n const { data } = object;\n const src = data.get('src');\n const width = data.get('width');\n const height = data.get('height');\n const alignment = data.get('alignment') || 'left';\n const margin = data.get('margin');\n const justifyContent = data.get('margin');\n const alt = data.get('alt');\n const style = {};\n if (width) {\n style.width = `${width}px`;\n }\n\n if (height) {\n style.height = `${height}px`;\n }\n\n style.margin = margin;\n style.justifyContent = justifyContent;\n\n if (alignment) {\n switch (alignment) {\n case 'left':\n style.justifyContent = 'flex-start';\n style.margin = '0';\n break;\n case 'center':\n style.justifyContent = 'center';\n style.margin = '0 auto';\n break;\n case 'right':\n style.justifyContent = 'flex-end';\n style.margin = 'auto 0 0 auto';\n break;\n default:\n style.justifyContent = 'flex-start';\n break;\n }\n }\n\n style.objectFit = 'contain';\n\n const props = {\n src,\n style,\n alignment,\n alt,\n };\n\n return <img {...props} />;\n },\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,aAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,mBAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,MAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,MAAA,GAAAL,sBAAA,CAAAF,OAAA;AAA0B,SAAAQ,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAE1B,IAAMoB,GAAG,GAAG,IAAAC,iBAAK,EAAC,sCAAsC,CAAC;AAE1C,SAASC,WAAWA,CAACC,IAAI,EAAE;EACxC,IAAMC,OAAO,GAAGD,IAAI,CAACE,oBAAoB,IAAI;IAC3CC,IAAI,eAAE7B,MAAA,YAAA8B,aAAA,CAACnC,MAAA,WAAK,MAAE,CAAC;IACfoC,SAAS,EAAE,cAAc;IACzBC,OAAO,EAAE,SAATA,OAAOA,CAAGC,KAAK,EAAEC,QAAQ,EAAK;MAC5BX,GAAG,CAAC,mBAAmB,CAAC;MACxB,IAAMY,MAAM,GAAGC,aAAM,CAACC,MAAM,CAAC;QAC3BC,IAAI,EAAE,OAAO;QACbC,MAAM,EAAE,IAAI;QACZC,IAAI,EAAE;UACJC,MAAM,EAAE,KAAK;UACbC,GAAG,EAAEC;QACP;MACF,CAAC,CAAC;MAEF,IAAMC,MAAM,GAAGX,KAAK,CAACW,MAAM,CAAC,CAAC,CAACC,YAAY,CAACV,MAAM,CAAC;MAElDD,QAAQ,CAACU,MAAM,CAAC;MAChBlB,IAAI,CAACE,oBAAoB,CACvBO,MAAM,EACN,UAACW,QAAQ,EAAEC,QAAQ;QAAA,OAAK,IAAIC,8BAAkB,CAACb,MAAM,EAAEW,QAAQ,EAAEC,QAAQ,EAAEb,QAAQ,CAAC;MAAA,CACtF,CAAC;IACH,CAAC;IACDe,QAAQ,EAAE,SAAVA,QAAQA,CAAGC,IAAI;MAAA,OAAKA,IAAI,CAACC,MAAM,KAAK,QAAQ,IAAID,IAAI,CAACZ,IAAI,KAAK,OAAO;IAAA;IACrEc,aAAa,EAAE,SAAfA,aAAaA,CAAGF,IAAI,EAAEjB,KAAK,EAAEoB,aAAa,EAAK;MAC7C,IAAMC,SAAS,GAAGJ,IAAI,CAACV,IAAI,CAACe,GAAG,CAAC,WAAW,CAAC;MAC5C,IAAMC,GAAG,GAAGN,IAAI,CAACV,IAAI,CAACe,GAAG,CAAC,KAAK,CAAC;MAChC,IAAME,WAAW,GAAGP,IAAI,CAACV,IAAI,CAACe,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK;MACrD,IAAMrB,QAAQ,GAAG,SAAXA,QAAQA,CAAIwB,SAAS,EAAEC,IAAI,EAAK;QACpC,IAAMC,MAAM,GAAA7C,aAAA,CAAAA,aAAA,KACPmC,IAAI,CAACV,IAAI,CAACqB,QAAQ,CAAC,CAAC,GACpBH,SAAS,CACb;QAED,IAAMd,MAAM,GAAGX,KAAK,CAACW,MAAM,CAAC,CAAC,CAACkB,YAAY,CAACZ,IAAI,CAACa,GAAG,EAAE;UAAEvB,IAAI,EAAEoB;QAAO,CAAC,CAAC;QACtEP,aAAa,CAACT,MAAM,EAAEe,IAAI,CAAC;MAC7B,CAAC;MAED,IAAMK,EAAE,GAAG,SAALA,EAAEA,CAAA;QAAA,oBACNhE,MAAA,YAAA8B,aAAA,CAAChC,aAAA,WAAY;UACXmE,4BAA4B,EAAEvC,IAAI,CAACuC,4BAA6B;UAChET,GAAG,EAAEA,GAAI;UACTC,WAAW,EAAEA,WAAY;UACzBH,SAAS,EAAEA,SAAS,IAAI,MAAO;UAC/BpB,QAAQ,EAAEA;QAAS,CACpB,CAAC;MAAA,CACH;MACD,OAAO8B,EAAE;IACX,CAAC;IACDE,QAAQ,EAAE;EACZ,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,OAAO;IACbxC,OAAO,EAAPA,OAAO;IACPyC,UAAU,EAAE,SAAZA,UAAUA,CAAGjE,CAAC,EAAE+C,IAAI,EAAEjB,KAAK,EAAEC,QAAQ,EAAK;MACxC/B,CAAC,CAACkE,cAAc,CAAC,CAAC;MAClB,IAAI3C,IAAI,CAAC4C,QAAQ,EAAE;QACjB,IAAMV,MAAM,GAAGV,IAAI,CAACV,IAAI,CAAC+B,KAAK,CAACC,WAAI,CAACnC,MAAM,CAAC;UAAEoC,YAAY,EAAE;QAAU,CAAC,CAAC,CAAC;QAExE,IAAI7B,MAAM,GAAGX,KAAK,CAACW,MAAM,CAAC,CAAC,CAACkB,YAAY,CAACZ,IAAI,CAACa,GAAG,EAAE;UAAEvB,IAAI,EAAEoB;QAAO,CAAC,CAAC;QAEpE1B,QAAQ,CAACU,MAAM,CAAC;QAChBlB,IAAI,CAAC4C,QAAQ,CAACpB,IAAI,EAAE,UAACwB,GAAG,EAAEC,CAAC,EAAK;UAC9B,IAAI,CAACD,GAAG,EAAE;YACR9B,MAAM,GAAG+B,CAAC,CAAC/B,MAAM,CAAC,CAAC,CAACgC,eAAe,CAAC1B,IAAI,CAACa,GAAG,CAAC;UAC/C,CAAC,MAAM;YACLxC,GAAG,CAAC,WAAW,EAAEmD,GAAG,CAAC;YACrB9B,MAAM,GAAG+B,CAAC,CAAC/B,MAAM,CAAC,CAAC,CAACkB,YAAY,CAACZ,IAAI,CAACa,GAAG,EAAEb,IAAI,CAACV,IAAI,CAAC+B,KAAK,CAACC,WAAI,CAACnC,MAAM,CAAC;cAAEoC,YAAY,EAAE;YAAS,CAAC,CAAC,CAAC,CAAC;UACtG;UACAvC,QAAQ,CAACU,MAAM,CAAC;QAClB,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAIA,OAAM,GAAGX,KAAK,CAACW,MAAM,CAAC,CAAC,CAACgC,eAAe,CAAC1B,IAAI,CAACa,GAAG,CAAC;QACrD7B,QAAQ,CAACU,OAAM,CAAC;MAClB;IACF,CAAC;IACDiC,SAAS,EAAE,SAAXA,SAASA,CAAG5C,KAAK,EAAK;MACpB,IAAM6C,mBAAmB,GAAG7C,KAAK,CAAC8C,QAAQ,CAACC,cAAc,CAAC,UAACC,CAAC,EAAK;QAC/D,IAAIA,CAAC,CAAC3C,IAAI,KAAK,OAAO,EAAE;UACtB;QACF;QACA,OAAO2C,CAAC,CAACzC,IAAI,CAACe,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK;MACvC,CAAC,CAAC;MACF;MACA,OAAOuB,mBAAmB,KAAKnC,SAAS,IAAImC,mBAAmB,KAAK,IAAI;IAC1E,CAAC;IACDI,UAAU,WAAVA,UAAUA,CAACC,KAAK,EAAE;MAChB,IAAIA,KAAK,CAACjC,IAAI,CAACZ,IAAI,KAAK,OAAO,EAAE;QAC/B,IAAM8C,GAAG,GAAG9E,MAAM,CAAC+E,MAAM,CACvB;UACEf,QAAQ,EAAE5C,IAAI,CAAC4C,QAAQ;UACvBgB,OAAO,EAAE5D,IAAI,CAAC4D,OAAO;UACrBC,MAAM,EAAE7D,IAAI,CAAC6D,MAAM;UACnBC,aAAa,EAAE9D,IAAI,CAAC8D,aAAa;UACjCC,cAAc,EAAE/D,IAAI,CAAC+D;QACvB,CAAC,EACDN,KACF,CAAC;QACD,oBAAOnF,MAAA,YAAA8B,aAAA,CAACjC,UAAA,WAAc,EAAKuF,GAAM,CAAC;MACpC;IACF,CAAC;IACDM,aAAa,EAAE,SAAfA,aAAaA,CAAGxC,IAAI,EAAK;MACvB,IAAMyC,WAAW,GAAG,CAAC,CAAC;MACtB,IAAMC,gBAAgB,GAAG,EAAE;MAC3B,IAAIC,KAAK,GAAG,CAAC;MAEb,IAAI3C,IAAI,CAACC,MAAM,KAAK,UAAU,EAAE;MAEhCD,IAAI,CAAC8B,cAAc,CAAC,UAACc,CAAC,EAAK;QACzB,IAAIA,CAAC,CAAC3C,MAAM,KAAK,MAAM,EAAE;UACvBwC,WAAW,CAACE,KAAK,CAAC,GAAGC,CAAC;QACxB;QAEA,IAAIA,CAAC,CAACxD,IAAI,KAAK,OAAO,EAAE;UACtB,IAAIuD,KAAK,GAAG,CAAC,IAAIF,WAAW,CAACE,KAAK,GAAG,CAAC,CAAC,IAAIF,WAAW,CAACE,KAAK,GAAG,CAAC,CAAC,CAACE,IAAI,KAAK,EAAE,EAAE;YAC7EH,gBAAgB,CAAC/E,IAAI,CAAC8E,WAAW,CAACE,KAAK,GAAG,CAAC,CAAC,CAAC;UAC/C;QACF;QAEAA,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAI,CAACD,gBAAgB,CAAC3E,MAAM,EAAE;MAE9B,OAAO,UAAC2B,MAAM,EAAK;QACjBA,MAAM,CAACoD,oBAAoB,CAAC,YAAM;UAChCJ,gBAAgB,CAAC1E,OAAO,CAAC,UAAC+D,CAAC;YAAA,OAAKrC,MAAM,CAACqD,eAAe,CAAChB,CAAC,CAAClB,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC;UAAA,EAAC;QACxE,CAAC,CAAC;MACJ,CAAC;IACH;EACF,CAAC;AACH;AAEO,IAAMmC,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAC3BE,WAAW,WAAXA,WAAWA,CAACC,EAAE,CAAC,YAAY;IACzB,IAAMlC,IAAI,GAAGkC,EAAE,CAACC,OAAO,CAACC,WAAW,CAAC,CAAC;IACrC,IAAIpC,IAAI,KAAK,KAAK,EAAE;IAEpB5C,GAAG,CAAC,eAAe,EAAE4C,IAAI,CAAC;IAC1B,IAAMqC,KAAK,GAAGH,EAAE,CAACG,KAAK,IAAI;MAAEC,KAAK,EAAE,EAAE;MAAEC,MAAM,EAAE,EAAE;MAAEC,MAAM,EAAE,EAAE;MAAEC,cAAc,EAAE;IAAG,CAAC;IACnF,IAAMH,KAAK,GAAGI,QAAQ,CAACL,KAAK,CAACC,KAAK,CAACK,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI;IACjE,IAAMJ,MAAM,GAAGG,QAAQ,CAACL,KAAK,CAACE,MAAM,CAACI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI;IAEnE,IAAMC,GAAG,GAAG;MACV5D,MAAM,EAAE,QAAQ;MAChBb,IAAI,EAAE,OAAO;MACbC,MAAM,EAAE,IAAI;MACZC,IAAI,EAAE;QACJE,GAAG,EAAE2D,EAAE,CAACW,YAAY,CAAC,KAAK,CAAC;QAC3BP,KAAK,EAALA,KAAK;QACLC,MAAM,EAANA,MAAM;QACNC,MAAM,EAAEN,EAAE,CAACG,KAAK,CAACG,MAAM;QACvBC,cAAc,EAAEP,EAAE,CAACG,KAAK,CAACI,cAAc;QACvCtD,SAAS,EAAE+C,EAAE,CAACW,YAAY,CAAC,WAAW,CAAC;QACvCxD,GAAG,EAAE6C,EAAE,CAACW,YAAY,CAAC,KAAK;MAC5B;IACF,CAAC;IACDzF,GAAG,CAAC,iBAAiB,EAAEwF,GAAG,CAAC;IAC3B,OAAOA,GAAG;EACZ,CAAC;EACDE,SAAS,WAATA,SAASA,CAAC9D,MAAM,CAAC,gBAAgB;IAC/B,IAAIA,MAAM,CAACb,IAAI,KAAK,OAAO,EAAE;IAE7B,IAAQE,IAAI,GAAKW,MAAM,CAAfX,IAAI;IACZ,IAAME,GAAG,GAAGF,IAAI,CAACe,GAAG,CAAC,KAAK,CAAC;IAC3B,IAAMkD,KAAK,GAAGjE,IAAI,CAACe,GAAG,CAAC,OAAO,CAAC;IAC/B,IAAMmD,MAAM,GAAGlE,IAAI,CAACe,GAAG,CAAC,QAAQ,CAAC;IACjC,IAAMD,SAAS,GAAGd,IAAI,CAACe,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM;IACjD,IAAMoD,MAAM,GAAGnE,IAAI,CAACe,GAAG,CAAC,QAAQ,CAAC;IACjC,IAAMqD,cAAc,GAAGpE,IAAI,CAACe,GAAG,CAAC,QAAQ,CAAC;IACzC,IAAMC,GAAG,GAAGhB,IAAI,CAACe,GAAG,CAAC,KAAK,CAAC;IAC3B,IAAMiD,KAAK,GAAG,CAAC,CAAC;IAChB,IAAIC,KAAK,EAAE;MACTD,KAAK,CAACC,KAAK,MAAAS,MAAA,CAAMT,KAAK,OAAI;IAC5B;IAEA,IAAIC,MAAM,EAAE;MACVF,KAAK,CAACE,MAAM,MAAAQ,MAAA,CAAMR,MAAM,OAAI;IAC9B;IAEAF,KAAK,CAACG,MAAM,GAAGA,MAAM;IACrBH,KAAK,CAACI,cAAc,GAAGA,cAAc;IAErC,IAAItD,SAAS,EAAE;MACb,QAAQA,SAAS;QACf,KAAK,MAAM;UACTkD,KAAK,CAACI,cAAc,GAAG,YAAY;UACnCJ,KAAK,CAACG,MAAM,GAAG,GAAG;UAClB;QACF,KAAK,QAAQ;UACXH,KAAK,CAACI,cAAc,GAAG,QAAQ;UAC/BJ,KAAK,CAACG,MAAM,GAAG,QAAQ;UACvB;QACF,KAAK,OAAO;UACVH,KAAK,CAACI,cAAc,GAAG,UAAU;UACjCJ,KAAK,CAACG,MAAM,GAAG,eAAe;UAC9B;QACF;UACEH,KAAK,CAACI,cAAc,GAAG,YAAY;UACnC;MACJ;IACF;IAEAJ,KAAK,CAACW,SAAS,GAAG,SAAS;IAE3B,IAAMhC,KAAK,GAAG;MACZzC,GAAG,EAAHA,GAAG;MACH8D,KAAK,EAALA,KAAK;MACLlD,SAAS,EAATA,SAAS;MACTE,GAAG,EAAHA;IACF,CAAC;IAED,oBAAOxD,MAAA,YAAA8B,aAAA,QAASqD,KAAQ,CAAC;EAC3B;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _slate = require("slate");
|
|
11
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
12
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:image:insert-image-handler');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Handles user selection, insertion (or cancellation) of an image into the editor.
|
|
16
|
+
* @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image
|
|
17
|
+
* @param {Function} onFinish - a function to call if uploading fails or succeeds
|
|
18
|
+
* @param {Function} getValue - a function to return the value of the editor
|
|
19
|
+
* @param {Function} onChange - callback to notify changes applied by the handler
|
|
20
|
+
* @param {Boolean} isPasted - a boolean that keeps track if the file is pasted
|
|
21
|
+
*/
|
|
22
|
+
var InsertImageHandler = /*#__PURE__*/function () {
|
|
23
|
+
function InsertImageHandler(placeholderBlock, onFinish, getValue, onChange) {
|
|
24
|
+
var isPasted = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
25
|
+
(0, _classCallCheck2["default"])(this, InsertImageHandler);
|
|
26
|
+
this.placeholderBlock = placeholderBlock;
|
|
27
|
+
this.getValue = getValue;
|
|
28
|
+
this.onFinish = onFinish;
|
|
29
|
+
this.onChange = onChange;
|
|
30
|
+
this.isPasted = isPasted;
|
|
31
|
+
this.chosenFile = null;
|
|
32
|
+
}
|
|
33
|
+
return (0, _createClass2["default"])(InsertImageHandler, [{
|
|
34
|
+
key: "getPlaceholderInDocument",
|
|
35
|
+
value: function getPlaceholderInDocument(value) {
|
|
36
|
+
var document = value.document;
|
|
37
|
+
var directChild = document.getChild(this.placeholderBlock.key);
|
|
38
|
+
if (directChild) {
|
|
39
|
+
return directChild;
|
|
40
|
+
}
|
|
41
|
+
var child = document.getDescendant(this.placeholderBlock.key);
|
|
42
|
+
if (child) {
|
|
43
|
+
return child;
|
|
44
|
+
} else {
|
|
45
|
+
// eslint-disable-next-line
|
|
46
|
+
throw new Error("insert-image: Can't find placeholder!");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}, {
|
|
50
|
+
key: "cancel",
|
|
51
|
+
value: function cancel() {
|
|
52
|
+
log('insert cancelled');
|
|
53
|
+
try {
|
|
54
|
+
var value = this.getValue();
|
|
55
|
+
var child = this.getPlaceholderInDocument(value);
|
|
56
|
+
if (child) {
|
|
57
|
+
var c = value.change().removeNodeByKey(child.key);
|
|
58
|
+
this.onChange(c);
|
|
59
|
+
this.onFinish(false);
|
|
60
|
+
}
|
|
61
|
+
} catch (err) {
|
|
62
|
+
//
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
key: "done",
|
|
67
|
+
value: function done(err, src) {
|
|
68
|
+
log('done: err:', err);
|
|
69
|
+
if (err) {
|
|
70
|
+
//eslint-disable-next-line
|
|
71
|
+
console.log(err);
|
|
72
|
+
this.onFinish(false);
|
|
73
|
+
} else {
|
|
74
|
+
var value = this.getValue();
|
|
75
|
+
var child = this.getPlaceholderInDocument(value);
|
|
76
|
+
var data = child.data.merge(_slate.Data.create({
|
|
77
|
+
loaded: true,
|
|
78
|
+
src: src,
|
|
79
|
+
percent: 100
|
|
80
|
+
}));
|
|
81
|
+
var change = value.change().setNodeByKey(this.placeholderBlock.key, {
|
|
82
|
+
data: data
|
|
83
|
+
});
|
|
84
|
+
this.onChange(change);
|
|
85
|
+
this.onFinish(true);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Notify handler that the user chose a file - will create a change with a preview in the editor.
|
|
91
|
+
*
|
|
92
|
+
* @param {File} file - the file that the user chose using a file input.
|
|
93
|
+
*/
|
|
94
|
+
}, {
|
|
95
|
+
key: "fileChosen",
|
|
96
|
+
value: function fileChosen(file) {
|
|
97
|
+
var _this = this;
|
|
98
|
+
if (!file) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Save the chosen file to this.chosenFile
|
|
103
|
+
this.chosenFile = file;
|
|
104
|
+
log('[fileChosen] file: ', file);
|
|
105
|
+
var reader = new FileReader();
|
|
106
|
+
reader.onload = function () {
|
|
107
|
+
var value = _this.getValue();
|
|
108
|
+
var dataURL = reader.result;
|
|
109
|
+
var child = _this.getPlaceholderInDocument(value);
|
|
110
|
+
var data = child.data.set('src', dataURL);
|
|
111
|
+
var change = value.change().setNodeByKey(_this.placeholderBlock.key, {
|
|
112
|
+
data: data
|
|
113
|
+
});
|
|
114
|
+
_this.onChange(change);
|
|
115
|
+
};
|
|
116
|
+
reader.readAsDataURL(file);
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "progress",
|
|
120
|
+
value: function progress(percent, bytes, total) {
|
|
121
|
+
log('progress: ', percent, bytes, total);
|
|
122
|
+
var value = this.getValue();
|
|
123
|
+
var child = this.getPlaceholderInDocument(value);
|
|
124
|
+
var data = child.data.set('percent', percent);
|
|
125
|
+
var change = value.change().setNodeByKey(this.placeholderBlock.key, {
|
|
126
|
+
data: data
|
|
127
|
+
});
|
|
128
|
+
this.onChange(change);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Add a getter method to retrieve the chosen file
|
|
132
|
+
}, {
|
|
133
|
+
key: "getChosenFile",
|
|
134
|
+
value: function getChosenFile() {
|
|
135
|
+
return this.chosenFile;
|
|
136
|
+
}
|
|
137
|
+
}]);
|
|
138
|
+
}();
|
|
139
|
+
var _default = exports["default"] = InsertImageHandler;
|
|
140
|
+
//# sourceMappingURL=insert-image-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-image-handler.js","names":["_slate","require","_debug","_interopRequireDefault","log","debug","InsertImageHandler","placeholderBlock","onFinish","getValue","onChange","isPasted","arguments","length","undefined","_classCallCheck2","chosenFile","_createClass2","key","value","getPlaceholderInDocument","document","directChild","getChild","child","getDescendant","Error","cancel","c","change","removeNodeByKey","err","done","src","console","data","merge","Data","create","loaded","percent","setNodeByKey","fileChosen","file","_this","reader","FileReader","onload","dataURL","result","set","readAsDataURL","progress","bytes","total","getChosenFile","_default","exports"],"sources":["../../../src/plugins/image/insert-image-handler.js"],"sourcesContent":["import { Data } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:image:insert-image-handler');\n\n/**\n * Handles user selection, insertion (or cancellation) of an image into the editor.\n * @param {Block} placeholderBlock - a block that has been added to the editor as a place holder for the image\n * @param {Function} onFinish - a function to call if uploading fails or succeeds\n * @param {Function} getValue - a function to return the value of the editor\n * @param {Function} onChange - callback to notify changes applied by the handler\n * @param {Boolean} isPasted - a boolean that keeps track if the file is pasted\n */\nclass InsertImageHandler {\n constructor(placeholderBlock, onFinish, getValue, onChange, isPasted = false) {\n this.placeholderBlock = placeholderBlock;\n this.getValue = getValue;\n this.onFinish = onFinish;\n this.onChange = onChange;\n this.isPasted = isPasted;\n this.chosenFile = null;\n }\n\n getPlaceholderInDocument(value) {\n const { document } = value;\n const directChild = document.getChild(this.placeholderBlock.key);\n\n if (directChild) {\n return directChild;\n }\n\n const child = document.getDescendant(this.placeholderBlock.key);\n\n if (child) {\n return child;\n } else {\n // eslint-disable-next-line\n throw new Error(\"insert-image: Can't find placeholder!\");\n }\n }\n\n cancel() {\n log('insert cancelled');\n\n try {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n\n if (child) {\n const c = value.change().removeNodeByKey(child.key);\n this.onChange(c);\n this.onFinish(false);\n }\n } catch (err) {\n //\n }\n }\n\n done(err, src) {\n log('done: err:', err);\n if (err) {\n //eslint-disable-next-line\n console.log(err);\n this.onFinish(false);\n } else {\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.merge(Data.create({ loaded: true, src, percent: 100 }));\n\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n this.onFinish(true);\n }\n }\n\n /**\n * Notify handler that the user chose a file - will create a change with a preview in the editor.\n *\n * @param {File} file - the file that the user chose using a file input.\n */\n fileChosen(file) {\n if (!file) {\n return;\n }\n\n // Save the chosen file to this.chosenFile\n this.chosenFile = file;\n\n log('[fileChosen] file: ', file);\n const reader = new FileReader();\n reader.onload = () => {\n const value = this.getValue();\n const dataURL = reader.result;\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('src', dataURL);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n };\n reader.readAsDataURL(file);\n }\n\n progress(percent, bytes, total) {\n log('progress: ', percent, bytes, total);\n const value = this.getValue();\n const child = this.getPlaceholderInDocument(value);\n const data = child.data.set('percent', percent);\n const change = value.change().setNodeByKey(this.placeholderBlock.key, { data });\n this.onChange(change);\n }\n\n // Add a getter method to retrieve the chosen file\n getChosenFile() {\n return this.chosenFile;\n }\n}\n\nexport default InsertImageHandler;\n"],"mappings":"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","ignoreList":[]}
|