@univerjs/docs-hyper-link-ui 0.25.1 → 1.0.0-alpha.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.
package/lib/cjs/index.js CHANGED
@@ -2,18 +2,18 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  let _univerjs_core = require("@univerjs/core");
3
3
  let _univerjs_docs_hyper_link = require("@univerjs/docs-hyper-link");
4
4
  let _univerjs_engine_render = require("@univerjs/engine-render");
5
+ let _univerjs_icons = require("@univerjs/icons");
6
+ let _univerjs_ui = require("@univerjs/ui");
7
+ let _univerjs_design = require("@univerjs/design");
5
8
  let _univerjs_docs = require("@univerjs/docs");
9
+ let react = require("react");
6
10
  let _univerjs_docs_ui = require("@univerjs/docs-ui");
7
11
  let rxjs = require("rxjs");
8
- let _univerjs_design = require("@univerjs/design");
9
- let _univerjs_ui = require("@univerjs/ui");
10
- let react = require("react");
11
12
  let react_jsx_runtime = require("react/jsx-runtime");
12
- let _univerjs_icons = require("@univerjs/icons");
13
13
 
14
14
  //#region package.json
15
15
  var name = "@univerjs/docs-hyper-link-ui";
16
- var version = "0.25.1";
16
+ var version = "1.0.0-alpha.1";
17
17
 
18
18
  //#endregion
19
19
  //#region src/config/config.ts
@@ -83,142 +83,6 @@ const UpdateDocHyperLinkCommand = {
83
83
  }
84
84
  };
85
85
 
