• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "core/components_ng/pattern/rich_editor/rich_editor_event_hub.h"
16 #include "base/utils/utf_helper.h"
17 #include "interfaces/inner_api/ui_session/ui_session_manager.h"
18 
19 #include "core/components_ng/pattern/rich_editor/rich_editor_pattern.h"
20 
21 namespace OHOS::Ace::NG {
SetInsertOffset(int32_t insertOffset)22 void RichEditorInsertValue::SetInsertOffset(int32_t insertOffset)
23 {
24     insertOffset_ = insertOffset;
25 }
26 
GetInsertOffset() const27 int32_t RichEditorInsertValue::GetInsertOffset() const
28 {
29     return insertOffset_;
30 }
31 
SetInsertValue(const std::u16string & insertValue)32 void RichEditorInsertValue::SetInsertValue(const std::u16string& insertValue)
33 {
34     insertValue_ = insertValue;
35 }
36 
SetPreviewText(const std::u16string & previewText)37 void RichEditorInsertValue::SetPreviewText(const std::u16string& previewText)
38 {
39     previewText_ = previewText;
40 }
41 
GetInsertValue() const42 const std::u16string& RichEditorInsertValue::GetInsertValue() const
43 {
44     return insertValue_;
45 }
46 
GetPreviewText() const47 const std::u16string& RichEditorInsertValue::GetPreviewText() const
48 {
49     return previewText_;
50 }
51 
SetSpanIndex(int32_t spanIndex)52 void RichEditorAbstractSpanResult::SetSpanIndex(int32_t spanIndex)
53 {
54     spanIndex_ = spanIndex;
55 }
56 
GetSpanIndex() const57 int32_t RichEditorAbstractSpanResult::GetSpanIndex() const
58 {
59     return spanIndex_;
60 }
61 
SetSpanRangeStart(int32_t spanRangeStart)62 void RichEditorAbstractSpanResult::SetSpanRangeStart(int32_t spanRangeStart)
63 {
64     spanRangeStart_ = spanRangeStart;
65 }
66 
GetSpanRangeStart() const67 int32_t RichEditorAbstractSpanResult::GetSpanRangeStart() const
68 {
69     return spanRangeStart_;
70 }
71 
SetSpanRangeEnd(int32_t spanRangeEnd)72 void RichEditorAbstractSpanResult::SetSpanRangeEnd(int32_t spanRangeEnd)
73 {
74     spanRangeEnd_ = spanRangeEnd;
75 }
76 
GetSpanRangeEnd() const77 int32_t RichEditorAbstractSpanResult::GetSpanRangeEnd() const
78 {
79     return spanRangeEnd_;
80 }
81 
SetSpanType(SpanResultType spanType)82 void RichEditorAbstractSpanResult::SetSpanType(SpanResultType spanType)
83 {
84     spanType_ = spanType;
85 }
86 
GetType() const87 SpanResultType RichEditorAbstractSpanResult::GetType() const
88 {
89     return spanType_;
90 }
91 
SetOffsetInSpan(int32_t offsetInSpan)92 void RichEditorAbstractSpanResult::SetOffsetInSpan(int32_t offsetInSpan)
93 {
94     offsetInSpan_ = offsetInSpan;
95 }
96 
OffsetInSpan() const97 int32_t RichEditorAbstractSpanResult::OffsetInSpan() const
98 {
99     return offsetInSpan_;
100 }
101 
SetEraseLength(int32_t eraseLength)102 void RichEditorAbstractSpanResult::SetEraseLength(int32_t eraseLength)
103 {
104     eraseLength_ = eraseLength;
105 }
106 
GetEraseLength() const107 int32_t RichEditorAbstractSpanResult::GetEraseLength() const
108 {
109     return eraseLength_;
110 }
111 
SetValue(const std::u16string & value)112 void RichEditorAbstractSpanResult::SetValue(const std::u16string& value)
113 {
114     value_ = value;
115 }
116 
GetValue() const117 const std::u16string& RichEditorAbstractSpanResult::GetValue() const
118 {
119     return value_;
120 }
121 
SetPreviewText(const std::u16string & previewText)122 void RichEditorAbstractSpanResult::SetPreviewText(const std::u16string& previewText)
123 {
124     previewText_ = previewText;
125 }
126 
GetPreviewText() const127 const std::u16string& RichEditorAbstractSpanResult::GetPreviewText() const
128 {
129     return previewText_;
130 }
131 
SetFontColor(const std::string & fontColor)132 void RichEditorAbstractSpanResult::SetFontColor(const std::string& fontColor)
133 {
134     fontColor_ = fontColor;
135 }
136 
SetFontFeature(const FONT_FEATURES_LIST & fontFeature)137 void RichEditorAbstractSpanResult::SetFontFeature(const FONT_FEATURES_LIST& fontFeature)
138 {
139     fontFeature_ = fontFeature;
140 }
141 
GetFontFeatures() const142 const FONT_FEATURES_LIST& RichEditorAbstractSpanResult::GetFontFeatures() const
143 {
144     return fontFeature_;
145 }
146 
SetTextStyle(TextStyleResult textStyle)147 void RichEditorAbstractSpanResult::SetTextStyle(TextStyleResult textStyle)
148 {
149     textStyle_ = textStyle;
150 }
151 
GetTextStyle() const152 TextStyleResult RichEditorAbstractSpanResult::GetTextStyle() const
153 {
154     return textStyle_;
155 }
156 
SetLineHeight(double lineHeight)157 void RichEditorAbstractSpanResult::SetLineHeight(double lineHeight)
158 {
159     lineHeight_ = lineHeight;
160 }
161 
GetLineHeight() const162 double RichEditorAbstractSpanResult::GetLineHeight() const
163 {
164     return lineHeight_;
165 }
166 
SetHalfLeading(bool halfLeading)167 void RichEditorAbstractSpanResult::SetHalfLeading(bool halfLeading)
168 {
169     halfLeading_ = halfLeading;
170 }
171 
GetHalfLeading() const172 bool RichEditorAbstractSpanResult::GetHalfLeading() const
173 {
174     return halfLeading_;
175 }
176 
SetLetterspacing(double letterSpacing)177 void RichEditorAbstractSpanResult::SetLetterspacing(double letterSpacing)
178 {
179     letterSpacing_ = letterSpacing;
180 }
181 
GetLetterspacing() const182 double RichEditorAbstractSpanResult::GetLetterspacing() const
183 {
184     return letterSpacing_;
185 }
186 
GetFontColor() const187 const std::string& RichEditorAbstractSpanResult::GetFontColor() const
188 {
189     return fontColor_;
190 }
191 
SetFontSize(double fontSize)192 void RichEditorAbstractSpanResult::SetFontSize(double fontSize)
193 {
194     fontSize_ = fontSize;
195 }
196 
GetFontSize() const197 double RichEditorAbstractSpanResult::GetFontSize() const
198 {
199     return fontSize_;
200 }
201 
SetValueResource(const RefPtr<ResourceObject> & valueResource)202 void RichEditorAbstractSpanResult::SetValueResource(const RefPtr<ResourceObject>& valueResource)
203 {
204     valueResource_ = valueResource;
205 }
206 
GetValueResource() const207 const RefPtr<ResourceObject> RichEditorAbstractSpanResult::GetValueResource() const
208 {
209     return valueResource_;
210 }
211 
SetValueString(const std::string & valueString)212 void RichEditorAbstractSpanResult::SetValueString(const std::string& valueString)
213 {
214     valueString_ = valueString;
215 }
216 
GetValueString() const217 const std::string RichEditorAbstractSpanResult::GetValueString() const
218 {
219     return valueString_;
220 }
221 
SetSymbolSpanStyle(const SymbolSpanStyle & symbolSpanStyle)222 void RichEditorAbstractSpanResult::SetSymbolSpanStyle(const SymbolSpanStyle& symbolSpanStyle)
223 {
224     symbolSpanStyle_ = symbolSpanStyle;
225 }
226 
GetSymbolSpanStyle() const227 const SymbolSpanStyle RichEditorAbstractSpanResult::GetSymbolSpanStyle() const
228 {
229     return symbolSpanStyle_;
230 }
231 
SetFontWeight(int32_t fontWeigth)232 void RichEditorAbstractSpanResult::SetFontWeight(int32_t fontWeigth)
233 {
234     fontWeigth_ = fontWeigth;
235 }
236 
GetFontWeight() const237 int32_t RichEditorAbstractSpanResult::GetFontWeight() const
238 {
239     return fontWeigth_;
240 }
241 
SetFontFamily(const std::string & fontFamily)242 void RichEditorAbstractSpanResult::SetFontFamily(const std::string& fontFamily)
243 {
244     fontFamily_ = fontFamily;
245 }
246 
GetFontFamily() const247 const std::string& RichEditorAbstractSpanResult::GetFontFamily() const
248 {
249     return fontFamily_;
250 }
251 
SetTextDecoration(TextDecoration textDecoration)252 void RichEditorAbstractSpanResult::SetTextDecoration(TextDecoration textDecoration)
253 {
254     textDecoration_ = textDecoration;
255 }
256 
GetTextDecoration() const257 TextDecoration RichEditorAbstractSpanResult::GetTextDecoration() const
258 {
259     return textDecoration_;
260 }
261 
SetColor(const std::string & color)262 void RichEditorAbstractSpanResult::SetColor(const std::string& color)
263 {
264     color_ = color;
265 }
266 
GetColor() const267 const std::string& RichEditorAbstractSpanResult::GetColor() const
268 {
269     return color_;
270 }
271 
SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)272 void RichEditorAbstractSpanResult::SetTextDecorationStyle(TextDecorationStyle textDecorationStyle)
273 {
274     textDecorationStyle_ = textDecorationStyle;
275 }
276 
GetTextDecorationStyle() const277 TextDecorationStyle RichEditorAbstractSpanResult::GetTextDecorationStyle() const
278 {
279     return textDecorationStyle_;
280 }
281 
SetLineThicknessScale(float thicknessScale)282 void RichEditorAbstractSpanResult::SetLineThicknessScale(float thicknessScale)
283 {
284     lineThicknessScale_ = thicknessScale;
285 }
286 
GetLineThicknessScale() const287 float RichEditorAbstractSpanResult::GetLineThicknessScale() const
288 {
289     return lineThicknessScale_;
290 }
291 
SetValuePixelMap(const RefPtr<PixelMap> & valuePixelMap)292 void RichEditorAbstractSpanResult::SetValuePixelMap(const RefPtr<PixelMap>& valuePixelMap)
293 {
294     valuePixelMap_ = valuePixelMap;
295 }
296 
GetValuePixelMap() const297 const RefPtr<PixelMap>& RichEditorAbstractSpanResult::GetValuePixelMap() const
298 {
299     return valuePixelMap_;
300 }
301 
SetValueResourceStr(const std::string valueResourceStr)302 void RichEditorAbstractSpanResult::SetValueResourceStr(const std::string valueResourceStr)
303 {
304     valueResourceStr_ = valueResourceStr;
305 }
306 
GetValueResourceStr() const307 const std::string& RichEditorAbstractSpanResult::GetValueResourceStr() const
308 {
309     return valueResourceStr_;
310 }
311 
SetSizeWidth(int32_t width)312 void RichEditorAbstractSpanResult::SetSizeWidth(int32_t width)
313 {
314     width_ = width;
315 }
316 
GetSizeWidth() const317 int32_t RichEditorAbstractSpanResult::GetSizeWidth() const
318 {
319     return width_;
320 }
321 
SetSizeHeight(int32_t height)322 void RichEditorAbstractSpanResult::SetSizeHeight(int32_t height)
323 {
324     height_ = height;
325 }
326 
GetSizeHeight() const327 int32_t RichEditorAbstractSpanResult::GetSizeHeight() const
328 {
329     return height_;
330 }
331 
SetVerticalAlign(VerticalAlign verticalAlign)332 void RichEditorAbstractSpanResult::SetVerticalAlign(VerticalAlign verticalAlign)
333 {
334     verticalAlign_ = verticalAlign;
335 }
336 
GetVerticalAlign() const337 VerticalAlign RichEditorAbstractSpanResult::GetVerticalAlign() const
338 {
339     return verticalAlign_;
340 }
341 
SetImageFit(ImageFit objectFit)342 void RichEditorAbstractSpanResult::SetImageFit(ImageFit objectFit)
343 {
344     objectFit_ = objectFit;
345 }
346 
GetObjectFit() const347 ImageFit RichEditorAbstractSpanResult::GetObjectFit() const
348 {
349     return objectFit_;
350 }
351 
SetUrlAddress(const std::u16string & urlAddress)352 void RichEditorAbstractSpanResult::SetUrlAddress(const std::u16string& urlAddress)
353 {
354     urlAddress_ = urlAddress;
355 }
356 
GetUrlAddress() const357 const std::u16string& RichEditorAbstractSpanResult::GetUrlAddress() const
358 {
359     return urlAddress_;
360 }
361 
SetOffset(int32_t offset)362 void RichEditorDeleteValue::SetOffset(int32_t offset)
363 {
364     offset_ = offset;
365 }
366 
GetOffset() const367 int32_t RichEditorDeleteValue::GetOffset() const
368 {
369     return offset_;
370 }
371 
SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)372 void RichEditorDeleteValue::SetRichEditorDeleteDirection(RichEditorDeleteDirection direction)
373 {
374     direction_ = direction;
375 }
376 
GetRichEditorDeleteDirection() const377 RichEditorDeleteDirection RichEditorDeleteValue::GetRichEditorDeleteDirection() const
378 {
379     return direction_;
380 }
381 
SetLength(int32_t length)382 void RichEditorDeleteValue::SetLength(int32_t length)
383 {
384     length_ = length;
385 }
386 
GetLength() const387 int32_t RichEditorDeleteValue::GetLength() const
388 {
389     return length_;
390 }
391 
SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult & deleteSpan)392 void RichEditorDeleteValue::SetRichEditorDeleteSpans(const RichEditorAbstractSpanResult& deleteSpan)
393 {
394     richEditorDeleteSpans_.emplace_back(deleteSpan);
395 }
396 
ResetRichEditorDeleteSpans()397 void RichEditorDeleteValue::ResetRichEditorDeleteSpans()
398 {
399     richEditorDeleteSpans_.clear();
400 }
401 
GetRichEditorDeleteSpans() const402 const std::list<RichEditorAbstractSpanResult>& RichEditorDeleteValue::GetRichEditorDeleteSpans() const
403 {
404     return richEditorDeleteSpans_;
405 }
406 
SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult & span)407 void RichEditorChangeValue::SetRichEditorOriginalSpans(const RichEditorAbstractSpanResult& span)
408 {
409     originalSpans_.emplace_back(span);
410 }
411 
GetRichEditorOriginalSpans() const412 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorOriginalSpans() const
413 {
414     return originalSpans_;
415 }
416 
SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult & span)417 void RichEditorChangeValue::SetRichEditorReplacedSpans(const RichEditorAbstractSpanResult& span)
418 {
419     replacedSpans_.emplace_back(span);
420 }
421 
GetRichEditorReplacedSpans() const422 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSpans() const
423 {
424     return replacedSpans_;
425 }
426 
SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult & span)427 void RichEditorChangeValue::SetRichEditorReplacedImageSpans(const RichEditorAbstractSpanResult& span)
428 {
429     replacedImageSpans_.emplace_back(span);
430 }
431 
GetRichEditorReplacedImageSpans() const432 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedImageSpans() const
433 {
434     return replacedImageSpans_;
435 }
436 
SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult & span)437 void RichEditorChangeValue::SetRichEditorReplacedSymbolSpans(const RichEditorAbstractSpanResult& span)
438 {
439     replacedSymbolSpans_.emplace_back(span);
440 }
441 
GetRichEditorReplacedSymbolSpans() const442 const std::vector<RichEditorAbstractSpanResult>& RichEditorChangeValue::GetRichEditorReplacedSymbolSpans() const
443 {
444     return replacedSymbolSpans_;
445 }
446 
SetRangeBefore(const TextRange & rangeBefore)447 void RichEditorChangeValue::SetRangeBefore(const TextRange& rangeBefore)
448 {
449     rangeBefore_ = rangeBefore;
450 }
451 
GetRangeBefore() const452 TextRange RichEditorChangeValue::GetRangeBefore() const
453 {
454     return rangeBefore_;
455 }
456 
SetRangeAfter(const TextRange & rangeAfter)457 void RichEditorChangeValue::SetRangeAfter(const TextRange& rangeAfter)
458 {
459     rangeAfter_ = rangeAfter;
460 }
461 
GetRangeAfter() const462 TextRange RichEditorChangeValue::GetRangeAfter() const
463 {
464     return rangeAfter_;
465 }
466 
GetChangeReason() const467 TextChangeReason RichEditorChangeValue::GetChangeReason() const
468 {
469     return changeReason_;
470 }
471 
SetRangeBefore(const TextRange & range)472 void StyledStringChangeValue::SetRangeBefore(const TextRange& range)
473 {
474     rangeBefore_ = range;
475 }
476 
GetRangeBefore() const477 TextRange StyledStringChangeValue::GetRangeBefore() const
478 {
479     return rangeBefore_;
480 }
481 
SetRangeAfter(const TextRange & range)482 void StyledStringChangeValue::SetRangeAfter(const TextRange& range)
483 {
484     rangeAfter_ = range;
485 }
486 
GetRangeAfter() const487 TextRange StyledStringChangeValue::GetRangeAfter() const
488 {
489     return rangeAfter_;
490 }
491 
SetReplacementString(const RefPtr<SpanStringBase> & styledString)492 void StyledStringChangeValue::SetReplacementString(const RefPtr<SpanStringBase>& styledString)
493 {
494     replacementString_ = styledString;
495 }
496 
GetReplacementString() const497 const RefPtr<SpanStringBase> StyledStringChangeValue::GetReplacementString() const
498 {
499     return replacementString_;
500 }
501 
SetPreviewText(const RefPtr<SpanStringBase> & previewText)502 void StyledStringChangeValue::SetPreviewText(const RefPtr<SpanStringBase>& previewText)
503 {
504     previewText_ = previewText;
505 }
506 
GetPreviewText() const507 const RefPtr<SpanStringBase> StyledStringChangeValue::GetPreviewText() const
508 {
509     return previewText_;
510 }
511 
SetOnReady(std::function<void ()> && func)512 void RichEditorEventHub::SetOnReady(std::function<void()>&& func)
513 {
514     onReady_ = std::move(func);
515 }
516 
FireOnReady()517 void RichEditorEventHub::FireOnReady()
518 {
519     if (onReady_) {
520         onReady_();
521         auto host = GetFrameNode();
522         CHECK_NULL_VOID(host);
523         auto* context = host->GetContext();
524         CHECK_NULL_VOID(context);
525         context->AddAfterRenderTask([host]() { host->MarkDirtyNode(PROPERTY_UPDATE_MEASURE); });
526     }
527 }
528 
SetAboutToIMEInput(std::function<bool (const RichEditorInsertValue &)> && func)529 void RichEditorEventHub::SetAboutToIMEInput(std::function<bool(const RichEditorInsertValue&)>&& func)
530 {
531     aboutToIMEInput_ = std::move(func);
532 }
533 
FireAboutToIMEInput(const RichEditorInsertValue & info)534 bool RichEditorEventHub::FireAboutToIMEInput(const RichEditorInsertValue& info)
535 {
536     return aboutToIMEInput_ ? aboutToIMEInput_(info) : true;
537 }
538 
SetOnIMEInputComplete(std::function<void (const RichEditorAbstractSpanResult &)> && func)539 void RichEditorEventHub::SetOnIMEInputComplete(std::function<void(const RichEditorAbstractSpanResult&)>&& func)
540 {
541     onIMEInputComplete_ = std::move(func);
542 }
543 
FireOnIMEInputComplete(const RichEditorAbstractSpanResult & info)544 void RichEditorEventHub::FireOnIMEInputComplete(const RichEditorAbstractSpanResult& info)
545 {
546     if (onIMEInputComplete_)
547         onIMEInputComplete_(info);
548 }
549 
SetOnDidIMEInput(std::function<void (const TextRange &)> && func)550 void RichEditorEventHub::SetOnDidIMEInput(std::function<void(const TextRange&)>&& func)
551 {
552     onDidIMEInput_ = std::move(func);
553 }
554 
FireOnDidIMEInput(const TextRange & range)555 void RichEditorEventHub::FireOnDidIMEInput(const TextRange& range)
556 {
557     if (onDidIMEInput_)
558         onDidIMEInput_(range);
559 }
560 
SetAboutToDelete(std::function<bool (const RichEditorDeleteValue &)> && func)561 void RichEditorEventHub::SetAboutToDelete(std::function<bool(const RichEditorDeleteValue&)>&& func)
562 {
563     aboutToDelete_ = std::move(func);
564 }
565 
FireAboutToDelete(const RichEditorDeleteValue & info)566 bool RichEditorEventHub::FireAboutToDelete(const RichEditorDeleteValue& info)
567 {
568     return aboutToDelete_ ? aboutToDelete_(info) : true;
569 }
570 
SetOnDeleteComplete(std::function<void ()> && func)571 void RichEditorEventHub::SetOnDeleteComplete(std::function<void()>&& func)
572 {
573     onDeleteComplete_ = std::move(func);
574 }
FireOnDeleteComplete()575 void RichEditorEventHub::FireOnDeleteComplete()
576 {
577     if (onDeleteComplete_) {
578         onDeleteComplete_();
579         UiSessionManager::GetInstance()->ReportComponentChangeEvent("event", "Radio.onChange");
580     }
581 }
582 
GetDragExtraParams(const std::string & extraInfo,const Point & point,DragEventType type)583 std::string RichEditorEventHub::GetDragExtraParams(const std::string& extraInfo, const Point& point, DragEventType type)
584 {
585     auto host = GetFrameNode();
586     CHECK_NULL_RETURN(host, extraInfo);
587     auto pattern = host->GetPattern<RichEditorPattern>();
588     CHECK_NULL_RETURN(host, extraInfo);
589 
590     auto json = JsonUtil::Create(true);
591     if (type == DragEventType::DROP && timestamp_ != 0 && pattern->GetTimestamp() == timestamp_) {
592         json->Put("isInComponent", true);
593         timestamp_ = 0;
594     }
595     if (!extraInfo.empty()) {
596         json->Put("extraInfo", extraInfo.c_str());
597     }
598     return json->ToString();
599 }
600 
SetOnEditingChange(std::function<void (const bool &)> && func)601 void RichEditorEventHub::SetOnEditingChange(std::function<void(const bool&)>&& func)
602 {
603     onEditingChange_ = std::move(func);
604 }
605 
FireOnEditingChange(bool isEditing)606 void RichEditorEventHub::FireOnEditingChange(bool isEditing)
607 {
608     if (onEditingChange_) {
609         onEditingChange_(isEditing);
610     }
611 }
612 
SetOnWillChange(std::function<bool (const RichEditorChangeValue &)> && func)613 void RichEditorEventHub::SetOnWillChange(std::function<bool(const RichEditorChangeValue&)>&& func)
614 {
615     onWillChange_ = std::move(func);
616 }
617 
FireOnWillChange(const RichEditorChangeValue & info)618 bool RichEditorEventHub::FireOnWillChange(const RichEditorChangeValue& info)
619 {
620     return onWillChange_ ? onWillChange_(info) : true;
621 }
622 
HasOnWillChange() const623 bool RichEditorEventHub::HasOnWillChange() const
624 {
625     return static_cast<bool>(onWillChange_);
626 }
627 
SetOnDidChange(std::function<void (const RichEditorChangeValue &)> && func)628 void RichEditorEventHub::SetOnDidChange(std::function<void(const RichEditorChangeValue&)>&& func)
629 {
630     onDidChange_ = std::move(func);
631 }
632 
FireOnDidChange(const RichEditorChangeValue & changeValue)633 void RichEditorEventHub::FireOnDidChange(const RichEditorChangeValue& changeValue)
634 {
635     if (onDidChange_) {
636         onDidChange_(changeValue);
637     }
638 }
639 
HasOnDidChange() const640 bool RichEditorEventHub::HasOnDidChange() const
641 {
642     auto host = GetFrameNode();
643     CHECK_NULL_RETURN(host, false);
644     auto pattern = host->GetPattern<RichEditorPattern>();
645     CHECK_NULL_RETURN(pattern, false);
646     pattern->SetContentChange(true);
647     return static_cast<bool>(onDidChange_);
648 }
649 
SetOnCut(std::function<void (NG::TextCommonEvent &)> && func)650 void RichEditorEventHub::SetOnCut(std::function<void(NG::TextCommonEvent&)>&& func)
651 {
652     onCut_ = std::move(func);
653 }
654 
FireOnCut(NG::TextCommonEvent & value)655 void RichEditorEventHub::FireOnCut(NG::TextCommonEvent& value)
656 {
657     if (onCut_) {
658         onCut_(value);
659     }
660 }
661 
SetOnCopy(std::function<void (NG::TextCommonEvent &)> && func)662 void RichEditorEventHub::SetOnCopy(std::function<void(NG::TextCommonEvent&)>&& func)
663 {
664     onCopy_ = std::move(func);
665 }
666 
FireOnCopy(NG::TextCommonEvent & value)667 void RichEditorEventHub::FireOnCopy(NG::TextCommonEvent& value)
668 {
669     if (onCopy_) {
670         onCopy_(value);
671     }
672 }
673 
SetOnShare(std::function<void (NG::TextCommonEvent &)> && func)674 void RichEditorEventHub::SetOnShare(std::function<void(NG::TextCommonEvent&)>&& func)
675 {
676     onShare_ = std::move(func);
677 }
678 
FireOnShare(NG::TextCommonEvent & value)679 void RichEditorEventHub::FireOnShare(NG::TextCommonEvent& value)
680 {
681     if (onShare_) {
682         onShare_(value);
683     }
684 }
685 
SetOnStyledStringWillChange(std::function<bool (const StyledStringChangeValue &)> && func)686 void RichEditorEventHub::SetOnStyledStringWillChange(std::function<bool(const StyledStringChangeValue&)> && func)
687 {
688     onStyledStringWillChange_ = std::move(func);
689 }
690 
FireOnStyledStringWillChange(const StyledStringChangeValue & info)691 bool RichEditorEventHub::FireOnStyledStringWillChange(const StyledStringChangeValue& info)
692 {
693     return onStyledStringWillChange_ ? onStyledStringWillChange_(info) : true;
694 }
695 
HasOnStyledStringWillChange() const696 bool RichEditorEventHub::HasOnStyledStringWillChange() const
697 {
698     return static_cast<bool>(onStyledStringWillChange_);
699 }
700 
SetOnStyledStringDidChange(std::function<void (const StyledStringChangeValue &)> && func)701 void RichEditorEventHub::SetOnStyledStringDidChange(std::function<void(const StyledStringChangeValue&)> && func)
702 {
703     onStyledStringDidChange_ = std::move(func);
704 }
705 
FireOnStyledStringDidChange(const StyledStringChangeValue & info)706 void RichEditorEventHub::FireOnStyledStringDidChange(const StyledStringChangeValue& info)
707 {
708     onStyledStringDidChange_(info);
709 }
710 
HasOnStyledStringDidChange() const711 bool RichEditorEventHub::HasOnStyledStringDidChange() const
712 {
713     return static_cast<bool>(onStyledStringDidChange_);
714 }
715 } // namespace OHOS::Ace::NG
716