@tiny-codes/react-easy 1.3.1 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/es/components/FormItemControl/index.d.ts +7 -7
  3. package/es/components/FormItemControl/index.js +6 -6
  4. package/es/components/FormItemControl/index.js.map +1 -1
  5. package/es/components/Lexical/helpers/index.d.ts +73 -0
  6. package/es/components/Lexical/helpers/index.js +286 -0
  7. package/es/components/Lexical/helpers/index.js.map +1 -0
  8. package/es/components/Lexical/index.d.ts +6 -0
  9. package/es/components/Lexical/index.js +7 -0
  10. package/es/components/Lexical/index.js.map +1 -0
  11. package/es/components/Lexical/nodes/CloseIcon.d.ts +71 -0
  12. package/es/components/Lexical/nodes/CloseIcon.js +176 -0
  13. package/es/components/Lexical/nodes/CloseIcon.js.map +1 -0
  14. package/es/components/Lexical/nodes/DivNode.d.ts +45 -0
  15. package/es/components/Lexical/nodes/DivNode.js +191 -0
  16. package/es/components/Lexical/nodes/DivNode.js.map +1 -0
  17. package/es/components/Lexical/nodes/ExtendTextNode.d.ts +46 -0
  18. package/es/components/Lexical/nodes/ExtendTextNode.js +134 -0
  19. package/es/components/Lexical/nodes/ExtendTextNode.js.map +1 -0
  20. package/es/components/Lexical/nodes/SelectNode.d.ts +74 -0
  21. package/es/components/Lexical/nodes/SelectNode.js +239 -0
  22. package/es/components/Lexical/nodes/SelectNode.js.map +1 -0
  23. package/es/components/Lexical/nodes/base.d.ts +102 -0
  24. package/es/components/Lexical/nodes/base.js +217 -0
  25. package/es/components/Lexical/nodes/base.js.map +1 -0
  26. package/es/hooks/useRefValue.d.ts +2 -2
  27. package/es/hooks/useRefValue.js.map +1 -1
  28. package/es/utils/index.d.ts +1 -0
  29. package/es/utils/index.js +1 -0
  30. package/es/utils/index.js.map +1 -1
  31. package/es/utils/string.d.ts +7 -0
  32. package/es/utils/string.js +15 -0
  33. package/es/utils/string.js.map +1 -0
  34. package/lib/components/FormItemControl/index.d.ts +7 -7
  35. package/lib/components/FormItemControl/index.js.map +1 -1
  36. package/lib/components/Lexical/helpers/index.d.ts +73 -0
  37. package/lib/components/Lexical/helpers/index.js +222 -0
  38. package/lib/components/Lexical/helpers/index.js.map +7 -0
  39. package/lib/components/Lexical/index.d.ts +6 -0
  40. package/lib/components/Lexical/index.js +34 -0
  41. package/lib/components/Lexical/index.js.map +7 -0
  42. package/lib/components/Lexical/nodes/CloseIcon.d.ts +71 -0
  43. package/lib/components/Lexical/nodes/CloseIcon.js +149 -0
  44. package/lib/components/Lexical/nodes/CloseIcon.js.map +7 -0
  45. package/lib/components/Lexical/nodes/DivNode.d.ts +45 -0
  46. package/lib/components/Lexical/nodes/DivNode.js +139 -0
  47. package/lib/components/Lexical/nodes/DivNode.js.map +7 -0
  48. package/lib/components/Lexical/nodes/ExtendTextNode.d.ts +46 -0
  49. package/lib/components/Lexical/nodes/ExtendTextNode.js +95 -0
  50. package/lib/components/Lexical/nodes/ExtendTextNode.js.map +7 -0
  51. package/lib/components/Lexical/nodes/SelectNode.d.ts +74 -0
  52. package/lib/components/Lexical/nodes/SelectNode.js +156 -0
  53. package/lib/components/Lexical/nodes/SelectNode.js.map +7 -0
  54. package/lib/components/Lexical/nodes/base.d.ts +102 -0
  55. package/lib/components/Lexical/nodes/base.js +134 -0
  56. package/lib/components/Lexical/nodes/base.js.map +7 -0
  57. package/lib/hooks/useRefValue.d.ts +2 -2
  58. package/lib/hooks/useRefValue.js.map +2 -2
  59. package/lib/utils/index.d.ts +1 -0
  60. package/lib/utils/index.js +3 -1
  61. package/lib/utils/index.js.map +2 -2
  62. package/lib/utils/string.d.ts +7 -0
  63. package/lib/utils/string.js +37 -0
  64. package/lib/utils/string.js.map +7 -0
  65. package/package.json +20 -1