86
- //#endregion
87
- //#region src/views/hyper-link-edit/utils.ts
88
- /**
89
- * Copyright 2023-present DreamNum Co., Ltd.
90
- *
91
- * Licensed under the Apache License, Version 2.0 (the "License");
92
- * you may not use this file except in compliance with the License.
93
- * You may obtain a copy of the License at
94
- *
95
- * http://www.apache.org/licenses/LICENSE-2.0
96
- *
97
- * Unless required by applicable law or agreed to in writing, software
98
- * distributed under the License is distributed on an "AS IS" BASIS,
99
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
100
- * See the License for the specific language governing permissions and
101
- * limitations under the License.
102
- */
103
- function isBlankInput(value) {
104
- return value.trim().length === 0;
105
- }
106
-
107
- //#endregion
108
- //#region src/views/hyper-link-edit/index.tsx
109
- function hasProtocol(urlString) {
110
- return /^[a-zA-Z]+:\/\//.test(urlString);
111
- }
112
- function isEmail(url) {
113
- return /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(url);
114
- }
115
- function transformUrl(urlStr) {
116
- return hasProtocol(urlStr) ? urlStr : isEmail(urlStr) ? `mailto://${urlStr}` : `https://${urlStr}`;
117
- }
118
- const DocHyperLinkEdit = () => {
119
- const hyperLinkService = (0, _univerjs_ui.useDependency)(DocHyperLinkPopupService);
120
- const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
121
- const editing = (0, _univerjs_ui.useObservable)(hyperLinkService.editingLink$);
122
- const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
123
- const univerInstanceService = (0, _univerjs_ui.useDependency)(_univerjs_core.IUniverInstanceService);
124
- const docSelectionManagerService = (0, _univerjs_ui.useDependency)(_univerjs_docs.DocSelectionManagerService);
125
- const [link, setLink] = (0, react.useState)("");
126
- const [label, setLabel] = (0, react.useState)("");
127
- const [showError, setShowError] = (0, react.useState)(false);
128
- const isLegal = _univerjs_core.Tools.isLegalUrl(link);
129
- const doc = editing ? univerInstanceService.getUnit(editing.unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC) : univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
130
- (0, react.useEffect)(() => {
131
- var _doc$getSelfOrHeaderF2, _BuildTextUtils$custo, _body$customRanges2;
132
- const activeRange = docSelectionManagerService.getActiveTextRange();
133
- if (!activeRange) return;
134
- if (editing) {
135
- var _doc$getSelfOrHeaderF, _body$customRanges;
136
- const body = doc === null || doc === void 0 || (_doc$getSelfOrHeaderF = doc.getSelfOrHeaderFooterModel(editing.segmentId)) === null || _doc$getSelfOrHeaderF === void 0 ? void 0 : _doc$getSelfOrHeaderF.getBody();
137
- const matchedRange = body === null || body === void 0 || (_body$customRanges = body.customRanges) === null || _body$customRanges === void 0 ? void 0 : _body$customRanges.find((i) => (editing === null || editing === void 0 ? void 0 : editing.linkId) === i.rangeId && i.startIndex === editing.startIndex && i.endIndex === editing.endIndex);
138
- if (doc && matchedRange) {
139
- var _matchedRange$propert, _matchedRange$propert2;
140
- setLink((_matchedRange$propert = (_matchedRange$propert2 = matchedRange.properties) === null || _matchedRange$propert2 === void 0 ? void 0 : _matchedRange$propert2.url) !== null && _matchedRange$propert !== void 0 ? _matchedRange$propert : "");
141
- setLabel(_univerjs_core.BuildTextUtils.transform.getPlainText((0, _univerjs_core.getBodySlice)(body, matchedRange.startIndex, matchedRange.endIndex + 1).dataStream));
142
- }
143
- return;
144
- }
145
- const body = doc === null || doc === void 0 || (_doc$getSelfOrHeaderF2 = doc.getSelfOrHeaderFooterModel(activeRange.segmentId)) === null || _doc$getSelfOrHeaderF2 === void 0 ? void 0 : _doc$getSelfOrHeaderF2.getBody();
146
- const selection = body ? activeRange : null;
147
- const matchedRange = selection && ((_BuildTextUtils$custo = _univerjs_core.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(selection, (_body$customRanges2 = body === null || body === void 0 ? void 0 : body.customRanges) !== null && _body$customRanges2 !== void 0 ? _body$customRanges2 : [])) === null || _BuildTextUtils$custo === void 0 ? void 0 : _BuildTextUtils$custo[0]);
148
- if (doc && matchedRange) {
149
- var _matchedRange$propert3, _matchedRange$propert4;
150
- setLink((_matchedRange$propert3 = matchedRange === null || matchedRange === void 0 || (_matchedRange$propert4 = matchedRange.properties) === null || _matchedRange$propert4 === void 0 ? void 0 : _matchedRange$propert4.url) !== null && _matchedRange$propert3 !== void 0 ? _matchedRange$propert3 : "");
151
- }
152
- }, [
153
- doc,
154
- editing,
155
- docSelectionManagerService,
156
- univerInstanceService
157
- ]);
158
- const handleCancel = () => {
159
- hyperLinkService.hideEditPopup();
160
- };
161
- const handleConfirm = () => {
162
- setShowError(true);
163
- if (!isLegal || !doc) return;
164
- const linkFinal = transformUrl(link);
165
- if (!editing) commandService.executeCommand(AddDocHyperLinkCommand.id, {
166
- unitId: doc.getUnitId(),
167
- payload: linkFinal
168
- });
169
- else {
170
- if (isBlankInput(label)) return;
171
- commandService.executeCommand(UpdateDocHyperLinkCommand.id, {
172
- unitId: doc.getUnitId(),
173
- payload: linkFinal,
174
- linkId: editing.linkId,
175
- label,
176
- segmentId: editing.segmentId
177
- });
178
- }
179
- hyperLinkService.hideEditPopup();
180
- };
181
- if (!doc) return;
182
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
183
- className: (0, _univerjs_design.clsx)("univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900", _univerjs_design.borderClassName),
184
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [editing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.FormLayout, {
185
- label: localeService.t("docs-hyper-link-ui.edit.label"),
186
- error: showError && isBlankInput(label) ? localeService.t("docs-hyper-link-ui.edit.labelError") : "",
187
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Input, {
188
- value: label,
189
- onChange: setLabel,
190
- autoFocus: true,
191
- onKeyDown: (evt) => {
192
- if (evt.keyCode === _univerjs_ui.KeyCode.ENTER) handleConfirm();
193
- }
194
- })
195
- }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.FormLayout, {
196
- label: localeService.t("docs-hyper-link-ui.edit.address"),
197
- error: showError && !isLegal ? localeService.t("docs-hyper-link-ui.edit.addressError") : "",
198
- children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Input, {
199
- value: link,
200
- onChange: setLink,
201
- autoFocus: true,
202
- onKeyDown: (evt) => {
203
- if (evt.keyCode === _univerjs_ui.KeyCode.ENTER) handleConfirm();
204
- }
205
- })
206
- })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
207
- className: "univer-flex univer-justify-end univer-gap-3",
208
- children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
209
- onClick: handleCancel,
210
- children: localeService.t("docs-hyper-link-ui.edit.cancel")
211
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
212
- variant: "primary",
213
- disabled: isBlankInput(link),
214
- onClick: handleConfirm,
215
- children: localeService.t("docs-hyper-link-ui.edit.confirm")
216
- })]
217
- })]
218
- });
219
- };
220
- DocHyperLinkEdit.componentKey = "docs-hyper-link-edit";
221
-
222
86
  //#endregion
