@univerjs_sheets-ui_facade.js 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125
  1. import {
  2. S,
  3. f,
  4. j,
  5. m,
  6. xe
  7. } from "./chunk-CLOCSTN3.js";
  8. import {
  9. Er,
  10. Et,
  11. Li as Li2,
  12. Ql,
  13. Sn,
  14. Wi,
  15. ai,
  16. bi as bi2,
  17. dt,
  18. me,
  19. qe,
  20. tt,
  21. vi,
  22. wi,
  23. ws,
  24. xc,
  25. yt
  26. } from "./chunk-T4NNB5UY.js";
  27. import {
  28. F,
  29. V,
  30. ea,
  31. et,
  32. gh,
  33. ph
  34. } from "./chunk-BW43Z7N3.js";
  35. import "./chunk-QRYBFJ3R.js";
  36. import "./chunk-MIOQ566M.js";
  37. import {
  38. I1,
  39. Li,
  40. Pi,
  41. Xs,
  42. bi,
  43. h3,
  44. mr,
  45. n1,
  46. rt,
  47. vr,
  48. yi
  49. } from "./chunk-POAJ2YNP.js";
  50. import "./chunk-GBYP4PB2.js";
  51. import {
  52. M
  53. } from "./chunk-PZD7N4BC.js";
  54. import {
  55. Ef,
  56. Yx,
  57. i2,
  58. vf
  59. } from "./chunk-2MK3Q52E.js";
  60. import "./chunk-BSDDCPAW.js";
  61. import "./chunk-QG2HZMYH.js";
  62. import {
  63. Fe,
  64. Ht,
  65. Mi,
  66. Mt,
  67. Pt,
  68. UR,
  69. Ve,
  70. Vn,
  71. Ze,
  72. Zt,
  73. _n,
  74. combineLatest,
  75. filter,
  76. hi,
  77. pi,
  78. qt,
  79. su,
  80. xf
  81. } from "./chunk-23V3HWTR.js";
  82. import "./chunk-GNR2UJZM.js";
  83. import "./chunk-2LSFTFF7.js";
  84. // node_modules/.pnpm/@univerjs+sheets-ui@0.5.5_@grpc+grpc-js@1.13.4_react-dom@18.3.1_react@18.3.1_rxjs@7.8.1_typescript@5.4.5/node_modules/@univerjs/sheets-ui/lib/es/facade.js
  85. var Fe2 = class extends pi {
  86. // eslint-disable-next-line max-lines-per-function
  87. _initSheetUIEvent(e) {
  88. const r = e.get(Pt);
  89. this.disposeWithMe(r.beforeCommandExecuted((t) => {
  90. if (t.id === Et.id) {
  91. if (!this._eventListend(this.Event.BeforeSheetEditStart) && !this._eventListend(this.Event.BeforeSheetEditEnd))
  92. return;
  93. const i = this.getCommandSheetTarget(t);
  94. if (!i)
  95. return;
  96. const { workbook: o, worksheet: s } = i, c = e.get(tt), g = e.get(_n), b = t.params, { visible: l, keycode: h, eventType: S2 } = b, d = c.getEditLocation();
  97. if (l) {
  98. const f2 = {
  99. row: d.row,
  100. column: d.column,
  101. eventType: S2,
  102. keycode: h,
  103. workbook: o,
  104. worksheet: s,
  105. isZenEditor: false
  106. };
  107. if (this.fireEvent(this.Event.BeforeSheetEditStart, f2), f2.cancel)
  108. throw new xf();
  109. } else {
  110. const f2 = {
  111. row: d.row,
  112. column: d.column,
  113. eventType: S2,
  114. keycode: h,
  115. workbook: o,
  116. worksheet: s,
  117. isZenEditor: false,
  118. value: Zt.create(g.getUnit(su).getSnapshot()),
  119. isConfirm: h !== I1.ESC
  120. };
  121. if (this.fireEvent(this.Event.BeforeSheetEditEnd, f2), f2.cancel)
  122. throw new xf();
  123. }
  124. }
  125. if (t.id === Wi.id) {
  126. if (!this._eventListend(this.Event.BeforeSheetZoomChange))
  127. return;
  128. const i = this.getCommandSheetTarget(t);
  129. if (!i)
  130. return;
  131. const { workbook: o, worksheet: s } = i;
  132. this.fireEvent(this.Event.BeforeSheetZoomChange, {
  133. zoom: t.params.zoomRatio,
  134. workbook: o,
  135. worksheet: s
  136. });
  137. }
  138. })), this.disposeWithMe(r.onCommandExecuted((t) => {
  139. if (t.id === Et.id) {
  140. if (!this._eventListend(this.Event.SheetEditStarted) && !this._eventListend(this.Event.SheetEditEnded))
  141. return;
  142. const i = this.getCommandSheetTarget(t);
  143. if (!i)
  144. return;
  145. const { workbook: o, worksheet: s } = i, c = e.get(tt), g = t.params, { visible: b, keycode: l, eventType: h } = g, S2 = c.getEditLocation();
  146. if (b) {
  147. const d = {
  148. row: S2.row,
  149. column: S2.column,
  150. eventType: h,
  151. keycode: l,
  152. workbook: o,
  153. worksheet: s,
  154. isZenEditor: false
  155. };
  156. this.fireEvent(this.Event.SheetEditStarted, d);
  157. } else {
  158. const d = {
  159. row: S2.row,
  160. column: S2.column,
  161. eventType: h,
  162. keycode: l,
  163. workbook: o,
  164. worksheet: s,
  165. isZenEditor: false,
  166. isConfirm: l !== I1.ESC
  167. };
  168. this.fireEvent(this.Event.SheetEditEnded, d);
  169. }
  170. }
  171. if (t.id === M.id) {
  172. if (!this._eventListend(this.Event.SheetEditChanging))
  173. return;
  174. const i = this.getCommandSheetTarget(t);
  175. if (!i)
  176. return;
  177. const { workbook: o, worksheet: s } = i, c = e.get(tt), g = e.get(_n), b = t.params;
  178. if (!c.isVisible().visible)
  179. return;
  180. const { unitId: l } = b;
  181. if (l === su) {
  182. const { row: h, column: S2 } = c.getEditLocation(), d = {
  183. workbook: o,
  184. worksheet: s,
  185. row: h,
  186. column: S2,
  187. value: Zt.create(g.getUnit(su).getSnapshot()),
  188. isZenEditor: false
  189. };
  190. this.fireEvent(this.Event.SheetEditChanging, d);
  191. }
  192. }
  193. if (t.id === Wi.id) {
  194. if (!this._eventListend(this.Event.SheetZoomChanged))
  195. return;
  196. const i = this.getCommandSheetTarget(t);
  197. if (!i)
  198. return;
  199. const { workbook: o, worksheet: s } = i;
  200. this.fireEvent(this.Event.SheetZoomChanged, {
  201. zoom: s.getZoom(),
  202. workbook: o,
  203. worksheet: s
  204. });
  205. }
  206. })), this._initObserverListener(e);
  207. }
  208. // eslint-disable-next-line max-lines-per-function
  209. _initObserverListener(e) {
  210. const t = e.get(_n).getFocusedUnit(), i = t == null ? void 0 : t.getUnitId(), o = e.get(Yx);
  211. if (i) {
  212. const l = e.get(Ht), h = new Mi();
  213. this.disposeWithMe(l.lifecycle$.subscribe((S2) => {
  214. var k, M2, u, p, E, O, F2, N, V2, Z, K, z, Y, X, J;
  215. if (S2 < Ve.Rendered)
  216. return;
  217. h.dispose();
  218. const d = e.get(Er), f2 = e.get(wi);
  219. d && (h.add(
  220. (k = d.currentClickedCell$) == null ? void 0 : k.pipe(filter((n) => !!n)).subscribe((n) => {
  221. if (!this._eventListend(this.Event.CellClicked))
  222. return;
  223. const a = this.getSheetTarget(n.location.unitId, n.location.subUnitId);
  224. a && this.fireEvent(this.Event.CellClicked, {
  225. ...a,
  226. ...n,
  227. row: n.location.row,
  228. column: n.location.col
  229. });
  230. })
  231. ), h.add(
  232. (M2 = d.currentRichText$) == null ? void 0 : M2.pipe(filter((n) => !!n)).subscribe((n) => {
  233. if (!this._eventListend(this.Event.CellHover))
  234. return;
  235. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  236. a && this.fireEvent(this.Event.CellHover, {
  237. ...a,
  238. ...n,
  239. row: n.row,
  240. column: n.col
  241. });
  242. })
  243. ), h.add(
  244. (u = d.currentPointerDownCell$) == null ? void 0 : u.pipe(filter((n) => !!n)).subscribe((n) => {
  245. if (!this._eventListend(this.Event.CellPointerDown))
  246. return;
  247. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  248. a && this.fireEvent(this.Event.CellPointerDown, {
  249. ...a,
  250. ...n,
  251. row: n.row,
  252. column: n.col
  253. });
  254. })
  255. ), h.add(
  256. (p = d.currentPointerUpCell$) == null ? void 0 : p.pipe(filter((n) => !!n)).subscribe((n) => {
  257. if (!this._eventListend(this.Event.CellPointerUp))
  258. return;
  259. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  260. a && this.fireEvent(this.Event.CellPointerUp, {
  261. ...a,
  262. ...n,
  263. row: n.row,
  264. column: n.col
  265. });
  266. })
  267. ), h.add(
  268. (E = d.currentCellPosWithEvent$) == null ? void 0 : E.pipe(filter((n) => !!n)).subscribe((n) => {
  269. if (!this._eventListend(this.Event.CellPointerMove))
  270. return;
  271. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  272. a && this.fireEvent(this.Event.CellPointerMove, {
  273. ...a,
  274. ...n,
  275. row: n.row,
  276. column: n.col
  277. });
  278. })
  279. ), h.add(
  280. (O = f2.currentCell$) == null ? void 0 : O.pipe(filter((n) => !!n)).subscribe((n) => {
  281. if (!this._eventListend(this.Event.DragOver))
  282. return;
  283. const a = this.getSheetTarget(n.location.unitId, n.location.subUnitId);
  284. a && this.fireEvent(this.Event.DragOver, {
  285. ...a,
  286. ...n,
  287. row: n.location.row,
  288. column: n.location.col
  289. });
  290. })
  291. ), h.add(
  292. (F2 = f2.endCell$) == null ? void 0 : F2.pipe(filter((n) => !!n)).subscribe((n) => {
  293. if (!this._eventListend(this.Event.Drop))
  294. return;
  295. const a = this.getSheetTarget(n.location.unitId, n.location.subUnitId);
  296. a && this.fireEvent(this.Event.Drop, {
  297. ...a,
  298. ...n,
  299. row: n.location.row,
  300. column: n.location.col
  301. });
  302. })
  303. ), h.add(
  304. (N = d.currentRowHeaderClick$) == null ? void 0 : N.pipe(filter((n) => !!n)).subscribe((n) => {
  305. if (!this._eventListend(this.Event.RowHeaderClick))
  306. return;
  307. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  308. a && this.fireEvent(this.Event.RowHeaderClick, {
  309. ...a,
  310. row: n.index
  311. });
  312. })
  313. ), h.add(
  314. (V2 = d.currentRowHeaderPointerDown$) == null ? void 0 : V2.pipe(filter((n) => !!n)).subscribe((n) => {
  315. if (!this._eventListend(this.Event.RowHeaderPointerDown))
  316. return;
  317. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  318. a && this.fireEvent(this.Event.RowHeaderPointerDown, {
  319. ...a,
  320. row: n.index
  321. });
  322. })
  323. ), h.add(
  324. (Z = d.currentRowHeaderPointerUp$) == null ? void 0 : Z.pipe(filter((n) => !!n)).subscribe((n) => {
  325. if (!this._eventListend(this.Event.RowHeaderPointerUp))
  326. return;
  327. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  328. a && this.fireEvent(this.Event.RowHeaderPointerUp, {
  329. ...a,
  330. row: n.index
  331. });
  332. })
  333. ), h.add(
  334. (K = d.currentHoveredRowHeader$) == null ? void 0 : K.pipe(filter((n) => !!n)).subscribe((n) => {
  335. if (!this._eventListend(this.Event.RowHeaderHover))
  336. return;
  337. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  338. a && this.fireEvent(this.Event.RowHeaderHover, {
  339. ...a,
  340. row: n.index
  341. });
  342. })
  343. ), h.add(
  344. (z = d.currentColHeaderClick$) == null ? void 0 : z.pipe(filter((n) => !!n)).subscribe((n) => {
  345. if (!this._eventListend(this.Event.ColumnHeaderClick))
  346. return;
  347. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  348. a && this.fireEvent(this.Event.ColumnHeaderClick, {
  349. ...a,
  350. column: n.index
  351. });
  352. })
  353. ), h.add(
  354. (Y = d.currentColHeaderPointerDown$) == null ? void 0 : Y.pipe(filter((n) => !!n)).subscribe((n) => {
  355. if (!this._eventListend(this.Event.ColumnHeaderPointerDown))
  356. return;
  357. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  358. a && this.fireEvent(this.Event.ColumnHeaderPointerDown, {
  359. ...a,
  360. column: n.index
  361. });
  362. })
  363. ), h.add(
  364. (X = d.currentColHeaderPointerUp$) == null ? void 0 : X.pipe(filter((n) => !!n)).subscribe((n) => {
  365. if (!this._eventListend(this.Event.ColumnHeaderPointerUp))
  366. return;
  367. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  368. a && this.fireEvent(this.Event.ColumnHeaderPointerUp, {
  369. ...a,
  370. column: n.index
  371. });
  372. })
  373. ), h.add(
  374. (J = d.currentHoveredColHeader$) == null ? void 0 : J.pipe(filter((n) => !!n)).subscribe((n) => {
  375. if (!this._eventListend(this.Event.ColumnHeaderHover))
  376. return;
  377. const a = this.getSheetTarget(n.unitId, n.subUnitId);
  378. a && this.fireEvent(this.Event.ColumnHeaderHover, {
  379. ...a,
  380. column: n.index
  381. });
  382. })
  383. ));
  384. })), this.disposeWithMe(h);
  385. }
  386. const s = /* @__PURE__ */ new Map();
  387. let c;
  388. const g = e.get(Ht), b = combineLatest([
  389. o.created$,
  390. g.lifecycle$
  391. ]);
  392. this.disposeWithMe(b.subscribe(([l, h]) => {
  393. var M2;
  394. if (l.type === Fe.UNIVER_SHEET && (c = l), h <= Ve.Rendered)
  395. return;
  396. const S2 = new Mi();
  397. if (!c)
  398. return;
  399. const d = this.getWorkbook(c.unitId);
  400. if (!d)
  401. return;
  402. s.get(c.unitId) && ((M2 = s.get(c.unitId)) == null || M2.dispose()), s.set(c.unitId, S2);
  403. const f2 = c.with(yt);
  404. S2.add(f2.validViewportScrollInfo$.subscribe((u) => {
  405. u && this._eventListend(this.Event.Scroll) && this.fireEvent(this.Event.Scroll, {
  406. workbook: d,
  407. worksheet: d.getActiveSheet(),
  408. ...u
  409. });
  410. }));
  411. const k = c.with(F);
  412. S2.add(k.selectionMoveStart$.subscribe((u) => {
  413. var p;
  414. this._eventListend(this.Event.SelectionMoveStart) && this.fireEvent(this.Event.SelectionMoveStart, {
  415. workbook: d,
  416. worksheet: d.getActiveSheet(),
  417. selections: (p = u == null ? void 0 : u.map((E) => E.range)) != null ? p : []
  418. });
  419. })), S2.add(k.selectionMoving$.subscribe((u) => {
  420. var p;
  421. this._eventListend(this.Event.SelectionMoving) && this.fireEvent(this.Event.SelectionMoving, {
  422. workbook: d,
  423. worksheet: d.getActiveSheet(),
  424. selections: (p = u == null ? void 0 : u.map((E) => E.range)) != null ? p : []
  425. });
  426. })), S2.add(k.selectionMoveEnd$.subscribe((u) => {
  427. var p;
  428. this._eventListend(this.Event.SelectionMoveEnd) && this.fireEvent(this.Event.SelectionMoveEnd, {
  429. workbook: d,
  430. worksheet: d.getActiveSheet(),
  431. selections: (p = u == null ? void 0 : u.map((E) => E.range)) != null ? p : []
  432. });
  433. })), S2.add(k.selectionChanged$.subscribe((u) => {
  434. var p;
  435. this._eventListend(this.Event.SelectionChanged) && this.fireEvent(this.Event.SelectionChanged, {
  436. workbook: d,
  437. worksheet: d.getActiveSheet(),
  438. selections: (p = u == null ? void 0 : u.map((E) => E.range)) != null ? p : []
  439. });
  440. })), c = null, this.disposeWithMe(S2);
  441. })), this.disposeWithMe(o.disposed$.subscribe((l) => {
  442. var h;
  443. (h = s.get(l)) == null || h.dispose(), s.delete(l);
  444. })), this.disposeWithMe(() => {
  445. s.forEach((l) => {
  446. l.dispose();
  447. });
  448. });
  449. }
  450. _initialize(e) {
  451. this._initSheetUIEvent(e);
  452. const r = e.get(Pt);
  453. this.disposeWithMe(r.beforeCommandExecuted((t) => {
  454. switch (t.id) {
  455. case bi.id:
  456. case yi.id:
  457. this._beforeClipboardChange();
  458. break;
  459. case xc.id:
  460. this._beforeClipboardPaste(t.params);
  461. break;
  462. }
  463. })), this.disposeWithMe(r.onCommandExecuted((t) => {
  464. if (gh.indexOf(t.id) > -1) {
  465. if (!this._eventListend(this.Event.SheetSkeletonChanged))
  466. return;
  467. const i = this.getActiveSheet();
  468. if (!i)
  469. return;
  470. const o = ph(t).map((s) => {
  471. var c, g;
  472. return (g = (c = this.getWorkbook(s.unitId)) == null ? void 0 : c.getSheetBySheetId(s.subUnitId)) == null ? void 0 : g.getRange(s.range);
  473. }).filter(Boolean);
  474. if (!o.length)
  475. return;
  476. this.fireEvent(this.Event.SheetSkeletonChanged, {
  477. workbook: i.workbook,
  478. worksheet: i.worksheet,
  479. payload: t,
  480. skeleton: i.worksheet.getSkeleton(),
  481. effectedRanges: o
  482. });
  483. return;
  484. }
  485. switch (t.id) {
  486. case bi.id:
  487. case yi.id:
  488. this._clipboardChanged();
  489. break;
  490. case xc.id:
  491. this._clipboardPaste();
  492. break;
  493. case Li.id:
  494. this._clipboardPasteAsync();
  495. break;
  496. }
  497. })), this.disposeWithMe(r.beforeCommandExecuted(async (t) => {
  498. switch (t.id) {
  499. case Li.id:
  500. await this._beforeClipboardPasteAsync();
  501. break;
  502. }
  503. }));
  504. }
  505. _generateClipboardCopyParam() {
  506. const e = this.getActiveWorkbook(), r = e == null ? void 0 : e.getActiveSheet(), t = e == null ? void 0 : e.getActiveRange();
  507. if (!e || !r || !t)
  508. return;
  509. const o = this._injector.get(Sn).generateCopyContent(e.getId(), r.getSheetId(), t.getRange());
  510. if (!o)
  511. return;
  512. const { html: s, plain: c } = o;
  513. return {
  514. workbook: e,
  515. worksheet: r,
  516. text: c,
  517. html: s,
  518. fromSheet: r,
  519. fromRange: t
  520. };
  521. }
  522. _beforeClipboardChange() {
  523. if (!this.hasEventCallback(this.Event.BeforeClipboardChange))
  524. return;
  525. const e = this._generateClipboardCopyParam();
  526. if (e && (this.fireEvent(this.Event.BeforeClipboardChange, e), e.cancel))
  527. throw new Error("Before clipboard change is canceled");
  528. }
  529. _clipboardChanged() {
  530. if (!this.hasEventCallback(this.Event.ClipboardChanged))
  531. return;
  532. const e = this._generateClipboardCopyParam();
  533. if (e && (this.fireEvent(this.Event.ClipboardChanged, e), e.cancel))
  534. throw new Error("Clipboard changed is canceled");
  535. }
  536. _generateClipboardPasteParam(e) {
  537. if (!e)
  538. return;
  539. const { htmlContent: r, textContent: t } = e, i = this.getActiveWorkbook(), o = i == null ? void 0 : i.getActiveSheet();
  540. return !i || !o ? void 0 : {
  541. workbook: i,
  542. worksheet: o,
  543. text: t,
  544. html: r
  545. };
  546. }
  547. async _generateClipboardPasteParamAsync() {
  548. const e = this.getActiveWorkbook(), r = e == null ? void 0 : e.getActiveSheet();
  549. if (!e || !r)
  550. return;
  551. const o = (await this._injector.get(Pi).read())[0];
  552. let s;
  553. if (o) {
  554. const c = o.types, g = c.indexOf(vr) !== -1 ? await o.getType(vr).then((l) => l && l.text()) : "", b = c.indexOf(mr) !== -1 ? await o.getType(mr).then((l) => l && l.text()) : "";
  555. s = {
  556. workbook: e,
  557. worksheet: r,
  558. text: g,
  559. html: b
  560. };
  561. }
  562. return s;
  563. }
  564. _beforeClipboardPaste(e) {
  565. if (!this.hasEventCallback(this.Event.BeforeClipboardPaste))
  566. return;
  567. const r = this._generateClipboardPasteParam(e);
  568. if (r && (this.fireEvent(this.Event.BeforeClipboardPaste, r), r.cancel))
  569. throw new Error("Before clipboard paste is canceled");
  570. }
  571. _clipboardPaste(e) {
  572. if (!this.hasEventCallback(this.Event.BeforeClipboardPaste))
  573. return;
  574. const r = this._generateClipboardPasteParam(e);
  575. if (r && (this.fireEvent(this.Event.BeforeClipboardPaste, r), r.cancel))
  576. throw new Error("Clipboard pasted is canceled");
  577. }
  578. async _beforeClipboardPasteAsync() {
  579. if (!this.hasEventCallback(this.Event.BeforeClipboardPaste))
  580. return;
  581. if (!Xs()) {
  582. this._injector.get(Mt).warn("[Facade]: The navigator object only supports the browser environment");
  583. return;
  584. }
  585. const e = await this._generateClipboardPasteParamAsync();
  586. if (e && (this.fireEvent(this.Event.BeforeClipboardPaste, e), e.cancel))
  587. throw new Error("Before clipboard paste is canceled");
  588. }
  589. async _clipboardPasteAsync() {
  590. if (!this.hasEventCallback(this.Event.ClipboardPasted))
  591. return;
  592. if (!Xs()) {
  593. this._injector.get(Mt).warn("[Facade]: The navigator object only supports the browser environment");
  594. return;
  595. }
  596. const e = await this._generateClipboardPasteParamAsync();
  597. if (e && (this.fireEvent(this.Event.ClipboardPasted, e), e.cancel))
  598. throw new Error("Clipboard pasted is canceled");
  599. }
  600. customizeColumnHeader(e) {
  601. const r = this.getActiveWorkbook();
  602. if (!r) {
  603. console.error("WorkBook not exist");
  604. return;
  605. }
  606. const t = r == null ? void 0 : r.getId();
  607. this._getSheetRenderComponent(t, qe.COLUMN).setCustomHeader(e);
  608. }
  609. customizeRowHeader(e) {
  610. const r = this.getActiveWorkbook();
  611. if (!r) {
  612. console.error("WorkBook not exist");
  613. return;
  614. }
  615. const t = r == null ? void 0 : r.getId();
  616. this._getSheetRenderComponent(t, qe.ROW).setCustomHeader(e);
  617. }
  618. registerSheetRowHeaderExtension(e, ...r) {
  619. const t = this._getSheetRenderComponent(e, qe.ROW), i = t.register(...r);
  620. return Ze(() => {
  621. i.dispose(), t.makeDirty(true);
  622. });
  623. }
  624. registerSheetColumnHeaderExtension(e, ...r) {
  625. const t = this._getSheetRenderComponent(e, qe.COLUMN), i = t.register(...r);
  626. return Ze(() => {
  627. i.dispose(), t.makeDirty(true);
  628. });
  629. }
  630. registerSheetMainExtension(e, ...r) {
  631. const t = this._getSheetRenderComponent(e, qe.MAIN), i = t.register(...r);
  632. return Ze(() => {
  633. i.dispose(), t.makeDirty(true);
  634. });
  635. }
  636. /**
  637. * Get sheet render component from render by unitId and view key.
  638. * @private
  639. * @param {string} unitId The unit id of the spreadsheet.
  640. * @param {SHEET_VIEW_KEY} viewKey The view key of the spreadsheet.
  641. * @returns {Nullable<RenderComponentType>} The render component.
  642. */
  643. _getSheetRenderComponent(e, r) {
  644. const i = this._injector.get(Yx).getRenderById(e);
  645. if (!i)
  646. throw new Error(`Render Unit with unitId ${e} not found`);
  647. const { components: o } = i, s = o.get(r);
  648. if (!s)
  649. throw new Error("Render component not found");
  650. return s;
  651. }
  652. /**
  653. * Get sheet hooks.
  654. * @returns {FSheetHooks} FSheetHooks instance
  655. */
  656. getSheetHooks() {
  657. return this._injector.createInstance(xe);
  658. }
  659. };
  660. pi.extend(Fe2);
  661. var Ne = class extends f {
  662. openSiderbar(e) {
  663. return this._logDeprecation("openSiderbar"), this._injector.get(rt).open(e);
  664. }
  665. openDialog(e) {
  666. this._logDeprecation("openDialog");
  667. const t = this._injector.get(h3).open({
  668. ...e,
  669. onClose: () => {
  670. t.dispose();
  671. }
  672. });
  673. return t;
  674. }
  675. _logDeprecation(e) {
  676. this._injector.get(Mt).warn("[FWorkbook]", `${e} is deprecated. Please use the function of the same name on "FUniver".`);
  677. }
  678. generateCellParams(e) {
  679. const r = this.getActiveSheet();
  680. return {
  681. row: e.row,
  682. column: e.col,
  683. workbook: this,
  684. worksheet: r
  685. };
  686. }
  687. onCellClick(e) {
  688. const r = this._injector.get(Er);
  689. return Ze(
  690. r.currentClickedCell$.pipe(filter((t) => !!t)).subscribe((t) => {
  691. e(t);
  692. })
  693. );
  694. }
  695. onCellHover(e) {
  696. const r = this._injector.get(Er);
  697. return Ze(
  698. r.currentRichText$.pipe(filter((t) => !!t)).subscribe(e)
  699. );
  700. }
  701. onCellPointerDown(e) {
  702. const r = this._injector.get(Er);
  703. return Ze(
  704. r.currentPointerDownCell$.subscribe(e)
  705. );
  706. }
  707. onCellPointerUp(e) {
  708. const r = this._injector.get(Er);
  709. return Ze(
  710. r.currentPointerUpCell$.subscribe(e)
  711. );
  712. }
  713. onCellPointerMove(e) {
  714. const r = this._injector.get(Er);
  715. return Ze(
  716. r.currentCellPosWithEvent$.pipe(filter((t) => !!t)).subscribe((t) => {
  717. e(t, t.event);
  718. })
  719. );
  720. }
  721. onDragOver(e) {
  722. const r = this._injector.get(wi);
  723. return Ze(
  724. r.currentCell$.pipe(filter((t) => !!t)).subscribe((t) => {
  725. e(t);
  726. })
  727. );
  728. }
  729. onDrop(e) {
  730. const r = this._injector.get(wi);
  731. return Ze(
  732. r.endCell$.pipe(filter((t) => !!t)).subscribe((t) => {
  733. e(t);
  734. })
  735. );
  736. }
  737. startEditing() {
  738. return this._injector.get(Pt).syncExecuteCommand(Et.id, {
  739. eventType: vf.Dblclick,
  740. unitId: this._workbook.getUnitId(),
  741. visible: true
  742. });
  743. }
  744. async endEditing(e) {
  745. return this._injector.get(Pt).syncExecuteCommand(Et.id, {
  746. eventType: vf.Keyboard,
  747. keycode: e ? I1.ENTER : I1.ESC,
  748. visible: false,
  749. unitId: this._workbook.getUnitId()
  750. }), await UR(0), true;
  751. }
  752. endEditingAsync(e = true) {
  753. return this.endEditing(e);
  754. }
  755. /**
  756. * Get scroll state of specified sheet.
  757. * @param {string} sheetId - sheet id
  758. * @returns {IScrollState} scroll state
  759. * @example
  760. * ``` ts
  761. * univerAPI.getActiveWorkbook().getScrollStateBySheetId($sheetId)
  762. * ```
  763. */
  764. getScrollStateBySheetId(e) {
  765. const r = this._workbook.getUnitId(), i = this._injector.get(Yx).getRenderById(r);
  766. return i ? i.with(yt).getScrollStateByParam({ unitId: r, sheetId: e }) : null;
  767. }
  768. disableSelection() {
  769. const e = this._workbook.getUnitId(), t = this._injector.get(Yx).getRenderById(e);
  770. return t && t.with(dt).disableSelection(), this;
  771. }
  772. enableSelection() {
  773. const e = this._workbook.getUnitId(), t = this._injector.get(Yx).getRenderById(e);
  774. return t && t.with(dt).enableSelection(), this;
  775. }
  776. transparentSelection() {
  777. const e = this._workbook.getUnitId(), t = this._injector.get(Yx).getRenderById(e);
  778. return t && t.with(dt).transparentSelection(), this;
  779. }
  780. showSelection() {
  781. const e = this._workbook.getUnitId(), t = this._injector.get(Yx).getRenderById(e);
  782. return t && t.with(dt).showSelection(), this;
  783. }
  784. };
  785. f.extend(Ne);
  786. var Ve2 = class extends m {
  787. refreshCanvas() {
  788. const e = this._injector.get(Yx), r = this._fWorkbook.id, t = e.getRenderById(r);
  789. if (!t)
  790. throw new Error(`Render Unit with unitId ${r} not found`);
  791. t.with(me).reCalculate();
  792. const i = t.mainComponent;
  793. if (!i)
  794. throw new Error("Main component not found");
  795. return i.makeDirty(), this;
  796. }
  797. zoom(e) {
  798. return this._injector.get(Pt).syncExecuteCommand(Li2.id, {
  799. unitId: this._workbook.getUnitId(),
  800. subUnitId: this._worksheet.getSheetId(),
  801. zoomRatio: e
  802. }), this;
  803. }
  804. getZoom() {
  805. return this._worksheet.getZoomRatio();
  806. }
  807. getVisibleRange() {
  808. const e = this._workbook.getUnitId(), t = this._injector.get(Yx).getRenderById(e);
  809. let i = {
  810. startColumn: 0,
  811. startRow: 0,
  812. endColumn: 0,
  813. endRow: 0
  814. };
  815. if (!t)
  816. return i;
  817. const s = t.with(me).getCurrentSkeleton();
  818. if (!s)
  819. return i;
  820. const c = s == null ? void 0 : s.getVisibleRanges();
  821. if (!c)
  822. return i;
  823. i = s.getVisibleRangeByViewport(i2.VIEW_MAIN);
  824. for (const [g, b] of c)
  825. Ef.indexOf(g) !== -1 && (i.startColumn = Math.min(i.startColumn, b.startColumn), i.startRow = Math.min(i.startRow, b.startRow), i.endColumn = Math.max(i.endColumn, b.endColumn), i.endRow = Math.max(i.endRow, b.endRow));
  826. return i;
  827. }
  828. scrollToCell(e, r) {
  829. const t = this._workbook.getUnitId(), o = this._injector.get(Yx).getRenderById(t);
  830. return o && (o == null ? void 0 : o.with(ai)).scrollToCell(e, r), this;
  831. }
  832. getScrollState() {
  833. const e = {
  834. offsetX: 0,
  835. offsetY: 0,
  836. sheetViewStartColumn: 0,
  837. sheetViewStartRow: 0
  838. }, r = this._workbook.getUnitId(), t = this._worksheet.getSheetId(), o = this._injector.get(Yx).getRenderById(r);
  839. return o && o.with(yt).getScrollStateByParam({ unitId: r, sheetId: t }) || e;
  840. }
  841. onScroll(e) {
  842. var o;
  843. const r = this._workbook.getUnitId(), i = (o = this._injector.get(Yx).getRenderById(r)) == null ? void 0 : o.with(yt);
  844. if (i) {
  845. const s = i.validViewportScrollInfo$.subscribe((c) => {
  846. e(c);
  847. });
  848. return Ze(s);
  849. }
  850. return Ze(() => {
  851. });
  852. }
  853. getSkeleton() {
  854. var r, t;
  855. const e = (r = this._injector.get(Yx).getRenderById(this._workbook.getUnitId())) == null ? void 0 : r.with(me);
  856. return (t = e == null ? void 0 : e.getWorksheetSkeleton(this._worksheet.getSheetId())) == null ? void 0 : t.skeleton;
  857. }
  858. setColumnAutoWidth(e, r) {
  859. const t = this._workbook.getUnitId(), i = this._worksheet.getSheetId(), o = [
  860. {
  861. startColumn: e,
  862. endColumn: e + r - 1,
  863. startRow: 0,
  864. endRow: this._worksheet.getRowCount() - 1
  865. }
  866. ];
  867. return this._commandService.syncExecuteCommand(Ql.id, {
  868. unitId: t,
  869. subUnitId: i,
  870. ranges: o
  871. }), this;
  872. }
  873. };
  874. m.extend(Ve2);
  875. var Ze2 = class extends j {
  876. setPermissionDialogVisible(e) {
  877. this._permissionService.setShowComponents(e);
  878. }
  879. };
  880. j.extend(Ze2);
  881. var Ke = class extends xe {
  882. onCellPointerMove(e) {
  883. return Ze(this._injector.get(Er).currentPosition$.subscribe(e));
  884. }
  885. onCellPointerOver(e) {
  886. return Ze(this._injector.get(Er).currentCell$.subscribe(e));
  887. }
  888. onCellDragOver(e) {
  889. return Ze(this._injector.get(wi).currentCell$.subscribe(e));
  890. }
  891. onCellDrop(e) {
  892. return Ze(this._injector.get(wi).endCell$.subscribe(e));
  893. }
  894. onCellRender(e, r = Vn.Style, t = ea.DATA_VALIDATION) {
  895. return this._injector.get(V).intercept(et.CELL_CONTENT, {
  896. effect: r,
  897. handler: (i, o, s) => s({
  898. ...i,
  899. customRender: [
  900. ...(i == null ? void 0 : i.customRender) || [],
  901. ...e || []
  902. ]
  903. }),
  904. priority: t
  905. });
  906. }
  907. onBeforeCellEdit(e) {
  908. return this._injector.get(Pt).beforeCommandExecuted((r) => {
  909. const t = r.params;
  910. r.id === Et.id && t.visible && e(t);
  911. });
  912. }
  913. onAfterCellEdit(e) {
  914. return this._injector.get(Pt).onCommandExecuted((r) => {
  915. const t = r.params;
  916. r.id === Et.id && !t.visible && e(t);
  917. });
  918. }
  919. };
  920. xe.extend(Ke);
  921. var y = {
  922. CellClicked: "CellClicked",
  923. CellPointerDown: "CellPointerDown",
  924. CellPointerUp: "CellPointerUp",
  925. CellPointerMove: "CellPointerMove",
  926. CellHover: "CellHover",
  927. DragOver: "DragOver",
  928. Drop: "Drop",
  929. Scroll: "Scroll",
  930. SelectionMoveStart: "SelectionMoveStart",
  931. SelectionMoving: "SelectionMoving",
  932. SelectionMoveEnd: "SelectionMoveEnd",
  933. SelectionChanged: "SelectionChanged"
  934. };
  935. var ze = class extends hi {
  936. get BeforeClipboardChange() {
  937. return "BeforeClipboardChange";
  938. }
  939. get ClipboardChanged() {
  940. return "ClipboardChanged";
  941. }
  942. get BeforeClipboardPaste() {
  943. return "BeforeClipboardPaste";
  944. }
  945. get ClipboardPasted() {
  946. return "ClipboardPasted";
  947. }
  948. get BeforeSheetEditStart() {
  949. return "BeforeSheetEditStart";
  950. }
  951. get SheetEditStarted() {
  952. return "SheetEditStarted";
  953. }
  954. get SheetEditChanging() {
  955. return "SheetEditChanging";
  956. }
  957. get BeforeSheetEditEnd() {
  958. return "BeforeSheetEditEnd";
  959. }
  960. get SheetEditEnded() {
  961. return "SheetEditEnded";
  962. }
  963. get CellClicked() {
  964. return y.CellClicked;
  965. }
  966. get CellHover() {
  967. return y.CellHover;
  968. }
  969. get CellPointerDown() {
  970. return y.CellPointerDown;
  971. }
  972. get CellPointerUp() {
  973. return y.CellPointerUp;
  974. }
  975. get CellPointerMove() {
  976. return y.CellPointerMove;
  977. }
  978. get DragOver() {
  979. return "DragOver";
  980. }
  981. get Drop() {
  982. return "Drop";
  983. }
  984. get Scroll() {
  985. return "Scroll";
  986. }
  987. get SelectionMoveStart() {
  988. return "SelectionMoveStart";
  989. }
  990. get SelectionChanged() {
  991. return "SelectionChanged";
  992. }
  993. get SelectionMoving() {
  994. return "SelectionMoving";
  995. }
  996. get SelectionMoveEnd() {
  997. return "SelectionMoveEnd";
  998. }
  999. get RowHeaderClick() {
  1000. return "RowHeaderClick";
  1001. }
  1002. get RowHeaderPointerDown() {
  1003. return "RowHeaderPointerDown";
  1004. }
  1005. get RowHeaderPointerUp() {
  1006. return "RowHeaderPointerUp";
  1007. }
  1008. get RowHeaderHover() {
  1009. return "RowHeaderHover";
  1010. }
  1011. get ColumnHeaderClick() {
  1012. return "ColumnHeaderClick";
  1013. }
  1014. get ColumnHeaderPointerDown() {
  1015. return "ColumnHeaderPointerDown";
  1016. }
  1017. get ColumnHeaderPointerUp() {
  1018. return "ColumnHeaderPointerUp";
  1019. }
  1020. get ColumnHeaderHover() {
  1021. return "ColumnHeaderHover";
  1022. }
  1023. get SheetSkeletonChanged() {
  1024. return "SheetSkeletonChanged";
  1025. }
  1026. };
  1027. hi.extend(ze);
  1028. var Ye = class extends S {
  1029. getCell() {
  1030. var c;
  1031. const e = this._injector.get(Yx), r = this._injector.get(Mt), t = this._workbook.getUnitId(), i = this._worksheet.getSheetId(), o = e.getRenderById(t), s = (c = o == null ? void 0 : o.with(me).getWorksheetSkeleton(i)) == null ? void 0 : c.skeleton;
  1032. if (!s)
  1033. throw r.error("[Facade]: `FRange.getCell` can only be called in current worksheet"), new Error("`FRange.getCell` can only be called in current worksheet");
  1034. return s.getCellWithCoordByIndex(this._range.startRow, this._range.startColumn);
  1035. }
  1036. getCellRect() {
  1037. const { startX: e, startY: r, endX: t, endY: i } = this.getCell(), o = { x: e, y: r, width: t - e, height: i - r, top: r, left: e, bottom: i, right: t };
  1038. return { ...o, toJSON: () => JSON.stringify(o) };
  1039. }
  1040. generateHTML() {
  1041. var r;
  1042. const e = this._injector.get(Sn).generateCopyContent(
  1043. this._workbook.getUnitId(),
  1044. this._worksheet.getSheetId(),
  1045. this._range
  1046. );
  1047. return (r = e == null ? void 0 : e.html) != null ? r : "";
  1048. }
  1049. attachPopup(e) {
  1050. var s, c, g;
  1051. e.direction = (s = e.direction) != null ? s : "horizontal", e.extraProps = (c = e.extraProps) != null ? c : {}, e.offset = (g = e.offset) != null ? g : [0, 0];
  1052. const { key: r, disposableCollection: t } = ge(e, this._injector.get(n1)), o = this._injector.get(vi).attachPopupToCell(
  1053. this._range.startRow,
  1054. this._range.startColumn,
  1055. { ...e, componentKey: r },
  1056. this.getUnitId(),
  1057. this._worksheet.getSheetId()
  1058. );
  1059. return o ? (t.add(o), t) : (t.dispose(), null);
  1060. }
  1061. attachAlertPopup(e) {
  1062. const r = this._injector.get(bi2), t = {
  1063. workbook: this._workbook,
  1064. worksheet: this._worksheet,
  1065. row: this._range.startRow,
  1066. col: this._range.startColumn,
  1067. unitId: this.getUnitId(),
  1068. subUnitId: this._worksheet.getSheetId()
  1069. };
  1070. return r.showAlert({
  1071. ...e,
  1072. location: t
  1073. }), {
  1074. dispose: () => {
  1075. r.removeAlert(e.key);
  1076. }
  1077. };
  1078. }
  1079. /**
  1080. * attachDOMPopup
  1081. * @param popup
  1082. * @returns {IDisposable} disposable
  1083. let sheet = univerAPI.getActiveWorkbook().getActiveSheet();
  1084. let range = sheet.getRange(2, 2, 3, 3);
  1085. univerAPI.getActiveWorkbook().setActiveRange(range);
  1086. let disposable = range.attachDOMPopup({
  1087. componentKey: 'univer.sheet.single-dom-popup',
  1088. extraProps: { alert: { type: 0, title: 'This is an Info', message: 'This is an info message' } },
  1089. });
  1090. */
  1091. attachRangePopup(e) {
  1092. var s, c, g;
  1093. e.direction = (s = e.direction) != null ? s : "horizontal", e.extraProps = (c = e.extraProps) != null ? c : {}, e.offset = (g = e.offset) != null ? g : [0, 0];
  1094. const { key: r, disposableCollection: t } = ge(e, this._injector.get(n1)), o = this._injector.get(vi).attachRangePopup(
  1095. this._range,
  1096. { ...e, componentKey: r },
  1097. this.getUnitId(),
  1098. this._worksheet.getSheetId()
  1099. );
  1100. return o ? (t.add(o), t) : (t.dispose(), null);
  1101. }
  1102. highlight(e, r) {
  1103. const t = this._injector.get(ws), i = t.addShape({ range: this._range, style: e, primary: r });
  1104. if (!i)
  1105. throw new Error("Failed to highlight current range");
  1106. return Ze(() => {
  1107. t.removeShape(i);
  1108. });
  1109. }
  1110. };
  1111. S.extend(Ye);
  1112. function ge(w, e) {
  1113. const { componentKey: r, isVue3: t } = w;
  1114. let i;
  1115. const o = new Mi();
  1116. return typeof r == "string" ? i = r : (i = `External_${qt(6)}`, o.add(e.register(i, r, { framework: t ? "vue3" : "react" }))), {
  1117. key: i,
  1118. disposableCollection: o
  1119. };
  1120. }
  1121. export {
  1122. ge as transformComponentKey
  1123. };
  1124. //# sourceMappingURL=@univerjs_sheets-ui_facade.js.map