@@ -0,0 +1,176 @@
1
+ var _excluded = ["icon", "iconClassName", "iconStyle", "onClick"];
2
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
4
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
5
+ 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; }
6
+ 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) { _defineProperty(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; }
7
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
8
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
9
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
11
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
12
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
13
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
16
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
17
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
19
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
21
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
22
+ import { theme } from 'antd';
23
+ import classNames from 'classnames';
24
+ import { CloseCircleOutlined } from '@ant-design/icons';
25
+ import { randomChars } from "../../../utils";
26
+ import { updateDomProps } from "../helpers";
27
+ import { BaseDecoratorNode } from "./base";
28
+ import { jsx as _jsx } from "react/jsx-runtime";
29
+ var CLOSE_ICON_CLASSNAME = 'lexical-close-icon';
30
+ /**
31
+ * - EN: A node that represents a close icon.
32
+ * - CN: 一个关闭图标的节点。
33
+ */
34
+ export var CloseIconNode = /*#__PURE__*/function (_BaseDecoratorNode) {
35
+ _inherits(CloseIconNode, _BaseDecoratorNode);
36
+ var _super = _createSuper(CloseIconNode);
37
+ function CloseIconNode(props) {
38
+ var _this;
39
+ _classCallCheck(this, CloseIconNode);
40
+ _this = _super.call(this, props);
41
+ _defineProperty(_assertThisInitialized(_this), "__hashId", void 0);
42
+ _this.__hashId = "hash-".concat(randomChars(6));
43
+ return _this;
44
+ }
45
+ _createClass(CloseIconNode, [{
46
+ key: "exportJSON",
47
+ value: function exportJSON() {
48
+ return _objectSpread(_objectSpread({}, _get(_getPrototypeOf(CloseIconNode.prototype), "exportJSON", this).call(this)), {}, {
49
+ props: this.__props,
50
+ type: this.getType(),
51
+ version: 1
52
+ });
53
+ }
54
+ }, {
55
+ key: "createDOM",
56
+ value: function createDOM() {
57
+ var _this$__props;
58
+ var span = document.createElement('span');
59
+ var underlyingProps = this.getUnderlyingProps(this.__props);
60
+ var className = classNames(CLOSE_ICON_CLASSNAME, this.__hashId, underlyingProps === null || underlyingProps === void 0 ? void 0 : underlyingProps.className);
61
+ updateDomProps(span, _objectSpread(_objectSpread({}, underlyingProps), {}, {
62
+ className: className
63
+ }));
64
+ var stylesheet = document.createElement('style');
65
+ var token = theme.getDesignToken();
66
+ var parentCls = (_this$__props = this.__props) !== null && _this$__props !== void 0 && _this$__props.parentClassName ? ".".concat(this.__props.parentClassName) : '';
67
+ stylesheet.innerHTML = "\n ".concat(parentCls ? "\n ".concat(parentCls, " { \n position: relative;\n }\n ") : '', "\n ").concat(parentCls, " .").concat(CLOSE_ICON_CLASSNAME, ".").concat(this.__hashId, " {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n color: ").concat(token.colorTextDisabled, ";\n font-size: ").concat(token.fontSizeSM, "px;\n line-height: 0;\n z-index: 1;\n opacity: 0;\n cursor: pointer;\n pointer-events: none;\n transition: opacity 0.2s ease;\n }\n ").concat(parentCls, ":hover .").concat(CLOSE_ICON_CLASSNAME, ".").concat(this.__hashId, " {\n opacity: 1;\n pointer-events: auto;\n }\n ").concat(parentCls, ":hover .").concat(CLOSE_ICON_CLASSNAME, ".").concat(this.__hashId, ":hover {\n color: ").concat(token.colorTextSecondary, ";\n }\n ");
68
+ span.append(stylesheet);
69
+ return span;
70
+ }
71
+ }, {
72
+ key: "updateDOM",
73
+ value: function updateDOM() {
74
+ return false;
75
+ }
76
+ }, {
77
+ key: "decorate",
78
+ value: function decorate() {
79
+ return /*#__PURE__*/_jsx(CloseIconComponent, {
80
+ node: this
81
+ });
82
+ }
83
+ }, {
84
+ key: "isInline",
85
+ value: function isInline() {
86
+ return false;
87
+ }
88
+ }, {
89
+ key: "getPropValue",
90
+ value: function getPropValue(propName) {
91
+ var _this$__props2;
92
+ return (_this$__props2 = this.__props) === null || _this$__props2 === void 0 ? void 0 : _this$__props2[propName];
93
+ }
94
+ }, {
95
+ key: "setProps",
96
+ value: function setProps(props) {
97
+ var writable = this.getWritable();
98
+ writable.__props = _objectSpread(_objectSpread({}, writable.__props), props);
99
+ }
100
+ }, {
101
+ key: "getUnderlyingProps",
102
+ value: function getUnderlyingProps(props) {
103
+ var excludeProps = _get(_getPrototypeOf(CloseIconNode.prototype), "getUnderlyingProps", this).call(this, props);
104
+ /* eslint-disable @typescript-eslint/no-unused-vars */
105
+ var _ref = excludeProps || {},
106
+ icon = _ref.icon,
107
+ iconClassName = _ref.iconClassName,
108
+ iconStyle = _ref.iconStyle,
109
+ onClick = _ref.onClick,
110
+ rest = _objectWithoutProperties(_ref, _excluded);
111
+ /* eslint-enable @typescript-eslint/no-unused-vars */
112
+ return rest;
113
+ }
114
+ }], [{
115
+ key: "getType",
116
+ value: function getType() {
117
+ return 'CloseIcon';
118
+ }
119
+ }, {
120
+ key: "clone",
121
+ value: function clone(node) {
122
+ return new CloseIconNode(_objectSpread(_objectSpread({}, node.__props), {}, {
123
+ key: node.getKey()
124
+ }));
125
+ }
126
+ }, {
127
+ key: "importJSON",
128
+ value: function importJSON(serializedNode) {
129
+ return $createCloseIconNode(serializedNode.props);
130
+ }
131
+ }]);
132
+ return CloseIconNode;
133
+ }(BaseDecoratorNode);
134
+
135
+ /**
136
+ * - EN: React decorator component rendered for CloseIconNode.
137
+ * - CN: CloseIconNode 对应的 React 装饰组件。
138
+ *
139
+ * @param node The bound CloseIconNode instance | 关联的 CloseIconNode 实例
140
+ */
141
+ function CloseIconComponent(_ref2) {
142
+ var node = _ref2.node;
143
+ var _ref3 = node.__props || {},
144
+ icon = _ref3.icon,
145
+ iconClassName = _ref3.iconClassName,
146
+ iconStyle = _ref3.iconStyle,
147
+ onClick = _ref3.onClick;
148
+ var closeIcon = icon !== null && icon !== void 0 ? icon : /*#__PURE__*/_jsx(CloseCircleOutlined, {
149
+ className: classNames(node.__hashId, iconClassName),
150
+ style: iconStyle,
151
+ onClick: onClick
152
+ });
153
+ return closeIcon;
154
+ }
155
+
156
+ /**
157
+ * - EN: Factory to create a CloseIconNode.
158
+ * - CN: 创建 CloseIconNode 的工厂函数。
159
+ *
160
+ * @param props Props for the CloseIcon node | CloseIcon 节点的属性
161
+ */
162
+ export function $createCloseIconNode(props) {
163
+ return new CloseIconNode(props);
164
+ }
165
+
166
+ /**
167
+ * - EN: Type guard to check whether a node is CloseIconNode.
168
+ * - CN: 判断节点是否为 CloseIconNode 的类型守卫。
169
+ *
170
+ * @param node Node to test | 要检测的节点
171
+ */
172
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
+ export function $isCloseIconNode(node) {
174
+ return node instanceof CloseIconNode;
175
+ }
176
+ //# sourceMappingURL=CloseIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["theme","classNames","CloseCircleOutlined","randomChars","updateDomProps","BaseDecoratorNode","jsx","_jsx","CLOSE_ICON_CLASSNAME","CloseIconNode","_BaseDecoratorNode","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","__hashId","concat","_createClass","key","value","exportJSON","_objectSpread","_get","_getPrototypeOf","prototype","__props","type","getType","version","createDOM","_this$__props","span","document","createElement","underlyingProps","getUnderlyingProps","className","stylesheet","token","getDesignToken","parentCls","parentClassName","innerHTML","colorTextDisabled","fontSizeSM","colorTextSecondary","append","updateDOM","decorate","CloseIconComponent","node","isInline","getPropValue","propName","_this$__props2","setProps","writable","getWritable","excludeProps","_ref","icon","iconClassName","iconStyle","onClick","rest","_objectWithoutProperties","_excluded","clone","getKey","importJSON","serializedNode","$createCloseIconNode","_ref2","_ref3","closeIcon","style","$isCloseIconNode"],"sources":["../../../../src/components/Lexical/nodes/CloseIcon.tsx"],"sourcesContent":["import { type CSSProperties, type HtmlHTMLAttributes, type ReactNode } from 'react';\nimport { theme } from 'antd';\nimport classNames from 'classnames';\nimport type { LexicalNode, SerializedLexicalNode, Spread } from 'lexical';\nimport { CloseCircleOutlined } from '@ant-design/icons';\nimport { randomChars } from '../../../utils';\nimport { updateDomProps } from '../helpers';\nimport type { BaseDecoratorNodeProps, BaseNodeProps } from './base';\nimport { BaseDecoratorNode } from './base';\n\nconst CLOSE_ICON_CLASSNAME = 'lexical-close-icon';\n\nexport interface CloseIconNodeProps extends HtmlHTMLAttributes<HTMLSpanElement>, BaseDecoratorNodeProps {\n /**\n * - EN: Parent element class name, used to add positioning styles to the parent element.\n * - CN: 父元素的类名,用于给父元素添加定位样式\n */\n parentClassName: string;\n /**\n * - EN: The custom icon to display, optional\n * - CN: 要显示的自定义图标,可选\n */\n icon?: ReactNode;\n /**\n * - EN: The default class name for the close icon element. This property is invalid if `icon` is\n * set.\n * - CN: 默认关闭图标元素的类名,如果设置了 `icon` 则该属性无效\n */\n iconClassName?: string;\n /**\n * - EN: The custom style for the close icon element. This property is invalid if `icon` is set.\n * - CN: 自定义关闭图标元素的样式,如果设置了 `icon` 则该属性无效\n */\n iconStyle?: CSSProperties;\n /**\n * - EN: The click event handler for the close icon element.\n * - CN: 关闭图标元素的点击事件\n */\n onClick?: (e: React.MouseEvent<HTMLSpanElement>) => void;\n}\n\n/**\n * - EN: A node that represents a close icon.\n * - CN: 一个关闭图标的节点。\n */\nexport class CloseIconNode extends BaseDecoratorNode<ReactNode, CloseIconNodeProps> {\n __hashId: string;\n\n constructor(props: CloseIconNodeProps & { key?: string }) {\n super(props);\n this.__hashId = `hash-${randomChars(6)}`;\n }\n\n static getType(): string {\n return 'CloseIcon';\n }\n\n static clone(node: CloseIconNode): CloseIconNode {\n return new CloseIconNode({ ...node.__props!, key: node.getKey() });\n }\n\n static importJSON(serializedNode: SerializedCloseIconNode): CloseIconNode {\n return $createCloseIconNode(serializedNode.props);\n }\n\n exportJSON(): SerializedCloseIconNode {\n return {\n ...super.exportJSON(),\n props: this.__props!,\n type: this.getType(),\n version: 1,\n };\n }\n\n createDOM(): HTMLElement {\n const span = document.createElement('span');\n const underlyingProps = this.getUnderlyingProps(this.__props);\n const className = classNames(CLOSE_ICON_CLASSNAME, this.__hashId, underlyingProps?.className);\n updateDomProps(span, { ...underlyingProps, className });\n const stylesheet = document.createElement('style');\n const token = theme.getDesignToken();\n const parentCls = this.__props?.parentClassName ? `.${this.__props.parentClassName}` : '';\n stylesheet.innerHTML = `\n ${\n parentCls\n ? `\n ${parentCls} { \n position: relative;\n }\n `\n : ''\n }\n ${parentCls} .${CLOSE_ICON_CLASSNAME}.${this.__hashId} {\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n color: ${token.colorTextDisabled};\n font-size: ${token.fontSizeSM}px;\n line-height: 0;\n z-index: 1;\n opacity: 0;\n cursor: pointer;\n pointer-events: none;\n transition: opacity 0.2s ease;\n }\n ${parentCls}:hover .${CLOSE_ICON_CLASSNAME}.${this.__hashId} {\n opacity: 1;\n pointer-events: auto;\n }\n ${parentCls}:hover .${CLOSE_ICON_CLASSNAME}.${this.__hashId}:hover {\n color: ${token.colorTextSecondary};\n }\n `;\n span.append(stylesheet);\n return span;\n }\n\n updateDOM() {\n return false;\n }\n\n decorate(): ReactNode {\n return <CloseIconComponent node={this} />;\n }\n\n isInline(): boolean {\n return false;\n }\n\n getPropValue(propName: keyof CloseIconNodeProps): CloseIconNodeProps[typeof propName] {\n return this.__props?.[propName];\n }\n\n setProps(props: Partial<CloseIconNodeProps>): void {\n const writable = this.getWritable();\n writable.__props = {\n ...writable.__props!,\n ...props,\n };\n }\n\n getUnderlyingProps(props: CloseIconNodeProps | undefined): Omit<CloseIconNodeProps, keyof BaseNodeProps> {\n const excludeProps = super.getUnderlyingProps(props);\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const { icon, iconClassName, iconStyle, onClick, ...rest } = excludeProps || {};\n /* eslint-enable @typescript-eslint/no-unused-vars */\n return rest;\n }\n}\n\n/**\n * - EN: React decorator component rendered for CloseIconNode.\n * - CN: CloseIconNode 对应的 React 装饰组件。\n *\n * @param node The bound CloseIconNode instance | 关联的 CloseIconNode 实例\n */\nfunction CloseIconComponent({ node }: CloseIconComponentProps): ReactNode {\n const { icon, iconClassName, iconStyle, onClick } = node.__props || {};\n\n const closeIcon = icon ?? (\n <CloseCircleOutlined className={classNames(node.__hashId, iconClassName)} style={iconStyle} onClick={onClick} />\n );\n return closeIcon;\n}\n\n/**\n * - EN: Factory to create a CloseIconNode.\n * - CN: 创建 CloseIconNode 的工厂函数。\n *\n * @param props Props for the CloseIcon node | CloseIcon 节点的属性\n */\nexport function $createCloseIconNode(props: CloseIconNodeProps): CloseIconNode {\n return new CloseIconNode(props);\n}\n\n/**\n * - EN: Type guard to check whether a node is CloseIconNode.\n * - CN: 判断节点是否为 CloseIconNode 的类型守卫。\n *\n * @param node Node to test | 要检测的节点\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function $isCloseIconNode(node: LexicalNode | null | undefined): node is CloseIconNode {\n return node instanceof CloseIconNode;\n}\n\ninterface CloseIconComponentProps {\n node: CloseIconNode;\n}\ntype SerializedCloseIconNode = Spread<\n {\n props: CloseIconNodeProps;\n },\n SerializedLexicalNode\n>;\n"],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { CSSProperties, HtmlHTMLAttributes } from 'react';
2
+ import type { DOMConversionMap, DOMExportOutput, LexicalNode, SerializedElementNode, Spread } from 'lexical';
3
+ import { BaseElementNode, type BaseElementProps } from './base';
4
+ /**
5
+ * - EN: Props for the DivNode, combining DOM div attributes and element behavior flags.
6
+ * - CN: DivNode 的属性,包含 DOM div 属性与元素行为标记。
7
+ */
8
+ export interface DivNodeProps extends HtmlHTMLAttributes<HTMLDivElement>, BaseElementProps {
9
+ }
10
+ export type SerializedDivNode = Spread<{
11
+ props?: DivNodeProps;
12
+ }, SerializedElementNode>;
13
+ /**
14
+ * - EN: Lexical element node that renders a DOM div with controlled props.
15
+ * - CN: 渲染为 DOM div 且可控制属性的 Lexical 元素节点。
16
+ */
17
+ export declare class DivNode extends BaseElementNode<DivNodeProps> {
18
+ static getType(): string;
19
+ static clone(node: DivNode): DivNode;
20
+ protected getForceDisplay(): CSSProperties['display'];
21
+ createDOM(): HTMLElement;
22
+ updateDOM(prevNode: DivNode, dom: HTMLElement): boolean;
23
+ static importDOM(): DOMConversionMap | null;
24
+ static importJSON(serializedNode: SerializedDivNode): DivNode;
25
+ exportJSON(): SerializedDivNode;
26
+ exportDOM(): DOMExportOutput;
27
+ isInline(): boolean;
28
+ getPropValue<K extends keyof DivNodeProps>(key: K): DivNodeProps[K] | undefined;
29
+ setProps(props: DivNodeProps): void;
30
+ private shallowEqual;
31
+ }
32
+ /**
33
+ * - EN: Factory to create a DivNode.
34
+ * - CN: 创建 DivNode 的工厂函数。
35
+ *
36
+ * @param props Props for the DivNode | DivNode 的属性
37
+ */
38
+ export declare function $createDivNode(props?: DivNodeProps): DivNode;
39
+ /**
40
+ * - EN: Type guard to check if a node is DivNode.
41
+ * - CN: 判断节点是否为 DivNode 的类型守卫。
42
+ *
43
+ * @param node Node to test | 要检测的节点
44
+ */
45
+ export declare function $isDivNode(node: LexicalNode | null | undefined): node is DivNode;
@@ -0,0 +1,191 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ 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; }
3
+ 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) { _defineProperty(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; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
7
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
9
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
10
+ function _get() { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get.bind(); } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(arguments.length < 3 ? target : receiver); } return desc.value; }; } return _get.apply(this, arguments); }
11
+ function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
12
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
13
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
14
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
15
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
16
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
17
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
18
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
19
+ import { updateDomProps } from "../helpers";
20
+ import { BaseElementNode } from "./base";
21
+
22
+ /**
23
+ * - EN: Props for the DivNode, combining DOM div attributes and element behavior flags.
24
+ * - CN: DivNode 的属性,包含 DOM div 属性与元素行为标记。
25
+ */
26
+
27
+ /**
28
+ * - EN: Lexical element node that renders a DOM div with controlled props.
29
+ * - CN: 渲染为 DOM div 且可控制属性的 Lexical 元素节点。
30
+ */
31
+ export var DivNode = /*#__PURE__*/function (_BaseElementNode) {
32
+ _inherits(DivNode, _BaseElementNode);
33
+ var _super = _createSuper(DivNode);
34
+ function DivNode() {
35
+ _classCallCheck(this, DivNode);
36
+ return _super.apply(this, arguments);
37
+ }
38
+ _createClass(DivNode, [{
39
+ key: "getForceDisplay",
40
+ value: function getForceDisplay() {
41
+ return undefined;
42
+ }
43
+ }, {
44
+ key: "createDOM",
45
+ value: function createDOM() {
46
+ var div = document.createElement('div');
47
+ var domProps = this.getUnderlyingProps(this.__props);
48
+ if (domProps) {
49
+ updateDomProps(div, domProps);
50
+ }
51
+ return div;
52
+ }
53
+ }, {
54
+ key: "updateDOM",
55
+ value: function updateDOM(prevNode, dom) {
56
+ var prevProps = prevNode.__props;
57
+ var currentProps = this.__props;
58
+ var propsChanged = !this.shallowEqual(prevProps, currentProps);
59
+ if (propsChanged) {
60
+ updateDomProps(dom, this.getUnderlyingProps(currentProps));
61
+ }
62
+ return false;
63
+ }
64
+ }, {
65
+ key: "exportJSON",
66
+ value: function exportJSON() {
67
+ return _objectSpread(_objectSpread({}, _get(_getPrototypeOf(DivNode.prototype), "exportJSON", this).call(this)), {}, {
68
+ props: this.__props,
69
+ type: this.getType()
70
+ });
71
+ }
72
+ }, {
73
+ key: "exportDOM",
74
+ value: function exportDOM() {
75
+ var element = this.createDOM();
76
+ return {
77
+ element: element
78
+ };
79
+ }
80
+ }, {
81
+ key: "isInline",
82
+ value: function isInline() {
83
+ var _this$__props$style$d, _this$__props;
84
+ var display = (_this$__props$style$d = (_this$__props = this.__props) === null || _this$__props === void 0 || (_this$__props = _this$__props.style) === null || _this$__props === void 0 ? void 0 : _this$__props.display) !== null && _this$__props$style$d !== void 0 ? _this$__props$style$d : 'block';
85
+ return display === 'inline' || display === 'inline-flex' || display === 'inline-block' || display === 'inline-grid' || display === 'inline-table' || display === 'inline-list-item';
86
+ }
87
+ }, {
88
+ key: "getPropValue",
89
+ value: function getPropValue(key) {
90
+ var _this$__props2;
91
+ return (_this$__props2 = this.__props) === null || _this$__props2 === void 0 ? void 0 : _this$__props2[key];
92
+ }
93
+ }, {
94
+ key: "setProps",
95
+ value: function setProps(props) {
96
+ var _writable$__props;
97
+ var writable = this.getWritable();
98
+ writable.__props = _objectSpread(_objectSpread(_objectSpread({}, writable.__props), props), {}, {
99
+ style: _objectSpread(_objectSpread({}, (_writable$__props = writable.__props) === null || _writable$__props === void 0 ? void 0 : _writable$__props.style), props.style)
100
+ });
101
+ }
102
+
103
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
104
+ }, {
105
+ key: "shallowEqual",
106
+ value: function shallowEqual(obj1, obj2) {
107
+ if (obj1 === obj2) return true;
108
+ if (!obj1 || !obj2) return false;
109
+ var keys1 = Object.keys(obj1);
110
+ var keys2 = Object.keys(obj2);
111
+ if (keys1.length !== keys2.length) return false;
112
+ for (var _i = 0, _keys = keys1; _i < _keys.length; _i++) {
113
+ var key = _keys[_i];
114
+ if (key === 'style') {
115
+ // - EN: Special handling for style objects.
116
+ // - CN: 特殊处理 style 对象。
117
+ if (!this.shallowEqual(obj1[key], obj2[key])) return false;
118
+ } else if (obj1[key] !== obj2[key]) {
119
+ return false;
120
+ }
121
+ }
122
+ return true;
123
+ }
124
+ }], [{
125
+ key: "getType",
126
+ value: function getType() {
127
+ return 'html.div';
128
+ }
129
+ }, {
130
+ key: "clone",
131
+ value: function clone(node) {
132
+ return new DivNode(_objectSpread(_objectSpread({}, node.__props), {}, {
133
+ key: node.getKey()
134
+ }));
135
+ }
136
+ }, {
137
+ key: "importDOM",
138
+ value: function importDOM() {
139
+ return {
140
+ div: function div(node) {
141
+ return {
142
+ conversion: convertDivElement,
143
+ priority: 1
144
+ };
145
+ }
146
+ };
147
+ }
148
+ }, {
149
+ key: "importJSON",
150
+ value: function importJSON(serializedNode) {
151
+ return $createDivNode(serializedNode.props);
152
+ }
153
+ }]);
154
+ return DivNode;
155
+ }(BaseElementNode);
156
+ /**
157
+ * - EN: Convert a DOM node to a DivNode during import.
158
+ * - CN: 在导入时将 DOM 节点转换为 DivNode。
159
+ *
160
+ * @param domNode Source DOM node | 源 DOM 节点
161
+ */
162
+ function convertDivElement(domNode) {
163
+ var element = domNode;
164
+ if (element.nodeName === 'DIV') {
165
+ return {
166
+ node: $createDivNode()
167
+ };
168
+ }
169
+ return {
170
+ node: null
171
+ };
172
+ }
173
+ /**
174
+ * - EN: Factory to create a DivNode.
175
+ * - CN: 创建 DivNode 的工厂函数。
176
+ *
177
+ * @param props Props for the DivNode | DivNode 的属性
178
+ */
179
+ export function $createDivNode(props) {
180
+ return new DivNode(props);
181
+ }
182
+ /**
183
+ * - EN: Type guard to check if a node is DivNode.
184
+ * - CN: 判断节点是否为 DivNode 的类型守卫。
185
+ *
186
+ * @param node Node to test | 要检测的节点
187
+ */
188
+ export function $isDivNode(node) {
189
+ return node instanceof DivNode;
190
+ }
191
+ //# sourceMappingURL=DivNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["updateDomProps","BaseElementNode","DivNode","_BaseElementNode","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","key","value","getForceDisplay","undefined","createDOM","div","document","createElement","domProps","getUnderlyingProps","__props","updateDOM","prevNode","dom","prevProps","currentProps","propsChanged","shallowEqual","exportJSON","_objectSpread","_get","_getPrototypeOf","prototype","call","props","type","getType","exportDOM","element","isInline","_this$__props$style$d","_this$__props","display","style","getPropValue","_this$__props2","setProps","_writable$__props","writable","getWritable","obj1","obj2","keys1","Object","keys","keys2","length","_i","_keys","clone","node","getKey","importDOM","conversion","convertDivElement","priority","importJSON","serializedNode","$createDivNode","domNode","nodeName","$isDivNode"],"sources":["../../../../src/components/Lexical/nodes/DivNode.tsx"],"sourcesContent":["import type { CSSProperties, HtmlHTMLAttributes } from 'react';\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n LexicalNode,\n SerializedElementNode,\n Spread,\n} from 'lexical';\nimport { updateDomProps } from '../helpers';\nimport { BaseElementNode, type BaseElementProps } from './base';\n\n/**\n * - EN: Props for the DivNode, combining DOM div attributes and element behavior flags.\n * - CN: DivNode 的属性,包含 DOM div 属性与元素行为标记。\n */\nexport interface DivNodeProps extends HtmlHTMLAttributes<HTMLDivElement>, BaseElementProps {}\n\nexport type SerializedDivNode = Spread<\n {\n props?: DivNodeProps;\n },\n SerializedElementNode\n>;\n\n/**\n * - EN: Lexical element node that renders a DOM div with controlled props.\n * - CN: 渲染为 DOM div 且可控制属性的 Lexical 元素节点。\n */\nexport class DivNode extends BaseElementNode<DivNodeProps> {\n static getType(): string {\n return 'html.div';\n }\n\n static clone(node: DivNode): DivNode {\n return new DivNode({ ...node.__props, key: node.getKey() });\n }\n\n protected getForceDisplay(): CSSProperties['display'] {\n return undefined;\n }\n\n createDOM(): HTMLElement {\n const div = document.createElement('div');\n const domProps = this.getUnderlyingProps(this.__props);\n if (domProps) {\n updateDomProps(div, domProps);\n }\n return div;\n }\n\n updateDOM(prevNode: DivNode, dom: HTMLElement): boolean {\n const prevProps = prevNode.__props;\n const currentProps = this.__props;\n const propsChanged = !this.shallowEqual(prevProps, currentProps);\n if (propsChanged) {\n updateDomProps(dom, this.getUnderlyingProps(currentProps));\n }\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n div: (node: Node) => ({\n conversion: convertDivElement,\n priority: 1,\n }),\n };\n }\n\n static importJSON(serializedNode: SerializedDivNode): DivNode {\n return $createDivNode(serializedNode.props);\n }\n\n exportJSON(): SerializedDivNode {\n return {\n ...super.exportJSON(),\n props: this.__props,\n type: this.getType(),\n };\n }\n\n exportDOM(): DOMExportOutput {\n const element = this.createDOM();\n return { element };\n }\n\n isInline(): boolean {\n const display = this.__props?.style?.display ?? 'block';\n return (\n display === 'inline' ||\n display === 'inline-flex' ||\n display === 'inline-block' ||\n display === 'inline-grid' ||\n display === 'inline-table' ||\n display === 'inline-list-item'\n );\n }\n\n getPropValue<K extends keyof DivNodeProps>(key: K): DivNodeProps[K] | undefined {\n return this.__props?.[key];\n }\n setProps(props: DivNodeProps): void {\n const writable = this.getWritable();\n writable.__props = {\n ...writable.__props,\n ...props,\n style: {\n ...writable.__props?.style,\n ...props.style,\n },\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private shallowEqual(obj1: any, obj2: any): boolean {\n if (obj1 === obj2) return true;\n if (!obj1 || !obj2) return false;\n\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n for (const key of keys1) {\n if (key === 'style') {\n // - EN: Special handling for style objects.\n // - CN: 特殊处理 style 对象。\n if (!this.shallowEqual(obj1[key], obj2[key])) return false;\n } else if (obj1[key] !== obj2[key]) {\n return false;\n }\n }\n\n return true;\n }\n}\n/**\n * - EN: Convert a DOM node to a DivNode during import.\n * - CN: 在导入时将 DOM 节点转换为 DivNode。\n *\n * @param domNode Source DOM node | 源 DOM 节点\n */\nfunction convertDivElement(domNode: Node): DOMConversionOutput {\n const element = domNode as HTMLElement;\n if (element.nodeName === 'DIV') {\n return { node: $createDivNode() };\n }\n return { node: null };\n}\n/**\n * - EN: Factory to create a DivNode.\n * - CN: 创建 DivNode 的工厂函数。\n *\n * @param props Props for the DivNode | DivNode 的属性\n */\nexport function $createDivNode(props?: DivNodeProps): DivNode {\n return new DivNode(props);\n}\n/**\n * - EN: Type guard to check if a node is DivNode.\n * - CN: 判断节点是否为 DivNode 的类型守卫。\n *\n * @param node Node to test | 要检测的节点\n */\nexport function $isDivNode(node: LexicalNode | null | undefined): node is DivNode {\n return node instanceof DivNode;\n}\n"],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { LexicalNode, NodeKey, SerializedTextNode, Spread } from 'lexical';
2
+ import { TextNode } from 'lexical';
3
+ import type { BaseNodeProps } from './base';
4
+ import { BaseNodeHelper } from './base';
5
+ /**
6
+ * - EN: Extra props for ExtendTextNode.
7
+ * - CN: ExtendTextNode 的附加属性。
8
+ */
9
+ export interface ExtendTextNodeProps extends BaseNodeProps {
10
+ text?: string;
11
+ prefixText?: string;
12
+ }
13
+ /**
14
+ * - EN: A TextNode with extra behavior flags and controlled replacement.
15
+ * - CN: 带有额外行为标记并可控制替换行为的 TextNode。
16
+ */
17
+ export declare class ExtendTextNode extends TextNode {
18
+ __props: ExtendTextNodeProps | undefined;
19
+ __base: BaseNodeHelper<ExtendTextNodeProps>;
20
+ constructor(props?: ExtendTextNodeProps & {
21
+ key?: NodeKey;
22
+ });
23
+ static getType(): string;
24
+ static clone(node: ExtendTextNode): ExtendTextNode;
25
+ static importJSON(serializedNode: SerializedExtendTextNode): ExtendTextNode;
26
+ exportJSON(): SerializedExtendTextNode;
27
+ }
28
+ type SerializedExtendTextNode = Spread<{
29
+ props?: ExtendTextNodeProps;
30
+ text: string;
31
+ }, SerializedTextNode>;
32
+ /**
33
+ * - EN: Factory to create an ExtendTextNode.
34
+ * - CN: 创建 ExtendTextNode 的工厂函数。
35
+ *
36
+ * @param props Props for the node | 节点的属性
37
+ */
38
+ export declare function $createExtendTextNode(props?: ExtendTextNodeProps): ExtendTextNode;
39
+ /**
40
+ * - EN: Type guard to check whether a node is ExtendTextNode.
41
+ * - CN: 判断节点是否为 ExtendTextNode 的类型守卫。
42
+ *
43
+ * @param node Node to test | 要检测的节点
44
+ */
45
+ export declare function $isExtendTextNode(node: LexicalNode | null | undefined): node is ExtendTextNode;
46
+ export {};