223
87
  //#region src/commands/commands/delete-link.command.ts
224
88
  const DeleteDocHyperLinkCommand = {
@@ -294,7 +158,7 @@ const ClickDocHyperLinkOperation = {
294
158
  };
295
159
 
296
160
  //#endregion
297
- //#region src/views/hyper-link-popup/index.tsx
161
+ //#region src/views/DocLinkPopup.tsx
298
162
  const DocLinkPopup = () => {
299
163
  var _body$customRanges, _link$properties;
300
164
  const hyperLinkService = (0, _univerjs_ui.useDependency)(DocHyperLinkPopupService);
@@ -380,7 +244,7 @@ const DocLinkPopup = () => {
380
244
  DocLinkPopup.componentKey = "univer.doc.link-info-popup";
381
245
 
382
246
  //#endregion
383
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/typeof.js
247
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/typeof.js
384
248
  function _typeof(o) {
385
249
  "@babel/helpers - typeof";
386
250
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -391,7 +255,7 @@ function _typeof(o) {
391
255
  }
392
256
 
393
257
  //#endregion
394
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPrimitive.js
258
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPrimitive.js
395
259
  function toPrimitive(t, r) {
396
260
  if ("object" != _typeof(t) || !t) return t;
397
261
  var e = t[Symbol.toPrimitive];
@@ -404,14 +268,14 @@ function toPrimitive(t, r) {
404
268
  }
405
269
 
406
270
  //#endregion
407
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/toPropertyKey.js
271
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/toPropertyKey.js
408
272
  function toPropertyKey(t) {
409
273
  var i = toPrimitive(t, "string");
410
274
  return "symbol" == _typeof(i) ? i : i + "";
411
275
  }
412
276
 
413
277
  //#endregion
414
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/defineProperty.js
278
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/defineProperty.js
415
279
  function _defineProperty(e, r, t) {
416
280
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
417
281
  value: t,
@@ -422,7 +286,7 @@ function _defineProperty(e, r, t) {
422
286
  }
423
287
 
424
288
  //#endregion
425
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorateParam.js
289
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorateParam.js
426
290
  function __decorateParam(paramIndex, decorator) {
427
291
  return function(target, key) {
428
292
  decorator(target, key, paramIndex);
@@ -430,7 +294,7 @@ function __decorateParam(paramIndex, decorator) {
430
294
  }
431
295
 
432
296
  //#endregion
433
- //#region \0@oxc-project+runtime@0.133.0/helpers/esm/decorate.js
297
+ //#region \0@oxc-project+runtime@0.137.0/helpers/esm/decorate.js
434
298
  function __decorate(decorators, target, key, desc) {
435
299
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
436
300
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -541,6 +405,178 @@ DocHyperLinkPopupService = __decorate([
541
405
  __decorateParam(2, _univerjs_core.IUniverInstanceService)
542
406
  ], DocHyperLinkPopupService);
543
407
 
408
+ //#endregion
409
+ //#region src/views/hyper-link-edit/utils.ts
410
+ /**
411
+ * Copyright 2023-present DreamNum Co., Ltd.
412
+ *
413
+ * Licensed under the Apache License, Version 2.0 (the "License");
414
+ * you may not use this file except in compliance with the License.
415
+ * You may obtain a copy of the License at
416
+ *
417
+ * http://www.apache.org/licenses/LICENSE-2.0
418
+ *
419
+ * Unless required by applicable law or agreed to in writing, software
420
+ * distributed under the License is distributed on an "AS IS" BASIS,
421
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
422
+ * See the License for the specific language governing permissions and
423
+ * limitations under the License.
424
+ */
425
+ function isBlankInput(value) {
426
+ return value.trim().length === 0;
427
+ }
428
+
429
+ //#endregion
430
+ //#region src/views/DocHyperLinkEdit.tsx
431
+ function hasProtocol(urlString) {
432
+ return /^[a-zA-Z]+:\/\//.test(urlString);
433
+ }
434
+ function isEmail(url) {
435
+ return /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/.test(url);
436
+ }
437
+ function transformUrl(urlStr) {
438
+ return hasProtocol(urlStr) ? urlStr : isEmail(urlStr) ? `mailto://${urlStr}` : `https://${urlStr}`;
439
+ }
440
+ const DocHyperLinkEdit = () => {
441
+ const hyperLinkService = (0, _univerjs_ui.useDependency)(DocHyperLinkPopupService);
442
+ const localeService = (0, _univerjs_ui.useDependency)(_univerjs_core.LocaleService);
443
+ const editing = (0, _univerjs_ui.useObservable)(hyperLinkService.editingLink$);
444
+ const commandService = (0, _univerjs_ui.useDependency)(_univerjs_core.ICommandService);
445
+ const univerInstanceService = (0, _univerjs_ui.useDependency)(_univerjs_core.IUniverInstanceService);
446
+ const docSelectionManagerService = (0, _univerjs_ui.useDependency)(_univerjs_docs.DocSelectionManagerService);
447
+ const [link, setLink] = (0, react.useState)("");
448
+ const [label, setLabel] = (0, react.useState)("");
449
+ const [showError, setShowError] = (0, react.useState)(false);
450
+ const isLegal = _univerjs_core.Tools.isLegalUrl(link);
451
+ const doc = editing ? univerInstanceService.getUnit(editing.unitId, _univerjs_core.UniverInstanceType.UNIVER_DOC) : univerInstanceService.getCurrentUnitOfType(_univerjs_core.UniverInstanceType.UNIVER_DOC);
452
+ (0, react.useEffect)(() => {
453
+ var _doc$getSelfOrHeaderF2, _BuildTextUtils$custo, _body$customRanges2;
454
+ const activeRange = docSelectionManagerService.getActiveTextRange();
455
+ if (!activeRange) return;
456
+ if (editing) {
457
+ var _doc$getSelfOrHeaderF, _body$customRanges;
458
+ const body = doc === null || doc === void 0 || (_doc$getSelfOrHeaderF = doc.getSelfOrHeaderFooterModel(editing.segmentId)) === null || _doc$getSelfOrHeaderF === void 0 ? void 0 : _doc$getSelfOrHeaderF.getBody();
459
+ const matchedRange = body === null || body === void 0 || (_body$customRanges = body.customRanges) === null || _body$customRanges === void 0 ? void 0 : _body$customRanges.find((i) => (editing === null || editing === void 0 ? void 0 : editing.linkId) === i.rangeId && i.startIndex === editing.startIndex && i.endIndex === editing.endIndex);
460
+ if (doc && matchedRange) {
461
+ var _matchedRange$propert, _matchedRange$propert2;
462
+ setLink((_matchedRange$propert = (_matchedRange$propert2 = matchedRange.properties) === null || _matchedRange$propert2 === void 0 ? void 0 : _matchedRange$propert2.url) !== null && _matchedRange$propert !== void 0 ? _matchedRange$propert : "");
463
+ setLabel(_univerjs_core.BuildTextUtils.transform.getPlainText((0, _univerjs_core.getBodySlice)(body, matchedRange.startIndex, matchedRange.endIndex + 1).dataStream));
464
+ }
465
+ return;
466
+ }
467
+ const body = doc === null || doc === void 0 || (_doc$getSelfOrHeaderF2 = doc.getSelfOrHeaderFooterModel(activeRange.segmentId)) === null || _doc$getSelfOrHeaderF2 === void 0 ? void 0 : _doc$getSelfOrHeaderF2.getBody();
468
+ const selection = body ? activeRange : null;
469
+ const matchedRange = selection && ((_BuildTextUtils$custo = _univerjs_core.BuildTextUtils.customRange.getCustomRangesInterestsWithSelection(selection, (_body$customRanges2 = body === null || body === void 0 ? void 0 : body.customRanges) !== null && _body$customRanges2 !== void 0 ? _body$customRanges2 : [])) === null || _BuildTextUtils$custo === void 0 ? void 0 : _BuildTextUtils$custo[0]);
470
+ if (doc && matchedRange) {
471
+ var _matchedRange$propert3, _matchedRange$propert4;
472
+ setLink((_matchedRange$propert3 = matchedRange === null || matchedRange === void 0 || (_matchedRange$propert4 = matchedRange.properties) === null || _matchedRange$propert4 === void 0 ? void 0 : _matchedRange$propert4.url) !== null && _matchedRange$propert3 !== void 0 ? _matchedRange$propert3 : "");
473
+ }
474
+ }, [
475
+ doc,
476
+ editing,
477
+ docSelectionManagerService,
478
+ univerInstanceService
479
+ ]);
480
+ const handleCancel = () => {
481
+ hyperLinkService.hideEditPopup();
482
+ };
483
+ const handleConfirm = () => {
484
+ setShowError(true);
485
+ if (!isLegal || !doc) return;
486
+ const linkFinal = transformUrl(link);
487
+ if (!editing) commandService.executeCommand(AddDocHyperLinkCommand.id, {
488
+ unitId: doc.getUnitId(),
489
+ payload: linkFinal
490
+ });
491
+ else {
492
+ if (isBlankInput(label)) return;
493
+ commandService.executeCommand(UpdateDocHyperLinkCommand.id, {
494
+ unitId: doc.getUnitId(),
495
+ payload: linkFinal,
496
+ linkId: editing.linkId,
497
+ label,
498
+ segmentId: editing.segmentId
499
+ });
500
+ }
501
+ hyperLinkService.hideEditPopup();
502
+ };
503
+ if (!doc) return;
504
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
505
+ className: (0, _univerjs_design.clsx)("univer-box-border univer-w-[328px] univer-rounded-xl univer-bg-white univer-px-6 univer-py-5 univer-shadow dark:!univer-bg-gray-900", _univerjs_design.borderClassName),
506
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [editing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.FormLayout, {
507
+ label: localeService.t("docs-hyper-link-ui.edit.label"),
508
+ error: showError && isBlankInput(label) ? localeService.t("docs-hyper-link-ui.edit.labelError") : "",
509
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Input, {
510
+ value: label,
511
+ onChange: setLabel,
512
+ autoFocus: true,
513
+ onKeyDown: (evt) => {
514
+ if (evt.keyCode === _univerjs_ui.KeyCode.ENTER) handleConfirm();
515
+ }
516
+ })
517
+ }) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.FormLayout, {
518
+ label: localeService.t("docs-hyper-link-ui.edit.address"),
519
+ error: showError && !isLegal ? localeService.t("docs-hyper-link-ui.edit.addressError") : "",
520
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Input, {
521
+ value: link,
522
+ onChange: setLink,
523
+ autoFocus: true,
524
+ onKeyDown: (evt) => {
525
+ if (evt.keyCode === _univerjs_ui.KeyCode.ENTER) handleConfirm();
526
+ }
527
+ })
528
+ })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
529
+ className: "univer-flex univer-justify-end univer-gap-3",
530
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
531
+ onClick: handleCancel,
532
+ children: localeService.t("docs-hyper-link-ui.edit.cancel")
533
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_univerjs_design.Button, {
534
+ variant: "primary",
535
+ disabled: isBlankInput(link),
536
+ onClick: handleConfirm,
537
+ children: localeService.t("docs-hyper-link-ui.edit.confirm")
538
+ })]
539
+ })]
540
+ });
541
+ };
542
+ DocHyperLinkEdit.componentKey = "docs-hyper-link-edit";
543
+
544
+ //#endregion
545
+ //#region src/controllers/components.controller.ts
546
+ /**
547
+ * Copyright 2023-present DreamNum Co., Ltd.
548
+ *
549
+ * Licensed under the Apache License, Version 2.0 (the "License");
550
+ * you may not use this file except in compliance with the License.
551
+ * You may obtain a copy of the License at
552
+ *
553
+ * http://www.apache.org/licenses/LICENSE-2.0
554
+ *
555
+ * Unless required by applicable law or agreed to in writing, software
556
+ * distributed under the License is distributed on an "AS IS" BASIS,
557
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
558
+ * See the License for the specific language governing permissions and
559
+ * limitations under the License.
560
+ */
561
+ let ComponentsController = class ComponentsController extends _univerjs_core.Disposable {
562
+ constructor(_componentManager, _iconManager) {
563
+ super();
564
+ this._componentManager = _componentManager;
565
+ this._iconManager = _iconManager;
566
+ this._registerComponents();
567
+ this._registerIcons();
568
+ }
569
+ _registerComponents() {
570
+ [[DocHyperLinkEdit.componentKey, DocHyperLinkEdit], [DocLinkPopup.componentKey, DocLinkPopup]].forEach(([key, comp]) => {
571
+ this.disposeWithMe(this._componentManager.register(key, comp));
572
+ });
573
+ }
574
+ _registerIcons() {
575
+ this.disposeWithMe(this._iconManager.register({ LinkIcon: _univerjs_icons.LinkIcon }));
576
+ }
577
+ };
578
+ ComponentsController = __decorate([__decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)), __decorateParam(1, (0, _univerjs_core.Inject)(_univerjs_ui.IconManager))], ComponentsController);
579
+
544
580
  //#endregion
