index.js 97 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563
  1. var Pt = Object.defineProperty;
  2. var Tt = (i, e, n) => e in i ? Pt(i, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : i[e] = n;
  3. var Se = (i, e, n) => Tt(i, typeof e != "symbol" ? e + "" : e, n);
  4. import { Disposable as Xe, UndoCommand as yt, RedoCommand as bt, IUniverInstanceService as J, ICommandService as z, JSONX as q, PositionedObjectLayoutType as k, CommandType as X, BooleanNumber as re, ObjectRelativeFromH as ee, ObjectRelativeFromV as G, Tools as Pe, TextX as In, TextXActionType as Y, toDisposable as Ae, throttle as xn, COLORS as Mt, MemoryCursor as Rt, IUndoRedoService as $n, BuildTextUtils as Nt, ArrangeTypeEnum as Je, Inject as we, LocaleService as ln, DrawingTypeEnum as Et, WrapTextType as $e, FOCUSING_COMMON_DRAWINGS as tn, IContextService as zn, UniverInstanceType as Te, Direction as ue, useDependency as pe, DocumentFlavor as fn, FOCUSING_UNIVER_EDITOR as At, RxDisposable as jt, SHEET_EDITOR_UNITS as Lt, LifecycleService as Bt, DOCS_ZEN_EDITOR_UNIT_ID_KEY as Ut, fromEventSubject as Ft, LifecycleStages as Pn, DependentOn as kt, Injector as Ht, Plugin as Wt, merge as Gt, IConfigService as Vt } from "@univerjs/core";
  5. import { IDocDrawingService as je, UniverDocsDrawingPlugin as $t } from "@univerjs/docs-drawing";
  6. import { IDrawingManagerService as ve, DRAWING_IMAGE_ALLOW_IMAGE_LIST as zt, DRAWING_IMAGE_COUNT_LIMIT as Tn, ImageUploadStatusType as hn, DRAWING_IMAGE_ALLOW_SIZE as qt, getImageSize as Xt, getDrawingShapeKeyByDrawingSearch as Kt, IImageIoService as Yt, DRAWING_IMAGE_WIDTH_LIMIT as yn, DRAWING_IMAGE_HEIGHT_LIMIT as bn, UniverDrawingPlugin as Jt } from "@univerjs/drawing";
  7. import { DrawingCommonPanel as Zt, ImageCropperObject as Qt, COMPONENT_IMAGE_POPUP_MENU as ei, OpenImageCropOperation as ni, ImageResetSizeOperation as ti, UniverDrawingUIPlugin as ii } from "@univerjs/drawing-ui";
  8. import { IRenderManagerService as Q, DocumentEditArea as Ue, Liquid as qn, PageLayoutType as Mn, DocumentSkeletonPageType as Rn, Vector2 as ri, Rect as oi, getColor as si, TRANSFORM_CHANGE_OBSERVABLE_TYPE as ai } from "@univerjs/engine-render";
  9. import { IMessageService as ci, ILocalFileService as di, ISidebarService as li, MenuItemType as Xn, getMenuHiddenObservable as Kn, RibbonStartGroup as gi, KeyCode as Fe, ComponentManager as mi, IMenuManagerService as ui, IShortcutService as fi, UniverUIPlugin as hi } from "@univerjs/ui";
  10. import { RichTextEditingMutation as Z, DocSkeletonManagerService as oe, DocSelectionManagerService as _n } from "@univerjs/docs";
  11. import { DocSelectionRenderService as ye, getRichTextEditPath as ze, NodePositionConvertToCursor as Nn, getOneTextSelectionRange as En, getAnchorBounding as pi, TEXT_RANGE_LAYER_INDEX as wi, getDocObject as vi, getCustomBlockIdsInSelections as Ii, docDrawingPositionToTransform as _i, DocCanvasPopManagerService as Si, IEditorService as Ci, SetDocZoomRatioOperation as Di } from "@univerjs/docs-ui";
  12. import { BehaviorSubject as Oi, debounceTime as Yn, Observable as xi, takeUntil as An, filter as jn } from "rxjs";
  13. import { MessageType as Ln, InputNumber as Be, Select as Bn, Checkbox as Pi, RadioGroup as Un, Radio as xe } from "@univerjs/design";
  14. import Ti, { forwardRef as Jn, useRef as yi, createElement as Zn, useState as ie, useEffect as Sn } from "react";
  15. const bi = "docs-drawing-ui.config", Fn = {};
  16. var Mi = Object.defineProperty, Ri = Object.getOwnPropertyDescriptor, Ni = (i, e, n, t) => {
  17. for (var r = t > 1 ? void 0 : t ? Ri(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  18. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  19. return t && r && Mi(e, n, r), r;
  20. }, We = (i, e) => (n, t) => e(n, t, i);
  21. function Ei(i) {
  22. var t, r, o, s;
  23. if (q.isNoop(i) || !Array.isArray(i))
  24. return null;
  25. const e = i.find((a) => Array.isArray(a) && (a == null ? void 0 : a[0]) === "drawings");
  26. if (e == null || !Array.isArray(e) || e.length < 3 || typeof e[1] == "string" && typeof e[2] != "object" || Array.isArray(e[1]) && typeof e[1][1] != "object")
  27. return null;
  28. const n = [];
  29. if (Array.isArray(e == null ? void 0 : e[1]))
  30. for (const a of e)
  31. Array.isArray(a) && n.push({
  32. type: (t = a == null ? void 0 : a[1]) != null && t.i ? "add" : "remove",
  33. drawingId: a == null ? void 0 : a[0],
  34. drawing: (r = a == null ? void 0 : a[1]) == null ? void 0 : r.i
  35. });
  36. else
  37. n.push({
  38. type: (o = e[2]) != null && o.i ? "add" : "remove",
  39. drawingId: e[1],
  40. drawing: (s = e[2]) == null ? void 0 : s.i
  41. });
  42. return n;
  43. }
  44. function Ai(i) {
  45. if (!Array.isArray(i) || i.length < 3 || i[0] !== "drawingsOrder")
  46. return [];
  47. const e = [];
  48. for (let n = 1; n < i.length; n++) {
  49. const t = i[n];
  50. if (Array.isArray(t) && typeof t[0] == "number" && typeof t[1] == "object")
  51. e.push(t[0]);
  52. else {
  53. e.length = 0;
  54. break;
  55. }
  56. }
  57. return e;
  58. }
  59. let rn = class extends Xe {
  60. constructor(i, e, n, t, r) {
  61. super(), this._univerInstanceService = i, this._commandService = e, this._drawingManagerService = n, this._docDrawingService = t, this._renderManagerService = r, this._initialize();
  62. }
  63. _initialize() {
  64. this._commandExecutedListener();
  65. }
  66. _commandExecutedListener() {
  67. this.disposeWithMe(
  68. this._commandService.beforeCommandExecuted((i) => {
  69. if (i.id !== Z.id)
  70. return;
  71. const e = i.params, { unitId: n, actions: t } = e, r = Ei(t);
  72. if (r != null)
  73. for (const { type: o, drawingId: s, drawing: a } of r)
  74. o === "add" ? this._addDrawings(n, [a]) : this._removeDrawings(n, [s]);
  75. })
  76. ), this.disposeWithMe(
  77. this._commandService.onCommandExecuted((i) => {
  78. if (i.id !== Z.id)
  79. return;
  80. const e = i.params, { unitId: n, actions: t } = e;
  81. Ai(t).length > 0 && this._updateDrawingsOrder(n);
  82. })
  83. ), this.disposeWithMe(
  84. this._commandService.onCommandExecuted((i) => {
  85. var s;
  86. if (i.id !== yt.id && i.id !== bt.id)
  87. return;
  88. const e = (s = this._univerInstanceService.getCurrentUniverDocInstance()) == null ? void 0 : s.getUnitId(), n = this._drawingManagerService.getFocusDrawings();
  89. if (e == null || n.length === 0)
  90. return;
  91. const t = this._renderManagerService.getRenderById(e), r = t == null ? void 0 : t.scene;
  92. if (r == null)
  93. return !1;
  94. r.getTransformerByCreate().refreshControls();
  95. })
  96. );
  97. }
  98. _addDrawings(i, e) {
  99. const n = this._drawingManagerService, t = this._docDrawingService, r = this._docDrawingService.getBatchAddOp(e), { subUnitId: o, redo: s, objects: a } = r;
  100. n.applyJson1(i, o, s), t.applyJson1(i, o, s), n.addNotification(a), t.addNotification(a);
  101. }
  102. _removeDrawings(i, e) {
  103. const n = this._drawingManagerService, t = this._docDrawingService, r = this._docDrawingService.getBatchRemoveOp(e.map((d) => ({
  104. unitId: i,
  105. subUnitId: i,
  106. drawingId: d
  107. }))), { subUnitId: o, redo: s, objects: a } = r;
  108. n.applyJson1(i, o, s), t.applyJson1(i, o, s), n.removeNotification(a), t.removeNotification(a);
  109. }
  110. _updateDrawingsOrder(i) {
  111. const e = this._univerInstanceService.getUniverDocInstance(i);
  112. if (e == null)
  113. return;
  114. const n = e.getSnapshot().drawingsOrder;
  115. if (n == null)
  116. return;
  117. const t = this._drawingManagerService, r = this._docDrawingService;
  118. t.setDrawingOrder(i, i, n), r.setDrawingOrder(i, i, n);
  119. const o = {
  120. unitId: i,
  121. subUnitId: i,
  122. drawingIds: n
  123. };
  124. t.orderNotification(o), r.orderNotification(o);
  125. }
  126. };
  127. rn = Ni([
  128. We(0, J),
  129. We(1, z),
  130. We(2, ve),
  131. We(3, je),
  132. We(4, Q)
  133. ], rn);
  134. class gn {
  135. constructor() {
  136. Se(this, "_refreshDrawings$", new Oi(null));
  137. Se(this, "refreshDrawings$", this._refreshDrawings$.asObservable());
  138. }
  139. refreshDrawings(e) {
  140. this._refreshDrawings$.next(e);
  141. }
  142. }
  143. var me = /* @__PURE__ */ ((i) => (i.INLINE = "inline", i.BEHIND_TEXT = "behindText", i.IN_FRONT_OF_TEXT = "inFrontOfText", i.WRAP_SQUARE = "wrapSquare", i.WRAP_TOP_AND_BOTTOM = "wrapTopAndBottom", i))(me || {});
  144. const ji = {
  145. inline: k.INLINE,
  146. wrapSquare: k.WRAP_SQUARE,
  147. wrapTopAndBottom: k.WRAP_TOP_AND_BOTTOM,
  148. inFrontOfText: k.WRAP_NONE,
  149. behindText: k.WRAP_NONE
  150. };
  151. function Qn(i, e, n, t, r, o, s) {
  152. var p, h;
  153. const a = new In(), d = q.getInstance(), c = [], l = o.getSelfOrHeaderFooterModel(e).getBody(), u = o.getSelfOrHeaderFooterModel(i).getBody();
  154. if (l == null || u == null)
  155. return;
  156. const m = (h = (p = l.customBlocks) == null ? void 0 : p.find((v) => v.blockId === r)) == null ? void 0 : h.startIndex;
  157. if (m != null) {
  158. if (t = Math.min(u.dataStream.length - 2, t), i === e) {
  159. if (t < m ? (t > 0 && a.push({
  160. t: Y.RETAIN,
  161. len: t
  162. }), a.push({
  163. t: Y.INSERT,
  164. body: {
  165. dataStream: "\b",
  166. customBlocks: [{
  167. startIndex: 0,
  168. blockId: r
  169. }]
  170. },
  171. len: 1
  172. }), a.push({
  173. t: Y.RETAIN,
  174. len: m - t
  175. }), a.push({
  176. t: Y.DELETE,
  177. len: 1
  178. })) : (m > 0 && a.push({
  179. t: Y.RETAIN,
  180. len: m
  181. }), a.push({
  182. t: Y.DELETE,
  183. len: 1
  184. }), t - m - 1 > 0 && a.push({
  185. t: Y.RETAIN,
  186. len: t - m - 1
  187. }), a.push({
  188. t: Y.INSERT,
  189. body: {
  190. dataStream: "\b",
  191. customBlocks: [{
  192. startIndex: 0,
  193. blockId: r
  194. }]
  195. },
  196. len: 1
  197. })), t !== m) {
  198. const v = ze(o, e), w = d.editOp(a.serialize(), v);
  199. c.push(w);
  200. }
  201. } else {
  202. m > 0 && a.push({
  203. t: Y.RETAIN,
  204. len: m
  205. }), a.push({
  206. t: Y.DELETE,
  207. len: 1
  208. });
  209. let v = ze(o, e), w = d.editOp(a.serialize(), v);
  210. c.push(w), a.empty(), t > 0 && a.push({
  211. t: Y.RETAIN,
  212. len: t
  213. }), a.push({
  214. t: Y.INSERT,
  215. body: {
  216. dataStream: "\b",
  217. customBlocks: [{
  218. startIndex: 0,
  219. blockId: r
  220. }]
  221. },
  222. len: 1
  223. }), v = ze(o, i), w = d.editOp(a.serialize(), v), c.push(w), s.setSegment(i), s.setSegmentPage(n);
  224. }
  225. return c;
  226. }
  227. }
  228. const et = {
  229. id: "doc.command.update-doc-drawing-wrapping-style",
  230. type: X.COMMAND,
  231. // eslint-disable-next-line max-lines-per-function, complexity
  232. handler: (i, e) => {
  233. var N, B;
  234. if (e == null)
  235. return !1;
  236. const { drawings: n, wrappingStyle: t, unitId: r } = e, o = i.get(z), s = i.get(J), d = i.get(Q).getRenderById(r), c = d == null ? void 0 : d.with(oe).getSkeleton().getSkeletonData(), l = d == null ? void 0 : d.with(oe).getViewModel(), u = d == null ? void 0 : d.scene, m = s.getCurrentUniverDocInstance();
  237. if (m == null || c == null || u == null || l == null)
  238. return !1;
  239. const p = l.getEditArea(), h = u.getTransformerByCreate(), { pages: v, skeHeaders: w, skeFooters: S } = c, O = q.getInstance(), D = [], { drawings: x = {} } = m.getSnapshot();
  240. for (const R of n) {
  241. const { drawingId: I } = R, j = x[I].layoutType, H = ji[t];
  242. if (j !== H) {
  243. const C = O.replaceOp(["drawings", I, "layoutType"], j, H);
  244. D.push(C);
  245. }
  246. if (t === "behindText" || t === "inFrontOfText") {
  247. const C = x[I].behindDoc, M = t === "behindText" ? re.TRUE : re.FALSE;
  248. if (C !== M) {
  249. const P = O.replaceOp(["drawings", I, "behindDoc"], C, M);
  250. D.push(P);
  251. }
  252. }
  253. if (t === "inline")
  254. continue;
  255. let A = null, W = 0, _ = 0;
  256. for (const C of v) {
  257. const { headerId: M, footerId: P, marginTop: L, marginLeft: U, marginBottom: y, pageWidth: E, pageHeight: $ } = C;
  258. switch (p) {
  259. case Ue.HEADER: {
  260. const F = (N = w.get(M)) == null ? void 0 : N.get(E);
  261. F != null && F.skeDrawings.has(I) && (A = F.skeDrawings.get(I), W = F.marginTop, _ = U);
  262. break;
  263. }
  264. case Ue.FOOTER: {
  265. const F = (B = S.get(P)) == null ? void 0 : B.get(E);
  266. F != null && F.skeDrawings.has(I) && (A = F.skeDrawings.get(I), W = $ - y + F.marginTop, _ = U);
  267. break;
  268. }
  269. case Ue.BODY: {
  270. C.skeDrawings.has(I) && (A = C.skeDrawings.get(I), W = L, _ = U);
  271. break;
  272. }
  273. }
  274. if (A != null)
  275. break;
  276. }
  277. if (A != null) {
  278. const { aTop: C, aLeft: M } = A, P = x[I].docTransform.positionH;
  279. let L = M;
  280. P.relativeFrom === ee.MARGIN ? L -= _ : P.relativeFrom === ee.COLUMN && (L -= A.columnLeft);
  281. const U = {
  282. relativeFrom: P.relativeFrom,
  283. posOffset: L
  284. };
  285. if (P.posOffset !== U.posOffset) {
  286. const F = O.replaceOp(["drawings", I, "docTransform", "positionH"], P, U);
  287. D.push(F);
  288. }
  289. const y = x[I].docTransform.positionV;
  290. let E = C;
  291. y.relativeFrom === G.PAGE ? E += W : y.relativeFrom === G.LINE ? E -= A.lineTop : y.relativeFrom === G.PARAGRAPH && (E -= A.blockAnchorTop);
  292. const $ = {
  293. relativeFrom: y.relativeFrom,
  294. posOffset: E
  295. };
  296. if (y.posOffset !== $.posOffset) {
  297. const F = O.replaceOp(["drawings", I, "docTransform", "positionV"], y, $);
  298. D.push(F);
  299. }
  300. }
  301. }
  302. const b = {
  303. id: Z.id,
  304. params: {
  305. unitId: r,
  306. actions: [],
  307. textRanges: null
  308. }
  309. };
  310. b.params.actions = D.reduce((R, I) => q.compose(R, I), null);
  311. const T = o.syncExecuteCommand(b.id, b.params);
  312. return h.refreshControls(), !!T;
  313. }
  314. }, nt = {
  315. id: "doc.command.update-doc-drawing-distance",
  316. type: X.COMMAND,
  317. handler: (i, e) => {
  318. if (e == null)
  319. return !1;
  320. const n = i.get(z), r = i.get(J).getCurrentUniverDocInstance();
  321. if (r == null)
  322. return !1;
  323. const { drawings: o, dist: s, unitId: a } = e, d = q.getInstance(), c = [], { drawings: l = {} } = r.getSnapshot();
  324. for (const p of o) {
  325. const { drawingId: h } = p;
  326. for (const [v, w] of Object.entries(s)) {
  327. const S = l[h][v];
  328. if (S !== w) {
  329. const O = d.replaceOp(["drawings", h, v], S, w);
  330. c.push(O);
  331. }
  332. }
  333. }
  334. const u = {
  335. id: Z.id,
  336. params: {
  337. unitId: a,
  338. actions: [],
  339. textRanges: null
  340. }
  341. };
  342. return u.params.actions = c.reduce((p, h) => q.compose(p, h), null), !!n.syncExecuteCommand(u.id, u.params);
  343. }
  344. }, tt = {
  345. id: "doc.command.update-doc-drawing-wrap-text",
  346. type: X.COMMAND,
  347. handler: (i, e) => {
  348. if (e == null)
  349. return !1;
  350. const n = i.get(z), r = i.get(J).getCurrentUniverDocInstance();
  351. if (r == null)
  352. return !1;
  353. const { drawings: o, wrapText: s, unitId: a } = e, d = q.getInstance(), c = [], { drawings: l = {} } = r.getSnapshot();
  354. for (const p of o) {
  355. const { drawingId: h } = p, v = l[h].wrapText;
  356. if (v !== s) {
  357. const w = d.replaceOp(["drawings", h, "wrapText"], v, s);
  358. c.push(w);
  359. }
  360. }
  361. const u = {
  362. id: Z.id,
  363. params: {
  364. unitId: a,
  365. actions: [],
  366. textRanges: null
  367. }
  368. };
  369. return u.params.actions = c.reduce((p, h) => q.compose(p, h), null), !!n.syncExecuteCommand(u.id, u.params);
  370. }
  371. }, qe = {
  372. id: "doc.command.update-drawing-doc-transform",
  373. type: X.COMMAND,
  374. handler: (i, e) => {
  375. if (e == null)
  376. return !1;
  377. const n = i.get(z), t = i.get(J), o = i.get(Q).getRenderById(e.unitId), s = o == null ? void 0 : o.scene;
  378. if (s == null)
  379. return !1;
  380. const a = s.getTransformerByCreate(), d = t.getCurrentUniverDocInstance();
  381. if (d == null)
  382. return !1;
  383. const { drawings: c, unitId: l } = e, u = q.getInstance(), m = [], { drawings: p = {} } = d.getSnapshot();
  384. for (const w of c) {
  385. const { drawingId: S, key: O, value: D } = w, x = p[S].docTransform[O];
  386. if (!Pe.diffValue(x, D)) {
  387. const b = u.replaceOp(["drawings", S, "docTransform", O], x, D);
  388. m.push(b);
  389. }
  390. }
  391. const h = {
  392. id: Z.id,
  393. params: {
  394. unitId: l,
  395. actions: [],
  396. textRanges: null,
  397. debounce: !0
  398. }
  399. };
  400. h.params.actions = m.reduce((w, S) => q.compose(w, S), null);
  401. const v = n.syncExecuteCommand(h.id, h.params);
  402. return a.refreshControls(), !!v;
  403. }
  404. }, it = {
  405. id: "doc.command.move-inline-drawing",
  406. type: X.COMMAND,
  407. handler: (i, e) => {
  408. var B, R;
  409. if (e == null)
  410. return !1;
  411. const n = i.get(Q), t = (B = n.getRenderById(e.unitId)) == null ? void 0 : B.with(ye), r = i.get(gn), o = n.getRenderById(e.unitId), s = o == null ? void 0 : o.scene, a = o == null ? void 0 : o.with(oe).getSkeleton();
  412. if (s == null || t == null)
  413. return !1;
  414. const d = s.getTransformerByCreate(), c = i.get(z), u = i.get(J).getCurrentUniverDocInstance();
  415. if (u == null)
  416. return !1;
  417. const { drawing: m, unitId: p, offset: h, segmentId: v, segmentPage: w, needRefreshDrawings: S } = e;
  418. if (S)
  419. return r.refreshDrawings(a), d.refreshControls(), !0;
  420. const O = [], { drawingId: D } = m, x = (R = t.getSegment()) != null ? R : "", b = Qn(
  421. v,
  422. x,
  423. w,
  424. h,
  425. D,
  426. u,
  427. t
  428. );
  429. if (b == null || b.length === 0)
  430. return r.refreshDrawings(a), d.refreshControls(), !1;
  431. O.push(...b);
  432. const T = {
  433. id: Z.id,
  434. params: {
  435. unitId: p,
  436. actions: [],
  437. textRanges: null
  438. }
  439. };
  440. T.params.actions = O.reduce((I, j) => q.compose(I, j), null);
  441. const N = c.syncExecuteCommand(T.id, T.params);
  442. return d.refreshControls(), !!N;
  443. }
  444. }, rt = {
  445. id: "doc.command.transform-non-inline-drawing",
  446. type: X.COMMAND,
  447. // eslint-disable-next-line max-lines-per-function
  448. handler: (i, e) => {
  449. var A, W;
  450. if (e == null)
  451. return !1;
  452. const n = i.get(Q), t = (A = n.getRenderById(e.unitId)) == null ? void 0 : A.with(ye), r = n.getRenderById(e.unitId), o = r == null ? void 0 : r.scene;
  453. if (o == null || t == null)
  454. return !1;
  455. const s = o.getTransformerByCreate(), a = i.get(z), c = i.get(J).getCurrentUniverDocInstance();
  456. if (c == null)
  457. return !1;
  458. const { drawing: l, unitId: u, offset: m, docTransform: p, segmentId: h, segmentPage: v } = e, w = [], { drawingId: S } = l, O = (W = t.getSegment()) != null ? W : "", D = Qn(
  459. h,
  460. O,
  461. v,
  462. m,
  463. S,
  464. c,
  465. t
  466. );
  467. if (D == null)
  468. return !1;
  469. D.length > 0 && w.push(...D);
  470. const x = q.getInstance(), { drawings: b = {} } = c.getSnapshot(), T = b[S].docTransform, { positionH: N, positionV: B, size: R, angle: I } = T;
  471. if (!Pe.diffValue(N, p.positionH)) {
  472. const _ = x.replaceOp(["drawings", S, "docTransform", "positionH"], N, p.positionH);
  473. w.push(_);
  474. }
  475. if (!Pe.diffValue(B, p.positionV)) {
  476. const _ = x.replaceOp(["drawings", S, "docTransform", "positionV"], B, p.positionV);
  477. w.push(_);
  478. }
  479. if (!Pe.diffValue(R, p.size)) {
  480. const _ = x.replaceOp(["drawings", S, "docTransform", "size"], R, p.size);
  481. w.push(_);
  482. }
  483. if (!Pe.diffValue(I, p.angle)) {
  484. const _ = x.replaceOp(["drawings", S, "docTransform", "angle"], I, p.angle);
  485. w.push(_);
  486. }
  487. const j = {
  488. id: Z.id,
  489. params: {
  490. unitId: u,
  491. actions: [],
  492. textRanges: null,
  493. debounce: !0
  494. }
  495. };
  496. j.params.actions = w.reduce((_, C) => q.compose(_, C), null);
  497. const H = a.syncExecuteCommand(j.id, j.params);
  498. return s.refreshControls(), !!H;
  499. }
  500. };
  501. var Li = Object.defineProperty, Bi = Object.getOwnPropertyDescriptor, Ui = (i, e, n, t) => {
  502. for (var r = t > 1 ? void 0 : t ? Bi(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  503. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  504. return t && r && Li(e, n, r), r;
  505. }, Ze = (i, e) => (n, t) => e(n, t, i);
  506. const Fi = "__InlineDrawingAnchor__";
  507. function kn(i) {
  508. const { path: e } = i;
  509. return e.some((n) => n === "cells");
  510. }
  511. let on = class extends Xe {
  512. constructor(e, n, t, r) {
  513. super();
  514. Se(this, "_liquid", new qn());
  515. Se(this, "_listenerOnImageMap", /* @__PURE__ */ new Set());
  516. // Use to cache the drawings is under transforming or scaling.
  517. Se(this, "_transformerCache", /* @__PURE__ */ new Map());
  518. Se(this, "_anchorShape");
  519. this._commandService = e, this._univerInstanceService = n, this._drawingManagerService = t, this._renderManagerService = r, this._init();
  520. }
  521. _init() {
  522. this._listenDrawingFocus();
  523. }
  524. _listenDrawingFocus() {
  525. this.disposeWithMe(
  526. this._drawingManagerService.add$.subscribe((e) => {
  527. if (e.length !== 0)
  528. for (const n of e) {
  529. const { unitId: t } = n;
  530. this._listenerOnImageMap.has(t) || (this._listenTransformerChange(t), this._listenerOnImageMap.add(t));
  531. }
  532. })
  533. );
  534. }
  535. // Only handle one drawing transformer change.
  536. // eslint-disable-next-line max-lines-per-function
  537. _listenTransformerChange(e) {
  538. var r;
  539. const n = (r = this._getSceneAndTransformerByDrawingSearch(e)) == null ? void 0 : r.transformer;
  540. if (n == null)
  541. return;
  542. this.disposeWithMe(
  543. Ae(
  544. n.changeStart$.subscribe((o) => {
  545. var a;
  546. this._transformerCache.clear();
  547. const { objects: s } = o;
  548. for (const d of s.values()) {
  549. const { oKey: c, width: l, height: u, left: m, top: p, angle: h } = d, v = this._drawingManagerService.getDrawingOKey(c);
  550. if (v == null)
  551. continue;
  552. const w = this._univerInstanceService.getUniverDocInstance(v.unitId), S = (a = w == null ? void 0 : w.getSnapshot().drawings) == null ? void 0 : a[v.drawingId];
  553. (S == null ? void 0 : S.layoutType) === k.INLINE && d.setOpacity(0.2), S != null && this._transformerCache.set(v.drawingId, {
  554. drawing: S,
  555. top: p,
  556. left: m,
  557. width: l,
  558. height: u,
  559. angle: h
  560. });
  561. }
  562. })
  563. )
  564. );
  565. const t = xn(this._updateMultipleDrawingDocTransform.bind(this), 50);
  566. xn(this._nonInlineDrawingTransform.bind(this), 50), this.disposeWithMe(
  567. Ae(
  568. n.changing$.subscribe((o) => {
  569. const { objects: s, offsetX: a, offsetY: d } = o;
  570. if (s.size > 1)
  571. t(s);
  572. else if (s.size === 1) {
  573. const c = this._transformerCache.values().next().value, l = s.values().next().value, { width: u, height: m, top: p, left: h, angle: v } = l;
  574. if (c && u === c.width && m === c.height && p === c.top && h === c.left && v === c.angle)
  575. return;
  576. c && (c.drawing.layoutType, k.INLINE), c && c.drawing.layoutType === k.INLINE && a != null && d != null && this._updateInlineDrawingAnchor(c.drawing, a, d);
  577. }
  578. })
  579. )
  580. ), this.disposeWithMe(
  581. Ae(
  582. // eslint-disable-next-line complexity
  583. n.changeEnd$.subscribe((o) => {
  584. const { objects: s, offsetX: a, offsetY: d } = o;
  585. for (const c of s.values()) {
  586. const l = this._drawingManagerService.getDrawingOKey(c.oKey);
  587. if (l == null)
  588. continue;
  589. const u = this._transformerCache.get(l == null ? void 0 : l.drawingId);
  590. (u == null ? void 0 : u.drawing.layoutType) === k.INLINE && c.setOpacity(1);
  591. }
  592. if (this._anchorShape && this._anchorShape.hide(), s.size > 1)
  593. this._updateMultipleDrawingDocTransform(s);
  594. else if (s.size === 1) {
  595. const c = this._transformerCache.values().next().value, l = s.values().next().value, { width: u, height: m, top: p, left: h, angle: v } = l;
  596. if (c && u === c.width && m === c.height && p === c.top && h === c.left && v === c.angle)
  597. return;
  598. c && c.drawing.layoutType === k.INLINE ? u !== c.width || m !== c.height || v !== c.angle ? this._updateDrawingSize(c, l) : a != null && d != null && this._moveInlineDrawing(c.drawing, a, d) : c && this._nonInlineDrawingTransform(c.drawing, l);
  599. }
  600. this._transformerCache.clear();
  601. })
  602. )
  603. );
  604. }
  605. // eslint-disable-next-line max-lines-per-function
  606. _updateMultipleDrawingDocTransform(e) {
  607. if (e.size < 1)
  608. return;
  609. const n = [];
  610. let t, r;
  611. for (const o of e.values()) {
  612. const { oKey: s, left: a, top: d, angle: c } = o;
  613. let { width: l, height: u } = o;
  614. const m = this._drawingManagerService.getDrawingOKey(s);
  615. if (m == null)
  616. continue;
  617. t == null && (t = m.unitId), r == null && (r = m.subUnitId);
  618. const p = this._transformerCache.get(m.drawingId);
  619. if (p == null)
  620. continue;
  621. const { drawing: h, top: v, left: w, width: S, height: O, angle: D } = p, { width: x, height: b } = this._getPageContentSize(h);
  622. if (l = Math.min(l, x), u = Math.min(u, b), (S !== l || O !== u) && n.push({
  623. drawingId: m.drawingId,
  624. key: "size",
  625. value: {
  626. width: l,
  627. height: u
  628. }
  629. }), D !== c && n.push({
  630. drawingId: m.drawingId,
  631. key: "angle",
  632. value: c
  633. }), v !== d || w !== a) {
  634. const T = d - v, N = a - w;
  635. T !== 0 && n.push({
  636. drawingId: m.drawingId,
  637. key: "positionV",
  638. value: {
  639. relativeFrom: h.docTransform.positionV.relativeFrom,
  640. posOffset: h.docTransform.positionV.posOffset + T
  641. }
  642. }), N !== 0 && n.push({
  643. drawingId: m.drawingId,
  644. key: "positionH",
  645. value: {
  646. relativeFrom: h.docTransform.positionH.relativeFrom,
  647. posOffset: h.docTransform.positionH.posOffset + N
  648. }
  649. });
  650. }
  651. }
  652. n.length > 0 && t && r && this._commandService.executeCommand(qe.id, {
  653. unitId: t,
  654. subUnitId: r,
  655. drawings: n
  656. });
  657. }
  658. // TODO: @JOCS, Use to draw and update the drawing anchor.
  659. _updateDrawingAnchor(e) {
  660. if (this._transformerCache.size !== 1)
  661. return;
  662. const n = this._transformerCache.values().next().value, t = e.values().next().value;
  663. this._getDrawingAnchor(n.drawing, t);
  664. }
  665. _updateInlineDrawingAnchor(e, n, t) {
  666. var o;
  667. if (this._transformerCache.size !== 1)
  668. return;
  669. const { contentBoxPointGroup: r } = (o = this._getInlineDrawingAnchor(e, n, t)) != null ? o : {};
  670. r != null && this._createOrUpdateInlineAnchor(e.unitId, r);
  671. }
  672. _getInlineDrawingAnchor(e, n, t) {
  673. var A, W;
  674. const r = this._renderManagerService.getRenderById(e.unitId), o = r == null ? void 0 : r.with(oe).getSkeleton();
  675. if (r == null)
  676. return;
  677. const { mainComponent: s, scene: a } = r, d = s, c = a.getViewports()[0], {
  678. pageLayoutType: l = Mn.VERTICAL,
  679. pageMarginLeft: u,
  680. pageMarginTop: m
  681. } = d.getOffsetConfig();
  682. let p = null, h = !1, v = -1, w = "";
  683. const S = 0.5, O = this._getTransformCoordForDocumentOffset(d, c, n, t);
  684. if (O == null)
  685. return;
  686. const D = (A = this._renderManagerService.getRenderById(e.unitId)) == null ? void 0 : A.with(ye);
  687. if (D == null)
  688. return;
  689. const x = o == null ? void 0 : o.findNodeByCoord(
  690. O,
  691. l,
  692. u,
  693. m,
  694. {
  695. strict: !1,
  696. segmentId: D.getSegment(),
  697. segmentPage: D.getSegmentPage()
  698. }
  699. );
  700. if (x) {
  701. const { node: _, ratioX: C, segmentPage: M, segmentId: P } = x;
  702. h = C < S, p = _, v = M, w = P;
  703. }
  704. if (p == null)
  705. return;
  706. const b = o == null ? void 0 : o.findPositionByGlyph(p, v), T = this._getDocObject();
  707. if (b == null || o == null || T == null || kn(b))
  708. return;
  709. const N = {
  710. ...b,
  711. isBack: h
  712. }, B = T.document.getOffsetConfig(), R = new Nn(B, o), { cursorList: I, contentBoxPointGroup: j } = R.getRangePointData(N, N), { startOffset: H } = (W = En(I)) != null ? W : {};
  713. if (H != null)
  714. return { offset: H, contentBoxPointGroup: j, segmentId: w, segmentPage: v };
  715. }
  716. // eslint-disable-next-line max-lines-per-function, complexity
  717. _getDrawingAnchor(e, n) {
  718. var Ie, _e, ce, Ce, De, Me, Re, Oe, de, le, Ne;
  719. const t = this._renderManagerService.getRenderById(e.unitId), r = t == null ? void 0 : t.with(oe).getSkeleton(), o = r == null ? void 0 : r.getSkeletonData();
  720. if (o == null || t == null)
  721. return;
  722. const { pages: s, skeHeaders: a, skeFooters: d } = o, { mainComponent: c, scene: l } = t, u = c, m = l.getViewports()[0], { pageLayoutType: p = Mn.VERTICAL, pageMarginLeft: h, pageMarginTop: v, docsLeft: w, docsTop: S } = u.getOffsetConfig(), { left: O, top: D, angle: x } = n;
  723. let { width: b, height: T } = n;
  724. const { positionV: N, positionH: B } = e.docTransform, { width: R, height: I } = this._getPageContentSize(e);
  725. b = Math.min(b, R), T = Math.min(T, I);
  726. let j = null, H = "", A = -1;
  727. const W = !1, _ = {
  728. ...e.docTransform,
  729. size: {
  730. width: b,
  731. height: T
  732. },
  733. angle: x
  734. }, { x: C, y: M } = l.getViewportScrollXY(m), P = this._getTransformCoordForDocumentOffset(u, m, O - C, D - M);
  735. if (P == null)
  736. return;
  737. const L = (Ie = this._renderManagerService.getRenderById(e.unitId)) == null ? void 0 : Ie.with(ye);
  738. if (L == null)
  739. return;
  740. const U = r == null ? void 0 : r.findNodeByCoord(P, p, h, v, {
  741. strict: !1,
  742. segmentId: L.getSegment(),
  743. segmentPage: L.getSegmentPage()
  744. });
  745. if (U) {
  746. const { node: he, segmentPage: mn, segmentId: un } = U;
  747. j = he, A = mn, H = un;
  748. }
  749. if (j == null)
  750. return;
  751. const y = (_e = j.parent) == null ? void 0 : _e.parent, E = y == null ? void 0 : y.parent, $ = (ce = E == null ? void 0 : E.lines.find((he) => he.paragraphIndex === (y == null ? void 0 : y.paragraphIndex) && he.paragraphStart)) != null ? ce : E == null ? void 0 : E.lines[0], F = (Ce = E == null ? void 0 : E.parent) == null ? void 0 : Ce.parent;
  752. if (y == null || E == null || $ == null || F == null)
  753. return;
  754. this._liquid.reset();
  755. const K = F.type;
  756. for (const he of s) {
  757. const { headerId: mn, footerId: un, pageHeight: Dt, pageWidth: Dn, marginLeft: On, marginBottom: Ot } = he, xt = s.indexOf(he);
  758. if (A > -1 && xt === A) {
  759. switch (K) {
  760. case Rn.HEADER: {
  761. const He = (De = a.get(mn)) == null ? void 0 : De.get(Dn);
  762. if (He)
  763. this._liquid.translatePagePadding({
  764. marginTop: He.marginTop,
  765. marginLeft: On
  766. });
  767. else
  768. throw new Error("header skeleton not found");
  769. break;
  770. }
  771. case Rn.FOOTER: {
  772. const He = (Me = d.get(un)) == null ? void 0 : Me.get(Dn);
  773. if (He)
  774. this._liquid.translatePagePadding({
  775. marginTop: Dt - Ot + He.marginTop,
  776. marginLeft: On
  777. });
  778. else
  779. throw new Error("footer skeleton not found");
  780. break;
  781. }
  782. }
  783. break;
  784. }
  785. if (this._liquid.translatePagePadding(he), he === F)
  786. break;
  787. this._liquid.restorePagePadding(he), this._liquid.translatePage(he, p, h, v);
  788. }
  789. switch (N.relativeFrom === G.LINE ? j = y.divides[0].glyphGroup[0] : j = (le = (de = (Oe = (Re = $.divides) == null ? void 0 : Re[0]) == null ? void 0 : Oe.glyphGroup) == null ? void 0 : de[0]) != null ? le : j, _.positionH = {
  790. relativeFrom: B.relativeFrom,
  791. posOffset: O - this._liquid.x - w
  792. }, B.relativeFrom) {
  793. case ee.MARGIN: {
  794. _.positionH.posOffset = O - this._liquid.x - w - F.marginLeft;
  795. break;
  796. }
  797. case ee.COLUMN: {
  798. _.positionH.posOffset = O - this._liquid.x - w - E.left;
  799. break;
  800. }
  801. }
  802. switch (_.positionV = {
  803. relativeFrom: N.relativeFrom,
  804. posOffset: D - this._liquid.y - S
  805. }, N.relativeFrom) {
  806. case G.PAGE: {
  807. _.positionV.posOffset = D - this._liquid.y - S - F.marginTop;
  808. break;
  809. }
  810. case G.LINE: {
  811. _.positionV.posOffset = D - this._liquid.y - S - y.top;
  812. break;
  813. }
  814. case G.PARAGRAPH: {
  815. _.positionV.posOffset = D - this._liquid.y - S - $.top;
  816. break;
  817. }
  818. }
  819. if (j == null)
  820. return;
  821. const se = r == null ? void 0 : r.findPositionByGlyph(j, A), Le = this._getDocObject();
  822. if (se == null || r == null || Le == null || kn(se))
  823. return;
  824. const be = {
  825. ...se,
  826. isBack: W
  827. }, ke = Le.document.getOffsetConfig(), ae = new Nn(ke, r), { cursorList: ne } = ae.getRangePointData(be, be), { startOffset: te } = (Ne = En(ne)) != null ? Ne : {};
  828. if (te != null)
  829. return { offset: te, docTransform: _, segmentId: H, segmentPage: A };
  830. }
  831. // Update drawing when use transformer to resize it.
  832. _updateDrawingSize(e, n) {
  833. const t = [], { drawing: r, width: o, height: s, angle: a } = e, { unitId: d, subUnitId: c } = r;
  834. let { width: l, height: u, angle: m } = n;
  835. const { width: p, height: h } = this._getPageContentSize(r);
  836. l = Math.min(p, l), u = Math.min(h, u), (l !== o || u !== s) && t.push({
  837. drawingId: r.drawingId,
  838. key: "size",
  839. value: {
  840. width: l,
  841. height: u
  842. }
  843. }), m !== a && t.push({
  844. drawingId: r.drawingId,
  845. key: "angle",
  846. value: m
  847. }), t.length > 0 && d && c && this._commandService.executeCommand(qe.id, {
  848. unitId: d,
  849. subUnitId: c,
  850. drawings: t
  851. });
  852. }
  853. // Update inline drawing when use transformer to move it.
  854. _moveInlineDrawing(e, n, t) {
  855. const r = this._getInlineDrawingAnchor(e, n, t), { offset: o, segmentId: s, segmentPage: a } = r != null ? r : {};
  856. return this._commandService.executeCommand(it.id, {
  857. unitId: e.unitId,
  858. subUnitId: e.unitId,
  859. drawing: e,
  860. offset: o,
  861. segmentId: s,
  862. segmentPage: a,
  863. needRefreshDrawings: o == null
  864. });
  865. }
  866. // Limit the drawing to the page area, mainly in the vertical direction,
  867. // and the upper and lower limits cannot exceed the page margin area.
  868. _limitDrawingInPage(e, n) {
  869. const t = this._renderManagerService.getRenderById(e.unitId), { left: r, top: o, width: s, height: a, angle: d } = n, c = t == null ? void 0 : t.with(oe).getSkeleton(), l = c == null ? void 0 : c.getSkeletonData(), { pages: u } = l != null ? l : {};
  870. if (l == null || t == null || u == null)
  871. return {
  872. left: r,
  873. top: o,
  874. width: s,
  875. height: a,
  876. angle: d
  877. };
  878. const { mainComponent: m } = t, p = m, { top: h, pageLayoutType: v, pageMarginLeft: w, pageMarginTop: S } = p;
  879. let O = o;
  880. this._liquid.reset();
  881. for (const D of u) {
  882. const { marginBottom: x, pageHeight: b } = D, T = u.indexOf(D), N = u[T + 1];
  883. if (N == null)
  884. continue;
  885. if (Pe.hasIntersectionBetweenTwoRanges(
  886. o,
  887. o + a,
  888. this._liquid.y + h + b - x,
  889. this._liquid.y + h + b + S + N.marginTop
  890. )) {
  891. const R = o + a / 2, I = this._liquid.y + h + b + S / 2;
  892. R < I ? O = Math.min(o, this._liquid.y + h + b - x - a) : O = Math.max(o, this._liquid.y + h + b + S + N.marginTop);
  893. }
  894. this._liquid.translatePage(D, v, w, S);
  895. }
  896. return {
  897. left: r,
  898. top: O,
  899. width: s,
  900. height: a,
  901. angle: d
  902. };
  903. }
  904. _nonInlineDrawingTransform(e, n, t = !1) {
  905. const r = e.isMultiTransform === re.TRUE ? n : this._limitDrawingInPage(e, n);
  906. if (t && r.top !== n.top)
  907. return;
  908. const o = this._getDrawingAnchor(e, r), { offset: s, docTransform: a, segmentId: d, segmentPage: c } = o != null ? o : {};
  909. return s == null || a == null ? this._updateMultipleDrawingDocTransform(/* @__PURE__ */ new Map([[e.drawingId, n]])) : this._commandService.executeCommand(rt.id, {
  910. unitId: e.unitId,
  911. subUnitId: e.unitId,
  912. drawing: e,
  913. offset: s,
  914. docTransform: a,
  915. segmentId: d,
  916. segmentPage: c
  917. });
  918. }
  919. _getSceneAndTransformerByDrawingSearch(e) {
  920. if (e == null)
  921. return;
  922. const n = this._renderManagerService.getRenderById(e), t = n == null ? void 0 : n.scene;
  923. if (t == null)
  924. return;
  925. const r = t.getTransformerByCreate();
  926. return { scene: t, transformer: r };
  927. }
  928. _getTransformCoordForDocumentOffset(e, n, t, r) {
  929. const { documentTransform: o } = e.getOffsetConfig(), s = n.transformVector2SceneCoord(ri.FromArray([t, r]));
  930. if (s)
  931. return o.clone().invert().applyPoint(s);
  932. }
  933. _createOrUpdateInlineAnchor(e, n) {
  934. const t = this._renderManagerService.getRenderById(e);
  935. if (t == null)
  936. return;
  937. const { mainComponent: r, scene: o } = t, s = r, {
  938. docsLeft: a,
  939. docsTop: d
  940. } = s.getOffsetConfig(), c = pi(n), { left: l, top: u, height: m } = c, p = l + a, h = u + d;
  941. if (this._anchorShape) {
  942. this._anchorShape.transformByState({ left: p, top: h, height: m }), this._anchorShape.show();
  943. return;
  944. }
  945. const v = 6, w = new oi(Fi + Pe.generateRandomId(v), {
  946. left: p,
  947. top: h,
  948. height: m,
  949. strokeWidth: 2,
  950. stroke: si(Mt.darkGray, 1),
  951. evented: !1
  952. });
  953. this._anchorShape = w, o.addObject(w, wi);
  954. }
  955. _getDocObject() {
  956. return vi(this._univerInstanceService, this._renderManagerService);
  957. }
  958. _getPageContentSize(e) {
  959. const n = this._renderManagerService.getRenderById(e.unitId), t = n == null ? void 0 : n.with(oe).getSkeleton(), r = 500, o = 500, s = t == null ? void 0 : t.getSkeletonData();
  960. if (s == null || n == null)
  961. return {
  962. width: r,
  963. height: o
  964. };
  965. const { pages: a } = s;
  966. let d = null;
  967. for (const c of a) {
  968. const { skeDrawings: l } = c;
  969. if (l.has(e.drawingId)) {
  970. d = c;
  971. break;
  972. }
  973. }
  974. if (d) {
  975. const { pageWidth: c, pageHeight: l, marginLeft: u, marginBottom: m, marginRight: p, marginTop: h } = d;
  976. return {
  977. width: Math.max(r, c - u - p),
  978. height: Math.max(o, l - h - m)
  979. };
  980. } else
  981. return {
  982. width: r,
  983. height: o
  984. };
  985. }
  986. };
  987. on = Ui([
  988. Ze(0, z),
  989. Ze(1, J),
  990. Ze(2, ve),
  991. Ze(3, Q)
  992. ], on);
  993. var fe = function() {
  994. return fe = Object.assign || function(i) {
  995. for (var e, n = 1, t = arguments.length; n < t; n++) {
  996. e = arguments[n];
  997. for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (i[r] = e[r]);
  998. }
  999. return i;
  1000. }, fe.apply(this, arguments);
  1001. }, ki = function(i, e) {
  1002. var n = {};
  1003. for (var t in i) Object.prototype.hasOwnProperty.call(i, t) && e.indexOf(t) < 0 && (n[t] = i[t]);
  1004. if (i != null && typeof Object.getOwnPropertySymbols == "function")
  1005. for (var r = 0, t = Object.getOwnPropertySymbols(i); r < t.length; r++)
  1006. e.indexOf(t[r]) < 0 && Object.prototype.propertyIsEnumerable.call(i, t[r]) && (n[t[r]] = i[t[r]]);
  1007. return n;
  1008. }, ot = Jn(function(i, e) {
  1009. var n = i.icon, t = i.id, r = i.className, o = i.extend, s = ki(i, ["icon", "id", "className", "extend"]), a = "univerjs-icon univerjs-icon-".concat(t, " ").concat(r || "").trim(), d = yi("_".concat(Gi()));
  1010. return st(n, "".concat(t), { defIds: n.defIds, idSuffix: d.current }, fe({ ref: e, className: a }, s), o);
  1011. });
  1012. function st(i, e, n, t, r) {
  1013. return Zn(i.tag, fe(fe({ key: e }, Hi(i, n, r)), t), (Wi(i, n).children || []).map(function(o, s) {
  1014. return st(o, "".concat(e, "-").concat(i.tag, "-").concat(s), n, void 0, r);
  1015. }));
  1016. }
  1017. function Hi(i, e, n) {
  1018. var t = fe({}, i.attrs);
  1019. n != null && n.colorChannel1 && t.fill === "colorChannel1" && (t.fill = n.colorChannel1);
  1020. var r = e.defIds;
  1021. return !r || r.length === 0 || (i.tag === "use" && t["xlink:href"] && (t["xlink:href"] = t["xlink:href"] + e.idSuffix), Object.entries(t).forEach(function(o) {
  1022. var s = o[0], a = o[1];
  1023. typeof a == "string" && (t[s] = a.replace(/url\(#(.*)\)/, "url(#$1".concat(e.idSuffix, ")")));
  1024. })), t;
  1025. }
  1026. function Wi(i, e) {
  1027. var n, t = e.defIds;
  1028. return !t || t.length === 0 ? i : i.tag === "defs" && (!((n = i.children) === null || n === void 0) && n.length) ? fe(fe({}, i), { children: i.children.map(function(r) {
  1029. return typeof r.attrs.id == "string" && t && t.indexOf(r.attrs.id) > -1 ? fe(fe({}, r), { attrs: fe(fe({}, r.attrs), { id: r.attrs.id + e.idSuffix }) }) : r;
  1030. }) }) : i;
  1031. }
  1032. function Gi() {
  1033. return Math.random().toString(36).substring(2, 8);
  1034. }
  1035. ot.displayName = "UniverIcon";
  1036. var Vi = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M2.2498 3.65005C2.2498 2.87685 2.87661 2.25005 3.64981 2.25005H7.9998C8.33118 2.25005 8.5998 1.98142 8.5998 1.65005C8.5998 1.31868 8.33118 1.05005 7.9998 1.05005H3.64981C2.21387 1.05005 1.0498 2.21411 1.0498 3.65005V12.35C1.0498 13.786 2.21386 14.95 3.6498 14.95H12.3498C13.7857 14.95 14.9498 13.786 14.9498 12.3501V8.00005C14.9498 7.66868 14.6812 7.40005 14.3498 7.40005C14.0184 7.40005 13.7498 7.66868 13.7498 8.00005V9.23974L12.2385 8.1063C11.7252 7.72129 11.0068 7.7723 10.5531 8.22605L9.00869 9.77041L6.73916 7.8251C6.24387 7.40055 5.5095 7.41278 5.02864 7.85359L2.2498 10.4009V3.65005ZM2.2498 12.0287V12.35C2.2498 13.1232 2.87661 13.75 3.6498 13.75H12.3498C13.123 13.75 13.7498 13.1232 13.7498 12.3501V10.7397L11.5186 9.06631C11.4829 9.03956 11.433 9.04314 11.4016 9.07458L9.92249 10.5537L11.1015 11.5642C11.3531 11.7799 11.3822 12.1587 11.1666 12.4103C10.9509 12.6619 10.5721 12.691 10.3205 12.4753L5.9582 8.7362C5.92384 8.70674 5.87288 8.70758 5.83952 8.73816L2.2498 12.0287Z", fillRule: "evenodd", clipRule: "evenodd" } }, { tag: "path", attrs: { fill: "currentColor", d: "M11.8097 1.14783C12.1411 1.14783 12.4097 1.41646 12.4097 1.74783V3.297H14.1541C14.4855 3.297 14.7541 3.56563 14.7541 3.897C14.7541 4.22837 14.4855 4.497 14.1541 4.497H12.4097V6.24167C12.4097 6.57304 12.1411 6.84167 11.8097 6.84167C11.4783 6.84167 11.2097 6.57304 11.2097 6.24167V4.497H9.6603C9.32893 4.497 9.0603 4.22837 9.0603 3.897C9.0603 3.56563 9.32893 3.297 9.6603 3.297H11.2097V1.74783C11.2097 1.41646 11.4783 1.14783 11.8097 1.14783Z" } }] }, at = Jn(function(i, e) {
  1037. return Zn(ot, Object.assign({}, i, {
  1038. id: "add-image-single",
  1039. ref: e,
  1040. icon: Vi
  1041. }));
  1042. });
  1043. at.displayName = "AddImageSingle";
  1044. const Cn = {
  1045. id: "doc.command.remove-doc-image",
  1046. type: X.COMMAND,
  1047. // eslint-disable-next-line max-lines-per-function
  1048. handler: (i, e) => {
  1049. var b, T, N, B;
  1050. const n = i.get(z), t = i.get(J), r = i.get(Q), o = t.getCurrentUniverDocInstance();
  1051. if (e == null || o == null)
  1052. return !1;
  1053. const s = r.getRenderById(e.unitId).with(ye), { drawings: a } = e, d = (b = s.getSegment()) != null ? b : "", c = new In(), l = q.getInstance(), u = (N = (T = o.getSelfOrHeaderFooterModel(d).getBody()) == null ? void 0 : T.customBlocks) != null ? N : [], m = a.map((R) => u.find((I) => I.blockId === R.drawingId)).filter((R) => !!R).sort((R, I) => R.startIndex > I.startIndex ? 1 : -1), p = a[0].unitId, h = new Rt();
  1054. h.reset();
  1055. const v = m[0].startIndex, w = [
  1056. {
  1057. startOffset: v,
  1058. endOffset: v
  1059. }
  1060. ], S = {
  1061. id: Z.id,
  1062. params: {
  1063. unitId: p,
  1064. actions: [],
  1065. textRanges: w
  1066. }
  1067. }, O = [];
  1068. for (const R of m) {
  1069. const { startIndex: I } = R;
  1070. I > h.cursor && c.push({
  1071. t: Y.RETAIN,
  1072. len: I - h.cursor
  1073. }), c.push({
  1074. t: Y.DELETE,
  1075. len: 1
  1076. }), h.moveCursorTo(I + 1);
  1077. }
  1078. const D = ze(o, d);
  1079. O.push(l.editOp(c.serialize(), D));
  1080. for (const R of m) {
  1081. const { blockId: I } = R, j = ((B = o.getDrawings()) != null ? B : {})[I], A = o.getDrawingsOrder().indexOf(I), W = l.removeOp(["drawings", I], j), _ = l.removeOp(["drawingsOrder", A], I);
  1082. O.push(W), O.push(_);
  1083. }
  1084. return S.params.actions = O.reduce((R, I) => q.compose(R, I), null), !!n.syncExecuteCommand(S.id, S.params);
  1085. }
  1086. }, ct = {
  1087. id: "doc.command.delete-drawing",
  1088. type: X.COMMAND,
  1089. handler: (i) => {
  1090. const e = i.get(z), t = i.get(je).getFocusDrawings();
  1091. if (t.length === 0)
  1092. return !1;
  1093. const { unitId: r } = t[0], o = t.map((s) => {
  1094. const { unitId: a, subUnitId: d, drawingId: c, drawingType: l } = s;
  1095. return {
  1096. unitId: a,
  1097. subUnitId: d,
  1098. drawingId: c,
  1099. drawingType: l
  1100. };
  1101. });
  1102. return e.executeCommand(Cn.id, {
  1103. unitId: r,
  1104. drawings: o
  1105. });
  1106. }
  1107. }, dt = {
  1108. id: "doc.command.group-doc-image",
  1109. type: X.COMMAND,
  1110. handler: (i, e) => {
  1111. i.get(z), i.get($n);
  1112. const n = i.get(je);
  1113. if (!e) return !1;
  1114. const t = [];
  1115. return e.forEach(({ parent: r, children: o }) => {
  1116. t.push(r.unitId), o.forEach((s) => {
  1117. t.push(s.unitId);
  1118. });
  1119. }), n.getGroupDrawingOp(e), !1;
  1120. }
  1121. }, lt = {
  1122. id: "doc.command.insert-doc-image",
  1123. type: X.COMMAND,
  1124. // eslint-disable-next-line max-lines-per-function
  1125. handler: (i, e) => {
  1126. var T, N, B, R;
  1127. if (e == null)
  1128. return !1;
  1129. const n = i.get(z), t = i.get(_n), r = i.get(J), o = t.getActiveTextRange(), s = r.getCurrentUniverDocInstance();
  1130. if (o == null || s == null)
  1131. return !1;
  1132. const a = s.getUnitId(), { drawings: d } = e, { collapsed: c, startOffset: l, segmentId: u } = o, m = s.getSelfOrHeaderFooterModel(u).getBody();
  1133. if (m == null)
  1134. return !1;
  1135. const p = new In(), h = q.getInstance(), v = [], w = (N = (T = s.getSnapshot().drawingsOrder) == null ? void 0 : T.length) != null ? N : 0;
  1136. let S = 0;
  1137. if (c)
  1138. l > 0 && p.push({
  1139. t: Y.RETAIN,
  1140. len: l
  1141. });
  1142. else {
  1143. const I = Nt.selection.delete([o], m, 0, null, !1);
  1144. p.push(...I);
  1145. const j = Ii(m, [o]), H = (B = s.getDrawings()) != null ? B : {}, A = (R = s.getDrawingsOrder()) != null ? R : [], W = j.sort((_, C) => A.indexOf(_) > A.indexOf(C) ? -1 : A.indexOf(_) < A.indexOf(C) ? 1 : 0);
  1146. if (W.length > 0)
  1147. for (const _ of W) {
  1148. const C = H[_], M = A.indexOf(_);
  1149. if (C == null || M < 0)
  1150. continue;
  1151. const P = h.removeOp(["drawings", _], C), L = h.removeOp(["drawingsOrder", M], _);
  1152. v.push(P), v.push(L), S++;
  1153. }
  1154. }
  1155. p.push({
  1156. t: Y.INSERT,
  1157. body: {
  1158. dataStream: "\b".repeat(d.length),
  1159. customBlocks: d.map((I, j) => ({
  1160. startIndex: j,
  1161. blockId: I.drawingId
  1162. }))
  1163. },
  1164. len: d.length
  1165. });
  1166. const O = ze(s, u), D = h.editOp(p.serialize(), O);
  1167. v.push(D);
  1168. for (const I of d) {
  1169. const { drawingId: j } = I, H = h.insertOp(["drawings", j], I), A = h.insertOp(["drawingsOrder", w - S], j);
  1170. v.push(H), v.push(A);
  1171. }
  1172. const x = {
  1173. id: Z.id,
  1174. params: {
  1175. unitId: a,
  1176. actions: [],
  1177. textRanges: []
  1178. }
  1179. };
  1180. return x.params.actions = v.reduce((I, j) => q.compose(I, j), null), !!n.syncExecuteCommand(x.id, x.params);
  1181. }
  1182. }, gt = {
  1183. id: "doc.command.set-drawing-arrange",
  1184. type: X.COMMAND,
  1185. handler: (i, e) => {
  1186. const n = i.get(z), t = i.get(je);
  1187. if (e == null)
  1188. return !1;
  1189. const { unitId: r, subUnitId: o, drawingIds: s, arrangeType: a } = e, d = { unitId: r, subUnitId: o, drawingIds: s };
  1190. let c;
  1191. if (a === Je.forward ? c = t.getForwardDrawingsOp(d) : a === Je.backward ? c = t.getBackwardDrawingOp(d) : a === Je.front ? c = t.getFrontDrawingsOp(d) : a === Je.back && (c = t.getBackDrawingsOp(d)), c == null)
  1192. return !1;
  1193. const { redo: l } = c;
  1194. if (l == null)
  1195. return !1;
  1196. const u = [];
  1197. let m = Pe.deepClone(l);
  1198. m = m.slice(3), m.unshift("drawingsOrder"), u.push(m);
  1199. const p = {
  1200. id: Z.id,
  1201. params: {
  1202. unitId: r,
  1203. actions: [],
  1204. textRanges: null
  1205. }
  1206. };
  1207. return p.params.actions = u.reduce((v, w) => q.compose(v, w), null), !!n.syncExecuteCommand(p.id, p.params);
  1208. }
  1209. }, mt = {
  1210. id: "doc.command.ungroup-doc-image",
  1211. type: X.COMMAND,
  1212. handler: (i, e) => {
  1213. i.get(z), i.get($n);
  1214. const n = i.get(je);
  1215. if (!e) return !1;
  1216. const t = [];
  1217. return e.forEach(({ parent: r, children: o }) => {
  1218. t.push(r.unitId), o.forEach((s) => {
  1219. t.push(s.unitId);
  1220. });
  1221. }), n.getUngroupDrawingOp(e), !1;
  1222. }
  1223. };
  1224. var $i = Object.defineProperty, zi = Object.getOwnPropertyDescriptor, qi = (i, e, n, t) => {
  1225. for (var r = t > 1 ? void 0 : t ? zi(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  1226. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  1227. return t && r && $i(e, n, r), r;
  1228. }, ge = (i, e) => (n, t) => e(n, t, i);
  1229. let sn = class extends Xe {
  1230. constructor(i, e, n, t, r, o, s, a, d, c, l, u, m) {
  1231. super(), this._context = i, this._commandService = e, this._docSelectionManagerService = n, this._renderManagerSrv = t, this._imageIoService = r, this._docDrawingService = o, this._drawingManagerService = s, this._contextService = a, this._messageService = d, this._localeService = c, this._docSelectionRenderService = l, this._docRefreshDrawingsService = u, this._fileOpenerService = m, this._updateOrderListener(), this._groupDrawingListener(), this._focusDrawingListener(), this._transformDrawingListener(), this._editAreaChangeListener();
  1232. }
  1233. async insertDocImage() {
  1234. const i = await this._fileOpenerService.openFile({
  1235. multiple: !0,
  1236. accept: zt.map((n) => `.${n.replace("image/", "")}`).join(",")
  1237. }), e = i.length;
  1238. return e > Tn ? (this._messageService.show({
  1239. type: Ln.Error,
  1240. content: this._localeService.t("update-status.exceedMaxCount", String(Tn))
  1241. }), !1) : e === 0 ? !1 : (await this._insertFloatImages(i), !0);
  1242. }
  1243. // eslint-disable-next-line max-lines-per-function
  1244. async _insertFloatImages(i) {
  1245. let e = [];
  1246. try {
  1247. e = await Promise.all(i.map((r) => this._imageIoService.saveImage(r)));
  1248. } catch (r) {
  1249. const o = r.message;
  1250. let s = "";
  1251. switch (o) {
  1252. case hn.ERROR_EXCEED_SIZE:
  1253. s = this._localeService.t("update-status.exceedMaxSize", String(qt / (1024 * 1024)));
  1254. break;
  1255. case hn.ERROR_IMAGE_TYPE:
  1256. s = this._localeService.t("update-status.invalidImageType");
  1257. break;
  1258. case hn.ERROR_IMAGE:
  1259. s = this._localeService.t("update-status.invalidImage");
  1260. break;
  1261. }
  1262. this._messageService.show({
  1263. type: Ln.Error,
  1264. content: s
  1265. });
  1266. }
  1267. if (e.length === 0)
  1268. return;
  1269. const { unitId: n } = this._context, t = [];
  1270. for (const r of e) {
  1271. if (r == null)
  1272. continue;
  1273. const { imageId: o, imageSourceType: s, source: a, base64Cache: d } = r, { width: c, height: l, image: u } = await Xt(d || "");
  1274. this._imageIoService.addImageSourceCache(o, s, u);
  1275. let m = 1;
  1276. if (c > yn || l > bn) {
  1277. const w = yn / c, S = bn / l;
  1278. m = Math.min(w, S);
  1279. }
  1280. const p = this._getImagePosition(c * m, l * m);
  1281. if (p == null)
  1282. return;
  1283. const h = {
  1284. unitId: n,
  1285. subUnitId: n,
  1286. drawingId: o,
  1287. drawingType: Et.DRAWING_IMAGE,
  1288. imageSourceType: s,
  1289. source: a,
  1290. transform: _i(p),
  1291. docTransform: p,
  1292. behindDoc: re.FALSE,
  1293. title: "",
  1294. description: "",
  1295. layoutType: k.INLINE,
  1296. // Insert inline drawing by default.
  1297. wrapText: $e.BOTH_SIDES,
  1298. distB: 0,
  1299. distL: 0,
  1300. distR: 0,
  1301. distT: 0
  1302. };
  1303. this._isInsertInHeaderFooter() && (h.isMultiTransform = re.TRUE, h.transforms = h.transform ? [h.transform] : null), t.push(h);
  1304. }
  1305. this._commandService.executeCommand(lt.id, {
  1306. unitId: n,
  1307. drawings: t
  1308. });
  1309. }
  1310. _isInsertInHeaderFooter() {
  1311. var t;
  1312. const { unitId: i } = this._context, e = (t = this._renderManagerSrv.getRenderById(i)) == null ? void 0 : t.with(oe).getViewModel(), n = e == null ? void 0 : e.getEditArea();
  1313. return n === Ue.HEADER || n === Ue.FOOTER;
  1314. }
  1315. _getImagePosition(i, e) {
  1316. const n = this._docSelectionRenderService.getActiveTextRange(), t = (n == null ? void 0 : n.getAbsolutePosition()) || {
  1317. left: 0,
  1318. top: 0
  1319. };
  1320. return {
  1321. size: {
  1322. width: i,
  1323. height: e
  1324. },
  1325. positionH: {
  1326. relativeFrom: ee.PAGE,
  1327. posOffset: t.left
  1328. },
  1329. positionV: {
  1330. relativeFrom: G.PARAGRAPH,
  1331. posOffset: 0
  1332. },
  1333. angle: 0
  1334. };
  1335. }
  1336. _updateOrderListener() {
  1337. this._drawingManagerService.featurePluginOrderUpdate$.subscribe((i) => {
  1338. const { unitId: e, subUnitId: n, drawingIds: t, arrangeType: r } = i;
  1339. this._commandService.executeCommand(gt.id, {
  1340. unitId: e,
  1341. subUnitId: n,
  1342. drawingIds: t,
  1343. arrangeType: r
  1344. });
  1345. });
  1346. }
  1347. _groupDrawingListener() {
  1348. this._drawingManagerService.featurePluginGroupUpdate$.subscribe((i) => {
  1349. this._commandService.executeCommand(dt.id, i);
  1350. }), this._drawingManagerService.featurePluginUngroupUpdate$.subscribe((i) => {
  1351. this._commandService.executeCommand(mt.id, i);
  1352. });
  1353. }
  1354. _getCurrentSceneAndTransformer() {
  1355. const { scene: i, mainComponent: e } = this._context;
  1356. if (i == null || e == null)
  1357. return;
  1358. const n = i.getTransformerByCreate(), { docsLeft: t, docsTop: r } = e.getOffsetConfig();
  1359. return { scene: i, transformer: n, docsLeft: t, docsTop: r };
  1360. }
  1361. _transformDrawingListener() {
  1362. const i = this._getCurrentSceneAndTransformer();
  1363. if (i && i.transformer)
  1364. this.disposeWithMe(i.transformer.changeEnd$.pipe(Yn(30)).subscribe((e) => {
  1365. this._docSelectionManagerService.refreshSelection();
  1366. }));
  1367. else
  1368. throw new Error("transformer is not init");
  1369. }
  1370. _focusDrawingListener() {
  1371. this.disposeWithMe(
  1372. this._drawingManagerService.focus$.subscribe((i) => {
  1373. var r;
  1374. const { transformer: e, docsLeft: n, docsTop: t } = (r = this._getCurrentSceneAndTransformer()) != null ? r : {};
  1375. if (i == null || i.length === 0)
  1376. this._contextService.setContextValue(tn, !1), this._docDrawingService.focusDrawing([]), e && e.resetProps({
  1377. zeroTop: 0,
  1378. zeroLeft: 0
  1379. });
  1380. else {
  1381. this._contextService.setContextValue(tn, !0), this._docDrawingService.focusDrawing(i), this._setDrawingSelections(i);
  1382. const o = this._docSelectionRenderService.getSegment(), s = this._findSegmentIdByDrawingId(i[0].drawingId);
  1383. o !== s && this._docSelectionRenderService.setSegment(s), e && e.resetProps({
  1384. zeroTop: t,
  1385. zeroLeft: n
  1386. });
  1387. }
  1388. })
  1389. );
  1390. }
  1391. _findSegmentIdByDrawingId(i) {
  1392. var s, a, d;
  1393. const { unit: e } = this._context, { body: n, headers: t = {}, footers: r = {} } = e.getSnapshot();
  1394. if (((s = n == null ? void 0 : n.customBlocks) != null ? s : []).some((c) => c.blockId === i))
  1395. return "";
  1396. for (const c of Object.keys(t))
  1397. if ((a = t[c].body.customBlocks) != null && a.some((l) => l.blockId === i))
  1398. return c;
  1399. for (const c of Object.keys(r))
  1400. if ((d = r[c].body.customBlocks) != null && d.some((l) => l.blockId === i))
  1401. return c;
  1402. return "";
  1403. }
  1404. // Update drawings edit status and opacity. You can not edit header footer images when you are editing body. and vice verse.
  1405. _updateDrawingsEditStatus() {
  1406. var a;
  1407. const { unit: i, scene: e, unitId: n } = this._context, t = (a = this._renderManagerSrv.getRenderById(n)) == null ? void 0 : a.with(oe).getViewModel();
  1408. if (t == null || i == null)
  1409. return;
  1410. const r = i.getSnapshot(), { drawings: o = {} } = r, s = t.getEditArea() === Ue.BODY;
  1411. for (const d of Object.keys(o)) {
  1412. const c = o[d], l = Kt({ unitId: n, drawingId: c.drawingId, subUnitId: n }), u = e.fuzzyMathObjects(l, !0);
  1413. if (u.length)
  1414. for (const m of u)
  1415. e.detachTransformerFrom(m), m.setOpacity(0.5), (s && c.isMultiTransform !== re.TRUE || !s && c.isMultiTransform === re.TRUE) && (e.attachTransformerTo(m), m.setOpacity(1));
  1416. }
  1417. }
  1418. _editAreaChangeListener() {
  1419. var n;
  1420. const { unitId: i } = this._context, e = (n = this._renderManagerSrv.getRenderById(i)) == null ? void 0 : n.with(oe).getViewModel();
  1421. e != null && (this._updateDrawingsEditStatus(), this.disposeWithMe(
  1422. e.editAreaChange$.subscribe(() => {
  1423. this._updateDrawingsEditStatus();
  1424. })
  1425. ), this._docRefreshDrawingsService.refreshDrawings$.subscribe((t) => {
  1426. t != null && queueMicrotask(() => {
  1427. this._updateDrawingsEditStatus();
  1428. });
  1429. }), this.disposeWithMe(
  1430. this._commandService.onCommandExecuted(async (t) => {
  1431. t.id === Z.id && queueMicrotask(() => {
  1432. this._updateDrawingsEditStatus();
  1433. });
  1434. })
  1435. ));
  1436. }
  1437. _setDrawingSelections(i) {
  1438. var r, o;
  1439. const { unit: e } = this._context, n = (o = (r = e.getSnapshot().body) == null ? void 0 : r.customBlocks) != null ? o : [], t = i.map((s) => {
  1440. const a = s.drawingId, d = n.find((c) => c.blockId === a);
  1441. return d ? d.startIndex : null;
  1442. }).filter((s) => s !== null).map((s) => ({ startOffset: s, endOffset: s + 1 }));
  1443. this._docSelectionManagerService.replaceDocRanges(t);
  1444. }
  1445. };
  1446. sn = qi([
  1447. ge(1, z),
  1448. ge(2, we(_n)),
  1449. ge(3, Q),
  1450. ge(4, Yt),
  1451. ge(5, je),
  1452. ge(6, ve),
  1453. ge(7, zn),
  1454. ge(8, ci),
  1455. ge(9, we(ln)),
  1456. ge(10, we(ye)),
  1457. ge(11, we(gn)),
  1458. ge(12, di)
  1459. ], sn);
  1460. const ut = {
  1461. id: "doc.command.insert-float-image",
  1462. type: X.COMMAND,
  1463. handler: (i) => {
  1464. var n, t;
  1465. return (t = (n = i.get(Q).getCurrentTypeOfRenderer(Te.UNIVER_DOC)) == null ? void 0 : n.with(sn).insertDocImage()) != null ? t : !1;
  1466. }
  1467. }, Ke = {
  1468. id: "doc.command.move-drawing",
  1469. type: X.COMMAND,
  1470. handler: (i, e) => {
  1471. const n = i.get(z), t = i.get(je), r = i.get(J), o = i.get(Q), { direction: s } = e, a = t.getFocusDrawings();
  1472. if (a.length === 0)
  1473. return !1;
  1474. const d = a[0].unitId, c = o.getRenderById(d), l = c == null ? void 0 : c.scene;
  1475. if (l == null)
  1476. return !1;
  1477. const u = l.getTransformerByCreate(), m = r.getUniverDocInstance(d), p = a.map((v) => {
  1478. var T, N, B, R, I;
  1479. const { drawingId: w } = v, S = (T = m == null ? void 0 : m.getSnapshot().drawings) == null ? void 0 : T[w];
  1480. if (S == null || S.layoutType === k.INLINE)
  1481. return null;
  1482. const { positionH: O, positionV: D } = S.docTransform, x = { ...O }, b = { ...D };
  1483. return s === ue.UP ? b.posOffset = ((N = b.posOffset) != null ? N : 0) - 2 : s === ue.DOWN ? b.posOffset = ((B = b.posOffset) != null ? B : 0) + 2 : s === ue.LEFT ? x.posOffset = ((R = x.posOffset) != null ? R : 0) - 2 : s === ue.RIGHT && (x.posOffset = ((I = x.posOffset) != null ? I : 0) + 2), {
  1484. drawingId: w,
  1485. key: s === ue.UP || s === ue.DOWN ? "positionV" : "positionH",
  1486. value: s === ue.UP || s === ue.DOWN ? b : x
  1487. };
  1488. }).filter((v) => v != null);
  1489. if (p.length === 0)
  1490. return !1;
  1491. const h = n.syncExecuteCommand(qe.id, {
  1492. unitId: d,
  1493. subUnitId: d,
  1494. drawings: p
  1495. });
  1496. return u.refreshControls(), !!h;
  1497. }
  1498. }, Xi = {
  1499. id: "doc.operation.clear-drawing-transformer",
  1500. type: X.MUTATION,
  1501. handler: (i, e) => {
  1502. const n = i.get(Q);
  1503. return e.forEach((t) => {
  1504. var r, o;
  1505. (o = (r = n.getRenderById(t)) == null ? void 0 : r.scene.getTransformer()) == null || o.debounceRefreshControls();
  1506. }), !0;
  1507. }
  1508. }, ft = "COMPONENT_DOC_DRAWING_PANEL", ht = {
  1509. id: "sidebar.operation.doc-image",
  1510. type: X.COMMAND,
  1511. handler: async (i, e) => {
  1512. const n = i.get(li), t = i.get(ln), r = i.get(ve);
  1513. switch (e.value) {
  1514. case "open":
  1515. n.open({
  1516. header: { title: t.t("docImage.panel.title") },
  1517. children: { label: ft },
  1518. onClose: () => {
  1519. r.focusDrawing(null);
  1520. },
  1521. width: 360
  1522. });
  1523. break;
  1524. case "close":
  1525. default:
  1526. n.close();
  1527. break;
  1528. }
  1529. return !0;
  1530. }
  1531. }, pt = {
  1532. id: "doc.operation.edit-doc-image",
  1533. type: X.OPERATION,
  1534. handler: (i, e) => {
  1535. const n = i.get(ve), t = i.get(z);
  1536. return e == null ? !1 : (n.focusDrawing([e]), t.executeCommand(ht.id, { value: "open" }), !0);
  1537. }
  1538. };
  1539. var pn = { exports: {} }, Ge = {};
  1540. /**
  1541. * @license React
  1542. * react-jsx-runtime.production.min.js
  1543. *
  1544. * Copyright (c) Facebook, Inc. and its affiliates.
  1545. *
  1546. * This source code is licensed under the MIT license found in the
  1547. * LICENSE file in the root directory of this source tree.
  1548. */
  1549. var Hn;
  1550. function Ki() {
  1551. if (Hn) return Ge;
  1552. Hn = 1;
  1553. var i = Ti, e = Symbol.for("react.element"), n = Symbol.for("react.fragment"), t = Object.prototype.hasOwnProperty, r = i.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, o = { key: !0, ref: !0, __self: !0, __source: !0 };
  1554. function s(a, d, c) {
  1555. var l, u = {}, m = null, p = null;
  1556. c !== void 0 && (m = "" + c), d.key !== void 0 && (m = "" + d.key), d.ref !== void 0 && (p = d.ref);
  1557. for (l in d) t.call(d, l) && !o.hasOwnProperty(l) && (u[l] = d[l]);
  1558. if (a && a.defaultProps) for (l in d = a.defaultProps, d) u[l] === void 0 && (u[l] = d[l]);
  1559. return { $$typeof: e, type: a, key: m, ref: p, props: u, _owner: r.current };
  1560. }
  1561. return Ge.Fragment = n, Ge.jsx = s, Ge.jsxs = s, Ge;
  1562. }
  1563. var Wn;
  1564. function Yi() {
  1565. return Wn || (Wn = 1, pn.exports = Ki()), pn.exports;
  1566. }
  1567. var g = Yi();
  1568. function wt(i) {
  1569. var e, n, t = "";
  1570. if (typeof i == "string" || typeof i == "number") t += i;
  1571. else if (typeof i == "object") if (Array.isArray(i)) {
  1572. var r = i.length;
  1573. for (e = 0; e < r; e++) i[e] && (n = wt(i[e])) && (t && (t += " "), t += n);
  1574. } else for (n in i) i[n] && (t && (t += " "), t += n);
  1575. return t;
  1576. }
  1577. function V() {
  1578. for (var i, e, n = 0, t = "", r = arguments.length; n < r; n++) (i = arguments[n]) && (e = wt(i)) && (t && (t += " "), t += e);
  1579. return t;
  1580. }
  1581. const Ji = "univer-image-common-panel", Zi = "univer-image-common-panel-grid", Qi = "univer-image-common-panel-border", er = "univer-image-common-panel-title", nr = "univer-image-common-panel-subtitle", tr = "univer-image-common-panel-row", ir = "univer-image-common-panel-row-vertical", rr = "univer-image-common-panel-column", or = "univer-image-common-panel-column-center", sr = "univer-image-common-panel-inline", ar = "univer-image-common-panel-span2", cr = "univer-image-common-panel-span3", dr = "univer-image-common-panel-input", lr = "univer-sheet-image-menu", gr = "univer-sheet-image-menu-input", f = {
  1582. imageCommonPanel: Ji,
  1583. imageCommonPanelGrid: Zi,
  1584. imageCommonPanelBorder: Qi,
  1585. imageCommonPanelTitle: er,
  1586. imageCommonPanelSubtitle: nr,
  1587. imageCommonPanelRow: tr,
  1588. imageCommonPanelRowVertical: ir,
  1589. imageCommonPanelColumn: rr,
  1590. imageCommonPanelColumnCenter: or,
  1591. imageCommonPanelInline: sr,
  1592. imageCommonPanelSpan2: ar,
  1593. imageCommonPanelSpan3: cr,
  1594. imageCommonPanelInput: dr,
  1595. sheetImageMenu: lr,
  1596. sheetImageMenuInput: gr
  1597. }, Gn = -1e3, Vn = 1e3, mr = (i) => {
  1598. const e = pe(z), n = pe(ln), t = pe(ve), r = pe(Q), o = pe(J), { drawings: s } = i, a = s[0];
  1599. if (a == null)
  1600. return;
  1601. const { unitId: d } = a, c = o.getUniverDocInstance(d), l = c == null ? void 0 : c.getSnapshot().documentStyle.documentFlavor, u = r.getRenderById(d), m = u == null ? void 0 : u.scene;
  1602. if (m == null)
  1603. return;
  1604. const p = m.getTransformerByCreate(), h = [{
  1605. label: n.t("image-position.column"),
  1606. value: String(ee.COLUMN)
  1607. }, {
  1608. label: n.t("image-position.page"),
  1609. value: String(ee.PAGE)
  1610. }, {
  1611. label: n.t("image-position.margin"),
  1612. value: String(ee.MARGIN)
  1613. }], v = [{
  1614. label: n.t("image-position.line"),
  1615. value: String(G.LINE),
  1616. disabled: l === fn.MODERN
  1617. }, {
  1618. label: n.t("image-position.page"),
  1619. value: String(G.PAGE),
  1620. disabled: l === fn.MODERN
  1621. }, {
  1622. label: n.t("image-position.margin"),
  1623. value: String(G.MARGIN),
  1624. disabled: l === fn.MODERN
  1625. }, {
  1626. label: n.t("image-position.paragraph"),
  1627. value: String(G.PARAGRAPH)
  1628. }], [w, S] = ie(!0), [O, D] = ie({
  1629. relativeFrom: ee.PAGE,
  1630. posOffset: 0
  1631. }), [x, b] = ie({
  1632. relativeFrom: G.PAGE,
  1633. posOffset: 0
  1634. }), [T, N] = ie(!0), [B, R] = ie(!0);
  1635. function I(C, M) {
  1636. var y;
  1637. C === "positionH" ? D(M) : b(M);
  1638. const P = t.getFocusDrawings();
  1639. if (P.length === 0)
  1640. return;
  1641. const L = P.map((E) => ({
  1642. unitId: E.unitId,
  1643. subUnitId: E.subUnitId,
  1644. drawingId: E.drawingId
  1645. }));
  1646. e.executeCommand(qe.id, {
  1647. unitId: P[0].unitId,
  1648. subUnitId: P[0].unitId,
  1649. drawings: L.map((E) => ({
  1650. drawingId: E.drawingId,
  1651. key: C,
  1652. value: M
  1653. }))
  1654. });
  1655. const U = (y = r.getRenderById(d)) == null ? void 0 : y.with(ye);
  1656. U && U.blur(), p.refreshControls();
  1657. }
  1658. function j(C) {
  1659. var te, Ie, _e;
  1660. const M = O.relativeFrom, P = O.posOffset, L = Number(C);
  1661. if (M === L)
  1662. return;
  1663. const U = t.getFocusDrawings();
  1664. if (U.length === 0)
  1665. return;
  1666. const y = U[0].drawingId, E = U[0].unitId;
  1667. let $ = null, F = 0;
  1668. const K = (te = r.getRenderById(E)) == null ? void 0 : te.with(oe).getSkeleton(), se = K == null ? void 0 : K.getSkeletonData();
  1669. if (se == null)
  1670. return;
  1671. const { pages: Le, skeHeaders: be, skeFooters: ke } = se;
  1672. for (const ce of Le) {
  1673. const { marginLeft: Ce, skeDrawings: De, headerId: Me, footerId: Re, pageWidth: Oe } = ce;
  1674. if (De.has(y)) {
  1675. $ = De.get(y), F = Ce;
  1676. break;
  1677. }
  1678. const de = (Ie = be.get(Me)) == null ? void 0 : Ie.get(Oe);
  1679. if (de != null && de.skeDrawings.has(y)) {
  1680. $ = de == null ? void 0 : de.skeDrawings.get(y), F = Ce;
  1681. break;
  1682. }
  1683. const le = (_e = ke.get(Re)) == null ? void 0 : _e.get(Oe);
  1684. if (le != null && le.skeDrawings.has(y)) {
  1685. $ = le == null ? void 0 : le.skeDrawings.get(y), F = Ce;
  1686. break;
  1687. }
  1688. }
  1689. if ($ == null)
  1690. return;
  1691. let ae = 0;
  1692. M === ee.COLUMN ? ae -= $.columnLeft : M === ee.MARGIN && (ae -= F), L === ee.COLUMN ? ae += $.columnLeft : L === ee.MARGIN ? ae += F : ee.PAGE;
  1693. const ne = {
  1694. relativeFrom: L,
  1695. posOffset: (P != null ? P : 0) - ae
  1696. };
  1697. I("positionH", ne);
  1698. }
  1699. function H(C) {
  1700. var De, Me, Re, Oe, de, le;
  1701. const M = x.relativeFrom, P = x.posOffset, L = Number(C);
  1702. if (M === L)
  1703. return;
  1704. const U = t.getFocusDrawings();
  1705. if (U.length === 0)
  1706. return;
  1707. const { drawingId: y, unitId: E } = U[0], $ = o.getUniverDocInstance(E), F = (De = r.getRenderById(E)) == null ? void 0 : De.with(oe).getSkeleton(), K = (Me = r.getRenderById(E)) == null ? void 0 : Me.with(ye), se = K == null ? void 0 : K.getSegment(), Le = K == null ? void 0 : K.getSegmentPage(), be = (Oe = (Re = $ == null ? void 0 : $.getSelfOrHeaderFooterModel(se).getBody()) == null ? void 0 : Re.customBlocks) == null ? void 0 : Oe.find((Ne) => Ne.blockId === y);
  1708. if (be == null || F == null || K == null)
  1709. return;
  1710. const { startIndex: ke } = be, ae = F.findNodeByCharIndex(ke, se, Le), ne = (de = ae == null ? void 0 : ae.parent) == null ? void 0 : de.parent, te = ne == null ? void 0 : ne.parent, Ie = te == null ? void 0 : te.lines.find((Ne) => Ne.paragraphIndex === (ne == null ? void 0 : ne.paragraphIndex) && Ne.paragraphStart), _e = (le = te == null ? void 0 : te.parent) == null ? void 0 : le.parent;
  1711. if (ae == null || ne == null || Ie == null || te == null || _e == null)
  1712. return;
  1713. let ce = 0;
  1714. M === G.PARAGRAPH ? ce -= Ie.top : M === G.LINE ? ce -= ne.top : M === G.PAGE && (ce += _e.marginTop), L === G.PARAGRAPH ? ce += Ie.top : L === G.LINE ? ce += ne.top : L === G.PAGE && (ce -= _e.marginTop);
  1715. const Ce = {
  1716. relativeFrom: L,
  1717. posOffset: (P != null ? P : 0) - ce
  1718. };
  1719. I("positionV", Ce);
  1720. }
  1721. function A(C) {
  1722. var E;
  1723. const M = c == null ? void 0 : c.getSnapshot(), P = (E = M == null ? void 0 : M.drawings) == null ? void 0 : E[C.drawingId];
  1724. if (P == null)
  1725. return;
  1726. const { layoutType: L } = P, {
  1727. positionH: U,
  1728. positionV: y
  1729. } = P.docTransform;
  1730. D(U), b(y), S(L === k.INLINE), N(y.relativeFrom === G.PARAGRAPH || y.relativeFrom === G.LINE);
  1731. }
  1732. function W() {
  1733. const C = t.getFocusDrawings();
  1734. C.length !== 0 && A(C[0]);
  1735. }
  1736. function _(C) {
  1737. N(C), H(String(C ? G.PARAGRAPH : G.PAGE));
  1738. }
  1739. return Sn(() => {
  1740. W();
  1741. const C = t.focus$.subscribe((P) => {
  1742. if (P.length === 0) {
  1743. R(!1);
  1744. return;
  1745. }
  1746. R(!0), A(P[0]);
  1747. }), M = e.onCommandExecuted(async (P) => {
  1748. P.id === Z.id && W();
  1749. });
  1750. return () => {
  1751. C.unsubscribe(), M.dispose();
  1752. };
  1753. }, []), /* @__PURE__ */ g.jsxs("div", { className: V(f.imageCommonPanelGrid, f.imageCommonPanelBorder), style: { display: B ? "block" : "none" }, children: [
  1754. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelTitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-position.title") }) }) }),
  1755. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-position.horizontal") }) }) }),
  1756. /* @__PURE__ */ g.jsxs("div", { className: f.imageCommonPanelRow, children: [
  1757. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1758. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-position.absolutePosition") }) }),
  1759. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1760. Be,
  1761. {
  1762. min: Gn,
  1763. max: Vn,
  1764. precision: 1,
  1765. disabled: w,
  1766. value: O.posOffset,
  1767. onChange: (C) => {
  1768. I("positionH", {
  1769. relativeFrom: O.relativeFrom,
  1770. posOffset: C
  1771. });
  1772. },
  1773. className: f.imageCommonPanelInput
  1774. }
  1775. ) }) })
  1776. ] }) }),
  1777. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1778. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-position.toTheRightOf") }) }),
  1779. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1780. Bn,
  1781. {
  1782. value: String(O.relativeFrom),
  1783. disabled: w,
  1784. options: h,
  1785. onChange: j
  1786. }
  1787. ) }) })
  1788. ] }) })
  1789. ] }),
  1790. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-position.vertical") }) }) }),
  1791. /* @__PURE__ */ g.jsxs("div", { className: f.imageCommonPanelRow, children: [
  1792. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1793. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-position.absolutePosition") }) }),
  1794. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1795. Be,
  1796. {
  1797. min: Gn,
  1798. max: Vn,
  1799. precision: 1,
  1800. disabled: w,
  1801. value: x.posOffset,
  1802. onChange: (C) => {
  1803. I("positionV", {
  1804. relativeFrom: x.relativeFrom,
  1805. posOffset: C
  1806. });
  1807. },
  1808. className: f.imageCommonPanelInput
  1809. }
  1810. ) }) })
  1811. ] }) }),
  1812. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1813. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-position.bellow") }) }),
  1814. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1815. Bn,
  1816. {
  1817. disabled: w,
  1818. value: String(x.relativeFrom),
  1819. options: v,
  1820. onChange: H
  1821. }
  1822. ) }) })
  1823. ] }) })
  1824. ] }),
  1825. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-position.options") }) }) }),
  1826. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, style: { marginBottom: "50px" }, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(Pi, { disabled: w, checked: T, onChange: _, children: n.t("image-position.moveObjectWithText") }) }) })
  1827. ] });
  1828. }, Qe = 0, en = 100, ur = (i) => {
  1829. const e = pe(z), n = pe(ln), t = pe(ve), r = pe(Q), o = pe(J), { drawings: s } = i, a = s[0];
  1830. if (a == null)
  1831. return null;
  1832. const { unitId: d } = a, c = o.getUniverDocInstance(d), l = r.getRenderById(d);
  1833. if ((l == null ? void 0 : l.scene) == null)
  1834. return null;
  1835. const [m, p] = ie(!0), [h, v] = ie(!0), [w, S] = ie(!0), [O, D] = ie(me.INLINE), [x, b] = ie(""), [T, N] = ie({
  1836. distT: 0,
  1837. distL: 0,
  1838. distB: 0,
  1839. distR: 0
  1840. }), [B, R] = ie(!0);
  1841. function I(_) {
  1842. D(_);
  1843. const C = t.getFocusDrawings();
  1844. if (C.length === 0)
  1845. return;
  1846. const { unitId: M, subUnitId: P } = C[0], L = C.map(({ unitId: U, subUnitId: y, drawingId: E }) => ({
  1847. unitId: U,
  1848. subUnitId: y,
  1849. drawingId: E
  1850. }));
  1851. e.executeCommand(et.id, {
  1852. unitId: M,
  1853. subUnitId: P,
  1854. drawings: L,
  1855. wrappingStyle: _
  1856. });
  1857. }
  1858. function j(_) {
  1859. b(_);
  1860. const C = t.getFocusDrawings();
  1861. if (C.length === 0)
  1862. return;
  1863. const M = C.map((P) => ({
  1864. unitId: P.unitId,
  1865. subUnitId: P.subUnitId,
  1866. drawingId: P.drawingId
  1867. }));
  1868. e.executeCommand(tt.id, {
  1869. unitId: C[0].unitId,
  1870. subUnitId: C[0].unitId,
  1871. drawings: M,
  1872. wrapText: _
  1873. });
  1874. }
  1875. function H(_, C) {
  1876. if (_ == null)
  1877. return;
  1878. const M = { ...T, [C]: _ };
  1879. N(M);
  1880. const P = t.getFocusDrawings();
  1881. if (P.length === 0)
  1882. return;
  1883. const L = P.map((U) => ({
  1884. unitId: U.unitId,
  1885. subUnitId: U.subUnitId,
  1886. drawingId: U.drawingId
  1887. }));
  1888. e.executeCommand(nt.id, {
  1889. unitId: P[0].unitId,
  1890. subUnitId: P[0].unitId,
  1891. drawings: L,
  1892. dist: {
  1893. [C]: _
  1894. }
  1895. });
  1896. }
  1897. function A() {
  1898. const _ = t.getFocusDrawings();
  1899. _.length !== 0 && W(_[0]);
  1900. }
  1901. function W(_) {
  1902. var K, se;
  1903. const C = (se = (K = c == null ? void 0 : c.getSnapshot()) == null ? void 0 : K.drawings) == null ? void 0 : se[_.drawingId];
  1904. if (C == null)
  1905. return;
  1906. const {
  1907. distT: M = 0,
  1908. distL: P = 0,
  1909. distB: L = 0,
  1910. distR: U = 0,
  1911. layoutType: y = k.INLINE,
  1912. behindDoc: E = re.FALSE,
  1913. wrapText: $ = $e.BOTH_SIDES
  1914. } = C;
  1915. if (N({
  1916. distT: M,
  1917. distL: P,
  1918. distB: L,
  1919. distR: U
  1920. }), b($), p(y !== k.WRAP_SQUARE), y === k.WRAP_NONE || y === k.INLINE ? v(!0) : v(!1), y === k.WRAP_NONE || y === k.INLINE || y === k.WRAP_TOP_AND_BOTTOM ? S(!0) : S(!1), y === k.WRAP_NONE)
  1921. E === re.TRUE ? D(me.BEHIND_TEXT) : D(me.IN_FRONT_OF_TEXT);
  1922. else
  1923. switch (y) {
  1924. case k.INLINE:
  1925. D(me.INLINE);
  1926. break;
  1927. case k.WRAP_SQUARE:
  1928. D(me.WRAP_SQUARE);
  1929. break;
  1930. case k.WRAP_TOP_AND_BOTTOM:
  1931. D(me.WRAP_TOP_AND_BOTTOM);
  1932. break;
  1933. default:
  1934. throw new Error(`Unsupported layout type: ${y}`);
  1935. }
  1936. }
  1937. return Sn(() => {
  1938. A();
  1939. const _ = t.focus$.subscribe((M) => {
  1940. if (M.length === 0) {
  1941. R(!1);
  1942. return;
  1943. }
  1944. R(!0), W(M[0]);
  1945. }), C = e.onCommandExecuted(async (M) => {
  1946. M.id === Z.id && A();
  1947. });
  1948. return () => {
  1949. _.unsubscribe(), C.dispose();
  1950. };
  1951. }, []), /* @__PURE__ */ g.jsxs("div", { className: V(f.imageCommonPanelGrid, f.imageCommonPanelBorder), style: { display: B ? "block" : "none" }, children: [
  1952. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelTitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-text-wrap.title") }) }) }),
  1953. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-text-wrap.wrappingStyle") }) }) }),
  1954. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelRow), children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn), children: /* @__PURE__ */ g.jsxs(Un, { value: O, onChange: I, direction: "vertical", children: [
  1955. /* @__PURE__ */ g.jsx(xe, { value: me.INLINE, children: n.t("image-text-wrap.inline") }),
  1956. /* @__PURE__ */ g.jsx(xe, { value: me.WRAP_SQUARE, children: n.t("image-text-wrap.square") }),
  1957. /* @__PURE__ */ g.jsx(xe, { value: me.WRAP_TOP_AND_BOTTOM, children: n.t("image-text-wrap.topAndBottom") }),
  1958. /* @__PURE__ */ g.jsx(xe, { value: me.BEHIND_TEXT, children: n.t("image-text-wrap.behindText") }),
  1959. /* @__PURE__ */ g.jsx(xe, { value: me.IN_FRONT_OF_TEXT, children: n.t("image-text-wrap.inFrontText") })
  1960. ] }) }) }),
  1961. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-text-wrap.wrapText") }) }) }),
  1962. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelRow), children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn), children: /* @__PURE__ */ g.jsxs(Un, { disabled: m, value: x, onChange: j, direction: "horizontal", children: [
  1963. /* @__PURE__ */ g.jsx(xe, { value: $e.BOTH_SIDES, children: n.t("image-text-wrap.bothSide") }),
  1964. /* @__PURE__ */ g.jsx(xe, { value: $e.LEFT, children: n.t("image-text-wrap.leftOnly") }),
  1965. /* @__PURE__ */ g.jsx(xe, { value: $e.RIGHT, children: n.t("image-text-wrap.rightOnly") })
  1966. ] }) }) }),
  1967. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSubtitle), children: /* @__PURE__ */ g.jsx("div", { children: n.t("image-text-wrap.distanceFromText") }) }) }),
  1968. /* @__PURE__ */ g.jsxs("div", { className: f.imageCommonPanelRow, children: [
  1969. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1970. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-text-wrap.top") }) }),
  1971. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1972. Be,
  1973. {
  1974. min: Qe,
  1975. max: en,
  1976. disabled: h,
  1977. precision: 1,
  1978. value: T.distT,
  1979. onChange: (_) => {
  1980. H(_, "distT");
  1981. },
  1982. className: f.imageCommonPanelInput
  1983. }
  1984. ) }) })
  1985. ] }) }),
  1986. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  1987. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-text-wrap.left") }) }),
  1988. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  1989. Be,
  1990. {
  1991. min: Qe,
  1992. max: en,
  1993. disabled: w,
  1994. precision: 1,
  1995. value: T.distL,
  1996. onChange: (_) => {
  1997. H(_, "distL");
  1998. },
  1999. className: f.imageCommonPanelInput
  2000. }
  2001. ) }) })
  2002. ] }) })
  2003. ] }),
  2004. /* @__PURE__ */ g.jsxs("div", { className: f.imageCommonPanelRow, children: [
  2005. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  2006. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-text-wrap.bottom") }) }),
  2007. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  2008. Be,
  2009. {
  2010. min: Qe,
  2011. max: en,
  2012. disabled: h,
  2013. precision: 1,
  2014. value: T.distB,
  2015. onChange: (_) => {
  2016. H(_, "distB");
  2017. },
  2018. className: f.imageCommonPanelInput
  2019. }
  2020. ) }) })
  2021. ] }) }),
  2022. /* @__PURE__ */ g.jsx("div", { className: V(f.imageCommonPanelColumn, f.imageCommonPanelSpan2), children: /* @__PURE__ */ g.jsxs("label", { children: [
  2023. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: n.t("image-text-wrap.right") }) }),
  2024. /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelRow, children: /* @__PURE__ */ g.jsx("div", { className: f.imageCommonPanelColumn, children: /* @__PURE__ */ g.jsx(
  2025. Be,
  2026. {
  2027. min: Qe,
  2028. max: en,
  2029. disabled: w,
  2030. precision: 1,
  2031. value: T.distR,
  2032. onChange: (_) => {
  2033. H(_, "distR");
  2034. },
  2035. className: f.imageCommonPanelInput
  2036. }
  2037. ) }) })
  2038. ] }) })
  2039. ] })
  2040. ] });
  2041. }, fr = () => {
  2042. const i = pe(ve), e = i.getFocusDrawings(), [n, t] = ie(e);
  2043. return Sn(() => {
  2044. const r = i.focus$.subscribe((o) => {
  2045. t(o);
  2046. });
  2047. return () => {
  2048. r.unsubscribe();
  2049. };
  2050. }, []), !!(n != null && n.length) && /* @__PURE__ */ g.jsxs("div", { className: f.imageCommonPanel, children: [
  2051. /* @__PURE__ */ g.jsx(Zt, { drawings: n, hasAlign: !1, hasCropper: !1, hasGroup: !1, hasTransform: !1 }),
  2052. /* @__PURE__ */ g.jsx(ur, { drawings: n }),
  2053. /* @__PURE__ */ g.jsx(mr, { drawings: n })
  2054. ] });
  2055. }, vt = "addition-and-subtraction-single", It = "doc.menu.image", _t = ut.id, hr = (i) => {
  2056. const e = i.get(_n), n = i.get(J);
  2057. return new xi((t) => {
  2058. const r = e.textSelection$.subscribe(() => {
  2059. var s;
  2060. const o = e.getActiveTextRange();
  2061. if (o) {
  2062. const { segmentId: a, startOffset: d, endOffset: c } = o, l = n.getCurrentUniverDocInstance(), u = (s = l == null ? void 0 : l.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : s.tables;
  2063. if (u && u.length && u.some((m) => {
  2064. const { startIndex: p, endIndex: h } = m;
  2065. return d >= p && d < h || c >= p && c < h;
  2066. })) {
  2067. t.next(!0);
  2068. return;
  2069. }
  2070. } else {
  2071. t.next(!0);
  2072. return;
  2073. }
  2074. t.next(!1);
  2075. });
  2076. return () => r.unsubscribe();
  2077. });
  2078. };
  2079. function pr(i) {
  2080. return {
  2081. id: It,
  2082. type: Xn.SUBITEMS,
  2083. icon: vt,
  2084. tooltip: "docImage.title",
  2085. disabled$: hr(i),
  2086. hidden$: Kn(i, Te.UNIVER_DOC)
  2087. };
  2088. }
  2089. function wr(i) {
  2090. return {
  2091. id: _t,
  2092. title: "docImage.upload.float",
  2093. type: Xn.BUTTON,
  2094. hidden$: Kn(i, Te.UNIVER_DOC)
  2095. };
  2096. }
  2097. const vr = {
  2098. [gi.LAYOUT]: {
  2099. [It]: {
  2100. order: 0,
  2101. menuItemFactory: pr,
  2102. [_t]: {
  2103. order: 0,
  2104. menuItemFactory: wr
  2105. }
  2106. }
  2107. }
  2108. };
  2109. function Ye(i) {
  2110. return i.getContextValue(At) && i.getContextValue(tn);
  2111. }
  2112. const Ir = {
  2113. id: Ke.id,
  2114. description: "shortcut.doc.drawing-move-down",
  2115. group: "4_doc-drawing-view",
  2116. binding: Fe.ARROW_DOWN,
  2117. priority: 100,
  2118. preconditions: Ye,
  2119. staticParameters: {
  2120. direction: ue.DOWN
  2121. }
  2122. }, _r = {
  2123. id: Ke.id,
  2124. description: "shortcut.doc.drawing-move-up",
  2125. group: "4_doc-drawing-view",
  2126. binding: Fe.ARROW_UP,
  2127. priority: 100,
  2128. preconditions: Ye,
  2129. staticParameters: {
  2130. direction: ue.UP
  2131. }
  2132. }, Sr = {
  2133. id: Ke.id,
  2134. description: "shortcut.doc.drawing-move-left",
  2135. group: "4_doc-drawing-view",
  2136. binding: Fe.ARROW_LEFT,
  2137. priority: 100,
  2138. preconditions: Ye,
  2139. staticParameters: {
  2140. direction: ue.LEFT
  2141. }
  2142. }, Cr = {
  2143. id: Ke.id,
  2144. description: "shortcut.doc.drawing-move-right",
  2145. group: "4_doc-drawing-view",
  2146. binding: Fe.ARROW_RIGHT,
  2147. priority: 100,
  2148. preconditions: Ye,
  2149. staticParameters: {
  2150. direction: ue.RIGHT
  2151. }
  2152. }, Dr = {
  2153. id: ct.id,
  2154. description: "shortcut.doc.drawing-delete",
  2155. group: "4_doc-drawing-view",
  2156. // when focusing on any other input tag do not trigger this shortcut
  2157. preconditions: Ye,
  2158. binding: Fe.DELETE,
  2159. mac: Fe.BACKSPACE
  2160. };
  2161. var Or = Object.defineProperty, xr = Object.getOwnPropertyDescriptor, Pr = (i, e, n, t) => {
  2162. for (var r = t > 1 ? void 0 : t ? xr(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  2163. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  2164. return t && r && Or(e, n, r), r;
  2165. }, nn = (i, e) => (n, t) => e(n, t, i);
  2166. let an = class extends Xe {
  2167. constructor(i, e, n, t) {
  2168. super(), this._componentManager = i, this._menuManagerService = e, this._commandService = n, this._shortcutService = t, this._init();
  2169. }
  2170. _initCustomComponents() {
  2171. const i = this._componentManager;
  2172. this.disposeWithMe(i.register(vt, at)), this.disposeWithMe(i.register(ft, fr));
  2173. }
  2174. _initMenus() {
  2175. this._menuManagerService.mergeMenu(vr);
  2176. }
  2177. _initCommands() {
  2178. [
  2179. ut,
  2180. lt,
  2181. et,
  2182. nt,
  2183. tt,
  2184. qe,
  2185. it,
  2186. rt,
  2187. Cn,
  2188. ht,
  2189. Xi,
  2190. pt,
  2191. dt,
  2192. mt,
  2193. Ke,
  2194. ct,
  2195. gt
  2196. ].forEach((i) => this.disposeWithMe(this._commandService.registerCommand(i)));
  2197. }
  2198. _initShortcuts() {
  2199. [
  2200. // sheet drawing shortcuts
  2201. Ir,
  2202. _r,
  2203. Sr,
  2204. Cr,
  2205. Dr
  2206. ].forEach((i) => {
  2207. this.disposeWithMe(this._shortcutService.registerShortcut(i));
  2208. });
  2209. }
  2210. _init() {
  2211. this._initCommands(), this._initCustomComponents(), this._initMenus(), this._initShortcuts();
  2212. }
  2213. };
  2214. an = Pr([
  2215. nn(0, we(mi)),
  2216. nn(1, ui),
  2217. nn(2, z),
  2218. nn(3, fi)
  2219. ], an);
  2220. var Tr = Object.defineProperty, yr = Object.getOwnPropertyDescriptor, br = (i, e, n, t) => {
  2221. for (var r = t > 1 ? void 0 : t ? yr(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  2222. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  2223. return t && r && Tr(e, n, r), r;
  2224. }, Ve = (i, e) => (n, t) => e(n, t, i);
  2225. let cn = class extends jt {
  2226. constructor(e, n, t, r, o) {
  2227. super();
  2228. Se(this, "_initImagePopupMenu", /* @__PURE__ */ new Set());
  2229. this._drawingManagerService = e, this._canvasPopManagerService = n, this._renderManagerService = t, this._univerInstanceService = r, this._contextService = o, this._init();
  2230. }
  2231. _init() {
  2232. this._univerInstanceService.getCurrentTypeOfUnit$(Te.UNIVER_DOC).pipe(An(this.dispose$)).subscribe((e) => this._create(e)), this._univerInstanceService.getTypeOfUnitDisposed$(Te.UNIVER_DOC).pipe(An(this.dispose$)).subscribe((e) => this._dispose(e)), this._univerInstanceService.getAllUnitsForType(Te.UNIVER_DOC).forEach((e) => this._create(e));
  2233. }
  2234. _dispose(e) {
  2235. const n = e.getUnitId();
  2236. this._renderManagerService.removeRender(n);
  2237. }
  2238. _create(e) {
  2239. if (!e)
  2240. return;
  2241. const n = e.getUnitId();
  2242. this._renderManagerService.has(n) && !this._initImagePopupMenu.has(n) && (this._popupMenuListener(n), this._initImagePopupMenu.add(n));
  2243. }
  2244. _hasCropObject(e) {
  2245. const n = e.getAllObjects();
  2246. for (const t of n)
  2247. if (t instanceof Qt)
  2248. return !0;
  2249. return !1;
  2250. }
  2251. // eslint-disable-next-line max-lines-per-function
  2252. _popupMenuListener(e) {
  2253. var o;
  2254. const n = (o = this._renderManagerService.getRenderById(e)) == null ? void 0 : o.scene;
  2255. if (!n)
  2256. return;
  2257. const t = n.getTransformerByCreate();
  2258. if (!t)
  2259. return;
  2260. const r = [];
  2261. this.disposeWithMe(
  2262. Ae(
  2263. t.createControl$.subscribe(() => {
  2264. if (this._hasCropObject(n))
  2265. return;
  2266. const s = t.getSelectedObjectMap();
  2267. if (r.forEach((w) => w.dispose()), r.length = 0, s.size > 1)
  2268. return;
  2269. const a = s.values().next().value;
  2270. if (!a)
  2271. return;
  2272. const d = a.oKey, c = this._drawingManagerService.getDrawingOKey(d);
  2273. if (!c)
  2274. return;
  2275. const { unitId: l, subUnitId: u, drawingId: m } = c, p = this._canvasPopManagerService.attachPopupToObject(
  2276. a,
  2277. {
  2278. componentKey: ei,
  2279. direction: "horizontal",
  2280. offset: [2, 0],
  2281. extraProps: {
  2282. menuItems: this._getImageMenuItems(l, u, m)
  2283. }
  2284. },
  2285. l
  2286. );
  2287. r.push(this.disposeWithMe(p)), !this._drawingManagerService.getFocusDrawings().find((w) => w.unitId === l && w.subUnitId === u && w.drawingId === m) && this._drawingManagerService.focusDrawing([{
  2288. unitId: l,
  2289. subUnitId: u,
  2290. drawingId: m
  2291. }]);
  2292. })
  2293. )
  2294. ), this.disposeWithMe(
  2295. Ae(
  2296. t.clearControl$.subscribe(() => {
  2297. r.forEach((s) => s.dispose()), r.length = 0, this._contextService.setContextValue(tn, !1), this._drawingManagerService.focusDrawing(null);
  2298. })
  2299. )
  2300. ), this.disposeWithMe(
  2301. Ae(
  2302. t.changing$.subscribe(() => {
  2303. r.forEach((s) => s.dispose()), r.length = 0;
  2304. })
  2305. )
  2306. ), this.disposeWithMe(
  2307. Ae(
  2308. t.changeStart$.subscribe(() => {
  2309. r.forEach((s) => s.dispose()), r.length = 0;
  2310. })
  2311. )
  2312. );
  2313. }
  2314. _getImageMenuItems(e, n, t) {
  2315. return [
  2316. {
  2317. label: "image-popup.edit",
  2318. index: 0,
  2319. commandId: pt.id,
  2320. commandParams: { unitId: e, subUnitId: n, drawingId: t },
  2321. disable: !!Lt.includes(e)
  2322. },
  2323. {
  2324. label: "image-popup.delete",
  2325. index: 1,
  2326. commandId: Cn.id,
  2327. commandParams: { unitId: e, drawings: [{ unitId: e, subUnitId: n, drawingId: t }] },
  2328. disable: !1
  2329. },
  2330. {
  2331. label: "image-popup.crop",
  2332. index: 2,
  2333. commandId: ni.id,
  2334. commandParams: { unitId: e, subUnitId: n, drawingId: t },
  2335. disable: !0
  2336. // TODO: @JOCS, feature is not ready.
  2337. },
  2338. {
  2339. label: "image-popup.reset",
  2340. index: 3,
  2341. commandId: ti.id,
  2342. commandParams: [{ unitId: e, subUnitId: n, drawingId: t }],
  2343. disable: !0
  2344. // TODO: @JOCS, feature is not ready.
  2345. }
  2346. ];
  2347. }
  2348. };
  2349. cn = br([
  2350. Ve(0, ve),
  2351. Ve(1, we(Si)),
  2352. Ve(2, Q),
  2353. Ve(3, J),
  2354. Ve(4, zn)
  2355. ], cn);
  2356. var Mr = Object.defineProperty, Rr = Object.getOwnPropertyDescriptor, Nr = (i, e, n, t) => {
  2357. for (var r = t > 1 ? void 0 : t ? Rr(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  2358. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  2359. return t && r && Mr(e, n, r), r;
  2360. }, Ee = (i, e) => (n, t) => e(n, t, i);
  2361. let vn = class extends Xe {
  2362. constructor(e, n, t, r, o, s, a, d) {
  2363. super();
  2364. Se(this, "_liquid", new qn());
  2365. this._context = e, this._docSkeletonManagerService = n, this._commandService = t, this._editorService = r, this._drawingManagerService = o, this._docRefreshDrawingsService = s, this._univerInstanceService = a, this._lifecycleService = d, this._initialize(), this._commandExecutedListener();
  2366. }
  2367. _initialize() {
  2368. this._initialRenderRefresh(), this._drawingInitializeListener(), this._initResize();
  2369. }
  2370. _initialRenderRefresh() {
  2371. this._docSkeletonManagerService.currentSkeleton$.subscribe((e) => {
  2372. e != null && this._refreshDrawing(e);
  2373. }), this._docRefreshDrawingsService.refreshDrawings$.subscribe((e) => {
  2374. e != null && this._refreshDrawing(e);
  2375. });
  2376. }
  2377. _commandExecutedListener() {
  2378. const e = [Z.id, Di.id];
  2379. this.disposeWithMe(
  2380. this._commandService.onCommandExecuted((n) => {
  2381. if (e.includes(n.id)) {
  2382. const t = n.params, { unitId: r } = t, { unitId: o, mainComponent: s } = this._context;
  2383. if (r !== o)
  2384. return;
  2385. const a = this._docSkeletonManagerService.getSkeleton();
  2386. if (a == null)
  2387. return;
  2388. if (this._editorService.isEditor(o) && o !== Ut) {
  2389. s == null || s.makeDirty();
  2390. return;
  2391. }
  2392. this._refreshDrawing(a);
  2393. }
  2394. })
  2395. );
  2396. }
  2397. _initResize() {
  2398. this.disposeWithMe(
  2399. Ft(this._context.engine.onTransformChange$).pipe(
  2400. jn((e) => e.type === ai.resize),
  2401. Yn(16)
  2402. ).subscribe(() => {
  2403. var t;
  2404. const e = this._docSkeletonManagerService.getSkeleton(), { scene: n } = this._context;
  2405. (t = n.getTransformer()) == null || t.refreshControls(), this._refreshDrawing(e);
  2406. })
  2407. );
  2408. }
  2409. _refreshDrawing(e) {
  2410. var O, D;
  2411. const n = e == null ? void 0 : e.getSkeletonData(), { mainComponent: t, unitId: r } = this._context, o = t;
  2412. if (!n)
  2413. return;
  2414. const { left: s, top: a, pageLayoutType: d, pageMarginLeft: c, pageMarginTop: l } = o, { pages: u, skeHeaders: m, skeFooters: p } = n, h = {};
  2415. this._liquid.reset();
  2416. for (let x = 0, b = u.length; x < b; x++) {
  2417. const T = u[x], { headerId: N, footerId: B, pageWidth: R } = T;
  2418. if (N) {
  2419. const I = (O = m.get(N)) == null ? void 0 : O.get(R);
  2420. I && this._calculateDrawingPosition(
  2421. r,
  2422. I,
  2423. s,
  2424. a,
  2425. h,
  2426. I.marginTop,
  2427. T.marginLeft
  2428. );
  2429. }
  2430. if (B) {
  2431. const I = (D = p.get(B)) == null ? void 0 : D.get(R);
  2432. I && this._calculateDrawingPosition(
  2433. r,
  2434. I,
  2435. s,
  2436. a,
  2437. h,
  2438. T.pageHeight - T.marginBottom + I.marginTop,
  2439. T.marginLeft
  2440. );
  2441. }
  2442. this._calculateDrawingPosition(r, T, s, a, h, T.marginTop, T.marginLeft), this._liquid.translatePage(T, d, c, l);
  2443. }
  2444. const v = Object.values(h), w = v.filter((x) => !x.isMultiTransform), S = v.filter((x) => x.isMultiTransform);
  2445. w.length > 0 && this._drawingManagerService.refreshTransform(w), this._handleMultiDrawingsTransform(S);
  2446. }
  2447. _handleMultiDrawingsTransform(e) {
  2448. const { scene: n, unitId: t } = this._context, r = n.getTransformerByCreate();
  2449. e.forEach((d) => {
  2450. const c = this._drawingManagerService.getDrawingByParam(d);
  2451. c != null && (c.transform = d.transform, c.transforms = d.transforms, c.isMultiTransform = d.isMultiTransform);
  2452. });
  2453. const s = [...r.getSelectedObjectMap().keys()], a = Object.values(this._drawingManagerService.getDrawingData(t, t)).filter((d) => d.isMultiTransform === re.TRUE);
  2454. this._drawingManagerService.removeNotification(a), e.length > 0 && this._drawingManagerService.addNotification(e);
  2455. for (const d of s) {
  2456. const c = n.getObject(d);
  2457. c && r.setSelectedControl(c);
  2458. }
  2459. }
  2460. _calculateDrawingPosition(e, n, t, r, o, s, a) {
  2461. const { skeDrawings: d } = n;
  2462. this._liquid.translatePagePadding({
  2463. marginTop: s,
  2464. marginLeft: a
  2465. }), d.forEach((c) => {
  2466. const { aLeft: l, aTop: u, height: m, width: p, angle: h, drawingId: v, drawingOrigin: w } = c, S = w.layoutType === k.WRAP_NONE && w.behindDoc === re.TRUE, { isMultiTransform: O = re.FALSE } = w, D = {
  2467. left: l + t + this._liquid.x,
  2468. top: u + r + this._liquid.y,
  2469. width: p,
  2470. height: m,
  2471. angle: h
  2472. };
  2473. o[v] == null ? o[v] = {
  2474. unitId: e,
  2475. subUnitId: e,
  2476. drawingId: v,
  2477. behindText: S,
  2478. transform: D,
  2479. transforms: [D],
  2480. isMultiTransform: O
  2481. } : O === re.TRUE && o[v].transforms.push(D);
  2482. }), this._liquid.restorePagePadding({
  2483. marginTop: s,
  2484. marginLeft: a
  2485. });
  2486. }
  2487. _drawingInitializeListener() {
  2488. const e = () => {
  2489. const n = this._docSkeletonManagerService.getSkeleton();
  2490. n != null && (this._refreshDrawing(n), this._drawingManagerService.initializeNotification(this._context.unitId));
  2491. };
  2492. this._lifecycleService.stage === Pn.Steady ? setTimeout(() => {
  2493. e();
  2494. }, 1e3) : this._lifecycleService.lifecycle$.pipe(jn((n) => n === Pn.Steady)).subscribe(e);
  2495. }
  2496. };
  2497. vn = Nr([
  2498. Ee(1, we(oe)),
  2499. Ee(2, z),
  2500. Ee(3, Ci),
  2501. Ee(4, ve),
  2502. Ee(5, we(gn)),
  2503. Ee(6, J),
  2504. Ee(7, we(Bt))
  2505. ], vn);
  2506. var St = Object.defineProperty, Er = Object.getOwnPropertyDescriptor, Ar = (i, e, n) => e in i ? St(i, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : i[e] = n, jr = (i, e, n, t) => {
  2507. for (var r = t > 1 ? void 0 : t ? Er(e, n) : e, o = i.length - 1, s; o >= 0; o--)
  2508. (s = i[o]) && (r = (t ? s(e, n, r) : s(r)) || r);
  2509. return t && r && St(e, n, r), r;
  2510. }, wn = (i, e) => (n, t) => e(n, t, i), Ct = (i, e, n) => Ar(i, typeof e != "symbol" ? e + "" : e, n);
  2511. const Lr = "DOC_DRAWING_UI_PLUGIN";
  2512. let dn = class extends Wt {
  2513. constructor(i = Fn, e, n, t) {
  2514. super(), this._config = i, this._injector = e, this._renderManagerSrv = n, this._configService = t;
  2515. const { ...r } = Gt(
  2516. {},
  2517. Fn,
  2518. this._config
  2519. );
  2520. this._configService.setConfig(bi, r);
  2521. }
  2522. onStarting() {
  2523. [
  2524. [an],
  2525. [cn],
  2526. [on],
  2527. [rn],
  2528. [gn]
  2529. ].forEach((e) => this._injector.add(e));
  2530. }
  2531. onReady() {
  2532. [
  2533. [sn],
  2534. [vn]
  2535. ].forEach((i) => this._renderManagerSrv.registerRenderModule(Te.UNIVER_DOC, i)), this._injector.get(rn), this._injector.get(an), this._injector.get(on);
  2536. }
  2537. onRendered() {
  2538. this._injector.get(cn);
  2539. }
  2540. };
  2541. Ct(dn, "type", Te.UNIVER_DOC);
  2542. Ct(dn, "pluginName", Lr);
  2543. dn = jr([
  2544. kt(ii, Jt, $t, hi),
  2545. wn(1, we(Ht)),
  2546. wn(2, Q),
  2547. wn(3, Vt)
  2548. ], dn);
  2549. export {
  2550. Xi as ClearDocDrawingTransformerOperation,
  2551. It as DOCS_IMAGE_MENU_ID,
  2552. ct as DeleteDocDrawingsCommand,
  2553. pt as EditDocDrawingOperation,
  2554. dt as GroupDocDrawingCommand,
  2555. lt as InsertDocDrawingCommand,
  2556. ut as InsertDocImageCommand,
  2557. Ke as MoveDocDrawingsCommand,
  2558. Cn as RemoveDocDrawingCommand,
  2559. gt as SetDocDrawingArrangeCommand,
  2560. ht as SidebarDocDrawingOperation,
  2561. mt as UngroupDocDrawingCommand,
  2562. dn as UniverDocsDrawingUIPlugin
  2563. };