@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 +197 -167
- package/lib/es/index.js +199 -169
- package/lib/index.js +199 -169
- package/lib/types/controllers/components.controller.d.ts +24 -0
- package/lib/types/controllers/ui.controller.d.ts +2 -4
- package/lib/types/locale/types.d.ts +18 -0
- package/lib/types/menu/menu.d.ts +2 -2
- package/lib/types/views/{hyper-link-edit/index.d.ts → DocHyperLinkEdit.d.ts} +1 -1
- package/lib/types/views/{hyper-link-popup/index.d.ts → DocLinkPopup.d.ts} +1 -1
- package/lib/umd/index.js +1 -1
- package/package.json +11 -11
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.
|
|
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/
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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(
|
|
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,
|
|
795
|
-
__decorateParam(1,
|
|
796
|
-
__decorateParam(2, _univerjs_ui.
|
|
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],
|