545
581
  //#region src/controllers/doc-hyper-link-selection.controller.ts
546
582
  let DocHyperLinkSelectionController = class DocHyperLinkSelectionController extends _univerjs_core.Disposable {
@@ -604,7 +640,7 @@ let DocHyperLinkEventRenderController = class DocHyperLinkEventRenderController
604
640
  this._hyperLinkPopupService = _hyperLinkPopupService;
605
641
  this._docSkeletonManagerService = _docSkeletonManagerService;
606
642
  this._docSelectionManagerService = _docSelectionManagerService;
607
- if (this._context.unitId === _univerjs_core.DOCS_ZEN_EDITOR_UNIT_ID_KEY || this._context.unitId === _univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY) return;
643
+ if (this._context.unitId === _univerjs_core.DOCS_NORMAL_EDITOR_UNIT_ID_KEY) return;
608
644
  this._initHover();
609
645
  this._initClick();
610
646
  }
@@ -697,12 +733,11 @@ DocHyperLinkRenderController = __decorate([
697
733
 
698
734
  //#endregion
699
735
  //#region src/menu/menu.ts
700
- const DOC_LINK_ICON = "doc-hyper-link-icon";
701
736
  function AddHyperLinkMenuItemFactory(accessor) {
702
737
  return {
703
738
  id: ShowDocHyperLinkEditPopupOperation.id,
704
739
  type: _univerjs_ui.MenuItemType.BUTTON,
705
- icon: DOC_LINK_ICON,
740
+ icon: "LinkIcon",
706
741
  title: "docs-hyper-link-ui.menu.tooltip",
707
742
  tooltip: "docs-hyper-link-ui.menu.tooltip",
708
743
  hidden$: (0, _univerjs_ui.getMenuHiddenObservable)(accessor, _univerjs_core.UniverInstanceType.UNIVER_DOC),
@@ -730,6 +765,10 @@ const menuSchema = {
730
765
  order: 1,
731
766
  menuItemFactory: AddHyperLinkMenuItemFactory
732
767
  } },
768
+ [_univerjs_docs_ui.FLOAT_TOOLBAR_MENU_POSITION]: { [ShowDocHyperLinkEditPopupOperation.id]: {
769
+ order: 20,
770
+ menuItemFactory: AddHyperLinkMenuItemFactory
771
+ } },
733
772
  [_univerjs_ui.ContextMenuPosition.MAIN_AREA]: { [_univerjs_ui.ContextMenuGroup.DATA]: { [ShowDocHyperLinkEditPopupOperation.id]: {
734
773
  order: 0,
735
774
  menuItemFactory: AddHyperLinkMenuItemFactory
@@ -749,26 +788,15 @@ const menuSchema = {
749
788
  //#endregion
750
789
  //#region src/controllers/ui.controller.ts
751
790
  let DocHyperLinkUIController = class DocHyperLinkUIController extends _univerjs_core.Disposable {
752
- constructor(_componentManager, _commandService, _menuManagerService, _shortcutService) {
791
+ constructor(_commandService, _menuManagerService, _shortcutService) {
753
792
  super();
754
- this._componentManager = _componentManager;
755
793
  this._commandService = _commandService;
756
794
  this._menuManagerService = _menuManagerService;
757
795
  this._shortcutService = _shortcutService;
758
- this._initComponents();
759
796
  this._initCommands();
760
797
  this._initMenus();
761
798
  this._initShortcut();
762
799
  }
763
- _initComponents() {
764
- [
765
- [DocHyperLinkEdit.componentKey, DocHyperLinkEdit],
766
- [DocLinkPopup.componentKey, DocLinkPopup],
767
- [DOC_LINK_ICON, _univerjs_icons.LinkIcon]
768
- ].forEach(([key, comp]) => {
769
- this.disposeWithMe(this._componentManager.register(key, comp));
770
- });
771
- }
772
800
  _initCommands() {
773
801
  [
774
802
  AddDocHyperLinkCommand,
@@ -787,14 +815,14 @@ let DocHyperLinkUIController = class DocHyperLinkUIController extends _univerjs_
787
815
  });
788
816
  }
789
817
  _initMenus() {
818
+ this._menuManagerService.appendRootMenu({ [_univerjs_docs_ui.FLOAT_TOOLBAR_MENU_POSITION]: {} });
790
819
  this._menuManagerService.mergeMenu(menuSchema);
791
820
  }
792
821
  };
793
822
  DocHyperLinkUIController = __decorate([
794
- __decorateParam(0, (0, _univerjs_core.Inject)(_univerjs_ui.ComponentManager)),
795
- __decorateParam(1, _univerjs_core.ICommandService),
796
- __decorateParam(2, _univerjs_ui.IMenuManagerService),
797
- __decorateParam(3, _univerjs_ui.IShortcutService)
823
+ __decorateParam(0, _univerjs_core.ICommandService),
824
+ __decorateParam(1, _univerjs_ui.IMenuManagerService),
825
+ __decorateParam(2, _univerjs_ui.IShortcutService)
798
826
  ], DocHyperLinkUIController);
799
827
 
800
828
  //#endregion
@@ -830,6 +858,8 @@ let UniverDocsHyperLinkUIPlugin = class UniverDocsHyperLinkUIPlugin extends _uni
830
858
  this._configService.setConfig(DOCS_HYPER_LINK_UI_PLUGIN_CONFIG_KEY, rest);
831
859
  }
832
860
  onStarting() {
861
+ this._injector.add([ComponentsController]);
862
+ this._injector.get(ComponentsController);
833
863
  [
834
864
  [DocHyperLinkPopupService],
835
865
  [DocHyperLinkUIController],