chunk-MIOQ566M.js 451 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646
  1. import {
  2. $e,
  3. $l,
  4. Ae,
  5. Al,
  6. Dl,
  7. Fa,
  8. He,
  9. I1,
  10. Le,
  11. Li,
  12. P1,
  13. Pi,
  14. Pl,
  15. Ql,
  16. Wt,
  17. Xl,
  18. Yl,
  19. _1,
  20. bi,
  21. c3,
  22. d3,
  23. f1,
  24. it,
  25. jl,
  26. l1,
  27. m1,
  28. mr,
  29. n1,
  30. n3 as n32,
  31. ql,
  32. rt,
  33. vr,
  34. yi
  35. } from "./chunk-POAJ2YNP.js";
  36. import {
  37. $O,
  38. BO,
  39. Gf,
  40. Po,
  41. i_,
  42. r_,
  43. um
  44. } from "./chunk-GBYP4PB2.js";
  45. import {
  46. D,
  47. J,
  48. M,
  49. j,
  50. m,
  51. te
  52. } from "./chunk-PZD7N4BC.js";
  53. import {
  54. $,
  55. A1,
  56. B6,
  57. BS,
  58. C1,
  59. E2,
  60. ES,
  61. Ex,
  62. FS,
  63. G1,
  64. Jv,
  65. LS,
  66. Mv,
  67. PS,
  68. S3,
  69. SS,
  70. T3,
  71. U4,
  72. V1,
  73. VS,
  74. Y2,
  75. YS,
  76. Yx,
  77. b8,
  78. g1,
  79. gf,
  80. i0,
  81. i3,
  82. ke,
  83. l0,
  84. n3,
  85. p1,
  86. q3,
  87. s7,
  88. uT,
  89. v0,
  90. v8,
  91. vf,
  92. w3,
  93. wS
  94. } from "./chunk-2MK3Q52E.js";
  95. import {
  96. Ag,
  97. B0,
  98. BC,
  99. BehaviorSubject,
  100. Bt,
  101. CR,
  102. Ct,
  103. DR,
  104. Dt,
  105. Es,
  106. FR,
  107. Fe,
  108. Ft,
  109. Hd,
  110. IE,
  111. J0,
  112. Ke,
  113. Mf,
  114. Mi,
  115. Mt,
  116. NC,
  117. Nr,
  118. Nt,
  119. OR,
  120. O_,
  121. Observable,
  122. Ot,
  123. Pe,
  124. Pt,
  125. Q0,
  126. Qr,
  127. RE,
  128. RR,
  129. Ra,
  130. S0,
  131. SE,
  132. Sg,
  133. Subject,
  134. Vr,
  135. W0,
  136. Wd,
  137. Wp,
  138. Xp,
  139. Xt,
  140. ZC,
  141. Ze,
  142. Zp,
  143. _n,
  144. am,
  145. animationFrameScheduler,
  146. ar,
  147. bufferTime,
  148. ce,
  149. cn,
  150. combineLatest,
  151. distinctUntilChanged,
  152. el,
  153. em,
  154. en,
  155. filter,
  156. fromEvent,
  157. fs,
  158. gm,
  159. gt,
  160. hn,
  161. iu,
  162. k0,
  163. kE,
  164. ku,
  165. ln,
  166. lr,
  167. map,
  168. merge,
  169. ml,
  170. mn,
  171. nt,
  172. nu,
  173. oE,
  174. om,
  175. ot,
  176. ps,
  177. qC,
  178. qt,
  179. re,
  180. rm,
  181. sm,
  182. st,
  183. su,
  184. switchMap,
  185. take,
  186. takeUntil,
  187. throttleTime,
  188. tm,
  189. tn,
  190. vl,
  191. we,
  192. wu,
  193. xo,
  194. yR,
  195. z0,
  196. zd
  197. } from "./chunk-23V3HWTR.js";
  198. import {
  199. require_react
  200. } from "./chunk-GNR2UJZM.js";
  201. import {
  202. __toESM
  203. } from "./chunk-2LSFTFF7.js";
  204. // node_modules/.pnpm/@univerjs+docs-ui@0.5.5_@grpc+grpc-js@1.13.4_react-dom@18.3.1_react@18.3.1_rxjs@7.8.1_typescript@5.4.5/node_modules/@univerjs/docs-ui/lib/es/index.js
  205. var Hc = __toESM(require_react());
  206. var import_react = __toESM(require_react());
  207. var Fa2 = Object.defineProperty;
  208. var Ha = (n, e, t) => e in n ? Fa2(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
  209. var x = (n, e, t) => Ha(n, typeof e != "symbol" ? e + "" : e, t);
  210. var $c = Object.defineProperty;
  211. var eA = Object.getOwnPropertyDescriptor;
  212. var tA = (n, e, t, o) => {
  213. for (var s = o > 1 ? void 0 : o ? eA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  214. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  215. return o && s && $c(e, t, s), s;
  216. };
  217. var br = (n, e) => (t, o) => e(t, o, n);
  218. function nA(n, e) {
  219. var i, a;
  220. const { startOffset: t, endOffset: o } = n, s = [];
  221. let r = -1;
  222. for (let c = 0; c < e.length; c++) {
  223. const A = e[c], l = e[c - 1], { startIndex: d } = A;
  224. t > r && t <= d || o > r && o <= d ? s.push({
  225. ...A,
  226. paragraphStart: ((i = l == null ? void 0 : l.startIndex) != null ? i : -1) + 1,
  227. paragraphEnd: A.startIndex
  228. }) : d >= t && d <= o && s.push({
  229. ...A,
  230. paragraphStart: ((a = l == null ? void 0 : l.startIndex) != null ? a : -1) + 1,
  231. paragraphEnd: A.startIndex
  232. }), r = d;
  233. }
  234. return s;
  235. }
  236. var Et = class extends nt {
  237. constructor(e, t) {
  238. super();
  239. x(this, "_matches", /* @__PURE__ */ new Map());
  240. this._univerInstanceService = e, this._textSelectionManagerService = t;
  241. }
  242. registerAutoFormat(e) {
  243. const t = this._matches.get(e.id);
  244. return t ? (t.push(e), t.sort((o, s) => {
  245. var r, i;
  246. return ((r = s.priority) != null ? r : 0) - ((i = o.priority) != null ? i : 0);
  247. })) : this._matches.set(e.id, [e]), Ze(() => {
  248. const o = this._matches.get(e.id);
  249. if (o) {
  250. const s = o.findIndex((r) => r === e);
  251. s >= 0 && o.splice(s, 1);
  252. }
  253. });
  254. }
  255. onAutoFormat(e, t) {
  256. var a, c, A, l, d, h, u;
  257. const o = (a = this._matches.get(e)) != null ? a : [], s = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC), r = this._textSelectionManagerService.getDocRanges(), i = (c = r.find((g) => g.isActive)) != null ? c : r[0];
  258. if (s && i) {
  259. const g = s.getSelfOrHeaderFooterModel(i.segmentId), f = {
  260. unit: g,
  261. selection: i,
  262. isBody: !i.segmentId,
  263. paragraphs: nA(i, (l = (A = g.getBody()) == null ? void 0 : A.paragraphs) != null ? l : []),
  264. customRanges: st.customRange.getCustomRangesInterestsWithSelection(i, (h = (d = g.getBody()) == null ? void 0 : d.customRanges) != null ? h : []),
  265. commandId: e,
  266. commandParams: t
  267. }, p = o.find((m2) => m2.match(f));
  268. return (u = p == null ? void 0 : p.getMutations(f)) != null ? u : [];
  269. }
  270. return [];
  271. }
  272. };
  273. Et = tA([
  274. br(0, _n),
  275. br(1, ot(m))
  276. ], Et);
  277. var oA = {
  278. undo: true,
  279. redo: true,
  280. // Undo redo
  281. font: true,
  282. // 'font'
  283. fontSize: true,
  284. // 'Font size'
  285. bold: true,
  286. // 'Bold (Ctrl+B)'
  287. italic: true,
  288. // 'Italic (Ctrl+I)'
  289. strikethrough: true,
  290. // 'Strikethrough (Alt+Shift+5)'
  291. underline: true,
  292. // 'Underline (Alt+Shift+6)'
  293. textColor: true,
  294. // 'Text color'
  295. fillColor: true,
  296. // 'Cell color'
  297. horizontalAlignMode: true,
  298. // 'Horizontal alignment'
  299. verticalAlignMode: true,
  300. // 'Vertical alignment'
  301. textWrapMode: true,
  302. // 'Wrap mode'
  303. textRotateMode: true
  304. // 'Text Rotation Mode'
  305. };
  306. var sA = {
  307. outerLeft: false,
  308. outerRight: false,
  309. header: true,
  310. footer: true,
  311. innerLeft: false,
  312. innerRight: false,
  313. frozenHeaderLT: false,
  314. frozenHeaderRT: false,
  315. frozenHeaderLM: false,
  316. frozenContent: false,
  317. infoBar: true,
  318. toolbar: true
  319. };
  320. var rA = "DOC_UI_PLUGIN";
  321. var We = ((n) => (n.MAIN = "__Document_Render_Main__", n.BACKGROUND = "__Document_Render_Background__", n))(We || {});
  322. var Xe = ((n) => (n.VIEW_MAIN = "viewMain", n.VIEW_TOP = "viewTop", n.VIEW_LEFT = "viewLeft", n.VIEW_LEFT_TOP = "viewLeftTop", n))(Xe || {});
  323. var iA = 0;
  324. var Oo = 2;
  325. var aA = 4;
  326. var xr = 10;
  327. var ef = "normalTextSelectionPluginName";
  328. function rt2(n) {
  329. const { mainComponent: e, scene: t, engine: o, components: s } = n, r = e, i = s.get(We.BACKGROUND);
  330. return {
  331. document: r,
  332. docBackground: i,
  333. scene: t,
  334. engine: o
  335. };
  336. }
  337. function cA(n, e) {
  338. const t = n.getCurrentUnitForType(Fe.UNIVER_DOC);
  339. if (!t)
  340. return null;
  341. const o = t.getUnitId(), s = e.getRenderById(o);
  342. if (s == null)
  343. return;
  344. const { mainComponent: r, scene: i, engine: a, components: c } = s, A = r, l = c.get(We.BACKGROUND);
  345. return {
  346. document: A,
  347. docBackground: l,
  348. scene: i,
  349. engine: a
  350. };
  351. }
  352. function tf(n, e) {
  353. const t = e.getRenderById(n);
  354. if (t == null)
  355. return;
  356. const { mainComponent: o, scene: s, engine: r, components: i } = t, a = o, c = i.get(We.BACKGROUND);
  357. return {
  358. document: a,
  359. docBackground: c,
  360. scene: s,
  361. engine: r
  362. };
  363. }
  364. function AA(n) {
  365. const { unitId: e, ranges: t, id: o, type: s, segmentId: r } = n, i = {
  366. id: M.id,
  367. params: {
  368. unitId: e,
  369. actions: [],
  370. textRanges: void 0,
  371. // noHistory: true,
  372. segmentId: r
  373. }
  374. }, a = tn.getInstance(), c = st.customDecoration.add({ ranges: t, id: o, type: s });
  375. return i.params.actions = a.editOp(c.serialize()), i;
  376. }
  377. function nf(n, e) {
  378. const { segmentId: t, id: o, type: s, unitId: r } = e, i = n.get(m), a = n.get(_n), c = r ? a.getUnit(r, Fe.UNIVER_DOC) : a.getCurrentUnitForType(Fe.UNIVER_DOC);
  379. if (!c)
  380. return false;
  381. const A = c.getUnitId(), l = i.getTextRanges({ unitId: A, subUnitId: A });
  382. return !l || !c.getBody() ? false : AA(
  383. {
  384. unitId: A,
  385. ranges: l,
  386. id: o,
  387. type: s,
  388. segmentId: t
  389. }
  390. );
  391. }
  392. function of(n, e) {
  393. const { unitId: t, id: o, segmentId: s } = e, i = n.get(_n).getUnit(t);
  394. if (!i)
  395. return false;
  396. const a = {
  397. id: M.id,
  398. params: {
  399. unitId: t,
  400. actions: [],
  401. textRanges: void 0,
  402. // noHistory: true,
  403. segmentId: s
  404. }
  405. }, c = st.customDecoration.delete({ id: o, segmentId: s, documentDataModel: i });
  406. if (!c)
  407. return false;
  408. const A = tn.getInstance();
  409. return a.params.actions = A.editOp(c.serialize()), a;
  410. }
  411. function sf(n, e) {
  412. return e.some((t) => n.startIndex > t.startIndex && n.startIndex < t.endIndex);
  413. }
  414. function co(n, e, t, o) {
  415. const s = {
  416. st: 0,
  417. ed: 0,
  418. ts: t
  419. };
  420. for (let r = n.length - 1; r >= 0; r--) {
  421. const i = n[r], { st: a, ed: c } = i;
  422. e > a && e <= c && (s.st = a, s.ed = c, s.ts = {
  423. ...s.ts,
  424. ...i.ts
  425. });
  426. }
  427. if (e === 0) {
  428. const r = n == null ? void 0 : n[0];
  429. r && r.st === 0 && (s.ts = {
  430. ...s.ts,
  431. ...r.ts
  432. });
  433. }
  434. return o && (s.ts = {
  435. ...s.ts,
  436. ...o
  437. }), s;
  438. }
  439. function Os(n, e, t) {
  440. if (t) {
  441. const s = n.find((r) => e >= r.startIndex && e <= r.endIndex + 1);
  442. return s != null && s.wholeEntity ? null : s;
  443. }
  444. const o = n.find((s) => e > s.startIndex && e <= s.endIndex);
  445. return o != null && o.wholeEntity ? null : o;
  446. }
  447. function Ts(n, e) {
  448. return n.filter((t) => e > t.startIndex && e <= t.endIndex);
  449. }
  450. function rf(n) {
  451. return {
  452. left: n.positionH.posOffset,
  453. top: n.positionV.posOffset,
  454. width: n.size.width,
  455. height: n.size.height
  456. };
  457. }
  458. function af(n, e = 0, t = 0) {
  459. return {
  460. size: {
  461. width: n.width,
  462. height: n.height
  463. },
  464. positionH: {
  465. relativeFrom: om.MARGIN,
  466. posOffset: (n.left || 0) - e
  467. },
  468. positionV: {
  469. relativeFrom: am.PAGE,
  470. posOffset: (n.top || 0) - t
  471. },
  472. angle: n.angle || 0
  473. };
  474. }
  475. function lA(n, e, t) {
  476. const o = W0(Pt), s = W0(it), r = (0, import_react.useMemo)(() => qt(4), []);
  477. (0, import_react.useEffect)(() => {
  478. if (!t || !n || !e)
  479. return;
  480. const a = `sheet.operation.editor-${t.getEditorId()}-keyboard-${r}`, c = new Mi();
  481. return c.add(o.registerCommand({
  482. id: a,
  483. type: ar.OPERATION,
  484. handler(A, l) {
  485. const { keyCode: d, metaKey: h } = l;
  486. e.handler(d, h);
  487. }
  488. })), e.keyCodes.map((A) => ({
  489. id: a,
  490. binding: A.metaKey ? A.keyCode | A.metaKey : A.keyCode,
  491. preconditions: () => true,
  492. priority: 901,
  493. staticParameters: {
  494. eventType: vf.Keyboard,
  495. keyCode: A.keyCode,
  496. metaKey: A.metaKey
  497. }
  498. })).forEach((A) => {
  499. c.add(s.registerShortcut(A));
  500. }), () => {
  501. c.dispose();
  502. };
  503. }, [o, e, t, n, r, s]);
  504. }
  505. var dA = (n, e = true, t, o) => {
  506. const s = (0, import_react.useCallback)(() => {
  507. if (n) {
  508. const { scene: i, mainComponent: a } = n.render, c = n.render.with(D), { width: A, height: l } = n.getBoundingClientRect();
  509. c.getViewModel().getDataModel().updateDocumentDataPageSize(e ? 1 / 0 : A, 1 / 0), i.transformByState({
  510. width: A,
  511. height: l
  512. }), a == null || a.resize(A, l);
  513. }
  514. }, [n, e]), r = (0, import_react.useMemo)(() => S0(() => {
  515. var E, I;
  516. if (!t || !n || !t)
  517. return;
  518. const a = n.render.with(D).getSkeleton(), { scene: c, mainComponent: A } = n.render, l = c.getViewport(Xe.VIEW_MAIN), { actualWidth: d, actualHeight: h } = a.getActualSize(), { width: u, height: g } = n.getBoundingClientRect();
  519. let f = l == null ? void 0 : l.getScrollBar();
  520. const p = Math.max(d, u), m2 = Math.max(h, g);
  521. c.transformByState({
  522. width: p,
  523. height: m2
  524. }), A == null || A.resize(p, m2), e ? d > u ? (f == null ? l && new v8(l, {
  525. barSize: 8,
  526. enableVertical: false,
  527. enableHorizontal: true,
  528. minThumbSizeV: 8
  529. }) : l == null || l.resetCanvasSizeAndUpdateScroll(), o && (l == null || l.scrollToBarPos({ x: 1 / 0, y: 0 }))) : (f = null, l == null || l.scrollToBarPos({ x: 0, y: 0 }), (I = l == null ? void 0 : l.getScrollBar()) == null || I.dispose()) : h > g ? (f == null ? l && (f = new v8(l, {
  530. enableHorizontal: false,
  531. enableVertical: true,
  532. barSize: 8,
  533. minThumbSizeV: 8
  534. })) : l == null || l.resetCanvasSizeAndUpdateScroll(), o && (l == null || l.scrollToBarPos({ x: 0, y: 1 / 0 }))) : (f = null, l == null || l.scrollToBarPos({ x: 0, y: 0 }), (E = l == null ? void 0 : l.getScrollBar()) == null || E.dispose());
  535. }, 30), [n, t, e, o]);
  536. return (0, import_react.useEffect)(() => {
  537. if (t && n) {
  538. const i = setTimeout(() => {
  539. s(), r();
  540. }, 500);
  541. return () => {
  542. clearTimeout(i);
  543. };
  544. }
  545. }, [n, t, s, r]), (0, import_react.useEffect)(() => {
  546. if (t && n) {
  547. const i = n.input$.subscribe(() => {
  548. r();
  549. });
  550. return () => {
  551. i.unsubscribe();
  552. };
  553. }
  554. }, [n, t, r]), { resize: s, checkScrollBar: r };
  555. };
  556. var To = { exports: {} };
  557. var Kt = {};
  558. var Or;
  559. function uA() {
  560. if (Or)
  561. return Kt;
  562. Or = 1;
  563. var n = import_react.default, e = Symbol.for("react.element"), t = Symbol.for("react.fragment"), o = Object.prototype.hasOwnProperty, s = n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, r = { key: true, ref: true, __self: true, __source: true };
  564. function i(a, c, A) {
  565. var l, d = {}, h = null, u = null;
  566. A !== void 0 && (h = "" + A), c.key !== void 0 && (h = "" + c.key), c.ref !== void 0 && (u = c.ref);
  567. for (l in c)
  568. o.call(c, l) && !r.hasOwnProperty(l) && (d[l] = c[l]);
  569. if (a && a.defaultProps)
  570. for (l in c = a.defaultProps, c)
  571. d[l] === void 0 && (d[l] = c[l]);
  572. return { $$typeof: e, type: a, key: h, ref: u, props: d, _owner: s.current };
  573. }
  574. return Kt.Fragment = t, Kt.jsx = i, Kt.jsxs = i, Kt;
  575. }
  576. var Tr;
  577. function hA() {
  578. return Tr || (Tr = 1, To.exports = uA()), To.exports;
  579. }
  580. var w = hA();
  581. function ki(n) {
  582. var e, t, o = "";
  583. if (typeof n == "string" || typeof n == "number")
  584. o += n;
  585. else if (typeof n == "object")
  586. if (Array.isArray(n)) {
  587. var s = n.length;
  588. for (e = 0; e < s; e++)
  589. n[e] && (t = ki(n[e])) && (o && (o += " "), o += t);
  590. } else
  591. for (t in n)
  592. n[t] && (o && (o += " "), o += t);
  593. return o;
  594. }
  595. function Un() {
  596. for (var n, e, t = 0, o = "", s = arguments.length; t < s; t++)
  597. (n = arguments[t]) && (e = ki(n)) && (o && (o += " "), o += e);
  598. return o;
  599. }
  600. function ke2(n, e) {
  601. var o;
  602. return (o = n.get(Yx).getRenderById(e)) == null ? void 0 : o.with(D);
  603. }
  604. function le(n, e = "") {
  605. if (!e)
  606. return ["body"];
  607. const { headers: t, footers: o } = n.getSnapshot();
  608. if (t == null && o == null)
  609. throw new Error("Document data model must have headers or footers when update by segment id");
  610. if ((t == null ? void 0 : t[e]) != null)
  611. return ["headers", e, "body"];
  612. if ((o == null ? void 0 : o[e]) != null)
  613. return ["footers", e, "body"];
  614. throw new Error("Segment id not found in headers or footers");
  615. }
  616. var Vi = {
  617. id: "doc.command-replace-snapshot",
  618. type: ar.COMMAND,
  619. // eslint-disable-next-line max-lines-per-function, complexity
  620. handler: (n, e) => {
  621. const { unitId: t, snapshot: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(_n), c = n.get(Pt), A = n.get(m), l = a.getUnit(t, Fe.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(r).getSnapshot();
  622. if (l == null || d == null)
  623. return false;
  624. const { body: h, tableSource: u, footers: g, headers: f, lists: p, drawings: m2, drawingsOrder: E, documentStyle: I } = re.deepClone(o), {
  625. body: v,
  626. tableSource: R,
  627. footers: S,
  628. headers: C,
  629. lists: T,
  630. drawings: O,
  631. drawingsOrder: P,
  632. documentStyle: b
  633. } = d;
  634. if (h == null || v == null)
  635. return false;
  636. if (re.diffValue(h, v) && s)
  637. return A.replaceDocRanges(s, {
  638. unitId: t,
  639. subUnitId: t
  640. }, false), true;
  641. const B = {
  642. id: M.id,
  643. params: {
  644. unitId: t,
  645. actions: [],
  646. textRanges: s
  647. }
  648. };
  649. i && (B.params.options = i);
  650. const M2 = [], H = tn.getInstance();
  651. if (!re.diffValue(b, I)) {
  652. const D2 = H.replaceOp(["documentStyle"], b, I);
  653. D2 != null && M2.push(D2);
  654. }
  655. if (!re.diffValue(h, v)) {
  656. const D2 = H.replaceOp(["body"], v, h);
  657. D2 != null && M2.push(D2);
  658. }
  659. if (!re.diffValue(u, R)) {
  660. const D2 = H.replaceOp(["tableSource"], R, u);
  661. D2 != null && M2.push(D2);
  662. }
  663. if (!re.diffValue(g, S)) {
  664. const D2 = H.replaceOp(["footers"], S, g);
  665. D2 != null && M2.push(D2);
  666. }
  667. if (!re.diffValue(f, C)) {
  668. const D2 = H.replaceOp(["headers"], C, f);
  669. D2 != null && M2.push(D2);
  670. }
  671. if (!re.diffValue(p, T)) {
  672. const D2 = H.replaceOp(["lists"], T, p);
  673. D2 != null && M2.push(D2);
  674. }
  675. if (!re.diffValue(m2, O)) {
  676. const D2 = H.replaceOp(["drawings"], O, m2);
  677. D2 != null && M2.push(D2);
  678. }
  679. if (!re.diffValue(E, P)) {
  680. const D2 = H.replaceOp(["drawingsOrder"], P, E);
  681. D2 != null && M2.push(D2);
  682. }
  683. return B.params.actions = M2.reduce((D2, te2) => tn.compose(D2, te2), null), !!c.syncExecuteCommand(B.id, B.params);
  684. }
  685. };
  686. var gA = {
  687. id: "doc.command-replace-content",
  688. type: ar.COMMAND,
  689. handler: async (n, e) => {
  690. const { unitId: t, body: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(_n), c = n.get(Pt), A = n.get(m), l = a.getUnit(t, Fe.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(r).getSnapshot().body;
  691. if (l == null || d == null)
  692. return false;
  693. const h = ji(t, r, l, d, o);
  694. return h.params.textRanges = s, i && (h.params.options = i), h.params.actions == null && s ? (A.replaceDocRanges(s, {
  695. unitId: t,
  696. subUnitId: t
  697. }, false), true) : !!c.syncExecuteCommand(h.id, h.params);
  698. }
  699. };
  700. var fA = {
  701. id: "doc.command-cover-content",
  702. type: ar.COMMAND,
  703. handler: async (n, e) => {
  704. const { unitId: t, body: o, segmentId: s = "" } = e, r = n.get(_n), i = n.get(Pt), a = n.get(cn), c = r.getUniverDocInstance(t), A = c == null ? void 0 : c.getSnapshot().body;
  705. if (c == null || A == null)
  706. return false;
  707. const l = ji(t, s, c, A, o);
  708. return l.params.noNeedSetTextRange = true, l.params.noHistory = true, i.syncExecuteCommand(
  709. l.id,
  710. l.params
  711. ), a.clearUndoRedo(t), true;
  712. }
  713. };
  714. function pA(n, e, t, o) {
  715. const s = new Ke(), r = tn.getInstance(), i = (t == null ? void 0 : t.dataStream.length) - 2;
  716. i > 0 && s.push({
  717. t: ce.DELETE,
  718. len: i
  719. }), o.dataStream.length > 0 && s.push({
  720. t: ce.INSERT,
  721. body: o,
  722. len: o.dataStream.length
  723. });
  724. const a = le(e, n);
  725. return r.editOp(s.serialize(), a);
  726. }
  727. function ji(n, e, t, o, s) {
  728. const r = {
  729. id: M.id,
  730. params: {
  731. unitId: n,
  732. actions: [],
  733. textRanges: []
  734. }
  735. }, i = pA(e, t, o, s);
  736. return r.params.actions = i, r;
  737. }
  738. ar.COMMAND;
  739. var mA = {
  740. id: "doc.command.replace-text-runs",
  741. type: ar.COMMAND,
  742. handler: (n, e) => {
  743. const { unitId: t, body: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(_n), c = n.get(Pt), A = a.getUnit(t, Fe.UNIVER_DOC), l = A == null ? void 0 : A.getSelfOrHeaderFooterModel(r).getSnapshot().body;
  744. if (A == null || l == null)
  745. return false;
  746. const d = st.selection.replaceTextRuns({
  747. doc: A,
  748. body: o,
  749. selection: {
  750. startOffset: 0,
  751. endOffset: l.dataStream.length - 2,
  752. collapsed: false
  753. }
  754. });
  755. if (!d)
  756. return false;
  757. const h = {
  758. id: M.id,
  759. params: {
  760. unitId: t,
  761. actions: [],
  762. textRanges: s,
  763. noHistory: true
  764. }
  765. }, u = tn.getInstance(), g = le(A, r);
  766. return h.params.actions = u.editOp(d.serialize(), g), h.params.textRanges = s, i && (h.params.options = i), !!c.syncExecuteCommand(h.id, h.params);
  767. }
  768. };
  769. var Bn = ((n) => (n[n.page = 0] = "page", n[n.section = 1] = "section", n[n.column = 2] = "column", n[n.line = 3] = "line", n[n.divide = 4] = "divide", n[n.glyph = 5] = "glyph", n))(Bn || {});
  770. var Tt = {
  771. page: 0,
  772. section: 1,
  773. column: 2,
  774. line: 3,
  775. divide: 4,
  776. glyph: 5
  777. };
  778. function ys(n, e) {
  779. return n.page > e.page ? false : n.page < e.page ? true : n.section > e.section ? false : n.section < e.section ? true : n.column > e.column ? false : n.column < e.column ? true : n.line > e.line ? false : n.line < e.line ? true : n.divide > e.divide ? false : n.divide < e.divide ? true : n.glyph > e.glyph ? false : (n.glyph < e.glyph, true);
  780. }
  781. function Go(n, e) {
  782. return ys(n, e) ? {
  783. start: n,
  784. end: e
  785. } : {
  786. start: e,
  787. end: n
  788. };
  789. }
  790. function yr(n) {
  791. const e = n.length;
  792. if (e === 0)
  793. return;
  794. const t = n[0], o = n[e - 1], s = n.length === 1 && t.collapsed;
  795. return {
  796. startOffset: t.startOffset,
  797. endOffset: o.endOffset,
  798. collapsed: s
  799. };
  800. }
  801. function EA(n, e, t, o) {
  802. let s = o, r = o;
  803. for (let i = 0; i < n.length; i++) {
  804. const c = n[i].count;
  805. i < e && (s += c), i < t && (r += c);
  806. }
  807. return {
  808. startOffset: s,
  809. endOffset: r
  810. };
  811. }
  812. function Yo(n) {
  813. const { startX: e, startY: t, endX: o, endY: s } = n, r = [];
  814. return r.push({
  815. x: e,
  816. y: t
  817. }), r.push({
  818. x: o,
  819. y: t
  820. }), r.push({
  821. x: o,
  822. y: s
  823. }), r.push({
  824. x: e,
  825. y: s
  826. }), r.push({
  827. x: e,
  828. y: t
  829. }), r;
  830. }
  831. var it2 = class {
  832. constructor(e, t) {
  833. x(this, "_liquid", new U4());
  834. x(this, "_currentStartState", {
  835. page: 0,
  836. section: 0,
  837. column: 0,
  838. line: 0,
  839. divide: 0,
  840. glyph: 0
  841. /* NORMAL */
  842. });
  843. x(this, "_currentEndState", {
  844. page: 0,
  845. section: 0,
  846. column: 0,
  847. line: 0,
  848. divide: 0,
  849. glyph: 0
  850. /* NORMAL */
  851. });
  852. this._documentOffsetConfig = e, this._docSkeleton = t;
  853. }
  854. // eslint-disable-next-line max-lines-per-function
  855. getRangePointData(e, t) {
  856. const o = [], s = [], r = [];
  857. if (e == null || t == null)
  858. return {
  859. borderBoxPointGroup: o,
  860. contentBoxPointGroup: s,
  861. cursorList: r
  862. };
  863. if (!this._isValidPosition(e, t))
  864. throw new Error(
  865. `
  866. Invalid positions in NodePositionConvertToCursor,
  867. they are not in the same segment page when in header or footer.`
  868. );
  869. const { start: a, end: c } = Go(e, t);
  870. return this._selectionIterator(a, c, (A, l, d, h, u, g) => {
  871. const { lineHeight: f, asc: p, paddingTop: m2, marginTop: E, marginBottom: I } = g, { glyphGroup: v, st: R } = u;
  872. if (v.length === 0)
  873. return;
  874. const { x: S, y: C } = this._liquid;
  875. let T, O;
  876. const P = v[A], b = v[l], B = v[A - 1], M2 = (P == null ? void 0 : P.left) || 0, H = (P == null ? void 0 : P.width) || 0, F = (b == null ? void 0 : b.left) || 0, D2 = (b == null ? void 0 : b.width) || 0, te2 = (P == null ? void 0 : P.glyphType) === V1.LIST, { startOffset: q, endOffset: V } = EA(v, A, l, R), Y = a.glyph === A && d ? a.isBack : true, oe = c.glyph === l && h ? c.isBack : false, ce2 = a === c, he = Y && B != null ? B : P;
  877. if (A === 0 && l === v.length - 1)
  878. T = {
  879. startX: S + M2 + (te2 ? H : 0),
  880. startY: C,
  881. endX: S + F + (oe ? 0 : D2),
  882. endY: C + f - E - I
  883. }, O = {
  884. startX: S + M2 + (te2 ? H : 0),
  885. startY: C + m2 + p - he.bBox.ba,
  886. endX: S + F + (oe ? 0 : D2),
  887. endY: C + m2 + p + he.bBox.bd
  888. };
  889. else {
  890. const Ae2 = Y && !te2;
  891. T = {
  892. startX: S + M2 + (Ae2 ? 0 : H),
  893. startY: C,
  894. endX: S + F + (oe ? 0 : D2),
  895. endY: C + f - E - I
  896. }, O = {
  897. startX: S + M2 + (Ae2 ? 0 : H),
  898. startY: C + m2 + p - he.bBox.ba,
  899. endX: S + F + (oe ? 0 : D2),
  900. endY: C + m2 + p + he.bBox.bd
  901. };
  902. }
  903. o.push(Yo(T)), s.push(Yo(O)), r.push({
  904. startOffset: Y ? q : q + P.count,
  905. endOffset: oe ? V : V + b.count,
  906. collapsed: ce2
  907. });
  908. }), {
  909. borderBoxPointGroup: o,
  910. contentBoxPointGroup: s,
  911. cursorList: r
  912. };
  913. }
  914. _isValidPosition(e, t) {
  915. const { segmentPage: o, pageType: s } = e, { segmentPage: r, pageType: i } = t;
  916. return s !== i ? false : s === g1.HEADER || s === g1.FOOTER ? o === r : true;
  917. }
  918. _resetCurrentNodePositionState() {
  919. this._currentStartState = {
  920. page: 0,
  921. section: 0,
  922. column: 0,
  923. line: 0,
  924. divide: 0,
  925. glyph: 0
  926. /* NORMAL */
  927. }, this._currentEndState = {
  928. page: 0,
  929. section: 0,
  930. column: 0,
  931. line: 0,
  932. divide: 0,
  933. glyph: 0
  934. /* NORMAL */
  935. };
  936. }
  937. _setNodePositionState(e = 0, t, o, s) {
  938. s === t ? this._currentStartState[e] = 1 : this._currentStartState[e] = 0, s === o ? this._currentEndState[e] = 2 : this._currentEndState[e] = 0;
  939. }
  940. _checkPreviousNodePositionState(e, t = true) {
  941. let o = e, s;
  942. for (; o >= 0; ) {
  943. const r = Bn[o];
  944. let i;
  945. if (t ? i = this._currentStartState[r] : i = this._currentEndState[r], i === void 0)
  946. return;
  947. if (s === void 0 && (s = i), i !== s)
  948. return 0;
  949. o--;
  950. }
  951. return s;
  952. }
  953. _getSelectionRuler(e, t, o, s, r) {
  954. let i = 0, a = s;
  955. const c = Bn[e], A = Bn[e + 1];
  956. if (A === null || c === null)
  957. return {
  958. start_next: i,
  959. end_next: a
  960. };
  961. const l = t[c], d = o[c];
  962. this._setNodePositionState(c, l, d, r);
  963. const h = this._checkPreviousNodePositionState(e), u = this._checkPreviousNodePositionState(e, false);
  964. return h === 1 && (i = t[A]), u === 2 && (a = o[A]), {
  965. start_next: i,
  966. end_next: a
  967. };
  968. }
  969. // eslint-disable-next-line max-lines-per-function, complexity
  970. _selectionIterator(e, t, o) {
  971. var v, R;
  972. const s = this._docSkeleton;
  973. if (!s)
  974. return [];
  975. const { pageType: r, path: i } = e;
  976. this._liquid.reset();
  977. const a = s.getSkeletonData();
  978. if (a == null)
  979. return [];
  980. const { pages: c, skeHeaders: A, skeFooters: l } = a, { page: d, segmentPage: h } = e, { page: u, segmentPage: g } = t;
  981. if (this._resetCurrentNodePositionState(), this._documentOffsetConfig == null)
  982. return [];
  983. const { pageLayoutType: f, pageMarginLeft: p, pageMarginTop: m2 } = this._documentOffsetConfig, E = r === g1.BODY || r === g1.CELL ? d : h;
  984. for (let S = 0; S < E; S++) {
  985. const C = c[S];
  986. this._liquid.translatePage(C, f, p, m2);
  987. }
  988. const I = r === g1.BODY || r === g1.CELL ? u : g;
  989. for (let S = E; S <= I; S++) {
  990. const C = c[S], { headerId: T, footerId: O, pageWidth: P } = C;
  991. let b = C;
  992. if (r === g1.HEADER ? b = (v = A.get(T)) == null ? void 0 : v.get(P) : r === g1.FOOTER ? b = (R = l.get(O)) == null ? void 0 : R.get(P) : r === g1.CELL && (b = Jv(a, i)), b == null) {
  993. this._liquid.translatePage(C, f, p, m2);
  994. continue;
  995. }
  996. const B = b.sections, { start_next: M2, end_next: H } = this._getSelectionRuler(
  997. Tt.page,
  998. e,
  999. t,
  1000. B.length - 1,
  1001. r === g1.BODY || r === g1.CELL ? S : 0
  1002. );
  1003. switch (this._liquid.translateSave(), r) {
  1004. case g1.HEADER:
  1005. this._liquid.translatePagePadding({
  1006. ...b,
  1007. marginLeft: C.marginLeft
  1008. // Because header or footer margin Left is 0.
  1009. });
  1010. break;
  1011. case g1.FOOTER: {
  1012. const F = C.pageHeight - b.height - b.marginBottom;
  1013. this._liquid.translate(C.marginLeft, F);
  1014. break;
  1015. }
  1016. case g1.CELL: {
  1017. this._liquid.translatePagePadding(C);
  1018. const F = b.parent, D2 = F.parent, { left: te2 } = b, { top: q, left: V } = D2, { top: Y } = F;
  1019. this._liquid.translate(V + te2, q + Y), this._liquid.translatePagePadding(b);
  1020. break;
  1021. }
  1022. default:
  1023. this._liquid.translatePagePadding(C);
  1024. break;
  1025. }
  1026. for (let F = M2; F <= H; F++) {
  1027. const D2 = B[F], te2 = D2.columns, { start_next: q, end_next: V } = this._getSelectionRuler(
  1028. Tt.section,
  1029. e,
  1030. t,
  1031. te2.length - 1,
  1032. F
  1033. );
  1034. this._liquid.translateSection(D2);
  1035. for (let Y = q; Y <= V; Y++) {
  1036. const oe = te2[Y], ce2 = oe.lines, { start_next: he, end_next: Ae2 } = this._getSelectionRuler(
  1037. Tt.column,
  1038. e,
  1039. t,
  1040. ce2.length - 1,
  1041. Y
  1042. );
  1043. this._liquid.translateColumn(oe);
  1044. for (let ne = he; ne <= Ae2; ne++) {
  1045. const ae = ce2[ne], { divides: Te } = ae, { start_next: je, end_next: ut } = this._getSelectionRuler(
  1046. Tt.line,
  1047. e,
  1048. t,
  1049. Te.length - 1,
  1050. ne
  1051. );
  1052. this._liquid.translateSave(), this._liquid.translateLine(ae, true, false);
  1053. for (let we2 = je; we2 <= ut; we2++) {
  1054. const Yt = Te[we2];
  1055. this._liquid.translateSave(), this._liquid.translateDivide(Yt);
  1056. const { glyphGroup: Qa } = Yt, { start_next: Ua, end_next: La } = this._getSelectionRuler(
  1057. Tt.divide,
  1058. e,
  1059. t,
  1060. Qa.length - 1,
  1061. we2
  1062. );
  1063. let cr = false, Ar = false;
  1064. S === E && F === M2 && Y === q && ne === he && we2 === je && (cr = true), S === I && F === H && Y === V && ne === Ae2 && we2 === ut && (Ar = true), o && o(Ua, La, cr, Ar, Yt, ae, oe, D2, b), this._liquid.translateRestore();
  1065. }
  1066. this._liquid.translateRestore();
  1067. }
  1068. }
  1069. }
  1070. this._liquid.translateRestore(), this._liquid.translatePage(C, f, p, m2);
  1071. }
  1072. }
  1073. };
  1074. function SA(n, e) {
  1075. const { path: t } = n, { path: o } = e;
  1076. if (t.length !== o.length || t.indexOf("cells") === -1)
  1077. return false;
  1078. const s = t.indexOf("skeTables") + 1, r = t.indexOf("rows") + 1, i = t.indexOf("cells") + 1, { tableId: a, sliceIndex: c } = YS(t[s]), { tableId: A, sliceIndex: l } = YS(o[s]);
  1079. if (a !== A)
  1080. return false;
  1081. const d = t[r], h = o[r], u = t[i], g = o[i];
  1082. return !(d === h && u === g && c === l);
  1083. }
  1084. function Wi(n, e) {
  1085. const { path: t } = n, { path: o } = e;
  1086. return t.indexOf("cells") === -1 || o.indexOf("cells") === -1 || t.length !== o.length ? false : re.diffValue(t, o);
  1087. }
  1088. function zi(n, e, t) {
  1089. var u, g, f, p, m2, E, I, v;
  1090. const { path: o } = e, { path: s } = t;
  1091. if (o.indexOf("cells") === -1 || s.indexOf("cells") === -1)
  1092. return false;
  1093. const r = n.findGlyphByPosition(e), i = n.findGlyphByPosition(t), a = (p = (f = (g = (u = r == null ? void 0 : r.parent) == null ? void 0 : u.parent) == null ? void 0 : g.parent) == null ? void 0 : f.parent) == null ? void 0 : p.parent, c = (v = (I = (E = (m2 = i == null ? void 0 : i.parent) == null ? void 0 : m2.parent) == null ? void 0 : E.parent) == null ? void 0 : I.parent) == null ? void 0 : v.parent;
  1094. if (a == null || c == null)
  1095. return false;
  1096. const A = a.parent, l = c.parent, d = A.cells.indexOf(a), h = l.cells.indexOf(c);
  1097. return d === h && A.index === l.index;
  1098. }
  1099. function yo(n, e) {
  1100. if (Wi(n, e))
  1101. return ys(n, e);
  1102. const { path: t } = n, { path: o } = e, s = t[t.length - 5], r = o[o.length - 5];
  1103. if (s !== r && typeof s == "string" && typeof r == "string") {
  1104. const l = s.split("#-#")[1], d = r.split("#-#")[1];
  1105. return +l < +d;
  1106. }
  1107. const i = t[t.length - 3], a = o[o.length - 3], c = t[t.length - 1], A = o[o.length - 1];
  1108. return i < a ? true : i > a ? false : c <= A;
  1109. }
  1110. function vt(n) {
  1111. return n.sections[0].columns[0].lines.length === 0;
  1112. }
  1113. function IA(n, e, t) {
  1114. let o = e, s = t, r = n[o], i = n[s];
  1115. for (; o < s && (vt(r) || vt(i)); )
  1116. vt(r) ? (o++, r = n[o]) : vt(i) && (s--, i = n[s]);
  1117. if (!vt(r) && !vt(i))
  1118. return [r, i];
  1119. }
  1120. var Gi = class {
  1121. constructor(e, t) {
  1122. x(this, "_liquid", new U4());
  1123. this._documentOffsetConfig = e, this._docSkeleton = t;
  1124. }
  1125. // eslint-disable-next-line max-lines-per-function
  1126. getRangePointData(e, t) {
  1127. const o = [], r = this._docSkeleton.getSkeletonData();
  1128. if (r == null)
  1129. return;
  1130. const { pages: i } = r, { segmentPage: a, page: c, pageType: A } = e, l = this._getTableRectRangeInfo(e, t);
  1131. if (l == null)
  1132. return;
  1133. const {
  1134. tableId: d,
  1135. startRowIndex: h,
  1136. startColumnIndex: u,
  1137. endRowIndex: g,
  1138. endColumnIndex: f
  1139. } = l;
  1140. this._liquid.reset();
  1141. const { pageLayoutType: p, pageMarginLeft: m2, pageMarginTop: E } = this._documentOffsetConfig, I = A === g1.BODY || A === g1.CELL ? c : a;
  1142. for (let v = 0; v < I; v++) {
  1143. const R = i[v];
  1144. this._liquid.translatePage(R, p, m2, E);
  1145. }
  1146. for (let v = I; v < i.length; v++) {
  1147. const R = i[v];
  1148. this._liquid.translatePagePadding(R);
  1149. const { skeTables: S } = R;
  1150. let C = null;
  1151. for (const [b, B] of S.entries())
  1152. b.startsWith(d) && (C = B);
  1153. if (C == null) {
  1154. this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m2, E);
  1155. continue;
  1156. }
  1157. this._liquid.translateSave(), this._liquid.translate(0, C.top);
  1158. const { x: T, y: O } = this._liquid, { left: P } = C;
  1159. for (const b of C.rows)
  1160. if (b.index >= h && b.index <= g) {
  1161. const B = IA(b.cells, u, f);
  1162. if (B == null)
  1163. continue;
  1164. const [M2, H] = B, F = {
  1165. startX: T + M2.left + P,
  1166. startY: O + b.top,
  1167. endX: T + H.left + H.pageWidth + P,
  1168. endY: O + b.top + b.height
  1169. };
  1170. o.push(Yo(F));
  1171. }
  1172. this._liquid.translateRestore(), this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m2, E);
  1173. }
  1174. return {
  1175. pointGroup: o,
  1176. startRow: h,
  1177. startColumn: u,
  1178. endRow: g,
  1179. endColumn: f,
  1180. tableId: d
  1181. };
  1182. }
  1183. getNodePositionGroup(e, t) {
  1184. const o = [], s = this._docSkeleton.findCharIndexByPosition(e), r = this._docSkeleton.findCharIndexByPosition(t);
  1185. if (s == null || r == null)
  1186. return;
  1187. const i = s < r, a = this._getTableRectRangeInfo(e, t);
  1188. if (a == null)
  1189. return;
  1190. const { tableId: c, startRowIndex: A, startColumnIndex: l, endRowIndex: d, endColumnIndex: h } = a, u = this._docSkeleton.getViewModel().findTableNodeById(c);
  1191. if (u == null)
  1192. return;
  1193. const g = u.children[0].children.length;
  1194. if (l === 0 && h === g - 1) {
  1195. const p = u.children[A].children[l], m2 = this._docSkeleton.findNodePositionByCharIndex(p.startIndex + 1), E = u.children[d].children[h], I = this._docSkeleton.findNodePositionByCharIndex(E.endIndex - 2);
  1196. if (m2 == null || I == null)
  1197. return;
  1198. o.push({
  1199. anchor: i ? m2 : I,
  1200. focus: i ? I : m2
  1201. });
  1202. } else
  1203. for (let p = A; p <= d; p++) {
  1204. const m2 = u.children[p], E = m2.children[l], I = m2.children[h], v = this._docSkeleton.findNodePositionByCharIndex(E.startIndex + 1), R = this._docSkeleton.findNodePositionByCharIndex(I.endIndex - 2);
  1205. if (v == null || R == null)
  1206. return;
  1207. o.push({
  1208. anchor: i ? v : R,
  1209. focus: i ? R : v
  1210. });
  1211. }
  1212. return o;
  1213. }
  1214. _getTableRectRangeInfo(e, t) {
  1215. const s = this._docSkeleton.getSkeletonData();
  1216. if (s == null)
  1217. return;
  1218. const { pages: r } = s, { path: i } = e, { path: a } = t, c = Jv(s, i), A = Jv(s, a);
  1219. if (c == null || A == null)
  1220. return;
  1221. const l = c.segmentId, d = c.parent.index, h = c.parent.cells.indexOf(c), u = (A == null ? void 0 : A.parent).index, g = (A == null ? void 0 : A.parent).cells.indexOf(A), f = Math.min(d, u), p = Math.max(d, u), m2 = Math.min(h, g), E = Math.max(h, g);
  1222. return {
  1223. pages: r,
  1224. tableId: l,
  1225. startRowIndex: f,
  1226. startColumnIndex: m2,
  1227. endRowIndex: p,
  1228. endColumnIndex: E
  1229. };
  1230. }
  1231. };
  1232. var CA = "__TestSelectionRange__";
  1233. var vA = "__TestSelectionAnchor__";
  1234. var Br = 6;
  1235. var Bo = 500;
  1236. var RA = 500;
  1237. var qo = 3;
  1238. function Mn(n) {
  1239. const e = n[0], t = e[0], o = e[2], { x: s, y: r } = t, { x: i, y: a } = o;
  1240. return {
  1241. left: s,
  1242. top: r,
  1243. width: i - s,
  1244. height: a - r
  1245. };
  1246. }
  1247. function Bs(n) {
  1248. return n.map((e) => {
  1249. let t = 1 / 0, o = -1 / 0, s = 1 / 0, r = -1 / 0;
  1250. return e.forEach((i) => {
  1251. t = Math.min(i.x, t), o = Math.max(i.x, o), r = Math.max(i.y, r), s = Math.min(i.y, s);
  1252. }), {
  1253. left: t,
  1254. right: o,
  1255. top: s,
  1256. bottom: r
  1257. };
  1258. });
  1259. }
  1260. var Mt2 = class {
  1261. constructor(e, t, o, s, r, i = LS, a = "", c = -1) {
  1262. x(this, "rangeType", Ag.TEXT);
  1263. x(this, "_current", false);
  1264. x(this, "_rangeShape");
  1265. x(this, "_anchorShape");
  1266. x(this, "_cursorList", []);
  1267. x(this, "_anchorBlinkTimer", null);
  1268. this._scene = e, this._document = t, this._docSkeleton = o, this.anchorNodePosition = s, this.focusNodePosition = r, this.style = i, this._segmentId = a, this._segmentPage = c, this._anchorBlink(), this.refresh();
  1269. }
  1270. _anchorBlink() {
  1271. setTimeout(() => {
  1272. this._anchorShape && this._anchorShape.visible && this.deactivateStatic();
  1273. }, Bo), this._anchorBlinkTimer = setInterval(() => {
  1274. this._anchorShape && this._anchorShape.visible && (this.activeStatic(), setTimeout(() => {
  1275. this.deactivateStatic();
  1276. }, Bo));
  1277. }, RA + Bo);
  1278. }
  1279. // The start position of the range
  1280. get startOffset() {
  1281. var s;
  1282. const { startOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
  1283. if (e == null || t == null)
  1284. return e;
  1285. const o = t.dataStream.length - 2;
  1286. return Math.min(o, e);
  1287. }
  1288. // The end position of the range
  1289. get endOffset() {
  1290. var s;
  1291. const { endOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
  1292. if (e == null || t == null)
  1293. return e;
  1294. const o = t.dataStream.length - 2;
  1295. return Math.min(e, o);
  1296. }
  1297. get collapsed() {
  1298. const { startOffset: e, endOffset: t } = this;
  1299. return e != null && e === t;
  1300. }
  1301. get startNodePosition() {
  1302. if (this.anchorNodePosition == null)
  1303. return null;
  1304. if (this.focusNodePosition == null)
  1305. return this.anchorNodePosition;
  1306. const { start: e } = Go(this.anchorNodePosition, this.focusNodePosition);
  1307. return e;
  1308. }
  1309. get endNodePosition() {
  1310. if (this.anchorNodePosition == null)
  1311. return this.focusNodePosition;
  1312. if (this.focusNodePosition == null)
  1313. return null;
  1314. const { end: e } = Go(this.anchorNodePosition, this.focusNodePosition);
  1315. return e;
  1316. }
  1317. get direction() {
  1318. const { collapsed: e, anchorNodePosition: t, focusNodePosition: o } = this;
  1319. return e || t == null || o == null ? Sg.NONE : ys(t, o) ? Sg.FORWARD : Sg.BACKWARD;
  1320. }
  1321. get segmentId() {
  1322. return this._segmentId;
  1323. }
  1324. get segmentPage() {
  1325. return this._segmentPage;
  1326. }
  1327. getAbsolutePosition() {
  1328. const e = this.anchorNodePosition, t = this.focusNodePosition;
  1329. if (this._isEmpty())
  1330. return;
  1331. const o = this._document.getOffsetConfig(), { docsLeft: s, docsTop: r } = o, i = new it2(o, this._docSkeleton);
  1332. if (this._isCollapsed()) {
  1333. const { contentBoxPointGroup: l, cursorList: d } = i.getRangePointData(e, e);
  1334. if (this._setCursorList(d), l.length === 0)
  1335. return;
  1336. const h = Mn(l);
  1337. return {
  1338. ...h,
  1339. left: h.left + s,
  1340. top: h.top + r
  1341. };
  1342. }
  1343. const { borderBoxPointGroup: a, cursorList: c } = i.getRangePointData(e, t);
  1344. if (this._setCursorList(c), a.length === 0)
  1345. return;
  1346. const A = Mn(a);
  1347. return {
  1348. ...A,
  1349. left: A.left + s,
  1350. top: A.top + r
  1351. };
  1352. }
  1353. getAnchor() {
  1354. return this._anchorShape;
  1355. }
  1356. activeStatic() {
  1357. var e, t;
  1358. (t = this._anchorShape) == null || t.setProps({
  1359. stroke: ((e = this.style) == null ? void 0 : e.strokeActive) || E2(xo.black, 1)
  1360. });
  1361. }
  1362. deactivateStatic() {
  1363. var e, t;
  1364. (t = this._anchorShape) == null || t.setProps({
  1365. stroke: ((e = this.style) == null ? void 0 : e.stroke) || E2(xo.black, 0)
  1366. });
  1367. }
  1368. isActive() {
  1369. return this._current === true;
  1370. }
  1371. activate() {
  1372. this._current = true;
  1373. }
  1374. deactivate() {
  1375. this._current = false;
  1376. }
  1377. dispose() {
  1378. var e, t;
  1379. (e = this._rangeShape) == null || e.dispose(), this._rangeShape = null, (t = this._anchorShape) == null || t.dispose(), this._anchorShape = null, this._anchorBlinkTimer && (clearInterval(this._anchorBlinkTimer), this._anchorBlinkTimer = null);
  1380. }
  1381. isIntersection(e) {
  1382. const { startOffset: t, endOffset: o } = this, { startOffset: s, endOffset: r } = e;
  1383. return t == null || o == null || s == null || r == null ? false : t <= r && o >= s;
  1384. }
  1385. // render cursor and selection.
  1386. refresh() {
  1387. var d, h;
  1388. const { _document: e, _docSkeleton: t } = this, o = this.anchorNodePosition, s = this.focusNodePosition;
  1389. if ((d = this._anchorShape) == null || d.hide(), (h = this._rangeShape) == null || h.hide(), this._isEmpty())
  1390. return;
  1391. const r = e.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, c = new it2(r, t);
  1392. if (this._isCollapsed()) {
  1393. const { contentBoxPointGroup: u, cursorList: g } = c.getRangePointData(o, o);
  1394. if (this._setCursorList(g), u.length > 0) {
  1395. const f = t.findGlyphByPosition(o);
  1396. this._createOrUpdateAnchor(u, i, a, f);
  1397. }
  1398. return;
  1399. }
  1400. const { borderBoxPointGroup: A, cursorList: l } = c.getRangePointData(o, s);
  1401. this._setCursorList(l), A.length > 0 && this._createOrUpdateRange(A, i, a);
  1402. }
  1403. _isEmpty() {
  1404. return this.anchorNodePosition == null && this.focusNodePosition == null;
  1405. }
  1406. _isCollapsed() {
  1407. const e = this.anchorNodePosition, t = this.focusNodePosition;
  1408. if (e != null && t == null)
  1409. return true;
  1410. if (e == null || t == null)
  1411. return false;
  1412. const o = Object.keys(Tt);
  1413. for (const s of o) {
  1414. const r = e[s], i = t[s];
  1415. if (r !== i)
  1416. return false;
  1417. }
  1418. return e.isBack === t.isBack;
  1419. }
  1420. _createOrUpdateRange(e, t, o) {
  1421. var i;
  1422. if (this._rangeShape) {
  1423. this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
  1424. return;
  1425. }
  1426. const s = 0.3, r = new T3(CA + re.generateRandomId(Br), {
  1427. pointsGroup: e,
  1428. fill: ((i = this.style) == null ? void 0 : i.fill) || E2(xo.black, s),
  1429. left: t,
  1430. top: o,
  1431. evented: false,
  1432. debounceParentDirty: false
  1433. });
  1434. this._rangeShape = r, this._scene.addObject(r, qo);
  1435. }
  1436. _createOrUpdateAnchor(e, t, o, s) {
  1437. var f, p, m2;
  1438. const r = Mn(e), { left: i } = r;
  1439. let { top: a, height: c } = r;
  1440. const A = 14;
  1441. c < A && (a -= A - c, c = A);
  1442. const l = 12;
  1443. let d = i + t;
  1444. const h = a + o, u = ((f = s == null ? void 0 : s.ts) == null ? void 0 : f.it) === we.TRUE;
  1445. if (u && (d += c * Math.tan(l * Math.PI / 180) / 2), this._anchorShape) {
  1446. this._anchorShape.transformByState({ left: d, top: h, height: c }), this._anchorShape.show(), u ? this._anchorShape.skew(-12, 0) : this._anchorShape.skew(0, 0);
  1447. return;
  1448. }
  1449. const g = new A1(vA + re.generateRandomId(Br), {
  1450. left: d,
  1451. top: h,
  1452. height: c,
  1453. strokeWidth: ((p = this.style) == null ? void 0 : p.strokeWidth) || 1.5,
  1454. stroke: ((m2 = this.style) == null ? void 0 : m2.strokeActive) || E2(xo.black, 1),
  1455. evented: false
  1456. });
  1457. u && g.skew(-12, 0), this._anchorShape = g, this._scene.addObject(g, qo), this.activeStatic();
  1458. }
  1459. _setCursorList(e) {
  1460. e.length !== 0 && (this._cursorList = e);
  1461. }
  1462. };
  1463. var bA = "__DocTableRectRange__";
  1464. var xA = 6;
  1465. function Mo(n, e, t, o, s, r = LS, i = "", a = -1) {
  1466. const c = e.getOffsetConfig(), l = new Gi(c, t).getNodePositionGroup(o, s);
  1467. return (l != null ? l : []).map((d) => new Yi(
  1468. n,
  1469. e,
  1470. t,
  1471. d.anchor,
  1472. d.focus,
  1473. r,
  1474. i,
  1475. a
  1476. ));
  1477. }
  1478. var Yi = class {
  1479. constructor(e, t, o, s, r, i = LS, a = "", c = -1) {
  1480. x(this, "rangeType", Ag.RECT);
  1481. x(this, "_rangeShape");
  1482. x(this, "_current", false);
  1483. x(this, "_startRow");
  1484. x(this, "_startCol");
  1485. x(this, "_endRow");
  1486. x(this, "_endCol");
  1487. x(this, "_tableId");
  1488. this._scene = e, this._document = t, this._docSkeleton = o, this.anchorNodePosition = s, this.focusNodePosition = r, this.style = i, this._segmentId = a, this._segmentPage = c, this.refresh();
  1489. }
  1490. get startOffset() {
  1491. const { startNodePosition: e } = this;
  1492. return this._docSkeleton.findCharIndexByPosition(e);
  1493. }
  1494. get endOffset() {
  1495. const { endNodePosition: e } = this;
  1496. return this._docSkeleton.findCharIndexByPosition(e);
  1497. }
  1498. get collapsed() {
  1499. return false;
  1500. }
  1501. get startRow() {
  1502. return this._startRow;
  1503. }
  1504. get startColumn() {
  1505. return this._startCol;
  1506. }
  1507. get endRow() {
  1508. return this._endRow;
  1509. }
  1510. get endColumn() {
  1511. return this._endCol;
  1512. }
  1513. get tableId() {
  1514. return this._tableId;
  1515. }
  1516. get segmentId() {
  1517. return this._segmentId;
  1518. }
  1519. get segmentPage() {
  1520. return this._segmentPage;
  1521. }
  1522. get spanEntireRow() {
  1523. var i;
  1524. const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startCol: o, _endCol: s } = this;
  1525. if (t == null)
  1526. throw new Error("Table is not found.");
  1527. const { tableColumns: r } = t;
  1528. return o === 0 && s === r.length - 1;
  1529. }
  1530. get spanEntireColumn() {
  1531. var i;
  1532. const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startRow: o, _endRow: s } = this;
  1533. if (t == null)
  1534. throw new Error("Table is not found.");
  1535. const { tableRows: r } = t;
  1536. return o === 0 && s === r.length - 1;
  1537. }
  1538. get spanEntireTable() {
  1539. return this.spanEntireRow && this.spanEntireColumn;
  1540. }
  1541. get startNodePosition() {
  1542. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1543. return yo(e, t) ? e : t;
  1544. }
  1545. get endNodePosition() {
  1546. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1547. return yo(e, t) ? t : e;
  1548. }
  1549. get direction() {
  1550. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1551. return yo(e, t) ? Sg.FORWARD : Sg.BACKWARD;
  1552. }
  1553. isActive() {
  1554. return this._current === true;
  1555. }
  1556. activate() {
  1557. this._current = true;
  1558. }
  1559. deactivate() {
  1560. this._current = false;
  1561. }
  1562. dispose() {
  1563. var e;
  1564. (e = this._rangeShape) == null || e.dispose(), this._rangeShape = null;
  1565. }
  1566. isIntersection(e) {
  1567. const { startRow: t, startColumn: o, endRow: s, endColumn: r } = this, { startRow: i, startColumn: a, endRow: c, endColumn: A } = e, l = {
  1568. left: o,
  1569. top: t,
  1570. right: r,
  1571. bottom: s
  1572. }, d = {
  1573. left: a,
  1574. top: i,
  1575. right: A,
  1576. bottom: c
  1577. };
  1578. return en.hasIntersectionBetweenTwoRect(l, d);
  1579. }
  1580. refresh() {
  1581. var p;
  1582. (p = this._rangeShape) == null || p.hide();
  1583. const { startNodePosition: e, endNodePosition: t, _document: o, _docSkeleton: s } = this, r = o.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, A = new Gi(r, s).getRangePointData(e, t);
  1584. if (A == null)
  1585. return;
  1586. const { pointGroup: l = [], startRow: d, endRow: h, startColumn: u, endColumn: g, tableId: f } = A;
  1587. (l == null ? void 0 : l.length) > 0 && this._createOrUpdateRange(l, i, a), this._updateTableInfo(d, h, u, g, f);
  1588. }
  1589. _updateTableInfo(e, t, o, s, r) {
  1590. this._startRow = e, this._endRow = t, this._startCol = o, this._endCol = s, this._tableId = r;
  1591. }
  1592. _createOrUpdateRange(e, t, o) {
  1593. var i;
  1594. if (this._rangeShape) {
  1595. this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
  1596. return;
  1597. }
  1598. const s = 0.3, r = new T3(bA + re.generateRandomId(xA), {
  1599. pointsGroup: e,
  1600. fill: ((i = this.style) == null ? void 0 : i.fill) || E2(xo.black, s),
  1601. left: t,
  1602. top: o,
  1603. evented: false,
  1604. debounceParentDirty: false
  1605. });
  1606. this._rangeShape = r, this._scene.addObject(r, qo);
  1607. }
  1608. };
  1609. function Mr(n, e, t, o, s, r, i, a, c = true, A = true) {
  1610. const l = s.findNodePositionByCharIndex(n, c, i, a), d = s.findNodePositionByCharIndex(e, A, i, a);
  1611. if (!(l == null || d == null))
  1612. return new Mt2(t, o, s, l, d, r, i, a);
  1613. }
  1614. function OA(n, e, t, o, s, r, i, a) {
  1615. const c = s.findNodePositionByCharIndex(n, true, i, a), A = s.findNodePositionByCharIndex(e, true, i, a);
  1616. if (!(c == null || A == null))
  1617. return new Yi(t, o, s, c, A, r, i, a);
  1618. }
  1619. function TA(n, e, t, o, s, r, i, a) {
  1620. const c = s.findNodePositionByCharIndex(n, true, i, a), A = s.findNodePositionByCharIndex(e, true, i, a);
  1621. if (!(c == null || A == null))
  1622. return Ko(
  1623. c,
  1624. A,
  1625. t,
  1626. o,
  1627. s,
  1628. r,
  1629. i,
  1630. a
  1631. );
  1632. }
  1633. function Ko(n, e, t, o, s, r, i, a) {
  1634. const c = [], A = [], l = [t, o, s, n, e, r, i, a];
  1635. if (zi(s, n, e)) {
  1636. if (Wi(n, e))
  1637. return c.push(new Mt2(...l)), {
  1638. textRanges: c,
  1639. rectRanges: A
  1640. };
  1641. {
  1642. const I = Mo(
  1643. ...l
  1644. );
  1645. return A.push(...I), {
  1646. textRanges: c,
  1647. rectRanges: A
  1648. };
  1649. }
  1650. }
  1651. if (SA(n, e)) {
  1652. const I = Mo(
  1653. ...l
  1654. );
  1655. return A.push(...I), {
  1656. textRanges: c,
  1657. rectRanges: A
  1658. };
  1659. }
  1660. const d = s.getViewModel().getSelfOrHeaderFooterViewModel(i), h = s.findCharIndexByPosition(n), u = s.findCharIndexByPosition(e);
  1661. if (h == null || u == null)
  1662. return;
  1663. const g = h <= u ? Sg.FORWARD : Sg.BACKWARD, f = Math.min(h, u), p = Math.max(h, u);
  1664. let m2 = f, E = p;
  1665. for (const I of d.getChildren())
  1666. for (const v of I.children) {
  1667. const { startIndex: R, endIndex: S, children: C } = v, T = I.children.indexOf(v), O = I.children[T + 1], P = C[0];
  1668. let b = false;
  1669. if (P) {
  1670. const { startIndex: B, endIndex: M2, children: H } = P;
  1671. let F = null, D2 = null;
  1672. const te2 = H.find((V) => V.startIndex <= f && V.endIndex >= f), q = H.find((V) => V.startIndex <= p && V.endIndex >= p);
  1673. if (f > B && f < M2)
  1674. F = s.findNodePositionByCharIndex(te2.startIndex + 2, true, i, a), D2 = s.findNodePositionByCharIndex(M2 - 4, true, i, a), m2 = M2 + 1;
  1675. else if (p > B && p < M2)
  1676. F = s.findNodePositionByCharIndex(B + 3, true, i, a), D2 = s.findNodePositionByCharIndex(q.endIndex - 3, true, i, a), E = B - 1, b = true;
  1677. else if (B > f && M2 < p) {
  1678. if (F = s.findNodePositionByCharIndex(B + 3, true, i, a), D2 = s.findNodePositionByCharIndex(M2 - 4, true, i, a), m2 <= B - 1) {
  1679. const V = s.findNodePositionByCharIndex(m2, true, i, a), Y = s.findNodePositionByCharIndex(B - 1, false, i, a), oe = g === Sg.FORWARD ? V : Y, ce2 = g === Sg.FORWARD ? Y : V;
  1680. c.push(new Mt2(t, o, s, oe, ce2, r, i, a));
  1681. }
  1682. m2 = M2 + 1;
  1683. }
  1684. if (F && D2) {
  1685. const V = g === Sg.FORWARD ? F : D2, Y = g === Sg.FORWARD ? D2 : F;
  1686. A.push(...Mo(
  1687. t,
  1688. o,
  1689. s,
  1690. V,
  1691. Y,
  1692. r,
  1693. i,
  1694. a
  1695. ));
  1696. }
  1697. }
  1698. if (E === S + 1 && !b && O && O.children.length && (E = S, b = true), E >= R && E <= S || b) {
  1699. const B = s.findNodePositionByCharIndex(m2, true, i, a), M2 = s.findNodePositionByCharIndex(E, !b, i, a), H = g === Sg.FORWARD ? B : M2, F = g === Sg.FORWARD ? M2 : B;
  1700. if (A.length && re.diffValue(H, F))
  1701. continue;
  1702. c.push(new Mt2(t, o, s, H, F, r, i, a));
  1703. }
  1704. }
  1705. return {
  1706. textRanges: c,
  1707. rectRanges: A
  1708. };
  1709. }
  1710. function yA(n) {
  1711. const e = n == null ? void 0 : n.getCanvasElement();
  1712. if (!e)
  1713. return {
  1714. left: 0,
  1715. top: 0
  1716. };
  1717. const { top: t, left: o } = PS(e);
  1718. return {
  1719. left: o,
  1720. top: t
  1721. };
  1722. }
  1723. function _r(n) {
  1724. var c;
  1725. const e = (c = n.parent) == null ? void 0 : c.parent, t = e == null ? void 0 : e.parent;
  1726. if (e == null || t == null)
  1727. return;
  1728. const { paragraphIndex: o } = e, s = t.lines.filter((A) => A.paragraphIndex === o);
  1729. let r = -1, i = "", a = false;
  1730. for (const A of s)
  1731. for (const l of A.divides)
  1732. for (const d of l.glyphGroup)
  1733. a || (r += d.count), d === n && (a = true), i += d.count > 0 ? d.content : "";
  1734. return {
  1735. st: s[0].st,
  1736. ed: o,
  1737. content: i,
  1738. nodeIndex: r
  1739. };
  1740. }
  1741. function Xo(n) {
  1742. const { startOffset: e, endOffset: t, collapsed: o, rangeType: s, startNodePosition: r, endNodePosition: i, direction: a, segmentId: c, segmentPage: A } = n;
  1743. return {
  1744. startOffset: e,
  1745. endOffset: t,
  1746. collapsed: o,
  1747. rangeType: s,
  1748. startNodePosition: r,
  1749. endNodePosition: i,
  1750. direction: a,
  1751. segmentId: c,
  1752. segmentPage: A,
  1753. isActive: n.isActive()
  1754. };
  1755. }
  1756. function BA(n) {
  1757. const e = Xo(n), {
  1758. startRow: t,
  1759. startColumn: o,
  1760. endRow: s,
  1761. endColumn: r,
  1762. tableId: i,
  1763. spanEntireRow: a,
  1764. spanEntireColumn: c,
  1765. spanEntireTable: A
  1766. } = n;
  1767. return {
  1768. ...e,
  1769. startRow: t,
  1770. startColumn: o,
  1771. endRow: s,
  1772. endColumn: r,
  1773. tableId: i,
  1774. spanEntireRow: a,
  1775. spanEntireColumn: c,
  1776. spanEntireTable: A
  1777. };
  1778. }
  1779. var MA = Object.defineProperty;
  1780. var _A = Object.getOwnPropertyDescriptor;
  1781. var PA = (n, e, t, o) => {
  1782. for (var s = o > 1 ? void 0 : o ? _A(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  1783. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  1784. return o && s && MA(e, t, s), s;
  1785. };
  1786. var Cn = (n, e) => (t, o) => e(t, o, n);
  1787. var Se = class extends J0 {
  1788. constructor(e, t, o, s, r) {
  1789. super();
  1790. x(this, "_onInputBefore$", new Subject());
  1791. x(this, "onInputBefore$", this._onInputBefore$.asObservable());
  1792. x(this, "_onKeydown$", new Subject());
  1793. x(this, "onKeydown$", this._onKeydown$.asObservable());
  1794. x(this, "_onInput$", new Subject());
  1795. x(this, "onInput$", this._onInput$.asObservable());
  1796. x(this, "_onCompositionstart$", new BehaviorSubject(null));
  1797. x(this, "onCompositionstart$", this._onCompositionstart$.asObservable());
  1798. x(this, "_onCompositionupdate$", new BehaviorSubject(null));
  1799. x(this, "onCompositionupdate$", this._onCompositionupdate$.asObservable());
  1800. x(this, "_onCompositionend$", new BehaviorSubject(null));
  1801. x(this, "onCompositionend$", this._onCompositionend$.asObservable());
  1802. x(this, "_onSelectionStart$", new BehaviorSubject(null));
  1803. x(this, "onSelectionStart$", this._onSelectionStart$.asObservable());
  1804. x(this, "onChangeByEvent$", merge(
  1805. this._onInput$,
  1806. this._onKeydown$.pipe(filter((e2) => e2.event.keyCode === I1.BACKSPACE)),
  1807. this._onCompositionend$
  1808. ));
  1809. x(this, "_onPaste$", new Subject());
  1810. x(this, "onPaste$", this._onPaste$.asObservable());
  1811. x(this, "_textSelectionInner$", new BehaviorSubject(null));
  1812. x(this, "textSelectionInner$", this._textSelectionInner$.asObservable());
  1813. x(this, "_onFocus$", new Subject());
  1814. x(this, "onFocus$", this._onFocus$.asObservable());
  1815. x(this, "_onBlur$", new Subject());
  1816. x(this, "onBlur$", this._onBlur$.asObservable());
  1817. x(this, "_onPointerDown$", new Subject());
  1818. x(this, "onPointerDown$", this._onPointerDown$.asObservable());
  1819. x(this, "_container");
  1820. x(this, "_inputParent");
  1821. x(this, "_input");
  1822. x(this, "_scrollTimers", []);
  1823. x(this, "_rangeList", []);
  1824. x(this, "_rangeListCache", []);
  1825. x(this, "_rectRangeList", []);
  1826. x(this, "_rectRangeListCache", []);
  1827. x(this, "_anchorNodePosition", null);
  1828. x(this, "_focusNodePosition", null);
  1829. x(this, "_currentSegmentId", "");
  1830. x(this, "_currentSegmentPage", -1);
  1831. x(this, "_selectionStyle", LS);
  1832. x(this, "_onPointerEvent", false);
  1833. x(this, "_viewPortObserverMap", /* @__PURE__ */ new Map());
  1834. x(this, "_isIMEInputApply", false);
  1835. x(this, "_scenePointerMoveSubs", []);
  1836. x(this, "_scenePointerUpSubs", []);
  1837. x(this, "_reserveRanges", false);
  1838. this._context = e, this._layoutService = t, this._logService = o, this._univerInstanceService = s, this._docSkeletonManagerService = r, this._initDOM(), this._registerContainer(), this._setSystemHighlightColorToStyle(), this._listenCurrentUnitChange();
  1839. }
  1840. get isOnPointerEvent() {
  1841. return this._onPointerEvent;
  1842. }
  1843. get isFocusing() {
  1844. return this._input === document.activeElement;
  1845. }
  1846. get canFocusing() {
  1847. return this.isFocusing || document.activeElement === document.body || document.activeElement === null;
  1848. }
  1849. _listenCurrentUnitChange() {
  1850. this._univerInstanceService.getCurrentTypeOfUnit$(Fe.UNIVER_DOC).pipe(takeUntil(this.dispose$)).subscribe((e) => {
  1851. if (e == null)
  1852. return;
  1853. e.getUnitId() !== this._context.unitId && !this._reserveRanges && this.removeAllRanges();
  1854. });
  1855. }
  1856. get activeViewPort() {
  1857. return this._context.scene.getViewports()[0];
  1858. }
  1859. setSegment(e) {
  1860. this._currentSegmentId = e;
  1861. }
  1862. getSegment() {
  1863. return this._currentSegmentId;
  1864. }
  1865. setSegmentPage(e) {
  1866. this._currentSegmentPage = e;
  1867. }
  1868. getSegmentPage() {
  1869. return this._currentSegmentPage;
  1870. }
  1871. setReserveRangesStatus(e) {
  1872. this._reserveRanges = e;
  1873. }
  1874. _setRangeStyle(e = LS) {
  1875. this._selectionStyle = e;
  1876. }
  1877. // eslint-disable-next-line max-lines-per-function
  1878. addDocRanges(e, t = true, o) {
  1879. const {
  1880. _currentSegmentId: s,
  1881. _currentSegmentPage: r,
  1882. _selectionStyle: i
  1883. } = this, { scene: a, mainComponent: c } = this._context, A = c, l = this._docSkeletonManagerService.getSkeleton(), d = (h, u) => {
  1884. const g = TA(
  1885. h,
  1886. u,
  1887. a,
  1888. A,
  1889. l,
  1890. i,
  1891. s,
  1892. r
  1893. );
  1894. if (g == null)
  1895. return;
  1896. const { textRanges: f, rectRanges: p } = g;
  1897. for (const m2 of f)
  1898. this._addTextRange(m2);
  1899. this._addRectRanges(p);
  1900. };
  1901. for (const h of e) {
  1902. const { startOffset: u, endOffset: g, rangeType: f, startNodePosition: p, endNodePosition: m2 } = h;
  1903. if (f === Ag.RECT) {
  1904. const E = OA(
  1905. u,
  1906. g,
  1907. a,
  1908. A,
  1909. l,
  1910. i,
  1911. s,
  1912. r
  1913. );
  1914. E && this._addRectRanges([E]);
  1915. } else if (f === Ag.TEXT)
  1916. try {
  1917. let E = null;
  1918. p && m2 ? E = Mr(
  1919. p.isBack ? u : u - 1,
  1920. m2.isBack ? g : g - 1,
  1921. a,
  1922. A,
  1923. l,
  1924. i,
  1925. s,
  1926. r,
  1927. p.isBack,
  1928. m2.isBack
  1929. ) : E = Mr(
  1930. u,
  1931. g,
  1932. a,
  1933. A,
  1934. l,
  1935. i,
  1936. s,
  1937. r
  1938. ), E && this._addTextRange(E);
  1939. } catch {
  1940. d(u, g);
  1941. }
  1942. else
  1943. d(u, g);
  1944. }
  1945. this._textSelectionInner$.next({
  1946. textRanges: this._getAllTextRanges(),
  1947. rectRanges: this._getAllRectRanges(),
  1948. segmentId: s,
  1949. segmentPage: r,
  1950. style: i,
  1951. isEditing: t,
  1952. options: o
  1953. }), this._updateInputPosition(o == null ? void 0 : o.forceFocus);
  1954. }
  1955. setCursorManually(e, t) {
  1956. const o = this._findNodeByCoord(e, t, {
  1957. strict: true,
  1958. segmentId: this._currentSegmentId,
  1959. segmentPage: this._currentSegmentPage
  1960. }), s = this._getNodePosition(o);
  1961. if (s == null) {
  1962. this._removeAllRanges();
  1963. return;
  1964. }
  1965. (o == null ? void 0 : o.node.streamType) === ln.PARAGRAPH && (s.isBack = true), this._createTextRangeByAnchorPosition(s), this._textSelectionInner$.next({
  1966. textRanges: this._getAllTextRanges(),
  1967. rectRanges: this._getAllRectRanges(),
  1968. segmentId: this._currentSegmentId,
  1969. segmentPage: this._currentSegmentPage,
  1970. style: this._selectionStyle,
  1971. isEditing: false
  1972. });
  1973. }
  1974. // Sync canvas selection to dom selection.
  1975. sync() {
  1976. this._updateInputPosition();
  1977. }
  1978. /**
  1979. * @deprecated
  1980. */
  1981. activate(e, t, o = false) {
  1982. this._container.style.left = `${e}px`, this._container.style.top = `${t}px`, this._container.style.zIndex = "1000", (this.canFocusing || o) && this.focus();
  1983. }
  1984. hasFocus() {
  1985. return document.activeElement === this._input;
  1986. }
  1987. focus() {
  1988. this._input.focus();
  1989. }
  1990. blur() {
  1991. this._input.blur();
  1992. }
  1993. // FIXME: for editor cell editor we don't need to blur the input element
  1994. /**
  1995. * @deprecated
  1996. */
  1997. deactivate() {
  1998. this._container.style.left = "0px", this._container.style.top = "0px";
  1999. }
  2000. // Handler double click.
  2001. __handleDblClick(e) {
  2002. const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
  2003. strict: false,
  2004. segmentId: this._currentSegmentId,
  2005. segmentPage: this._currentSegmentPage
  2006. });
  2007. if (s == null || s.node == null)
  2008. return;
  2009. const r = _r(s.node);
  2010. if (r == null)
  2011. return;
  2012. const { content: i, st: a, nodeIndex: c } = r;
  2013. if (c === -1 || Intl.Segmenter == null)
  2014. return;
  2015. const l = new Intl.Segmenter(void 0, { granularity: "word" }).segment(i);
  2016. let d = Number.NEGATIVE_INFINITY, h = Number.NEGATIVE_INFINITY;
  2017. for (const { segment: u, index: g, isWordLike: f } of l)
  2018. if (g <= c && c < g + u.length && f) {
  2019. d = g + a, h = g + a + u.length;
  2020. break;
  2021. }
  2022. if (Number.isFinite(d) && Number.isFinite(h)) {
  2023. this.removeAllRanges();
  2024. const u = [
  2025. {
  2026. startOffset: d,
  2027. endOffset: h
  2028. }
  2029. ];
  2030. this.addDocRanges(u, false, { forceFocus: true });
  2031. }
  2032. }
  2033. __handleTripleClick(e) {
  2034. const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
  2035. strict: false,
  2036. segmentId: this._currentSegmentId,
  2037. segmentPage: this._currentSegmentPage
  2038. });
  2039. if (s == null || s.node == null)
  2040. return;
  2041. const r = _r(s.node);
  2042. if (r == null)
  2043. return;
  2044. this.removeAllRanges();
  2045. const { st: i, ed: a } = r, c = [
  2046. {
  2047. startOffset: i,
  2048. endOffset: a
  2049. }
  2050. ];
  2051. this.addDocRanges(c, false, { forceFocus: true });
  2052. }
  2053. // Handle pointer down.
  2054. // eslint-disable-next-line max-lines-per-function, complexity
  2055. __onPointDown(e) {
  2056. var f, p;
  2057. const { scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton(), { offsetX: r, offsetY: i } = e, a = this._findNodeByCoord(r, i, {
  2058. strict: false,
  2059. segmentId: this._currentSegmentId,
  2060. segmentPage: this._currentSegmentPage
  2061. }), c = this._getNodePosition(a);
  2062. if (c == null || a == null) {
  2063. this._removeAllRanges();
  2064. return;
  2065. }
  2066. (a == null ? void 0 : a.node.streamType) === ln.PARAGRAPH && (c.isBack = true);
  2067. const A = this._textSelectionInner$.value;
  2068. if (a && e.button === 2 && A) {
  2069. const m2 = s.findCharIndexByPosition(c);
  2070. if (typeof m2 == "number" && A.textRanges.some((E) => E.startOffset <= m2 && E.endOffset > m2) || typeof m2 == "number" && A.rectRanges.some((E) => E.startOffset <= m2 && E.endOffset >= m2))
  2071. return;
  2072. }
  2073. const { segmentId: l, segmentPage: d } = a;
  2074. l && this._currentSegmentId && l !== this._currentSegmentId && this.setSegment(l), l && d !== this._currentSegmentPage && this.setSegmentPage(d), this._anchorNodePosition = c, e.shiftKey && this._getActiveRangeInstance() ? this._updateActiveRangePosition(c) : e.ctrlKey ? this._removeAllCollapsedTextRanges() : this._isEmpty() || this._removeAllRanges(), t.disableObjectsEvent();
  2075. const h = v0.create(t);
  2076. this._scrollTimers.push(h), h.startScroll(r, i), this._onSelectionStart$.next((f = this._getActiveRangeInstance()) == null ? void 0 : f.startNodePosition), (p = t.getTransformer()) == null || p.clearSelectedObjects();
  2077. let u = r, g = i;
  2078. this._onPointerEvent = true, this._scenePointerMoveSubs.push(t.onPointerMove$.subscribeEvent((m2) => {
  2079. const { offsetX: E, offsetY: I } = m2;
  2080. t.setCursor(p1.TEXT), !(Math.sqrt((E - u) ** 2 + (I - g) ** 2) < 3) && (this._moving(E, I), h.scrolling(E, I, () => {
  2081. this._moving(E, I);
  2082. }), u = E, g = I);
  2083. })), this._scenePointerUpSubs.push(t.onPointerUp$.subscribeEvent(() => {
  2084. if ([...this._scenePointerMoveSubs, ...this._scenePointerUpSubs].forEach((E) => {
  2085. E.unsubscribe();
  2086. }), this._onPointerEvent = false, t.enableObjectsEvent(), this._anchorNodePosition && !this._focusNodePosition) {
  2087. if (e.ctrlKey) {
  2088. this._disposeScrollTimers();
  2089. return;
  2090. }
  2091. const E = new Mt2(t, o, s, this._anchorNodePosition, void 0, this._selectionStyle, this._currentSegmentId, this._currentSegmentPage);
  2092. this._addTextRange(E);
  2093. } else if (this._anchorNodePosition && this._focusNodePosition) {
  2094. for (const E of this._rangeListCache)
  2095. e.ctrlKey ? E.collapsed ? E.dispose() : this._addTextRange(E) : this._addTextRange(E);
  2096. this._addRectRanges(this._rectRangeListCache), this._rangeListCache = [], this._rectRangeListCache = [];
  2097. }
  2098. this._anchorNodePosition = null, this._focusNodePosition = null;
  2099. const m2 = {
  2100. textRanges: this._getAllTextRanges(),
  2101. rectRanges: this._getAllRectRanges(),
  2102. segmentId: this._currentSegmentId,
  2103. segmentPage: this._currentSegmentPage,
  2104. style: this._selectionStyle,
  2105. isEditing: false
  2106. };
  2107. this._textSelectionInner$.next(m2), this._disposeScrollTimers(), this._updateInputPosition(true);
  2108. }));
  2109. }
  2110. removeAllRanges() {
  2111. this._removeAllRanges(), this.deactivate();
  2112. }
  2113. getActiveTextRange() {
  2114. return this._getActiveRangeInstance();
  2115. }
  2116. _disposeScrollTimers() {
  2117. this._scrollTimers.forEach((e) => {
  2118. e == null || e.dispose();
  2119. }), this._scrollTimers = [];
  2120. }
  2121. _setSystemHighlightColorToStyle() {
  2122. const { r: e, g: t, b: o, a: s } = ES(), r = {
  2123. strokeWidth: 1.5,
  2124. stroke: "rgba(0, 0, 0, 0)",
  2125. strokeActive: "rgba(0, 0, 0, 1)",
  2126. fill: `rgba(${e}, ${t}, ${o}, ${s != null ? s : 0.3})`
  2127. };
  2128. this._setRangeStyle(r);
  2129. }
  2130. _getAllTextRanges() {
  2131. return this._rangeList.map(Xo);
  2132. }
  2133. _getAllRectRanges() {
  2134. return this._rectRangeList.map(BA);
  2135. }
  2136. getAllTextRanges() {
  2137. return this._getAllTextRanges();
  2138. }
  2139. getAllRectRanges() {
  2140. return this._getAllRectRanges();
  2141. }
  2142. _getActiveRange() {
  2143. const e = this._rangeList.find((s) => s.isActive());
  2144. if (e == null)
  2145. return null;
  2146. const { startOffset: t, endOffset: o } = e;
  2147. return t == null || o == null ? null : Xo(e);
  2148. }
  2149. _getActiveRangeInstance() {
  2150. return this._rangeList.find((e) => e.isActive());
  2151. }
  2152. dispose() {
  2153. super.dispose(), this._detachEvent(), this._removeAllRanges(), this._container.remove();
  2154. }
  2155. _initDOM() {
  2156. const { unitId: e } = this._context, t = document.createElement("div");
  2157. t.style.position = "fixed", t.style.left = "0px", t.style.top = "0px", t.id = `univer-doc-selection-container-${e}`;
  2158. const o = document.createElement("div"), s = document.createElement("div");
  2159. o.appendChild(s), t.appendChild(o), this._container = t, this._inputParent = o, this._input = s, this._initInput(), this._initInputEvents(), document.body.appendChild(t);
  2160. }
  2161. _registerContainer() {
  2162. this.disposeWithMe(
  2163. // the content editable div should be regarded as part of the applications container
  2164. this._layoutService.registerContainerElement(this._container)
  2165. );
  2166. }
  2167. _initInput() {
  2168. this._inputParent.style.cssText = `
  2169. position:absolute;
  2170. height:1px;
  2171. width:1px;
  2172. overflow: hidden;
  2173. `, this._input.contentEditable = "true", this._input.classList.add("univer-editor"), this._input.id = `__editor_${this._context.unitId}`, this._input.style.cssText = `
  2174. position: absolute;
  2175. overflow: hidden;
  2176. opacity: 1;
  2177. background: #000;
  2178. color: transparent;
  2179. outline: none;
  2180. z-index: -2;
  2181. caret-color: transparent;
  2182. white-space: pre-wrap;
  2183. user-select: text;
  2184. `;
  2185. }
  2186. _getNodePosition(e) {
  2187. if (e == null)
  2188. return;
  2189. const { node: t, ratioX: o, segmentPage: s } = e, i = this._docSkeletonManagerService.getSkeleton().findPositionByGlyph(t, s);
  2190. if (i == null)
  2191. return;
  2192. let c = o < 0.5;
  2193. return t.glyphType === V1.LIST && (c = true), {
  2194. ...i,
  2195. isBack: c
  2196. };
  2197. }
  2198. _interactTextRanges(e) {
  2199. const t = [];
  2200. for (const o of this._rangeList) {
  2201. if (e.some((s) => s.isIntersection(o))) {
  2202. o.dispose();
  2203. continue;
  2204. }
  2205. t.push(o);
  2206. }
  2207. this._rangeList = t;
  2208. }
  2209. _interactRectRanges(e) {
  2210. const t = [];
  2211. for (const o of this._rectRangeList) {
  2212. if (e.some((s) => s.isIntersection(o))) {
  2213. o.dispose();
  2214. continue;
  2215. }
  2216. t.push(o);
  2217. }
  2218. this._rectRangeList = t;
  2219. }
  2220. _removeAllRanges() {
  2221. this._removeAllTextRanges(), this._removeAllRectRanges();
  2222. }
  2223. _removeAllCacheRanges() {
  2224. this._rangeListCache.forEach((e) => {
  2225. e.dispose();
  2226. }), this._rectRangeListCache.forEach((e) => {
  2227. e.dispose();
  2228. }), this._rangeListCache = [], this._rectRangeListCache = [];
  2229. }
  2230. _removeAllTextRanges() {
  2231. this._rangeList.forEach((e) => {
  2232. e.dispose();
  2233. }), this._rangeList = [];
  2234. }
  2235. _removeAllRectRanges() {
  2236. this._rectRangeList.forEach((e) => {
  2237. e.dispose();
  2238. }), this._rectRangeList = [];
  2239. }
  2240. _removeAllCollapsedTextRanges() {
  2241. for (const e of this._rangeList)
  2242. e.collapsed && e.dispose();
  2243. }
  2244. _deactivateAllTextRanges() {
  2245. this._rangeList.forEach((e) => {
  2246. e.deactivate();
  2247. });
  2248. }
  2249. _deactivateAllRectRanges() {
  2250. this._rectRangeList.forEach((e) => {
  2251. e.deactivate();
  2252. });
  2253. }
  2254. _addTextRangesToCache(e) {
  2255. this._rangeListCache.push(...e);
  2256. }
  2257. _addTextRange(e) {
  2258. this._deactivateAllTextRanges(), e.activate(), this._rangeList.push(e);
  2259. }
  2260. _addRectRangesToCache(e) {
  2261. this._rectRangeListCache.push(...e);
  2262. }
  2263. _addRectRanges(e) {
  2264. e.length !== 0 && (this._deactivateAllRectRanges(), e[e.length - 1].activate(), this._rectRangeList.push(...e));
  2265. }
  2266. _createTextRangeByAnchorPosition(e) {
  2267. this._removeAllRanges();
  2268. const { scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton(), r = new Mt2(t, o, s, e, void 0, this._selectionStyle, this._currentSegmentId, this._currentSegmentPage);
  2269. this._addTextRange(r);
  2270. }
  2271. _updateActiveRangePosition(e) {
  2272. const t = this._getActiveRangeInstance();
  2273. if (t == null || t.anchorNodePosition == null) {
  2274. this._logService.error(
  2275. "[DocSelectionRenderService] _updateActiveRangeFocusPosition: active range has no anchor"
  2276. );
  2277. return;
  2278. }
  2279. this._removeAllRanges(), this._anchorNodePosition = t.anchorNodePosition, this._focusNodePosition = e;
  2280. const { scene: o, mainComponent: s } = this._context, r = this._docSkeletonManagerService.getSkeleton(), { _anchorNodePosition: i, _focusNodePosition: a, _selectionStyle: c, _currentSegmentId: A, _currentSegmentPage: l } = this;
  2281. if (i == null || a == null || s == null)
  2282. return;
  2283. const d = Ko(
  2284. i,
  2285. a,
  2286. o,
  2287. s,
  2288. r,
  2289. c,
  2290. A,
  2291. l
  2292. );
  2293. if (d == null)
  2294. return;
  2295. const { textRanges: h, rectRanges: u } = d;
  2296. this._addTextRangesToCache(h), this._addRectRangesToCache(u), this.deactivate();
  2297. }
  2298. _isEmpty() {
  2299. return this._rangeList.length === 0 && this._rectRangeList.length === 0;
  2300. }
  2301. _getCanvasOffset() {
  2302. var t;
  2303. const e = (t = this._context.scene) == null ? void 0 : t.getEngine();
  2304. return yA(e);
  2305. }
  2306. _updateInputPosition(e = false) {
  2307. const t = this._getActiveRangeInstance(), o = t == null ? void 0 : t.getAnchor();
  2308. if (!o || o && !o.visible || this.activeViewPort == null) {
  2309. this.focus();
  2310. return;
  2311. }
  2312. const { left: s, top: r } = o, i = this.activeViewPort.getAbsoluteVector($.FromArray([s, r])), { x: a, y: c } = i;
  2313. let { left: A, top: l } = this._getCanvasOffset();
  2314. A += a, l += c, this.activate(A, l, e);
  2315. }
  2316. _moving(e, t) {
  2317. var m2, E;
  2318. const { _currentSegmentId: o, _currentSegmentPage: s } = this, r = this._findNodeByCoord(e, t, {
  2319. strict: true,
  2320. segmentId: o,
  2321. segmentPage: s
  2322. }), i = this._getNodePosition(r);
  2323. if (i == null || r == null)
  2324. return;
  2325. const a = r == null ? void 0 : r.node.parent, c = a == null ? void 0 : a.glyphGroup[a.glyphGroup.indexOf(r.node) + 1];
  2326. (r == null ? void 0 : r.node.streamType) === ln.PARAGRAPH && (c == null ? void 0 : c.streamType) === ln.SECTION_BREAK && (i.isBack = true), this._focusNodePosition = i, this._removeAllCacheRanges();
  2327. const { _anchorNodePosition: A, _selectionStyle: l } = this, { scene: d, mainComponent: h } = this._context, u = this._docSkeletonManagerService.getSkeleton();
  2328. if (A == null || h == null)
  2329. return;
  2330. const g = Ko(
  2331. A,
  2332. i,
  2333. d,
  2334. h,
  2335. u,
  2336. l,
  2337. o,
  2338. s
  2339. );
  2340. if (g == null)
  2341. return;
  2342. const { textRanges: f, rectRanges: p } = g;
  2343. this._rangeList.length > 0 && f.length > 0 && this._interactTextRanges(f), this._rectRangeList.length > 0 && p.length > 0 && this._interactRectRanges(p), this._addTextRangesToCache(f), this._addRectRangesToCache(p), this.deactivate(), (E = (m2 = this._context.scene) == null ? void 0 : m2.getEngine()) == null || E.setCapture();
  2344. }
  2345. __attachScrollEvent() {
  2346. const e = this.activeViewPort;
  2347. if (!e)
  2348. return;
  2349. const { unitId: t } = this._context;
  2350. if (this._viewPortObserverMap.has(t))
  2351. return;
  2352. const o = e.onScrollAfter$.subscribeEvent((r) => {
  2353. if (!r.viewport)
  2354. return;
  2355. const a = this._getActiveRangeInstance();
  2356. a == null || a.activeStatic();
  2357. }), s = e.onScrollEnd$.subscribeEvent((r) => {
  2358. const i = r.viewport;
  2359. if (!i)
  2360. return;
  2361. const a = i.getBounding(), c = this._getActiveRangeInstance(), A = c == null ? void 0 : c.getAnchor();
  2362. if (!(!A || A && !A.visible)) {
  2363. if (a) {
  2364. const { left: l, top: d, right: h, bottom: u } = a.viewBound;
  2365. if (A.left < l || A.left > h || A.top < d || A.top > u) {
  2366. c == null || c.deactivateStatic();
  2367. return;
  2368. }
  2369. }
  2370. this._updateInputPosition();
  2371. }
  2372. });
  2373. this._viewPortObserverMap.set(t, {
  2374. scrollBefore: o,
  2375. scrollStop: s
  2376. });
  2377. }
  2378. // FIXME: listeners here are not correctly disposed
  2379. // eslint-disable-next-line max-lines-per-function
  2380. _initInputEvents() {
  2381. this.disposeWithMe(
  2382. fromEvent(this._input, "keydown").subscribe((e) => {
  2383. this._isIMEInputApply || this._eventHandle(e, (t) => {
  2384. this._onKeydown$.next(t);
  2385. });
  2386. })
  2387. ), this.disposeWithMe(
  2388. fromEvent(this._input, "input").subscribe((e) => {
  2389. if (!(e.inputType === "historyUndo" || e.inputType === "historyRedo")) {
  2390. if (this._rectRangeList.length > 0)
  2391. return e.stopPropagation(), e.preventDefault();
  2392. this._isIMEInputApply || this._eventHandle(e, (t) => {
  2393. this._onInputBefore$.next(t), this._onInput$.next(t);
  2394. });
  2395. }
  2396. })
  2397. ), this.disposeWithMe(
  2398. fromEvent(this._input, "compositionstart").subscribe((e) => {
  2399. if (this._rectRangeList.length > 0)
  2400. return e.stopPropagation(), e.preventDefault();
  2401. this._isIMEInputApply = true, this._eventHandle(e, (t) => {
  2402. this._onCompositionstart$.next(t);
  2403. });
  2404. })
  2405. ), this.disposeWithMe(
  2406. fromEvent(this._input, "compositionend").subscribe((e) => {
  2407. this._isIMEInputApply = false, this._eventHandle(e, (t) => {
  2408. this._onCompositionend$.next(t);
  2409. });
  2410. })
  2411. ), this.disposeWithMe(
  2412. fromEvent(this._input, "compositionupdate").subscribe((e) => {
  2413. this._eventHandle(e, (t) => {
  2414. this._onInputBefore$.next(t), this._onCompositionupdate$.next(t);
  2415. });
  2416. })
  2417. ), this.disposeWithMe(
  2418. fromEvent(this._input, "paste").subscribe((e) => {
  2419. this._eventHandle(e, (t) => {
  2420. this._onPaste$.next(t);
  2421. });
  2422. })
  2423. ), this.disposeWithMe(
  2424. fromEvent(this._input, "focus").subscribe((e) => {
  2425. this._eventHandle(e, (t) => {
  2426. this._onFocus$.next(t);
  2427. });
  2428. })
  2429. ), this.disposeWithMe(
  2430. fromEvent(this._input, "blur").subscribe((e) => {
  2431. this._eventHandle(e, (t) => {
  2432. this._onBlur$.next(t);
  2433. });
  2434. })
  2435. );
  2436. }
  2437. _eventHandle(e, t) {
  2438. const o = this._input.textContent || "";
  2439. this._input.innerHTML = "";
  2440. const s = this._getActiveRange(), r = this._getAllTextRanges();
  2441. t({
  2442. event: e,
  2443. content: o,
  2444. activeRange: s,
  2445. rangeList: r
  2446. });
  2447. }
  2448. _getTransformCoordForDocumentOffset(e, t) {
  2449. const o = this._context.mainComponent, { documentTransform: s } = o.getOffsetConfig();
  2450. if (this.activeViewPort == null || s == null)
  2451. return;
  2452. const r = this.activeViewPort.transformVector2SceneCoord($.FromArray([e, t]));
  2453. if (r)
  2454. return s.clone().invert().applyPoint(r);
  2455. }
  2456. _findNodeByCoord(e, t, o) {
  2457. const s = this._getTransformCoordForDocumentOffset(e, t);
  2458. if (s == null)
  2459. return;
  2460. const r = this._context.mainComponent, i = this._docSkeletonManagerService.getSkeleton(), {
  2461. pageLayoutType: a = Y2.VERTICAL,
  2462. pageMarginLeft: c,
  2463. pageMarginTop: A
  2464. } = r.getOffsetConfig();
  2465. return i.findNodeByCoord(
  2466. s,
  2467. a,
  2468. c,
  2469. A,
  2470. o
  2471. );
  2472. }
  2473. _detachEvent() {
  2474. this._onInputBefore$.complete(), this._onKeydown$.complete(), this._onInput$.complete(), this._onCompositionstart$.complete(), this._onCompositionupdate$.complete(), this._onCompositionend$.complete(), this._onSelectionStart$.complete(), this._textSelectionInner$.complete(), this._onPaste$.complete(), this._onFocus$.complete(), this._onBlur$.complete(), this._onPointerDown$.complete();
  2475. }
  2476. };
  2477. Se = PA([
  2478. Cn(1, _1),
  2479. Cn(2, Mt),
  2480. Cn(3, _n),
  2481. Cn(4, ot(D))
  2482. ], Se);
  2483. var DA = class extends nt {
  2484. constructor(t, o, s, r, i) {
  2485. super();
  2486. x(this, "_change$", new Subject());
  2487. x(this, "change$", this._change$.asObservable());
  2488. x(this, "_input$", new Subject());
  2489. x(this, "input$", this._input$.asObservable());
  2490. x(this, "_paste$", new Subject());
  2491. x(this, "paste$", this._paste$.asObservable());
  2492. x(this, "_focus$", new Subject());
  2493. x(this, "focus$", this._focus$.asObservable());
  2494. x(this, "_blur$", new Subject());
  2495. x(this, "blur$", this._blur$.asObservable());
  2496. x(this, "_selectionChange$", new Subject());
  2497. x(this, "selectionChange$", this._selectionChange$.asObservable());
  2498. this._param = t, this._univerInstanceService = o, this._docSelectionManagerService = s, this._commandService = r, this._undoRedoService = i, this._listenSelection();
  2499. }
  2500. get docSelectionRenderService() {
  2501. return this._param.render.with(Se);
  2502. }
  2503. _listenSelection() {
  2504. const t = this._param.render.with(Se);
  2505. this.disposeWithMe(
  2506. t.onBlur$.subscribe((o) => {
  2507. this._blur$.next(o);
  2508. const s = this.getDocumentData();
  2509. this._change$.next({
  2510. target: this,
  2511. data: s
  2512. });
  2513. })
  2514. ), this.disposeWithMe(
  2515. t.onFocus$.subscribe((o) => {
  2516. this._focus$.next(o);
  2517. })
  2518. ), this.disposeWithMe(
  2519. t.onPaste$.subscribe((o) => {
  2520. this._paste$.next(o);
  2521. })
  2522. ), this.disposeWithMe(
  2523. merge(
  2524. t.onInput$,
  2525. t.onKeydown$.pipe(filter((o) => {
  2526. const s = o.event;
  2527. return s.ctrlKey || s.metaKey ? [I1.X, I1.V].includes(s.keyCode) : [I1.BACKSPACE].includes(s.keyCode);
  2528. })),
  2529. t.onCompositionupdate$,
  2530. t.onCompositionend$,
  2531. t.onPaste$
  2532. ).subscribe((o) => {
  2533. if (o == null)
  2534. return;
  2535. const { content: s = "" } = o, r = this.getDocumentData();
  2536. this._input$.next({
  2537. target: this,
  2538. content: s,
  2539. data: r,
  2540. isComposing: o.event.type === "compositionupdate"
  2541. });
  2542. })
  2543. ), this.disposeWithMe(
  2544. this._docSelectionManagerService.textSelection$.subscribe((o) => {
  2545. if (o == null)
  2546. return;
  2547. const { unitId: s, subUnitId: r, ...i } = o, a = this.getEditorId();
  2548. s === a && this._selectionChange$.next(i);
  2549. })
  2550. );
  2551. }
  2552. isFocus() {
  2553. const t = this._param.render.with(Se);
  2554. return t.isFocusing && !!t.getActiveTextRange();
  2555. }
  2556. /**
  2557. * @deprecated use `IEditorService.focus` as instead. this is for internal usage.
  2558. */
  2559. focus() {
  2560. const t = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC), o = this.getEditorId();
  2561. (t == null || t.getUnitId() !== o) && this._univerInstanceService.setCurrentUnitForType(o), this._param.render.with(Se).focus();
  2562. }
  2563. /**
  2564. * @deprecated use `IEditorService.blur` as instead. this is for internal usage.
  2565. */
  2566. blur() {
  2567. this._param.render.with(Se).blur();
  2568. }
  2569. // Selects the entire content of the editor.
  2570. // Calling editor.select() will not necessarily focus the editor, so it is often used with Editor.focus
  2571. select() {
  2572. const t = this.getDocumentData();
  2573. return this.setSelectionRanges([{
  2574. startOffset: 0,
  2575. endOffset: t.body ? t.body.dataStream.length - 2 : 0
  2576. }]);
  2577. }
  2578. // Selects the specified range of characters within editor.
  2579. setSelectionRanges(t) {
  2580. const o = this.getEditorId(), s = {
  2581. unitId: o,
  2582. subUnitId: o
  2583. };
  2584. return this._docSelectionManagerService.replaceDocRanges(t, s, false);
  2585. }
  2586. // Get current doc ranges. include text range and rect range.
  2587. getSelectionRanges() {
  2588. const t = this.getEditorId(), o = {
  2589. unitId: t,
  2590. subUnitId: t
  2591. };
  2592. return this._docSelectionManagerService.getDocRanges(o);
  2593. }
  2594. getCursorPosition() {
  2595. var o, s;
  2596. return (s = (o = this.getSelectionRanges().find((r) => r.collapsed)) == null ? void 0 : o.startOffset) != null ? s : -1;
  2597. }
  2598. // get editor id.
  2599. getEditorId() {
  2600. return this._getEditorId();
  2601. }
  2602. // get document data.
  2603. getDocumentData() {
  2604. return this._getDocDataModel().getSnapshot();
  2605. }
  2606. getDocumentDataModel() {
  2607. return this._getDocDataModel();
  2608. }
  2609. // Set the new document data.
  2610. setDocumentData(t, o) {
  2611. const { id: s } = t;
  2612. this._commandService.syncExecuteCommand(Vi.id, {
  2613. unitId: s,
  2614. snapshot: t,
  2615. textRanges: o
  2616. });
  2617. }
  2618. replaceText(t, o = true) {
  2619. const s = this.getDocumentData();
  2620. this.setDocumentData(
  2621. {
  2622. ...s,
  2623. body: {
  2624. dataStream: `${t}\r
  2625. `,
  2626. paragraphs: [{
  2627. startIndex: 0
  2628. }],
  2629. customRanges: [],
  2630. sectionBreaks: [],
  2631. tables: [],
  2632. textRuns: []
  2633. }
  2634. },
  2635. o ? [{
  2636. startOffset: t.length,
  2637. endOffset: t.length,
  2638. collapsed: true
  2639. }] : null
  2640. );
  2641. }
  2642. // Clear the undo redo history of this editor.
  2643. clearUndoRedoHistory() {
  2644. const t = this.getEditorId();
  2645. return this._undoRedoService.clearUndoRedo(t);
  2646. }
  2647. dispose() {
  2648. this._getDocDataModel().dispose();
  2649. }
  2650. /**
  2651. * @deprecated use getEditorId.
  2652. */
  2653. get editorUnitId() {
  2654. return this._param.editorUnitId;
  2655. }
  2656. /**
  2657. * @deprecated @TODO: @JOCS remove this in the future.
  2658. */
  2659. get params() {
  2660. return this._param;
  2661. }
  2662. get cancelDefaultResizeListener() {
  2663. return this._param.cancelDefaultResizeListener;
  2664. }
  2665. get render() {
  2666. return this._param.render;
  2667. }
  2668. isReadOnly() {
  2669. return this._param.readonly === true;
  2670. }
  2671. getBoundingClientRect() {
  2672. return this._param.editorDom.getBoundingClientRect();
  2673. }
  2674. get editorDOM() {
  2675. return this._param.editorDom;
  2676. }
  2677. isVisible() {
  2678. return this._param.visible;
  2679. }
  2680. isSheetEditor() {
  2681. return zd(this._getEditorId());
  2682. }
  2683. /**
  2684. * @deprecated use getDocumentData.
  2685. */
  2686. getValue() {
  2687. var s;
  2688. return (((s = this._getDocDataModel().getBody()) == null ? void 0 : s.dataStream) || "").replace(/\r\n/g, "").replace(/\n/g, "").replace(/\n/g, "");
  2689. }
  2690. /**
  2691. * @deprecated use getDocumentData.
  2692. */
  2693. getBody() {
  2694. return this._getDocDataModel().getBody();
  2695. }
  2696. /**
  2697. * @deprecated.
  2698. */
  2699. update(t) {
  2700. this._param = {
  2701. ...this._param,
  2702. ...t
  2703. };
  2704. }
  2705. /**
  2706. * @deprecated.
  2707. */
  2708. updateCanvasStyle() {
  2709. var s;
  2710. const t = this._getDocDataModel();
  2711. if (t == null)
  2712. return;
  2713. const o = {};
  2714. (s = this._param.canvasStyle) != null && s.fontSize && (o.textStyle == null && (o.textStyle = {}), o.textStyle.fs = this._param.canvasStyle.fontSize), t.updateDocumentStyle(o);
  2715. }
  2716. _getDocDataModel() {
  2717. const t = this._getEditorId();
  2718. return this._univerInstanceService.getUnit(t, Fe.UNIVER_DOC);
  2719. }
  2720. _getEditorId() {
  2721. var t;
  2722. return ((t = this._param.initialSnapshot) == null ? void 0 : t.id) || this._param.editorUnitId || "";
  2723. }
  2724. };
  2725. var wA = Object.defineProperty;
  2726. var NA = Object.getOwnPropertyDescriptor;
  2727. var QA = (n, e, t, o) => {
  2728. for (var s = o > 1 ? void 0 : o ? NA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  2729. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  2730. return o && s && wA(e, t, s), s;
  2731. };
  2732. var Rt = (n, e) => (t, o) => e(t, o, n);
  2733. var UA = [
  2734. "univer-editor",
  2735. "univer-range-selector",
  2736. "univer-range-selector-editor",
  2737. "univer-render-canvas",
  2738. "univer-text-editor-container-placeholder"
  2739. ];
  2740. var Jo = class extends nt {
  2741. constructor(e, t, o, s, r, i) {
  2742. super();
  2743. x(this, "_editors", /* @__PURE__ */ new Map());
  2744. x(this, "_focusEditorUnitId");
  2745. x(this, "_blur$", new Subject());
  2746. x(this, "blur$", this._blur$.asObservable());
  2747. x(this, "_focus$", new Subject());
  2748. x(this, "focus$", this._focus$.asObservable());
  2749. this._univerInstanceService = e, this._renderManagerService = t, this._docSelectionManagerService = o, this._contextService = s, this._commandService = r, this._undoRedoService = i, this._initUniverFocusListener();
  2750. }
  2751. // REFACTOR: @Gggpound The specific business processing should not be placed here,
  2752. // I moved from the layout service. https://github.com/dream-num/univer-pro/issues/1708
  2753. _initUniverFocusListener() {
  2754. this.disposeWithMe(
  2755. fromEvent(window, "focusin").subscribe((e) => {
  2756. const t = e.target;
  2757. this._blurSheetEditor(t);
  2758. })
  2759. );
  2760. }
  2761. _blurSheetEditor(e) {
  2762. if (UA.some((o) => e.classList.contains(o)))
  2763. return;
  2764. const t = this.getFocusEditor();
  2765. t && t.isSheetEditor() !== true && this.blur();
  2766. }
  2767. _setFocusId(e) {
  2768. this._focusEditorUnitId = e;
  2769. }
  2770. getFocusId() {
  2771. return this._focusEditorUnitId;
  2772. }
  2773. getFocusEditor() {
  2774. if (this._focusEditorUnitId)
  2775. return this.getEditor(this._focusEditorUnitId);
  2776. }
  2777. isEditor(e) {
  2778. return this._editors.has(e);
  2779. }
  2780. isSheetEditor(e) {
  2781. const t = this._editors.get(e);
  2782. return !!(t && t.isSheetEditor());
  2783. }
  2784. blur() {
  2785. this._setFocusId(null), this._contextService.setContextValue(oE, false), this._contextService.setContextValue(RR, false);
  2786. const e = this.getFocusEditor();
  2787. e == null || e.blur(), this._blur$.next(null);
  2788. }
  2789. focus(e) {
  2790. if (this._focusEditorUnitId && this.blur(), e == null)
  2791. return;
  2792. const t = this.getEditor(e);
  2793. if (t == null)
  2794. return;
  2795. this._univerInstanceService.setCurrentUnitForType(e);
  2796. const o = t.getValue().length;
  2797. this._contextService.setContextValue(oE, true), zd(e) || this._contextService.setContextValue(RR, true), t.focus(), this._setFocusId(e), this._focus$.next({
  2798. startOffset: o,
  2799. endOffset: o
  2800. });
  2801. }
  2802. dispose() {
  2803. this._editors.clear(), super.dispose();
  2804. }
  2805. getEditor(e = this._getCurrentEditorUnitId()) {
  2806. return this._editors.get(e);
  2807. }
  2808. getAllEditor() {
  2809. return this._editors;
  2810. }
  2811. register(e, t) {
  2812. var c, A, l, d;
  2813. const { initialSnapshot: o, canvasStyle: s = {} } = e, r = o.id;
  2814. this._univerInstanceService.getUnit(r, Fe.UNIVER_DOC) == null && this._univerInstanceService.createUnit(
  2815. Fe.UNIVER_DOC,
  2816. o || this._getBlank(r),
  2817. { makeCurrent: false }
  2818. );
  2819. let a = this._renderManagerService.getRenderById(r);
  2820. if (a == null && (this._renderManagerService.create(r), a = this._renderManagerService.getRenderById(r)), a) {
  2821. a.engine.setContainer(t);
  2822. const h = new DA(
  2823. { ...e, render: a, editorDom: t, canvasStyle: s },
  2824. this._univerInstanceService,
  2825. this._docSelectionManagerService,
  2826. this._commandService,
  2827. this._undoRedoService
  2828. );
  2829. this._editors.set(r, h), e.scrollBar || (d = (l = (A = (c = a.mainComponent) == null ? void 0 : c.getScene()) == null ? void 0 : A.getViewports()) == null ? void 0 : l[0].getScrollBar()) == null || d.dispose();
  2830. }
  2831. return Ze(() => {
  2832. this._unRegister(r);
  2833. });
  2834. }
  2835. _unRegister(e) {
  2836. const t = this._editors.get(e);
  2837. t != null && (this._renderManagerService.removeRender(e), t.dispose(), this._editors.delete(e), this._univerInstanceService.disposeUnit(e));
  2838. }
  2839. _getCurrentEditorUnitId() {
  2840. return this._univerInstanceService.getCurrentUniverDocInstance().getUnitId();
  2841. }
  2842. _getBlank(e) {
  2843. return {
  2844. id: e,
  2845. body: {
  2846. dataStream: `${Wd}`,
  2847. textRuns: [],
  2848. paragraphs: [
  2849. {
  2850. startIndex: 0
  2851. }
  2852. ]
  2853. },
  2854. documentStyle: {
  2855. renderConfig: {
  2856. verticalAlign: hn.TOP,
  2857. horizontalAlign: Xt.LEFT
  2858. },
  2859. marginLeft: 3,
  2860. marginTop: 0,
  2861. marginRight: 3
  2862. }
  2863. };
  2864. }
  2865. };
  2866. Jo = QA([
  2867. Rt(0, _n),
  2868. Rt(1, Yx),
  2869. Rt(2, ot(m)),
  2870. Rt(3, fs),
  2871. Rt(4, Pt),
  2872. Rt(5, cn)
  2873. ], Jo);
  2874. var He2 = Ct("univer.editor.service");
  2875. function LA(n) {
  2876. const { editorId: e, initialValue: t, container: o, autoFocus: s, isSingle: r } = n, i = (0, import_react.useMemo)(() => s != null ? s : false, []), [a, c] = (0, import_react.useState)(), A = W0(He2);
  2877. return (0, import_react.useLayoutEffect)(() => {
  2878. var l, d;
  2879. if (o.current) {
  2880. const h = {
  2881. body: {
  2882. dataStream: `\r
  2883. `,
  2884. textRuns: [],
  2885. customBlocks: [],
  2886. customDecorations: [],
  2887. customRanges: [],
  2888. paragraphs: [{
  2889. startIndex: 0
  2890. }]
  2891. },
  2892. ...t,
  2893. documentStyle: {
  2894. ...t == null ? void 0 : t.documentStyle,
  2895. pageSize: {
  2896. width: r ? 1 / 0 : o.current.clientWidth,
  2897. height: 1 / 0
  2898. }
  2899. },
  2900. id: e
  2901. }, u = A.register(
  2902. {
  2903. autofocus: true,
  2904. editorUnitId: e,
  2905. initialSnapshot: h
  2906. },
  2907. o.current
  2908. ), g = A.getEditor(e);
  2909. if (c(g), i) {
  2910. g.focus();
  2911. const f = ((d = (l = h.body) == null ? void 0 : l.dataStream.length) != null ? d : 2) - 2;
  2912. g.setSelectionRanges([{ startOffset: f, endOffset: f }]);
  2913. }
  2914. return () => {
  2915. u == null || u.dispose();
  2916. };
  2917. }
  2918. }, []), a;
  2919. }
  2920. var at = {
  2921. id: "doc.operation.move-cursor",
  2922. type: ar.OPERATION,
  2923. handler: (n, e) => !!e
  2924. };
  2925. var ct = {
  2926. id: "doc.operation.move-selection",
  2927. type: ar.OPERATION,
  2928. handler: (n, e) => !!e
  2929. };
  2930. var FA = (n, e, t, o) => {
  2931. const s = W0(Pt), r = W0(it), i = (0, import_react.useRef)(e);
  2932. i.current = e;
  2933. const a = (0, import_react.useRef)(o);
  2934. a.current = o, (0, import_react.useEffect)(() => {
  2935. if (!t || !n)
  2936. return;
  2937. const A = `sheet.formula-embedding-editor.${t.getEditorId()}`, l = new Mi(), d = (u, g) => {
  2938. if (a.current) {
  2939. a.current(u, g);
  2940. return;
  2941. }
  2942. let f = wu.LEFT;
  2943. u === I1.ARROW_DOWN ? f = wu.DOWN : u === I1.ARROW_UP ? f = wu.UP : u === I1.ARROW_RIGHT && (f = wu.RIGHT), g === Ae.SHIFT ? s.executeCommand(ct.id, {
  2944. direction: f
  2945. }) : s.executeCommand(at.id, {
  2946. direction: f
  2947. });
  2948. };
  2949. return l.add(s.registerCommand({
  2950. id: A,
  2951. type: ar.OPERATION,
  2952. handler(u, g) {
  2953. const { keyCode: f } = g;
  2954. d(f);
  2955. }
  2956. })), [
  2957. { keyCode: I1.ARROW_DOWN },
  2958. { keyCode: I1.ARROW_LEFT },
  2959. { keyCode: I1.ARROW_RIGHT },
  2960. { keyCode: I1.ARROW_UP },
  2961. { keyCode: I1.ARROW_DOWN, metaKey: Ae.SHIFT },
  2962. { keyCode: I1.ARROW_LEFT, metaKey: Ae.SHIFT },
  2963. { keyCode: I1.ARROW_RIGHT, metaKey: Ae.SHIFT },
  2964. { keyCode: I1.ARROW_UP, metaKey: Ae.SHIFT },
  2965. { keyCode: I1.ARROW_DOWN, metaKey: Ae.CTRL_COMMAND },
  2966. { keyCode: I1.ARROW_LEFT, metaKey: Ae.CTRL_COMMAND },
  2967. { keyCode: I1.ARROW_RIGHT, metaKey: Ae.CTRL_COMMAND },
  2968. { keyCode: I1.ARROW_UP, metaKey: Ae.CTRL_COMMAND },
  2969. { keyCode: I1.ARROW_DOWN, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
  2970. { keyCode: I1.ARROW_LEFT, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
  2971. { keyCode: I1.ARROW_RIGHT, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
  2972. { keyCode: I1.ARROW_UP, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT }
  2973. ].map(({ keyCode: u, metaKey: g }) => ({
  2974. id: A,
  2975. binding: g ? u | g : u,
  2976. preconditions: () => true,
  2977. priority: 900,
  2978. staticParameters: {
  2979. eventType: vf.Keyboard,
  2980. keyCode: u
  2981. }
  2982. })).forEach((u) => {
  2983. l.add(r.registerShortcut(u));
  2984. }), () => {
  2985. l.dispose();
  2986. };
  2987. }, [s, t, n, r]);
  2988. };
  2989. function HA(n, e) {
  2990. const t = W0(Pt);
  2991. (0, import_react.useEffect)(() => {
  2992. if (!n)
  2993. return;
  2994. const o = t.onCommandExecuted((s) => {
  2995. if (s.id === M.id) {
  2996. if (s.params.unitId !== n.getEditorId())
  2997. return;
  2998. e(n.getDocumentData());
  2999. }
  3000. });
  3001. return () => {
  3002. o.dispose();
  3003. };
  3004. }, [n, e, t]);
  3005. }
  3006. var kA = "univer-rich-text-editor-active";
  3007. var VA = "univer-rich-text-editor-wrap";
  3008. var jA = "univer-rich-text-editor-text";
  3009. var WA = "univer-rich-text-editor-error-wrap";
  3010. var zA = "univer-rich-text-editor-placeholder";
  3011. var Xt2 = {
  3012. richTextEditorActive: kA,
  3013. richTextEditorWrap: VA,
  3014. richTextEditorText: jA,
  3015. richTextEditorErrorWrap: WA,
  3016. richTextEditorPlaceholder: zA
  3017. };
  3018. var cf = (0, import_react.forwardRef)((n, e) => {
  3019. var te2;
  3020. const {
  3021. className: t,
  3022. autoFocus: o,
  3023. onFocusChange: s,
  3024. initialValue: r,
  3025. onClickOutside: i,
  3026. keyboardEventConfig: a,
  3027. moveCursor: c = true,
  3028. style: A,
  3029. isSingle: l,
  3030. editorId: d,
  3031. onHeightChange: h,
  3032. onChange: u,
  3033. defaultHeight: g = 32,
  3034. maxHeight: f = 32
  3035. } = n, p = W0(He2), m2 = n32(s), E = n32(i), [I, v] = (0, import_react.useState)(g), R = import_react.default.useRef(null), S = (0, import_react.useMemo)(() => d != null ? d : k0(`RICH_TEXT_EDITOR-${qt(4)}`), [d]), C = LA({
  3036. editorId: S,
  3037. initialValue: r,
  3038. container: R,
  3039. autoFocus: o,
  3040. isSingle: l
  3041. }), O = W0(Yx).getRenderById(S), P = O == null ? void 0 : O.with(Se), b = (te2 = P == null ? void 0 : P.isFocusing) != null ? te2 : false, B = import_react.default.useRef(null), [M2, H] = (0, import_react.useState)(() => {
  3042. var q, V;
  3043. return !st.transform.getPlainText((V = (q = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : q.dataStream) != null ? V : "");
  3044. }), { checkScrollBar: F } = dA(C, l, true, true), D2 = n32((q) => {
  3045. const V = O == null ? void 0 : O.with(D), Y = V == null ? void 0 : V.getSkeleton().getActualSize();
  3046. Y && (h == null || h(Y.actualHeight), v(Math.max(g, Math.min(Y.actualHeight + 10, f)))), u == null || u(q), F();
  3047. });
  3048. return (0, import_react.useEffect)(() => {
  3049. var V, Y;
  3050. H(!st.transform.getPlainText((Y = (V = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : V.dataStream) != null ? Y : ""));
  3051. const q = C == null ? void 0 : C.selectionChange$.subscribe(() => {
  3052. var oe, ce2;
  3053. H(!st.transform.getPlainText((ce2 = (oe = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : oe.dataStream) != null ? ce2 : ""));
  3054. });
  3055. return () => q == null ? void 0 : q.unsubscribe();
  3056. }, [C]), z0(C == null ? void 0 : C.blur$), z0(C == null ? void 0 : C.focus$), (0, import_react.useEffect)(() => {
  3057. m2 == null || m2(b);
  3058. }, [b, m2]), (0, import_react.useEffect)(() => {
  3059. const q = (V) => {
  3060. var oe, ce2;
  3061. p.getFocusId() !== S || ((ce2 = (oe = V.target) == null ? void 0 : oe.dataset) == null ? void 0 : ce2.editorid) === S || B.current && !B.current.contains(V.target) && (E == null || E());
  3062. };
  3063. return setTimeout(() => {
  3064. document.addEventListener("click", q);
  3065. }, 100), () => {
  3066. document.removeEventListener("click", q);
  3067. };
  3068. }, [C, S, p, E]), FA(b && c, false, C), lA(b, a, C), (0, import_react.useImperativeHandle)(e, () => C, [C]), HA(C, D2), w.jsx("div", { className: Un(Xt2.richTextEditor, t), style: A, children: w.jsxs(
  3069. "div",
  3070. {
  3071. className: Un(Xt2.richTextEditorWrap, {
  3072. [Xt2.richTextEditorActive]: b
  3073. }),
  3074. style: { height: I },
  3075. ref: B,
  3076. children: [
  3077. w.jsx(
  3078. "div",
  3079. {
  3080. className: Xt2.richTextEditorText,
  3081. ref: R,
  3082. onMouseUp: () => C == null ? void 0 : C.focus()
  3083. }
  3084. ),
  3085. M2 ? w.jsx("div", { className: Xt2.richTextEditorPlaceholder, children: n.placeholder }) : null
  3086. ]
  3087. }
  3088. ) });
  3089. });
  3090. var Qe = function() {
  3091. return Qe = Object.assign || function(n) {
  3092. for (var e, t = 1, o = arguments.length; t < o; t++) {
  3093. e = arguments[t];
  3094. for (var s in e)
  3095. Object.prototype.hasOwnProperty.call(e, s) && (n[s] = e[s]);
  3096. }
  3097. return n;
  3098. }, Qe.apply(this, arguments);
  3099. };
  3100. var GA = function(n, e) {
  3101. var t = {};
  3102. for (var o in n)
  3103. Object.prototype.hasOwnProperty.call(n, o) && e.indexOf(o) < 0 && (t[o] = n[o]);
  3104. if (n != null && typeof Object.getOwnPropertySymbols == "function")
  3105. for (var s = 0, o = Object.getOwnPropertySymbols(n); s < o.length; s++)
  3106. e.indexOf(o[s]) < 0 && Object.prototype.propertyIsEnumerable.call(n, o[s]) && (t[o[s]] = n[o[s]]);
  3107. return t;
  3108. };
  3109. var Ht = (0, import_react.forwardRef)(function(n, e) {
  3110. var t = n.icon, o = n.id, s = n.className, r = n.extend, i = GA(n, ["icon", "id", "className", "extend"]), a = "univerjs-icon univerjs-icon-".concat(o, " ").concat(s || "").trim(), c = (0, import_react.useRef)("_".concat(KA()));
  3111. return qi(t, "".concat(o), { defIds: t.defIds, idSuffix: c.current }, Qe({ ref: e, className: a }, i), r);
  3112. });
  3113. function qi(n, e, t, o, s) {
  3114. return (0, import_react.createElement)(n.tag, Qe(Qe({ key: e }, YA(n, t, s)), o), (qA(n, t).children || []).map(function(r, i) {
  3115. return qi(r, "".concat(e, "-").concat(n.tag, "-").concat(i), t, void 0, s);
  3116. }));
  3117. }
  3118. function YA(n, e, t) {
  3119. var o = Qe({}, n.attrs);
  3120. t != null && t.colorChannel1 && o.fill === "colorChannel1" && (o.fill = t.colorChannel1);
  3121. var s = e.defIds;
  3122. return !s || s.length === 0 || (n.tag === "use" && o["xlink:href"] && (o["xlink:href"] = o["xlink:href"] + e.idSuffix), Object.entries(o).forEach(function(r) {
  3123. var i = r[0], a = r[1];
  3124. typeof a == "string" && (o[i] = a.replace(/url\(#(.*)\)/, "url(#$1".concat(e.idSuffix, ")")));
  3125. })), o;
  3126. }
  3127. function qA(n, e) {
  3128. var t, o = e.defIds;
  3129. return !o || o.length === 0 ? n : n.tag === "defs" && (!((t = n.children) === null || t === void 0) && t.length) ? Qe(Qe({}, n), { children: n.children.map(function(s) {
  3130. return typeof s.attrs.id == "string" && o && o.indexOf(s.attrs.id) > -1 ? Qe(Qe({}, s), { attrs: Qe(Qe({}, s.attrs), { id: s.attrs.id + e.idSuffix }) }) : s;
  3131. }) }) : n;
  3132. }
  3133. function KA() {
  3134. return Math.random().toString(36).substring(2, 8);
  3135. }
  3136. Ht.displayName = "UniverIcon";
  3137. var XA = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M1.9999 1.89941C1.66853 1.89941 1.3999 2.16804 1.3999 2.49941 1.3999 2.83078 1.66853 3.09941 1.9999 3.09941H13.9999C14.3313 3.09941 14.5999 2.83078 14.5999 2.49941 14.5999 2.16804 14.3313 1.89941 13.9999 1.89941H1.9999zM1.9999 5.56641C1.66853 5.56641 1.3999 5.83504 1.3999 6.16641 1.3999 6.49778 1.66853 6.76641 1.9999 6.76641H13.9999C14.3313 6.76641 14.5999 6.49778 14.5999 6.16641 14.5999 5.83504 14.3313 5.56641 13.9999 5.56641H1.9999zM1.3999 9.8334C1.3999 9.50203 1.66853 9.2334 1.9999 9.2334H13.9999C14.3313 9.2334 14.5999 9.50203 14.5999 9.8334 14.5999 10.1648 14.3313 10.4334 13.9999 10.4334H1.9999C1.66853 10.4334 1.3999 10.1648 1.3999 9.8334zM1.9999 12.9004C1.66853 12.9004 1.3999 13.169 1.3999 13.5004 1.3999 13.8318 1.66853 14.1004 1.9999 14.1004H13.9999C14.3313 14.1004 14.5999 13.8318 14.5999 13.5004 14.5999 13.169 14.3313 12.9004 13.9999 12.9004H1.9999z" } }] };
  3138. var Ki = (0, import_react.forwardRef)(function(n, e) {
  3139. return (0, import_react.createElement)(Ht, Object.assign({}, n, {
  3140. id: "align-text-both-single",
  3141. ref: e,
  3142. icon: XA
  3143. }));
  3144. });
  3145. Ki.displayName = "AlignTextBothSingle";
  3146. var JA = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M1.9999 1.89941C1.66853 1.89941 1.3999 2.16804 1.3999 2.49941 1.3999 2.83078 1.66853 3.09941 1.9999 3.09941H13.9999C14.3313 3.09941 14.5999 2.83078 14.5999 2.49941 14.5999 2.16804 14.3313 1.89941 13.9999 1.89941H1.9999zM3.33315 5.56641C3.00178 5.56641 2.73315 5.83504 2.73315 6.16641 2.73315 6.49778 3.00178 6.76641 3.33315 6.76641H12.6665C12.9979 6.76641 13.2665 6.49778 13.2665 6.16641 13.2665 5.83504 12.9979 5.56641 12.6665 5.56641H3.33315zM1.3999 9.8334C1.3999 9.50203 1.66853 9.2334 1.9999 9.2334H13.9999C14.3313 9.2334 14.5999 9.50203 14.5999 9.8334 14.5999 10.1648 14.3313 10.4334 13.9999 10.4334H1.9999C1.66853 10.4334 1.3999 10.1648 1.3999 9.8334zM3.33315 12.9004C3.00178 12.9004 2.73315 13.169 2.73315 13.5004 2.73315 13.8318 3.00178 14.1004 3.33315 14.1004H12.6665C12.9979 14.1004 13.2665 13.8318 13.2665 13.5004 13.2665 13.169 12.9979 12.9004 12.6665 12.9004H3.33315z" } }] };
  3147. var Xi = (0, import_react.forwardRef)(function(n, e) {
  3148. return (0, import_react.createElement)(Ht, Object.assign({}, n, {
  3149. id: "horizontally-single",
  3150. ref: e,
  3151. icon: JA
  3152. }));
  3153. });
  3154. Xi.displayName = "HorizontallySingle";
  3155. var ZA = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M1.9999 1.89941C1.66853 1.89941 1.3999 2.16804 1.3999 2.49941 1.3999 2.83078 1.66853 3.09941 1.9999 3.09941H13.9999C14.3313 3.09941 14.5999 2.83078 14.5999 2.49941 14.5999 2.16804 14.3313 1.89941 13.9999 1.89941H1.9999zM1.9999 5.56641C1.66853 5.56641 1.3999 5.83504 1.3999 6.16641 1.3999 6.49778 1.66853 6.76641 1.9999 6.76641H11.3332C11.6646 6.76641 11.9332 6.49778 11.9332 6.16641 11.9332 5.83504 11.6646 5.56641 11.3332 5.56641H1.9999zM1.3999 9.8334C1.3999 9.50203 1.66853 9.2334 1.9999 9.2334H13.9999C14.3313 9.2334 14.5999 9.50203 14.5999 9.8334 14.5999 10.1648 14.3313 10.4334 13.9999 10.4334H1.9999C1.66853 10.4334 1.3999 10.1648 1.3999 9.8334zM1.9999 12.9004C1.66853 12.9004 1.3999 13.169 1.3999 13.5004 1.3999 13.8318 1.66853 14.1004 1.9999 14.1004H11.3332C11.6646 14.1004 11.9332 13.8318 11.9332 13.5004 11.9332 13.169 11.6646 12.9004 11.3332 12.9004H1.9999z" } }] };
  3156. var Ji = (0, import_react.forwardRef)(function(n, e) {
  3157. return (0, import_react.createElement)(Ht, Object.assign({}, n, {
  3158. id: "left-justifying-single",
  3159. ref: e,
  3160. icon: ZA
  3161. }));
  3162. });
  3163. Ji.displayName = "LeftJustifyingSingle";
  3164. var $A = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M1.9999 1.89941C1.66853 1.89941 1.3999 2.16804 1.3999 2.49941 1.3999 2.83078 1.66853 3.09941 1.9999 3.09941H13.9999C14.3313 3.09941 14.5999 2.83078 14.5999 2.49941 14.5999 2.16804 14.3313 1.89941 13.9999 1.89941H1.9999zM4.66665 5.56641C4.33528 5.56641 4.06665 5.83504 4.06665 6.16641 4.06665 6.49778 4.33528 6.76641 4.66665 6.76641H14C14.3314 6.76641 14.6 6.49778 14.6 6.16641 14.6 5.83504 14.3314 5.56641 14 5.56641H4.66665zM1.3999 9.8334C1.3999 9.50203 1.66853 9.2334 1.9999 9.2334H13.9999C14.3313 9.2334 14.5999 9.50203 14.5999 9.8334 14.5999 10.1648 14.3313 10.4334 13.9999 10.4334H1.9999C1.66853 10.4334 1.3999 10.1648 1.3999 9.8334zM4.66665 12.9004C4.33528 12.9004 4.06665 13.169 4.06665 13.5004 4.06665 13.8318 4.33528 14.1004 4.66665 14.1004H14C14.3314 14.1004 14.6 13.8318 14.6 13.5004 14.6 13.169 14.3314 12.9004 14 12.9004H4.66665z" } }] };
  3165. var Zi = (0, import_react.forwardRef)(function(n, e) {
  3166. return (0, import_react.createElement)(Ht, Object.assign({}, n, {
  3167. id: "right-justifying-single",
  3168. ref: e,
  3169. icon: $A
  3170. }));
  3171. });
  3172. Zi.displayName = "RightJustifyingSingle";
  3173. var el2 = { tag: "svg", attrs: { fill: "none", viewBox: "0 0 16 16", width: "1em", height: "1em" }, children: [{ tag: "path", attrs: { fill: "currentColor", d: "M4.96372 2.59116C5.19803 2.35684 5.19803 1.97695 4.96372 1.74263 4.7294 1.50832 4.3495 1.50832 4.11519 1.74263L2.53945 3.31837 1.96372 2.74263C1.7294 2.50832 1.3495 2.50832 1.11519 2.74263.880874 2.97695.880874 3.35684 1.11519 3.59116L2.11519 4.59116C2.3495 4.82547 2.7294 4.82547 2.96372 4.59116L4.96372 2.59116zM14.4605 2.56689H6.8981C6.56672 2.56689 6.2981 2.83552 6.2981 3.16689 6.2981 3.49827 6.56672 3.76689 6.8981 3.76689H14.4605C14.7918 3.76689 15.0605 3.49827 15.0605 3.16689 15.0605 2.83552 14.7918 2.56689 14.4605 2.56689zM6.8981 7.2334C6.56672 7.2334 6.2981 7.50203 6.2981 7.8334 6.2981 8.16477 6.56672 8.4334 6.8981 8.4334H14.4605C14.7918 8.4334 15.0605 8.16477 15.0605 7.8334 15.0605 7.50203 14.7918 7.2334 14.4605 7.2334H6.8981zM6.2981 12.4999C6.2981 12.1685 6.56672 11.8999 6.8981 11.8999H14.4605C14.7918 11.8999 15.0605 12.1685 15.0605 12.4999 15.0605 12.8313 14.7918 13.0999 14.4605 13.0999H6.8981C6.56672 13.0999 6.2981 12.8313 6.2981 12.4999z" } }, { tag: "path", attrs: { fill: "currentColor", d: "M2.87279 5.8999C1.80504 5.8999.939453 6.76549.939453 7.83324.939453 8.90099 1.80504 9.76657 2.87279 9.76657 3.94054 9.76657 4.80612 8.90099 4.80612 7.83324 4.80612 6.76549 3.94054 5.8999 2.87279 5.8999zM2.13945 7.83324C2.13945 7.42823 2.46778 7.0999 2.87279 7.0999 3.2778 7.0999 3.60612 7.42823 3.60612 7.83324 3.60612 8.23824 3.2778 8.56657 2.87279 8.56657 2.46778 8.56657 2.13945 8.23824 2.13945 7.83324zM.939453 12.5002C.939453 11.4325 1.80504 10.5669 2.87279 10.5669 3.94054 10.5669 4.80612 11.4325 4.80612 12.5002 4.80612 13.568 3.94054 14.4336 2.87279 14.4336 1.80504 14.4336.939453 13.568.939453 12.5002zM2.87279 11.7669C2.46778 11.7669 2.13945 12.0952 2.13945 12.5002 2.13945 12.9052 2.46778 13.2336 2.87279 13.2336 3.2778 13.2336 3.60612 12.9052 3.60612 12.5002 3.60612 12.0952 3.2778 11.7669 2.87279 11.7669z", fillRule: "evenodd", clipRule: "evenodd" } }] };
  3174. var $i = (0, import_react.forwardRef)(function(n, e) {
  3175. return (0, import_react.createElement)(Ht, Object.assign({}, n, {
  3176. id: "todo-list",
  3177. ref: e,
  3178. icon: el2
  3179. }));
  3180. });
  3181. $i.displayName = "TodoList";
  3182. function ea(n) {
  3183. var o;
  3184. const { dataStream: e } = (o = n.body) != null ? o : {}, t = [
  3185. ln.TABLE_START,
  3186. ln.TABLE_CELL_END,
  3187. ln.TABLE_CELL_START,
  3188. ln.TABLE_END,
  3189. ln.TABLE_ROW_END,
  3190. ln.TABLE_ROW_START,
  3191. ln.COLUMN_BREAK,
  3192. ln.PAGE_BREAK,
  3193. ln.TAB,
  3194. ln.DOCS_END,
  3195. ln.CUSTOM_BLOCK
  3196. ];
  3197. if (typeof e == "string")
  3198. for (let s = 0; s < e.length; s++) {
  3199. const r = e[s];
  3200. if (!t.includes(r))
  3201. return s;
  3202. }
  3203. return 0;
  3204. }
  3205. var ta = "COMPONENT_DOC_HEADER_FOOTER_PANEL";
  3206. var tl = "univer-panel";
  3207. var nl = "univer-options-section";
  3208. var ol = "univer-options-form-item";
  3209. var sl = "univer-options-input";
  3210. var rl = "univer-options-margin-setting";
  3211. var Pe2 = {
  3212. panel: tl,
  3213. optionsSection: nl,
  3214. optionsFormItem: ol,
  3215. optionsInput: sl,
  3216. optionsMarginSetting: rl
  3217. };
  3218. function il(n, e, t) {
  3219. const { useFirstPageHeaderFooter: o, evenAndOddHeaders: s, defaultHeaderId: r, defaultFooterId: i, firstPageHeaderId: a, firstPageFooterId: c, evenPageHeaderId: A, evenPageFooterId: l } = n;
  3220. return e === n3.HEADER ? o === we.TRUE ? t === 0 ? a : s === we.TRUE && t % 2 === 1 ? A : r : s === we.TRUE && t % 2 === 1 ? A : r : o === we.TRUE ? t === 0 ? c : s === we.TRUE && t % 2 === 1 ? l : i : s === we.TRUE && t % 2 === 1 ? l : i;
  3221. }
  3222. var al = (n) => {
  3223. const e = W0(Vr), t = W0(_n), o = W0(Yx), s = W0(Pt), r = W0(_1), { unitId: i } = n, a = o.getRenderById(i).with(Se), [c, A] = (0, import_react.useState)({}), l = (u, g) => {
  3224. var C;
  3225. A((T) => ({
  3226. ...T,
  3227. [g]: u ? we.TRUE : we.FALSE
  3228. }));
  3229. const f = t.getUniverDocInstance(i), p = f == null ? void 0 : f.getSnapshot().documentStyle, m2 = (C = o.getRenderById(i)) == null ? void 0 : C.with(D), E = m2 == null ? void 0 : m2.getViewModel();
  3230. if (p == null || E == null)
  3231. return;
  3232. const I = E.getEditArea();
  3233. let v = false;
  3234. const R = a.getSegmentPage();
  3235. let S = false;
  3236. if (g === "useFirstPageHeaderFooter" && u === true && ((I === n3.HEADER && !p.firstPageHeaderId || I === n3.FOOTER && !p.firstPageFooterId) && (v = true), v && R === 0 && (S = true)), g === "evenAndOddHeaders" && u === true && ((I === n3.HEADER && !p.evenPageHeaderId || I === n3.FOOTER && !p.evenPageFooterId) && (v = true), v && R % 2 === 1 && (S = true)), v) {
  3237. const O = re.generateRandomId(6);
  3238. S && a.setSegment(O), s.executeCommand(_n2, {
  3239. unitId: i,
  3240. segmentId: O,
  3241. headerFooterProps: {
  3242. [g]: u ? we.TRUE : we.FALSE
  3243. }
  3244. });
  3245. } else {
  3246. const T = a.getSegmentPage(), O = a.getSegment(), P = il(
  3247. {
  3248. ...p,
  3249. [g]: u ? we.TRUE : we.FALSE
  3250. },
  3251. I,
  3252. T
  3253. );
  3254. P && P !== O && a.setSegment(P), s.executeCommand(_n2, {
  3255. unitId: i,
  3256. headerFooterProps: {
  3257. [g]: u ? we.TRUE : we.FALSE
  3258. }
  3259. });
  3260. }
  3261. r.focus();
  3262. }, d = async (u, g) => {
  3263. A((f) => ({
  3264. ...f,
  3265. [g]: u
  3266. })), await s.executeCommand(_n2, {
  3267. unitId: i,
  3268. headerFooterProps: {
  3269. [g]: u
  3270. }
  3271. }), a.removeAllRanges(), a.blur();
  3272. }, h = () => {
  3273. s.executeCommand(Ps.id, {
  3274. unitId: i
  3275. });
  3276. };
  3277. return (0, import_react.useEffect)(() => {
  3278. const u = t.getUniverDocInstance(i), g = u == null ? void 0 : u.getSnapshot().documentStyle;
  3279. if (g) {
  3280. const {
  3281. marginHeader: f = 0,
  3282. marginFooter: p = 0,
  3283. useFirstPageHeaderFooter: m2 = we.FALSE,
  3284. evenAndOddHeaders: E = we.FALSE
  3285. } = g;
  3286. A({
  3287. marginHeader: f,
  3288. marginFooter: p,
  3289. useFirstPageHeaderFooter: m2,
  3290. evenAndOddHeaders: E
  3291. });
  3292. }
  3293. }, [i]), w.jsxs("div", { className: Pe2.options, children: [
  3294. w.jsxs("div", { className: Pe2.optionsSection, children: [
  3295. w.jsx("div", { className: Pe2.optionsFormItem, children: w.jsx(
  3296. um,
  3297. {
  3298. checked: c.useFirstPageHeaderFooter === we.TRUE,
  3299. onChange: (u) => {
  3300. l(u, "useFirstPageHeaderFooter");
  3301. },
  3302. children: e.t("headerFooter.firstPageCheckBox")
  3303. }
  3304. ) }),
  3305. w.jsx("div", { className: Pe2.optionsFormItem, children: w.jsx(
  3306. um,
  3307. {
  3308. checked: c.evenAndOddHeaders === we.TRUE,
  3309. onChange: (u) => {
  3310. l(u, "evenAndOddHeaders");
  3311. },
  3312. children: e.t("headerFooter.oddEvenCheckBox")
  3313. }
  3314. ) })
  3315. ] }),
  3316. w.jsxs("div", { className: Un(Pe2.optionsSection, Pe2.optionsMarginSetting), children: [
  3317. w.jsxs("div", { className: Pe2.optionsMarginItem, children: [
  3318. w.jsx("span", { children: e.t("headerFooter.headerTopMargin") }),
  3319. w.jsx(
  3320. BO,
  3321. {
  3322. min: 0,
  3323. max: 200,
  3324. precision: 1,
  3325. value: c.marginHeader,
  3326. onChange: (u) => {
  3327. d(u, "marginHeader");
  3328. },
  3329. className: Pe2.optionsInput
  3330. }
  3331. )
  3332. ] }),
  3333. w.jsxs("div", { className: Pe2.optionsMarginItem, children: [
  3334. w.jsx("span", { children: e.t("headerFooter.footerBottomMargin") }),
  3335. w.jsx(
  3336. BO,
  3337. {
  3338. min: 0,
  3339. max: 200,
  3340. precision: 1,
  3341. value: c.marginFooter,
  3342. onChange: (u) => {
  3343. d(u, "marginFooter");
  3344. },
  3345. className: Pe2.optionsInput
  3346. }
  3347. )
  3348. ] })
  3349. ] }),
  3350. w.jsx("div", { className: Pe2.optionsSection, children: w.jsx(Po, { onClick: h, children: e.t("headerFooter.closeHeaderFooter") }) })
  3351. ] });
  3352. };
  3353. var cl = () => {
  3354. var A;
  3355. const n = W0(Vr), e = W0(Yx), s = W0(_n).getCurrentUniverDocInstance().getUnitId(), i = ((A = e.getRenderById(s)) == null ? void 0 : A.with(D)).getViewModel(), [a, c] = (0, import_react.useState)(true);
  3356. return (0, import_react.useEffect)(() => {
  3357. const l = i.getEditArea();
  3358. c(l !== n3.BODY);
  3359. const d = i.editAreaChange$.subscribe((h) => {
  3360. h != null && c(h !== n3.BODY);
  3361. });
  3362. return () => {
  3363. d.unsubscribe();
  3364. };
  3365. }, []), w.jsx("div", { className: Pe2.panel, children: a ? w.jsx(al, { unitId: s }) : w.jsx("div", { className: Pe2.panelDisableText, children: n.t("headerFooter.disableText") }) });
  3366. };
  3367. var Pr = 18;
  3368. var Dr = 200;
  3369. var _o = 6;
  3370. var Al2 = 4;
  3371. function ll(n, e) {
  3372. let { radius: t, width: o, height: s } = e;
  3373. t = t != null ? t : 0, o = o != null ? o : 30, s = s != null ? s : 30;
  3374. let r = 0;
  3375. r = Math.min(t, o / 2, s / 2), n.beginPath(), n.moveTo(0, 0), n.lineTo(o, 0), n.lineTo(o, s - r), n.arc(o - r, s - r, r, 0, Math.PI / 2, false), n.lineTo(0, s), n.lineTo(0, 0), n.closePath(), e.fill && (n.save(), n.fillStyle = e.fill, e.fillRule === "evenodd" ? n.fill("evenodd") : n.fill(), n.restore());
  3376. }
  3377. var Ln = class _Ln extends q3 {
  3378. constructor(t, o) {
  3379. super(t, o);
  3380. x(this, "color");
  3381. x(this, "text");
  3382. this.color = o == null ? void 0 : o.color, this.text = o == null ? void 0 : o.text;
  3383. }
  3384. static drawWith(t, o) {
  3385. const { text: s, color: r } = o;
  3386. t.save(), t.font = "13px Source Han Sans CN";
  3387. const i = t.measureText(s).width, a = Math.min(
  3388. i + 2 * _o,
  3389. Dr
  3390. );
  3391. ll(t, {
  3392. height: Pr,
  3393. width: a,
  3394. radius: 4,
  3395. fill: r,
  3396. evented: false
  3397. }), t.fillStyle = "rgba(58, 96, 247, 1)";
  3398. const c = _o, A = Pr - Al2, l = Dr - 2 * _o;
  3399. if (i > l) {
  3400. let d = "", h = 0;
  3401. for (const u of s) {
  3402. const g = t.measureText(u).width;
  3403. if (h + g <= l - t.measureText("...").width)
  3404. d += u, h += g;
  3405. else {
  3406. d += "...";
  3407. break;
  3408. }
  3409. }
  3410. t.fillText(d, c, A);
  3411. } else
  3412. t.fillText(s, c, A);
  3413. t.restore();
  3414. }
  3415. _draw(t) {
  3416. _Ln.drawWith(t, this);
  3417. }
  3418. };
  3419. var dl = Object.defineProperty;
  3420. var ul = Object.getOwnPropertyDescriptor;
  3421. var hl = (n, e, t, o) => {
  3422. for (var s = o > 1 ? void 0 : o ? ul(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  3423. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  3424. return o && s && dl(e, t, s), s;
  3425. };
  3426. var nt2 = (n, e) => (t, o) => e(t, o, n);
  3427. var wr = "rgba(58, 96, 247, 1)";
  3428. var Nr2 = "rgba(58, 96, 247, 0.08)";
  3429. var Me = ((n) => (n[n.FIRST_PAGE_HEADER = 0] = "FIRST_PAGE_HEADER", n[n.FIRST_PAGE_FOOTER = 1] = "FIRST_PAGE_FOOTER", n[n.DEFAULT_HEADER = 2] = "DEFAULT_HEADER", n[n.DEFAULT_FOOTER = 3] = "DEFAULT_FOOTER", n[n.EVEN_PAGE_HEADER = 4] = "EVEN_PAGE_HEADER", n[n.EVEN_PAGE_FOOTER = 5] = "EVEN_PAGE_FOOTER", n))(Me || {});
  3430. function gl(n, e, t) {
  3431. const { documentStyle: o } = n.getDataModel().getSnapshot(), {
  3432. defaultHeaderId: s,
  3433. defaultFooterId: r,
  3434. evenPageHeaderId: i,
  3435. evenPageFooterId: a,
  3436. firstPageHeaderId: c,
  3437. firstPageFooterId: A,
  3438. evenAndOddHeaders: l,
  3439. useFirstPageHeaderFooter: d
  3440. } = o;
  3441. switch (e) {
  3442. case n3.BODY:
  3443. return {
  3444. createType: null,
  3445. headerFooterId: null
  3446. };
  3447. case n3.HEADER:
  3448. return d === we.TRUE && !c ? {
  3449. createType: 0,
  3450. headerFooterId: null
  3451. } : l === we.TRUE && t % 2 === 0 && !i ? {
  3452. createType: 4,
  3453. headerFooterId: null
  3454. } : s ? {
  3455. createType: null,
  3456. headerFooterId: s
  3457. } : {
  3458. createType: 2,
  3459. headerFooterId: null
  3460. };
  3461. case n3.FOOTER:
  3462. return d === we.TRUE && !A ? {
  3463. createType: 1,
  3464. headerFooterId: null
  3465. } : l === we.TRUE && t % 2 === 0 && !a ? {
  3466. createType: 5,
  3467. headerFooterId: null
  3468. } : r ? {
  3469. createType: null,
  3470. headerFooterId: r
  3471. } : {
  3472. createType: 3,
  3473. headerFooterId: null
  3474. };
  3475. default:
  3476. throw new Error(`Invalid editArea: ${e}`);
  3477. }
  3478. }
  3479. var Zo = class extends nt {
  3480. constructor(e, t, o, s, r, i, a, c, A) {
  3481. super();
  3482. x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
  3483. this._context = e, this._commandService = t, this._editorService = o, this._instanceSrv = s, this._renderManagerService = r, this._docSkeletonManagerService = i, this._docSelectionRenderService = a, this._localeService = c, this._componentManager = A, this._initialize();
  3484. }
  3485. _initialize() {
  3486. this._init(), this._drawHeaderFooterLabel(), this._initCustomComponents(), this._listenSwitchMode();
  3487. }
  3488. // Close header footer panel when switch mode.
  3489. _listenSwitchMode() {
  3490. this.disposeWithMe(
  3491. this._commandService.onCommandExecuted((e) => {
  3492. if (M.id === e.id) {
  3493. const t = this._context.unit, s = this._docSkeletonManagerService.getViewModel().getEditArea(), r = t.getSnapshot().documentStyle.documentFlavor;
  3494. s !== n3.BODY && r === ku.MODERN && this._commandService.executeCommand(Ps.id, {
  3495. unitId: this._context.unitId
  3496. });
  3497. }
  3498. })
  3499. );
  3500. }
  3501. _initCustomComponents() {
  3502. const e = this._componentManager;
  3503. this.disposeWithMe(e.register(ta, cl));
  3504. }
  3505. _init() {
  3506. const { unitId: e } = this._context, t = rt2(this._context);
  3507. t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
  3508. }
  3509. _initialMain(e) {
  3510. const t = rt2(this._context), { document: o } = t;
  3511. this.disposeWithMe(o.onDblclick$.subscribeEvent(async (s) => {
  3512. if (this._isEditorReadOnly(e) || !this._isTraditionalMode())
  3513. return;
  3514. const { offsetX: r, offsetY: i } = s, {
  3515. pageLayoutType: a = Y2.VERTICAL,
  3516. pageMarginLeft: c,
  3517. pageMarginTop: A
  3518. } = o.getOffsetConfig(), l = this._getTransformCoordForDocumentOffset(r, i);
  3519. if (l == null)
  3520. return;
  3521. const d = this._docSkeletonManagerService.getViewModel(), h = this._docSkeletonManagerService.getSkeleton(), u = d.getEditArea(), { editArea: g, pageNumber: f } = h.findEditAreaByCoord(
  3522. l,
  3523. a,
  3524. c,
  3525. A
  3526. );
  3527. if (u === g)
  3528. return;
  3529. d.setEditArea(g);
  3530. const { createType: p, headerFooterId: m2 } = gl(d, g, f);
  3531. if (g === n3.BODY)
  3532. this._docSelectionRenderService.setSegment(""), this._docSelectionRenderService.setSegmentPage(-1), this._docSelectionRenderService.setCursorManually(r, i);
  3533. else if (p != null) {
  3534. const I = re.generateRandomId(6);
  3535. this._docSelectionRenderService.setSegment(I), this._docSelectionRenderService.setSegmentPage(f), await this._commandService.executeCommand(na.id, {
  3536. unitId: e,
  3537. createType: p,
  3538. segmentId: I
  3539. });
  3540. } else
  3541. m2 != null && (this._docSelectionRenderService.setSegment(m2), this._docSelectionRenderService.setSegmentPage(f), this._docSelectionRenderService.setCursorManually(r, i));
  3542. }));
  3543. }
  3544. _getTransformCoordForDocumentOffset(e, t) {
  3545. const o = rt2(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
  3546. if (a == null)
  3547. return;
  3548. const c = a.transformVector2SceneCoord($.FromArray([e, t]));
  3549. return i.clone().invert().applyPoint(c);
  3550. }
  3551. // eslint-disable-next-line max-lines-per-function
  3552. _drawHeaderFooterLabel() {
  3553. const e = this._localeService;
  3554. this._renderManagerService.currentRender$.subscribe((t) => {
  3555. if (t == null)
  3556. return;
  3557. const o = this._renderManagerService.getRenderById(t);
  3558. if (this._editorService.isEditor(t) || this._instanceSrv.getUniverDocInstance(t) == null || o == null)
  3559. return;
  3560. const { mainComponent: s } = o, r = s;
  3561. this.disposeWithMe(
  3562. Ze(
  3563. // eslint-disable-next-line max-lines-per-function
  3564. r.pageRender$.subscribe((i) => {
  3565. if (this._editorService.isEditor(t) || !this._isTraditionalMode())
  3566. return;
  3567. const A = this._docSkeletonManagerService.getViewModel().getEditArea() === n3.BODY, { page: l, pageLeft: d, pageTop: h, ctx: u } = i, { pageWidth: g, pageHeight: f, marginTop: p, marginBottom: m2 } = l;
  3568. if (u.save(), u.translate(d - 0.5, h - 0.5), A ? (A1.drawWith(u, {
  3569. left: 0,
  3570. top: 0,
  3571. width: g,
  3572. height: p,
  3573. fill: "rgba(255, 255, 255, 0.5)"
  3574. }), u.save(), u.translate(0, f - m2), A1.drawWith(u, {
  3575. left: 0,
  3576. top: 0,
  3577. width: g,
  3578. height: m2,
  3579. fill: "rgba(255, 255, 255, 0.5)"
  3580. }), u.restore()) : (u.save(), u.translate(0, p), A1.drawWith(u, {
  3581. left: 0,
  3582. top: p,
  3583. width: g,
  3584. height: f - p - m2,
  3585. fill: "rgba(255, 255, 255, 0.5)"
  3586. }), u.restore()), !A) {
  3587. const E = {
  3588. dataArray: [{
  3589. command: "M",
  3590. points: [0, p]
  3591. }, {
  3592. command: "L",
  3593. points: [g, p]
  3594. }],
  3595. strokeWidth: 1,
  3596. stroke: wr
  3597. }, I = {
  3598. dataArray: [{
  3599. command: "M",
  3600. points: [0, f - m2]
  3601. }, {
  3602. command: "L",
  3603. points: [g, f - m2]
  3604. }],
  3605. strokeWidth: 1,
  3606. stroke: wr
  3607. };
  3608. G1.drawWith(u, E), G1.drawWith(u, I), u.translate(0, p + 1), Ln.drawWith(u, {
  3609. text: e.t("headerFooter.header"),
  3610. color: Nr2
  3611. }), u.translate(0, f - p - m2), Ln.drawWith(u, {
  3612. text: e.t("headerFooter.footer"),
  3613. color: Nr2
  3614. });
  3615. }
  3616. u.restore();
  3617. })
  3618. )
  3619. );
  3620. });
  3621. }
  3622. _isEditorReadOnly(e) {
  3623. const t = this._editorService.getEditor(e);
  3624. return t ? t.isReadOnly() : false;
  3625. }
  3626. _isTraditionalMode() {
  3627. return this._context.unit.getSnapshot().documentStyle.documentFlavor === ku.TRADITIONAL;
  3628. }
  3629. };
  3630. Zo = hl([
  3631. nt2(1, Pt),
  3632. nt2(2, He2),
  3633. nt2(3, _n),
  3634. nt2(4, Yx),
  3635. nt2(5, ot(D)),
  3636. nt2(6, ot(Se)),
  3637. nt2(7, ot(Vr)),
  3638. nt2(8, ot(n1))
  3639. ], Zo);
  3640. var Ms = {
  3641. id: "sidebar.operation.doc-header-footer-panel",
  3642. type: ar.OPERATION,
  3643. handler: async (n, e) => {
  3644. const t = n.get(rt), o = n.get(Vr);
  3645. switch (e.value) {
  3646. case "open":
  3647. t.open({
  3648. header: { title: o.t("headerFooter.panel") },
  3649. children: { label: ta },
  3650. onClose: () => {
  3651. },
  3652. width: 400
  3653. });
  3654. break;
  3655. case "close":
  3656. default:
  3657. t.close();
  3658. break;
  3659. }
  3660. return true;
  3661. }
  3662. };
  3663. function Qr2() {
  3664. return {
  3665. dataStream: `\r
  3666. `,
  3667. textRuns: [{
  3668. st: 0,
  3669. ed: 0,
  3670. ts: {
  3671. fs: 9
  3672. // The default header footer text size.
  3673. }
  3674. }],
  3675. customBlocks: [],
  3676. paragraphs: [
  3677. {
  3678. startIndex: 0,
  3679. paragraphStyle: {
  3680. spaceAbove: { v: 0 },
  3681. lineSpacing: 1.5,
  3682. spaceBelow: { v: 0 }
  3683. }
  3684. }
  3685. ],
  3686. sectionBreaks: [
  3687. {
  3688. startIndex: 1
  3689. }
  3690. ]
  3691. };
  3692. }
  3693. function Po2(n, e, t, o) {
  3694. const s = tn.getInstance(), r = 6, i = n != null ? n : re.generateRandomId(r), a = e === Me.DEFAULT_HEADER || e === Me.FIRST_PAGE_HEADER || e === Me.EVEN_PAGE_HEADER, c = s.insertOp([a ? "headers" : "footers", i], {
  3695. [a ? "headerId" : "footerId"]: i,
  3696. body: Qr2()
  3697. });
  3698. o.push(c);
  3699. const A = re.generateRandomId(r), l = s.insertOp([a ? "footers" : "headers", A], {
  3700. [a ? "footerId" : "headerId"]: A,
  3701. body: Qr2()
  3702. });
  3703. o.push(l);
  3704. let d = "defaultHeaderId", h = "defaultFooterId";
  3705. switch (e) {
  3706. case Me.DEFAULT_HEADER:
  3707. d = "defaultHeaderId", h = "defaultFooterId";
  3708. break;
  3709. case Me.DEFAULT_FOOTER:
  3710. d = "defaultFooterId", h = "defaultHeaderId";
  3711. break;
  3712. case Me.FIRST_PAGE_HEADER:
  3713. d = "firstPageHeaderId", h = "firstPageFooterId";
  3714. break;
  3715. case Me.FIRST_PAGE_FOOTER:
  3716. d = "firstPageFooterId", h = "firstPageHeaderId";
  3717. break;
  3718. case Me.EVEN_PAGE_HEADER:
  3719. d = "evenPageHeaderId", h = "evenPageFooterId";
  3720. break;
  3721. case Me.EVEN_PAGE_FOOTER:
  3722. d = "evenPageFooterId", h = "evenPageHeaderId";
  3723. break;
  3724. default:
  3725. throw new Error(`Unknown header footer type: ${e}`);
  3726. }
  3727. for (const [u, g] of [[d, i], [h, A]])
  3728. if (t[u] != null) {
  3729. const f = s.replaceOp(["documentStyle", u], t[u], g);
  3730. o.push(f);
  3731. } else {
  3732. const f = s.insertOp(["documentStyle", u], g);
  3733. o.push(f);
  3734. }
  3735. return o;
  3736. }
  3737. var _n2 = "doc.command.core-header-footer";
  3738. var na = {
  3739. id: _n2,
  3740. type: ar.COMMAND,
  3741. // eslint-disable-next-line max-lines-per-function
  3742. handler: async (n, e) => {
  3743. var v;
  3744. const t = n.get(Pt), o = n.get(_n), s = n.get(Yx), { unitId: r, segmentId: i, createType: a, headerFooterProps: c } = e, A = (v = s.getRenderById(r)) == null ? void 0 : v.with(D), l = o.getUniverDocInstance(r), d = A == null ? void 0 : A.getViewModel();
  3745. if (l == null || d == null)
  3746. return false;
  3747. const h = d.getEditArea(), { documentStyle: u } = l.getSnapshot(), g = (c == null ? void 0 : c.marginFooter) != null || (c == null ? void 0 : c.marginHeader) != null, f = [{
  3748. startOffset: 0,
  3749. endOffset: 0,
  3750. collapsed: true
  3751. }], p = {
  3752. id: M.id,
  3753. params: {
  3754. unitId: r,
  3755. actions: [],
  3756. textRanges: f,
  3757. debounce: true
  3758. }
  3759. };
  3760. g && (p.params.noNeedSetTextRange = true);
  3761. const m2 = tn.getInstance(), E = [];
  3762. return a != null && Po2(i, a, u, E), c != null && Object.keys(c).forEach((R) => {
  3763. const S = c[R], C = u[R];
  3764. if (S === C)
  3765. return;
  3766. let T;
  3767. if (C === void 0 ? T = m2.insertOp(["documentStyle", R], S) : T = m2.replaceOp(["documentStyle", R], C, S), E.push(T), R === "useFirstPageHeaderFooter" && S === we.TRUE && !u.firstPageHeaderId) {
  3768. const O = h === n3.HEADER ? Me.FIRST_PAGE_HEADER : Me.FIRST_PAGE_FOOTER;
  3769. Po2(i, O, u, E);
  3770. } else if (R === "evenAndOddHeaders" && S === we.TRUE && !u.evenPageHeaderId) {
  3771. const O = h === n3.HEADER ? Me.EVEN_PAGE_HEADER : Me.EVEN_PAGE_FOOTER;
  3772. Po2(i, O, u, E);
  3773. }
  3774. }), E.length === 0 ? false : (p.params.actions = E.reduce((R, S) => tn.compose(R, S), null), !!t.syncExecuteCommand(p.id, p.params));
  3775. }
  3776. };
  3777. var _s = {
  3778. id: "doc.command.open-header-footer-panel",
  3779. type: ar.COMMAND,
  3780. handler: async (n, e) => n.get(Pt).executeCommand(Ms.id, { value: "open" })
  3781. };
  3782. var Ps = {
  3783. id: "doc.command.close-header-footer",
  3784. type: ar.COMMAND,
  3785. handler: async (n, e) => {
  3786. var g;
  3787. const t = n.get(Pt), o = n.get(Yx), s = n.get(m), r = n.get(_n), { unitId: i } = e, a = o.getRenderById(i);
  3788. if (a == null)
  3789. return false;
  3790. const { scene: c } = a, A = c.getTransformerByCreate(), l = a.with(D), d = a.with(Se), h = l == null ? void 0 : l.getSkeleton(), u = l == null ? void 0 : l.getViewModel();
  3791. return u == null || h == null ? false : (s.replaceDocRanges([]), A.clearSelectedObjects(), d.setSegment(""), d.setSegmentPage(-1), u.setEditArea(n3.BODY), h.calculate(), (g = a.mainComponent) == null || g.makeDirty(true), queueMicrotask(() => {
  3792. const f = r.getUnit(i), p = f == null ? void 0 : f.getSnapshot();
  3793. if (p == null)
  3794. return;
  3795. const m2 = ea(p);
  3796. s.replaceDocRanges([
  3797. {
  3798. startOffset: m2,
  3799. endOffset: m2
  3800. }
  3801. ]);
  3802. }), t.executeCommand(Ms.id, { value: "close" }), true);
  3803. }
  3804. };
  3805. var kt = "UI_PLUGIN_DOCS";
  3806. var Ds = `${kt}_COLOR_PICKER_COMPONENT`;
  3807. var oa = `${kt}_FONT_FAMILY_COMPONENT`;
  3808. var sa = `${kt}_FONT_FAMILY_ITEM_COMPONENT`;
  3809. var ra = `${kt}_FONT_SIZE_COMPONENT`;
  3810. var fl = "univer-doc-list-type-picker";
  3811. var pl = "univer-doc-list-type-picker-item";
  3812. var ml2 = "univer-doc-list-type-picker-item-active";
  3813. var Do = {
  3814. docListTypePicker: fl,
  3815. docListTypePickerItem: pl,
  3816. docListTypePickerItemActive: ml2
  3817. };
  3818. var ia = (n) => {
  3819. const { value: e, onChange: t, options: o } = n;
  3820. return w.jsx("div", { className: Do.docListTypePicker, children: o.map((s) => w.jsx(
  3821. "img",
  3822. {
  3823. className: Do.docListTypePickerItem + (e === s.value ? `
  3824. ${Do.docListTypePickerItemActive}
  3825. ` : ""),
  3826. onClick: () => {
  3827. t(s.value);
  3828. },
  3829. src: s.img
  3830. },
  3831. s.value
  3832. )) });
  3833. };
  3834. var El = [
  3835. {
  3836. value: Ft.ORDER_LIST,
  3837. img: "data:image/jpeg;base64,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"
  3838. },
  3839. {
  3840. value: Ft.ORDER_LIST_1,
  3841. img: "data:image/jpeg;base64,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"
  3842. },
  3843. {
  3844. value: Ft.ORDER_LIST_2,
  3845. img: "data:image/jpeg;base64,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"
  3846. },
  3847. {
  3848. value: Ft.ORDER_LIST_3,
  3849. img: "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgEA2ADYAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/CABEIAPQA2AMBEQACEQEDEQH/xAAzAAEAAgMBAQEAAAAAAAAAAAAABwkGCAoFBAMBAQADAQEAAAAAAAAAAAAAAAACAwQBBf/aAAwDAQACEAMQAAAA7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcdPpZewDzdXrAAAAAAAAAAAA1LsjURpqk6Pb3clw8g1gAAAAAAABlxsQADmI355/r7oddHoOx3bt1T/ExEAAAAAAAH2mTgAgicZ3hKBpx842KhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa6zjSzqqkyPb5MlwxggoAAAAAycnUAAAAqZ0V6sWQ0Nuh1H+fpnCPfMMEAAAAAPUM6AAAAIllyoHTVYTTPHOt8qZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqfRXaxnsAAAAAAAAAAAAFOGmq4/NaMfIdAAMhJhAAAAAAAAObrbR0YYr/VPFIxAAPaJOAAAAAAAANAboRZLlqOewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACte+vR26G9tM7HaLAAAAAAAAAAABzG7895GS6h7XT1F4NA+IiQAAAAAAAHtEnAA5evQz2c551N6K+rDz9I88g0AAAAAAAGQkwgApz01QxOORc7NsJWyZ7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB//8QAKRAAAAYCAQMEAwADAAAAAAAAAAUGBwgXBAkDAgoWEBUgQAEwYBk6cP/aAAgBAQABCAD+Unrt9m238+XqcOOpAfE6pIiVTp77E7JREEL4hP8AyZP9X+t/GVOmFbtQ+nb3yGVbkwkzo2O16KDl5OEhO+bh8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQ8kUQQp2c5iqK8fL+G8fPM5tSwgRp0ReL288e8LGx8LCYllCnSbuva5pSjk2JxG4ps8GvTqGTj8OZj5GJkV4jxXiPFeI8V4jxXiPFeI8V4jxXiPFeI8V4jxXiPFeI8V4jxXiPFeI8V4jwXI1NlWZw5+B8C2MTBFEgD+VBeHtjAwMj8lu857+uI8aOSRvFLrk/4RLZdvi2kb3cWsaWz1Rz8fVtyN3Zc6f5TycNnrnFrwmD6LIxzCpNmWfgWGsBYawFhrAWGsBYawFhrAWGsBYawFhrAWGsBYawCNWSkNVIW4Gf+ndlNdzoEa/HOfJl210lsYu2qTjszH7fvoYPh2dbW8OLreSXj47TjOe0TYg5Kcc8Lckry6oToqhOiqE6KoToqhOiqE6KoToqhOiqE6KoToqhOgmb4mIzLGNMT9L6sW1El2lXDGPgi+3yh6lsAuRR8wkBI0RlfN45AsrG/WxEuKEhpBSfZX+wU+zrJTu09D6z+j7Stmu+RPvBbCB2F6Ko2yCMhzzTEtdRC11ELXUQtdRC11EEq4JyeH2AV5f0XB/2jWMGSekmEaFhHmBQk/vxPmFIqEVCKhFQioQnm49hOMM2+keQCSB5seRuxzlkPqma+RGwiNOww7/ndjGzto9a5Wy2e6HF3AqX/PLx/jmgttSiRsGz1kkmY+x3CxwUJ5+tLB+f8s64RcHHyc3Mh1CiZvdw21knYZehlme3l2fni3hbwt4W8LeFvC3hbwt4W8LeFvC3hbwt4W8E84/vxxhlPx7jFHplwnh03IFa/wCErVEH7agg027ItauLB30N8TkzyozweGqFEKoUQqhRCqFEKoUQqhRCqFEKoUQqhRCqFEKoUQqhRCqFEKoUQqhRCqFEEq3xyRn2AaZfw2065XqntlxEVLD9UXe4M6unq6fxGLT24BTKhLzh2Cv9BCTzqbKoyTDQ/wDTf//EADkQAAAGAAMGBAMHBAIDAAAAAAECAwQFBgAHEggRE5Sl1RSV1OUJFdMQICEiM0BgFhcjJDAxWXC2/9oACAEBAAk/AP4pPKrfDz+Hdmjs5ZObXtfaVOtv0LvYMwbbMRmYR/nstWZO2xknGzISmWyKtfmIiMj5es198q3eHsLYszINpeAscTGz0HKszio0k4eXZoyEZINTiBRO2esnCDlA4gAmSVKO4N+79yqxD+1WXU3MVtjIKlSbT1+fplhMuqwYTHIYf6lvMnX4Q3DEyhE3x1SkPwxKJSyGaXxGahmJnrm9Zp5kZeXZ27PCKLIZYWJ4DxmRynO0yJbUe7+HWZ6Ym+DMLtkFBEVXBjs8+NgrMmzbK+ZEI9VVNKs4imPHKVAcOEXCp3SbFlDIPaExVWRaFXWy/kOE2IVId/2KHSWSiJJVJVI5k1E1E2axiKJnKIGIchgAxDlEDFMACAgIYn5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4n5rzR99fE/NeaPvr4l5R03U8dxEHD92uifRHPDk1pKqmIbScpTl1FHSYpTBuEAH7s7Lx0VnPeU9oTahkawuqnLVzJaipzhItFZb5bIxKKsgwh8xpuKQnCLMULjA5dun0csm+jTqbcHxRWjNogk1aNGu1uzbtmrZumVJBu3QSyxIkigikQiaSSZCppplKQhSlKABmDmjdNmL4m+VTqoEu+ddqaWe0qbStXsLt7Cf1BZo+s19OyTrifkIurwoqNvGCpnwJ5JdczNNwOaJR2q3FbGyJ5fp1uyrMygWmLZkDBL2lKKPXGtk/tyge9BFOZJExq6ZFYqovHDdkrgnEbukVW66eoxNaK6ZklSayGKcuohjF1EMUxd+8pgEAHER1CU9biI6hKetxEdQlPW4iOoSnrcRHUJT1uIjqEp63ER1CU9biI6hKetxEdQlPW4iOoSnrcRHUJT1uIjqEp63ER1CU9biI6hKetxEdQlPW4iOoSnrcRvAdocThK+Mfq6OKkdFT/Gs6USNqSUOX8xB3b94bjAAh9zK2robQ9oqCNCnM2RQcr2t5Tm5IUiNfK4cOVWrOPKSuw5dDFq2OYGptahvFPPEYytrOYr/KS2oXvLORnEnZZKj3Bqo0Wb2GuyMe7ZPY6RSWYMVyqorgHHZM1xKKrVA6eSlBPtLIV0aojnKeFSNdEYQYpSAFFJ8JhRTfDXlla2MyRuE0NbVUrwyHyU5mI/8AojKv+9efcPVjkypy0O/jo5pYLjKv2UNGOJRzKy0CzNCV00ie0TzMZqLdSUNCv45g+bP3TZUvxbtu/K/aTvMAwtUrlzs55gsMqsmMop+WaN36FHe0KomRr90/pM5koueWiXFbj5Z62fItXTxsp85kcxCZ3Zs7D90qTen58mhmcHM5nZUXdpIKV1a3x8cUWxLHGx7GClVH7p1JTL8lrWYTEtMv6+vOy32LcB2h4PhK8NJXRxX7VFT/ABrEUSNqSUOX8xB3b94bjAAhL9Pi/RYl+nxfosS/T4v0WJfp8X6LEv0+L9FiX6fF+ixL9Pi/RYl+nxfosS/T4v0WJfp8X6LEv0+L9FiS47RfxnFS8GwS18Jg6WT/AMiLVNUulVMhvynDfu3DvKIgP/C0Zjmm9naflxS7BJxyUxGUiSu8oZm5ujuJcpLMJFzCxLWR+QtpUikOa0OYM8uzlo4jmGkdsLa72nMx7LTo2/3nNKY2pbhUss2KkpDJT0q7y9iapJRkVW8umbdZReK8ZMSzZGKJ4tF40jzIsmlkn7hkHFwmUkNlta7LZZm5SdkiISTl4l5Np2qwLOJewQ8lNMpN3W5V0sqV5XVYpVscWhkMZzZcX3M/JaQJFZrUSq2uImbNQpIzpzHqMrJFsnKrlg5ZybN3EySRyiaKmGy8TJA1kkjtQwddNu64PEO3MmRYOAuk4JoMqmsQN50SgbUmbeUTAG4RAwPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsPZrmGPbsOZRRw143DI4WaHRHjoKtz6ypMkTjuIsYS6VC7jAUR3gAlH/hpcVmBlbmLDmhLXVpcFit3rYHCD1m7au2ird/FTEPJtWUxAzkW6Zy0HNMGEvFPGkgzbOE889u3M/IeLVRM12X8wtqaxK7PIN2yoLNY5WjU+Cpz5aMbqAIlYqWAyKxTHTdAukochqavSbjnfVstaVa4KJeJs6BE1fKWtRtSpENTKWyaNYqqsYuDiWLUW8eUEVOEJgTJq3BRpWvZr7Sj58+zDfvLTNS8M1NNWJW4WZrVIR84UaQLGzW06dglGhfEpN3bVoygwh4ZAsZ/Mdl/NWSQt+XC18W2iEXgJVCN01OYtia7et/IFiSNGRGHVqMreFbfGKx9+ONYRrD/QR+t+6f1suz9ati6Qzwl45Sut1LSe+N7RmHEpuELMKwOUIwGdbjCjGlRFMVCrH171hAPsIio4a+F4ZHBVDojx3jdufWVJRE47iLGEulQu4wFEd4AJRZQvLvu44ZQvLvu44ZQvLvu44ZQvLvu44ZQvLvu44bRibd14riHbouyLBwGbhwTQZV6sQN50SgbUmbeUTAG4RAwfsf8Axny//wB3nDiYimk3NEeKw8O5kGiEpLJRyRVpBSMj1ViO35GCJyqvDtUVStUjFUXEhBAfsceE8X4f/Y4PH4fAdIOf0uKjq1cHR+oXTq1fju0jYek+54sPSfc8WHpPueLD0n3PFh6T7niZ8X4TxH+v8u4HE47Vdt+r45bTp42v9M2rTp/DfqD9jmBZELrTdnp1s9tst04yLNVnsM6mrVNGsK8qY3zZOTIranCINUy+FFNoiYR1HPjNnNWs3zZwiYSIj6BBPY49OsyFVm7PYoAp13jdSUrzZzI26Xb3BhGqrMbVEcFlwIlyrJyEl/HcsM6c1X+fFylaJRa5klX6zZLE4sUY3iVk2KkXYbbVlnbmWWmWTCHZw/zN89fHFuVsQ5keL8L34taaIqEBVRLZRjllSJCYAUOmkfMNAqqhS7xImZZEpzABRVTAROE7cqnm7lykd1fsiM5Kktl9m9VI9N8SLVk3lfO9lomUj2cmojGy69bn5sa8/dRzSxEiV5eII+/cSkdBwMH8QOnzE3NzD5tGREPERlyyieyUpKST1VBnHx0ezQWdvnztZFs0bIqrrqppJnOG2PsqoookOqqqrtC5RpppJplE6iiih7eBSEIUBMc5hApSgIiIAAjhUt1yM2YdmW5UTah2iaSzcq5SZl3eegMxK/T8uoq+MShWL9NQx7zRpls8j3skZ9HU96DM7mLprZ4h9ifG8CydPOFr4fF8Mgotw+JpPo16NOvQfTv36Tbtw17q3tmK91b2zFe6t7ZivdW9sxXure2Yr3VvbMV7q3tmK91b2zFe6t7ZivdW9sxXure2Yr3VvbMV7q3tmK91b2zFe6t7ZivdW9sxDeE8X4j/AGPmPH4fAaruf0vAo6tXB0fqF06tX47tI/chmdjpt428K9T7bXpEpzx89WbNaMp4WehnxEzpqHZykU9dsXJSKEOZBc4FOURAwbDOSHlUz3rEncKHkDt5Z0SeQueuyateLXasqV3D6w5YVlpmxT61aZSedwE/XlMxgnpaVYPEflxYBlFtFGleslijHf2GIVZ7HvWiRlRMCZVHLZREhlBKU5gIBjgJxKQ5gLvECmH8BewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3YewvMPu3Ycxijdr4riEbrOzrDx2bhuTQVVkiQdx1iibUoXcUDCG8QAo/czko2TF+2Us5nGdEBOXqsSVrj3NiZK1eRq50otkB2zgsXNVlu8dtZJJZm9QMDdRI6ZlCj8UDZbIJiiAHLsn1cTEEQ3AYoHqZyCYv/YayGLvD8xTBvAdsO37ce0Tly3cp5PRrqmRWXGT2UTx6m5RcStaokW9fRSkm2BfxcMaIi6hEx0uJp51CytgbxMvF7ZV0y72fMnqynF3/AGb2UjZyRFukWi9nXfFZQ7CRbU2Rjr+2l4SJtrizRziXjG1fReRTl8sSHbwf8m//xAA9EQACAQIEAwQFBw0BAAAAAAABAhEDIQAEEjETQVEyQGFxFGCRodEiI1OBk8HhEDRCQ1RkcHJzgpKxsvD/2gAIAQIBAT8A9VKOWpNRVXHz1dXamZNgoBGxiCIN5ME9DBEEg7ix7zSpmrUSmP0mAPgN2P1CTjMV4zQZOzRKooG0IflDyJkeIjGcQLV1r2Kyiop5Se177/3d5ynzVOtmSBKjRTnYsY+Ki3InHpjn9Vl/svxw7elZVmhQ9BphBA0EXgSYEXP8mOBU4XG0/NzEyOumYmY1W8+8cRygp6joBkLym9/efyLUdNQRioYQ0cx0PtxxH0cPUdEzpm07/wC7xtN9/wCBNMIzqHbQhPymiYG/tOw6TOGzFFGK08tSZAYDONTMBz1G4nlvHuGZpoFpVqa6FqgykyFYbx4bjoI2Ex3nK0lrVlRuzBYgWJjlPjzi8THXDZpwxWlTp0wCQFFMFt4hiQZPWwvjOa+Bl+IAHltQAAgwLQLAxv44KOqqzKwVuySCAfI8+8I7U2DodLLcEf8AvaMHOVTcLSV/pFpjX5ySb/Vh6zuioxkIWI6ksZJJ3Mk4evUqIlNzKp2bAcoE9YFh8fXEUJy5r8RbNGjmbgbzY3mI7N572KSHKtWvrFXQL2iFO3W/e1/MH/rj/lcfd3oViKBoQIL69XOYAjpywmYZKL0QqkPNzuJAB89hHQ9fV6hQavrhlUIJYsSBF+gO0GZx6H+8Zf7T8MVcvUowWgq2zqdSnwm1/MX5bHvOSEpmgLk0iABzs2ODV+iqf4N8MEGlkmp1bPUcNTQ9pQCpJK7rsd+vU95yRIXMkGCKUg9CAxBx6VmPpX9v4YRjmaFfiwXorrSpADbMdJIAkHTAH3gd5y1daPEDqWFRdJAMWvPuOOJk/wBnqfaH44fMg0zSo0hSRu1cszebWMdZm1pi2Eq01oVKZpBnY2qWkC3M3Ecote/j6zf/xAA5EQACAQEEBAwCCwEAAAAAAAABAhEDABIhMUBBYYETIlFSYHGRkqGx0fAjMhA0QlNjcHJzwdLh8f/aAAgBAwEBPwDoo9Vw5K/IhUNtnPVOzcOW2eOku1xWbkHjq8bU6fwiDm4JO/LswPXagxKXTmhKndl6btJrcdkpA5mWjkHsnrjZbgF59Tvf5ZRwNUCSVqCJPOnxP9rX1v3J40TG6e2MdIurevRxoidn0MqtEiYMjYbXVvXoF7ljH3GHVh+RLEhSVEtGA2+8bCm5EtVcMcYUwBsgZ7otSZrz02MlDgeUbfDbjpNVyiEjPADZOv3rsKKkS7MxIkm9hu2WoxwtS6ZWMDvFgykkAgkZgHLSCAwIIkHMWFBMpcjmluL2CPOwRVYsBBIA2ACAIG6y01VmYCC2fnhv6Y8J8QU7pxE3tWU9mqZzwjSy7CsqfZKTvx17tLP1hf2/7aWUmoKk5Ldjtx8bNTDOryZXVqw8s8eXo9UqCnEgm8YEW4b8Op3bJUV5AkEZgiD78tek1vmo/r/lbX05694ethD1wy4hVIZhkTBETkcx2bNJrgFqQOReD1ErbgaXMHj62YcFUp3JAc3WWSRmBOOvHw5J0mrTZ7pUgFTOO70tdr/eL3f8stI3r7tfYZYQBu8sosyMaisHIUDFfeGOuf8AnSb/2Q=="
  3850. },
  3851. {
  3852. value: Ft.ORDER_LIST_4,
  3853. img: "data:image/jpeg;base64,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"
  3854. },
  3855. {
  3856. value: Ft.ORDER_LIST_5,
  3857. img: "data:image/jpeg;base64,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"
  3858. }
  3859. ];
  3860. var Sl = (n) => w.jsx(
  3861. ia,
  3862. {
  3863. ...n,
  3864. options: El
  3865. }
  3866. );
  3867. var Il = [
  3868. {
  3869. value: Ft.BULLET_LIST,
  3870. img: "data:image/jpeg;base64,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"
  3871. },
  3872. {
  3873. value: Ft.BULLET_LIST_1,
  3874. img: "data:image/jpeg;base64,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"
  3875. },
  3876. {
  3877. value: Ft.BULLET_LIST_2,
  3878. img: "data:image/jpeg;base64,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"
  3879. },
  3880. {
  3881. value: Ft.BULLET_LIST_3,
  3882. img: "data:image/jpeg;base64,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"
  3883. },
  3884. {
  3885. value: Ft.BULLET_LIST_4,
  3886. img: "data:image/jpeg;base64,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"
  3887. },
  3888. {
  3889. value: Ft.BULLET_LIST_5,
  3890. img: "data:image/jpeg;base64,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"
  3891. }
  3892. ];
  3893. var Cl = (n) => w.jsx(
  3894. ia,
  3895. {
  3896. ...n,
  3897. options: Il
  3898. }
  3899. );
  3900. var aa = `${kt}_ORDER_LIST_TYPE_COMPONENT`;
  3901. var ca = `${kt}_BULLET_LIST_TYPE_COMPONENT`;
  3902. var vl2 = "doc.command.tab";
  3903. var _t = {
  3904. id: vl2,
  3905. type: ar.COMMAND,
  3906. async handler(n, e) {
  3907. const o = n.get(Et).onAutoFormat(_t.id, e);
  3908. return (await Q0(o, n.get(Pt))).result;
  3909. }
  3910. };
  3911. var Rl = "doc.command.after-space";
  3912. var Ao = {
  3913. id: Rl,
  3914. type: ar.COMMAND,
  3915. async handler(n) {
  3916. const t = n.get(Et).onAutoFormat(Ao.id);
  3917. return (await Q0(t, n.get(Pt))).result;
  3918. }
  3919. };
  3920. var ln2 = {
  3921. id: "doc.command.enter",
  3922. type: ar.COMMAND,
  3923. async handler(n) {
  3924. const t = n.get(Et).onAutoFormat(ln2.id);
  3925. return (await Q0(t, n.get(Pt))).result;
  3926. }
  3927. };
  3928. function de(n) {
  3929. return n.getContextValue(Nr) && n.getContextValue(CR) && !n.getContextValue(yR);
  3930. }
  3931. function bl(n) {
  3932. return n.getContextValue(Nr) && n.getContextValue(CR) && !n.getContextValue(yR);
  3933. }
  3934. var xl = {
  3935. id: _t.id,
  3936. binding: I1.TAB,
  3937. preconditions: de
  3938. };
  3939. var Ol = {
  3940. id: _t.id,
  3941. binding: I1.TAB | Ae.SHIFT,
  3942. preconditions: de,
  3943. staticParameters: {
  3944. shift: true
  3945. }
  3946. };
  3947. var Tl = Object.defineProperty;
  3948. var yl = Object.getOwnPropertyDescriptor;
  3949. var Bl = (n, e, t, o) => {
  3950. for (var s = o > 1 ? void 0 : o ? yl(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  3951. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  3952. return o && s && Tl(e, t, s), s;
  3953. };
  3954. var wo = (n, e) => (t, o) => e(t, o, n);
  3955. var Ml = 11;
  3956. var _l = 9;
  3957. var vn = {
  3958. /**
  3959. * fontFamily
  3960. */
  3961. ff: "Arial",
  3962. /**
  3963. * fontSize
  3964. */
  3965. fs: Ml
  3966. };
  3967. var Je = class extends nt {
  3968. constructor(e, t, o) {
  3969. super();
  3970. x(this, "_cacheStyle", null);
  3971. this._textSelectionManagerService = e, this._univerInstanceService = t, this._renderManagerService = o, this._init();
  3972. }
  3973. _init() {
  3974. this._listenDocRangeChange();
  3975. }
  3976. _listenDocRangeChange() {
  3977. this.disposeWithMe(
  3978. this._textSelectionManagerService.textSelection$.subscribe(() => {
  3979. this._clearStyleCache();
  3980. })
  3981. );
  3982. }
  3983. getStyleCache() {
  3984. return this._cacheStyle;
  3985. }
  3986. getDefaultStyle() {
  3987. var i;
  3988. const e = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
  3989. if (e == null)
  3990. return {
  3991. ...vn
  3992. };
  3993. const t = e == null ? void 0 : e.getUnitId(), o = (i = this._renderManagerService.getRenderById(t)) == null ? void 0 : i.with(D), s = o == null ? void 0 : o.getViewModel();
  3994. return s == null ? {
  3995. ...vn
  3996. } : s.getEditArea() === n3.BODY ? {
  3997. ...vn
  3998. } : {
  3999. ...vn,
  4000. fs: _l
  4001. };
  4002. }
  4003. setStyleCache(e) {
  4004. this._cacheStyle = {
  4005. ...this._cacheStyle,
  4006. ...e
  4007. };
  4008. }
  4009. _clearStyleCache() {
  4010. this._cacheStyle = null;
  4011. }
  4012. };
  4013. Je = Bl([
  4014. wo(0, ot(m)),
  4015. wo(1, _n),
  4016. wo(2, Yx)
  4017. ], Je);
  4018. function Ve(n, e, t) {
  4019. return t.executeCommand(lt.id, {
  4020. preCommandId: n,
  4021. ...e != null ? e : {}
  4022. });
  4023. }
  4024. var Ur = "doc.command.set-inline-format-bold";
  4025. var Vt = {
  4026. id: Ur,
  4027. type: ar.COMMAND,
  4028. handler: async (n, e) => {
  4029. const t = n.get(Pt);
  4030. return Ve(
  4031. Ur,
  4032. e,
  4033. t
  4034. );
  4035. }
  4036. };
  4037. var Lr = "doc.command.set-inline-format-italic";
  4038. var jt = {
  4039. id: Lr,
  4040. type: ar.COMMAND,
  4041. handler: async (n, e) => {
  4042. const t = n.get(Pt);
  4043. return Ve(
  4044. Lr,
  4045. e,
  4046. t
  4047. );
  4048. }
  4049. };
  4050. var Fr = "doc.command.set-inline-format-underline";
  4051. var Wt2 = {
  4052. id: Fr,
  4053. type: ar.COMMAND,
  4054. handler: async (n, e) => {
  4055. const t = n.get(Pt);
  4056. return Ve(
  4057. Fr,
  4058. e,
  4059. t
  4060. );
  4061. }
  4062. };
  4063. var Hr = "doc.command.set-inline-format-strikethrough";
  4064. var zt = {
  4065. id: Hr,
  4066. type: ar.COMMAND,
  4067. handler: async (n, e) => {
  4068. const t = n.get(Pt);
  4069. return Ve(
  4070. Hr,
  4071. e,
  4072. t
  4073. );
  4074. }
  4075. };
  4076. var kr = "doc.command.set-inline-format-subscript";
  4077. var Ct2 = {
  4078. id: kr,
  4079. type: ar.COMMAND,
  4080. handler: async (n, e) => {
  4081. const t = n.get(Pt);
  4082. return Ve(
  4083. kr,
  4084. e,
  4085. t
  4086. );
  4087. }
  4088. };
  4089. var Vr2 = "doc.command.set-inline-format-superscript";
  4090. var Gt = {
  4091. id: Vr2,
  4092. type: ar.COMMAND,
  4093. handler: async (n, e) => {
  4094. const t = n.get(Pt);
  4095. return Ve(
  4096. Vr2,
  4097. e,
  4098. t
  4099. );
  4100. }
  4101. };
  4102. var jr = "doc.command.set-inline-format-fontsize";
  4103. var Pt2 = {
  4104. id: jr,
  4105. type: ar.COMMAND,
  4106. handler: async (n, e) => {
  4107. const t = n.get(Pt);
  4108. return Ve(
  4109. jr,
  4110. e,
  4111. t
  4112. );
  4113. }
  4114. };
  4115. var Wr = "doc.command.set-inline-format-font-family";
  4116. var Dt2 = {
  4117. id: Wr,
  4118. type: ar.COMMAND,
  4119. handler: async (n, e) => {
  4120. const t = n.get(Pt);
  4121. return Ve(
  4122. Wr,
  4123. e,
  4124. t
  4125. );
  4126. }
  4127. };
  4128. var zr = "doc.command.set-inline-format-text-color";
  4129. var wt = {
  4130. id: zr,
  4131. type: ar.COMMAND,
  4132. handler: async (n, e) => {
  4133. const t = n.get(Pt);
  4134. return Ve(
  4135. zr,
  4136. e,
  4137. t
  4138. );
  4139. }
  4140. };
  4141. var Gr = "doc.command.set-inline-format-text-background-color";
  4142. var Nt2 = {
  4143. id: Gr,
  4144. type: ar.COMMAND,
  4145. handler: async (n, e) => {
  4146. const t = n.get(Pt);
  4147. return Ve(
  4148. Gr,
  4149. e,
  4150. t
  4151. );
  4152. }
  4153. };
  4154. var Yr = "doc.command.reset-inline-format-text-background-color";
  4155. var fn = {
  4156. id: Yr,
  4157. type: ar.COMMAND,
  4158. handler: async (n, e) => {
  4159. const t = n.get(Pt);
  4160. return Ve(
  4161. Yr,
  4162. e,
  4163. t
  4164. );
  4165. }
  4166. };
  4167. var $o = {
  4168. [Vt.id]: "bl",
  4169. [jt.id]: "it",
  4170. [Wt2.id]: "ul",
  4171. [zt.id]: "st",
  4172. [Pt2.id]: "fs",
  4173. [Dt2.id]: "ff",
  4174. [wt.id]: "cl",
  4175. [Nt2.id]: "bg",
  4176. [fn.id]: "bg",
  4177. [Ct2.id]: "va",
  4178. [Gt.id]: "va"
  4179. };
  4180. var lt = {
  4181. id: "doc.command.set-inline-format",
  4182. type: ar.COMMAND,
  4183. // eslint-disable-next-line max-lines-per-function, complexity
  4184. handler: async (n, e) => {
  4185. var R;
  4186. const { value: t, preCommandId: o } = e, s = n.get(Pt), r = n.get(m), i = n.get(_n), a = n.get(Je), c = r.getDocRanges(), A = (R = c.find((S) => S.isActive)) != null ? R : c[0];
  4187. if (c.length === 0)
  4188. return false;
  4189. const { segmentId: l } = c[0], d = i.getCurrentUnitForType(Fe.UNIVER_DOC);
  4190. if (d == null)
  4191. return false;
  4192. const h = d.getSelfOrHeaderFooterModel(l).getBody();
  4193. if (h == null)
  4194. return false;
  4195. const u = d.getUnitId();
  4196. let g;
  4197. switch (o) {
  4198. case Vt.id:
  4199. case jt.id:
  4200. case Wt2.id:
  4201. case zt.id:
  4202. case Ct2.id:
  4203. case Gt.id: {
  4204. const S = a.getDefaultStyle(), C = la(
  4205. h,
  4206. A,
  4207. S
  4208. );
  4209. g = Dl2(
  4210. C,
  4211. o
  4212. );
  4213. break;
  4214. }
  4215. case Pt2.id:
  4216. case Dt2.id: {
  4217. g = t;
  4218. break;
  4219. }
  4220. case wt.id:
  4221. case Nt2.id: {
  4222. g = {
  4223. rgb: t
  4224. };
  4225. break;
  4226. }
  4227. case fn.id: {
  4228. g = {
  4229. rgb: null
  4230. };
  4231. break;
  4232. }
  4233. default:
  4234. throw new Error(`Unknown command: ${o} in handleInlineFormat`);
  4235. }
  4236. const f = {
  4237. id: M.id,
  4238. params: {
  4239. unitId: u,
  4240. actions: [],
  4241. textRanges: c
  4242. }
  4243. }, p = new Ke(), m2 = tn.getInstance(), E = new lr();
  4244. E.reset();
  4245. for (const S of c) {
  4246. let { startOffset: C, endOffset: T, rangeType: O } = S;
  4247. if (C == null || T == null)
  4248. continue;
  4249. if (O === Ag.RECT && (C = C - 1), C === T) {
  4250. const B = a.getStyleCache(), M2 = $o[o];
  4251. a.setStyleCache(
  4252. {
  4253. [M2]: (B == null ? void 0 : B[M2]) !== void 0 ? Aa(
  4254. B,
  4255. M2,
  4256. o
  4257. ) : g
  4258. }
  4259. );
  4260. continue;
  4261. }
  4262. const P = {
  4263. dataStream: "",
  4264. textRuns: [
  4265. {
  4266. st: 0,
  4267. ed: T - C,
  4268. ts: {
  4269. [$o[o]]: g
  4270. }
  4271. }
  4272. ]
  4273. }, b = C - E.cursor;
  4274. b !== 0 && p.push({
  4275. t: ce.RETAIN,
  4276. len: b
  4277. }), p.push({
  4278. t: ce.RETAIN,
  4279. body: P,
  4280. len: T - C
  4281. }), E.reset(), E.moveCursor(T);
  4282. }
  4283. const I = le(d, l);
  4284. return f.params.actions = m2.editOp(p.serialize(), I), !!s.syncExecuteCommand(f.id, f.params);
  4285. }
  4286. };
  4287. function Pl2(n) {
  4288. return n !== null && typeof n == "object";
  4289. }
  4290. function Aa(n, e, t) {
  4291. if (/bl|it/.test(e))
  4292. return (n == null ? void 0 : n[e]) === we.TRUE ? we.FALSE : we.TRUE;
  4293. if (/ul|st/.test(e))
  4294. return Pl2(n == null ? void 0 : n[e]) && (n == null ? void 0 : n[e]).s === we.TRUE ? {
  4295. s: we.FALSE
  4296. } : {
  4297. s: we.TRUE
  4298. };
  4299. if (/va/.test(e))
  4300. return t === Ct2.id ? (n == null ? void 0 : n[e]) === Bt.SUBSCRIPT ? Bt.NORMAL : Bt.SUBSCRIPT : (n == null ? void 0 : n[e]) === Bt.SUPERSCRIPT ? Bt.NORMAL : Bt.SUPERSCRIPT;
  4301. }
  4302. function la(n, e, t) {
  4303. var A, l, d, h, u, g, f, p, m2, E, I, v, R, S;
  4304. const { startOffset: o, endOffset: s, collapsed: r } = e;
  4305. if (r) {
  4306. const C = (A = n.textRuns) != null ? A : [];
  4307. let T = null;
  4308. for (let O = C.length - 1; O >= 0; O--) {
  4309. const P = C[O];
  4310. if (P.st < o && o <= P.ed) {
  4311. T = P;
  4312. break;
  4313. }
  4314. }
  4315. return T != null && T.ts ? { ...t, ...T.ts } : t;
  4316. }
  4317. const { textRuns: i = [] } = Dt(n, o, s), a = re.deepClone(t);
  4318. a.fs = Math.max(a.fs, ...i.map((C) => {
  4319. var T, O;
  4320. return (O = (T = C == null ? void 0 : C.ts) == null ? void 0 : T.fs) != null ? O : a.fs;
  4321. })), a.ff = (h = (d = (l = i.find((C) => {
  4322. var T;
  4323. return ((T = C.ts) == null ? void 0 : T.ff) != null;
  4324. })) == null ? void 0 : l.ts) == null ? void 0 : d.ff) != null ? h : a.ff, a.it = i.length && i.every((C) => {
  4325. var T;
  4326. return ((T = C.ts) == null ? void 0 : T.it) === we.TRUE;
  4327. }) ? we.TRUE : we.FALSE, a.bl = i.length && i.every((C) => {
  4328. var T;
  4329. return ((T = C.ts) == null ? void 0 : T.bl) === we.TRUE;
  4330. }) ? we.TRUE : we.FALSE, a.ul = i.length && i.every((C) => {
  4331. var T, O;
  4332. return ((O = (T = C.ts) == null ? void 0 : T.ul) == null ? void 0 : O.s) === we.TRUE;
  4333. }) ? (u = i[0].ts) == null ? void 0 : u.ul : a.ul, a.st = i.length && i.every((C) => {
  4334. var T, O;
  4335. return ((O = (T = C.ts) == null ? void 0 : T.st) == null ? void 0 : O.s) === we.TRUE;
  4336. }) ? (g = i[0].ts) == null ? void 0 : g.st : a.st, a.bg = (m2 = (p = (f = i.find((C) => {
  4337. var T;
  4338. return ((T = C.ts) == null ? void 0 : T.bg) != null;
  4339. })) == null ? void 0 : f.ts) == null ? void 0 : p.bg) != null ? m2 : a.bg, a.cl = (v = (I = (E = i.find((C) => {
  4340. var T;
  4341. return ((T = C.ts) == null ? void 0 : T.cl) != null;
  4342. })) == null ? void 0 : E.ts) == null ? void 0 : I.cl) != null ? v : a.cl;
  4343. const c = i.filter((C) => {
  4344. var T;
  4345. return ((T = C == null ? void 0 : C.ts) == null ? void 0 : T.va) != null;
  4346. });
  4347. if (c.length > 0 && c.length === i.length) {
  4348. const C = (R = c[0].ts) == null ? void 0 : R.va;
  4349. let T = true;
  4350. for (let O = 1; O < c.length; O++)
  4351. if (((S = c[O].ts) == null ? void 0 : S.va) !== C) {
  4352. T = false;
  4353. break;
  4354. }
  4355. T && (a.va = C);
  4356. }
  4357. return a;
  4358. }
  4359. function Dl2(n, e) {
  4360. const t = $o[e];
  4361. return Aa(n, t, e);
  4362. }
  4363. var pn = {
  4364. id: "doc.command.list-operation",
  4365. type: ar.COMMAND,
  4366. handler: (n, e) => {
  4367. var E, I;
  4368. const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = e.listType, i = o.getCurrentUnitForType(Fe.UNIVER_DOC), a = (E = t.getDocRanges()) != null ? E : [];
  4369. if (i == null || a.length === 0)
  4370. return false;
  4371. const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4372. if (A == null)
  4373. return false;
  4374. const l = mn2(a, A), d = i.getUnitId(), h = {
  4375. id: M.id,
  4376. params: {
  4377. unitId: d,
  4378. actions: [],
  4379. textRanges: a,
  4380. isEditing: false
  4381. }
  4382. };
  4383. new lr().reset();
  4384. const g = st.paragraph.bullet.switch({
  4385. paragraphs: l,
  4386. listType: r,
  4387. document: i,
  4388. segmentId: c
  4389. }), f = tn.getInstance(), p = le(i, c);
  4390. return h.params.actions = f.editOp(g.serialize(), p), !!s.syncExecuteCommand(h.id, h.params);
  4391. }
  4392. };
  4393. var lo = {
  4394. id: "doc.command.change-list-type",
  4395. type: ar.COMMAND,
  4396. handler: (n, e) => {
  4397. var E, I;
  4398. const t = n.get(m), o = n.get(_n), s = n.get(Pt), { listType: r } = e, i = o.getCurrentUnitForType(Fe.UNIVER_DOC), a = t.getDocRanges();
  4399. if (i == null || a == null || !a.length)
  4400. return false;
  4401. const { segmentId: c } = a[0], A = (E = t.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4402. if (l == null)
  4403. return false;
  4404. const d = mn2(A, l), h = i.getUnitId(), u = st.paragraph.bullet.set({
  4405. paragraphs: d,
  4406. listType: r,
  4407. segmentId: c,
  4408. document: i
  4409. });
  4410. if (!u)
  4411. return false;
  4412. const g = tn.getInstance(), f = {
  4413. id: M.id,
  4414. params: {
  4415. unitId: h,
  4416. actions: [],
  4417. textRanges: A,
  4418. isEditing: false
  4419. }
  4420. }, p = le(i, c);
  4421. return f.params.actions = g.editOp(u.serialize(), p), !!s.syncExecuteCommand(f.id, f.params);
  4422. }
  4423. };
  4424. var Pn = ((n) => (n[n.increase = 1] = "increase", n[n.decrease = -1] = "decrease", n))(Pn || {});
  4425. var es = {
  4426. id: "doc.command.change-list-nesting-level",
  4427. type: ar.COMMAND,
  4428. handler: (n, e) => {
  4429. var E, I;
  4430. if (!e)
  4431. return false;
  4432. const { type: t } = e, o = n.get(m), s = n.get(_n), r = n.get(Pt), i = s.getCurrentUnitForType(Fe.UNIVER_DOC), a = o.getActiveTextRange();
  4433. if (i == null || a == null)
  4434. return false;
  4435. const { segmentId: c } = a, A = (E = o.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4436. if (l == null)
  4437. return false;
  4438. const d = Qs(a, l), h = i.getUnitId(), u = tn.getInstance(), g = st.paragraph.bullet.changeNestLevel({
  4439. paragraphs: d,
  4440. type: t,
  4441. segmentId: c,
  4442. document: i
  4443. }), f = {
  4444. id: M.id,
  4445. params: {
  4446. unitId: h,
  4447. actions: [],
  4448. textRanges: A,
  4449. isEditing: false
  4450. }
  4451. }, p = le(i, c);
  4452. return f.params.actions = u.editOp(g.serialize(), p), !!r.syncExecuteCommand(f.id, f.params);
  4453. }
  4454. };
  4455. var uo = {
  4456. id: "doc.command.bullet-list",
  4457. type: ar.COMMAND,
  4458. handler: (n, e) => {
  4459. const t = n.get(Pt);
  4460. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4461. listType: e.value
  4462. }) : t.syncExecuteCommand(pn.id, {
  4463. listType: Ft.BULLET_LIST
  4464. });
  4465. }
  4466. };
  4467. var ws = {
  4468. id: "doc.command.check-list",
  4469. type: ar.COMMAND,
  4470. handler: (n, e) => {
  4471. const t = n.get(Pt);
  4472. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4473. listType: e.value
  4474. }) : t.syncExecuteCommand(pn.id, {
  4475. listType: Ft.CHECK_LIST
  4476. });
  4477. }
  4478. };
  4479. var Ns = {
  4480. id: "doc.command.toggle-check-list",
  4481. type: ar.COMMAND,
  4482. handler: (n, e) => {
  4483. var f;
  4484. if (!e)
  4485. return false;
  4486. const t = n.get(_n), o = n.get(Pt), { index: s, segmentId: r, textRanges: i } = e, a = t.getCurrentUnitForType(Fe.UNIVER_DOC);
  4487. if (a == null || ((f = a.getSelfOrHeaderFooterModel(r).getBody()) == null ? void 0 : f.paragraphs) == null)
  4488. return false;
  4489. const A = a.getUnitId(), l = {
  4490. id: M.id,
  4491. params: {
  4492. unitId: A,
  4493. actions: [],
  4494. textRanges: i != null ? i : [],
  4495. segmentId: r,
  4496. isEditing: false
  4497. }
  4498. }, d = st.paragraph.bullet.toggleChecklist({
  4499. document: a,
  4500. paragraphIndex: s,
  4501. segmentId: r
  4502. });
  4503. if (!d)
  4504. return false;
  4505. const h = tn.getInstance(), u = le(a, r);
  4506. return l.params.actions = h.editOp(d.serialize(), u), !!o.syncExecuteCommand(l.id, l.params);
  4507. }
  4508. };
  4509. var ho = {
  4510. id: "doc.command.order-list",
  4511. type: ar.COMMAND,
  4512. handler: (n, e) => {
  4513. const t = n.get(Pt);
  4514. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4515. listType: e.value
  4516. }) : t.syncExecuteCommand(pn.id, {
  4517. listType: Ft.ORDER_LIST
  4518. });
  4519. }
  4520. };
  4521. var da = {
  4522. id: "doc.command.quick-list",
  4523. type: ar.COMMAND,
  4524. // eslint-disable-next-line max-lines-per-function
  4525. handler(n, e) {
  4526. var oe, ce2, he, Ae2, ne;
  4527. if (!e)
  4528. return false;
  4529. const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = o.getCurrentUnitForType(Fe.UNIVER_DOC), i = t.getActiveTextRange();
  4530. if (r == null || i == null)
  4531. return false;
  4532. const { segmentId: a } = i, { listType: c, paragraph: A } = e, { paragraphStart: l, paragraphEnd: d } = A, h = new Ke(), u = tn.getInstance(), { defaultTabStop: g = 36 } = r.getSnapshot().documentStyle, f = (ce2 = (oe = r.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : oe.sectionBreaks) != null ? ce2 : [], { startIndex: p, paragraphStyle: m2 = {} } = A, { indentFirstLine: E, snapToGrid: I, indentStart: v } = m2, R = Es[c].nestingLevel[0].paragraphProperties || {}, { hanging: S, indentStart: C } = R, T = R.textStyle, { charSpace: O, gridType: P } = wl(p, f) || { charSpace: 0, gridType: Wp.LINES }, b = i0(O, g, P, I);
  4533. let M2 = re.generateRandomId(6);
  4534. const H = (Ae2 = (he = r.getBody()) == null ? void 0 : he.paragraphs) != null ? Ae2 : [], F = H.findIndex((ae) => ae.startIndex === A.startIndex), D2 = H[F - 1], te2 = H[F + 1];
  4535. D2 && D2.bullet && D2.bullet.listType.indexOf(c) === 0 ? M2 = D2.bullet.listId : te2 && te2.bullet && te2.bullet.listType.indexOf(c) === 0 && (M2 = te2.bullet.listId);
  4536. const q = {
  4537. id: M.id,
  4538. params: {
  4539. unitId: r.getUnitId(),
  4540. actions: [],
  4541. textRanges: [{
  4542. startOffset: l,
  4543. endOffset: l,
  4544. collapsed: true
  4545. }],
  4546. isEditing: false
  4547. }
  4548. };
  4549. h.push({
  4550. t: ce.RETAIN,
  4551. len: l
  4552. }), h.push({
  4553. t: ce.DELETE,
  4554. len: d - l
  4555. }), h.push({
  4556. t: ce.RETAIN,
  4557. len: 1,
  4558. body: {
  4559. dataStream: "",
  4560. paragraphs: [
  4561. {
  4562. startIndex: 0,
  4563. paragraphStyle: {
  4564. ...m2,
  4565. textStyle: {
  4566. ...m2.textStyle,
  4567. ...T
  4568. },
  4569. indentFirstLine: void 0,
  4570. hanging: S,
  4571. indentStart: { v: S3(C, b) - S3(S, b) + S3(E, b) + S3(v, b) }
  4572. },
  4573. bullet: {
  4574. ...(ne = A.bullet) != null ? ne : {
  4575. nestingLevel: 0,
  4576. textStyle: {
  4577. fs: 20
  4578. }
  4579. },
  4580. listType: c,
  4581. listId: M2
  4582. }
  4583. }
  4584. ]
  4585. }
  4586. });
  4587. const V = le(r, a);
  4588. return q.params.actions = u.editOp(h.serialize(), V), !!s.syncExecuteCommand(q.id, q.params);
  4589. }
  4590. };
  4591. function Qs(n, e) {
  4592. const { startOffset: t, endOffset: o } = n, s = [];
  4593. let r = -1;
  4594. for (const i of e) {
  4595. const { startIndex: a } = i;
  4596. (t > r && t <= a || o > r && o <= a || a >= t && a <= o) && s.push(i), r = a;
  4597. }
  4598. return s;
  4599. }
  4600. function mn2(n, e) {
  4601. const t = [];
  4602. for (const o of n) {
  4603. const s = Qs(o, e);
  4604. t.push(...s);
  4605. }
  4606. return t;
  4607. }
  4608. function wl(n, e) {
  4609. const t = e.sort(ps("startIndex"));
  4610. for (let o = 0; o < t.length; o++) {
  4611. const s = e[o];
  4612. if (s.startIndex >= n)
  4613. return s;
  4614. }
  4615. }
  4616. var et = {
  4617. id: "doc.command.align-action",
  4618. type: ar.COMMAND,
  4619. // eslint-disable-next-line max-lines-per-function
  4620. handler: (n, e) => {
  4621. var I;
  4622. const t = n.get(m), o = n.get(_n), s = n.get(Pt), { alignType: r } = e, i = o.getCurrentUniverDocInstance();
  4623. if (i == null)
  4624. return false;
  4625. const a = t.getDocRanges();
  4626. if (a.length === 0)
  4627. return false;
  4628. const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4629. if (A == null)
  4630. return false;
  4631. const l = mn2(a, A), d = i.getUnitId(), h = l.every((v) => {
  4632. var R;
  4633. return ((R = v.paragraphStyle) == null ? void 0 : R.horizontalAlign) === r;
  4634. }), u = {
  4635. id: M.id,
  4636. params: {
  4637. unitId: d,
  4638. actions: [],
  4639. textRanges: a
  4640. }
  4641. }, g = new lr();
  4642. g.reset();
  4643. const f = new Ke(), p = tn.getInstance();
  4644. for (const v of l) {
  4645. const { startIndex: R } = v;
  4646. f.push({
  4647. t: ce.RETAIN,
  4648. len: R - g.cursor
  4649. });
  4650. const S = {
  4651. ...v.paragraphStyle,
  4652. horizontalAlign: h ? Xt.UNSPECIFIED : r
  4653. };
  4654. f.push({
  4655. t: ce.RETAIN,
  4656. len: 1,
  4657. body: {
  4658. dataStream: "",
  4659. paragraphs: [
  4660. {
  4661. ...v,
  4662. paragraphStyle: S,
  4663. startIndex: 0
  4664. }
  4665. ]
  4666. },
  4667. coverType: Pe.REPLACE
  4668. }), g.moveCursorTo(R + 1);
  4669. }
  4670. const m2 = le(i, c);
  4671. return u.params.actions = p.editOp(f.serialize(), m2), !!s.syncExecuteCommand(u.id, u.params);
  4672. }
  4673. };
  4674. var go = {
  4675. id: "doc.command.align-left",
  4676. type: ar.COMMAND,
  4677. handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
  4678. alignType: Xt.LEFT
  4679. })
  4680. };
  4681. var fo = {
  4682. id: "doc.command.align-center",
  4683. type: ar.COMMAND,
  4684. handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
  4685. alignType: Xt.CENTER
  4686. })
  4687. };
  4688. var po = {
  4689. id: "doc.command.align-right",
  4690. type: ar.COMMAND,
  4691. handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
  4692. alignType: Xt.RIGHT
  4693. })
  4694. };
  4695. var mo = {
  4696. id: "doc.command.align-justify",
  4697. type: ar.COMMAND,
  4698. handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
  4699. alignType: Xt.JUSTIFIED
  4700. })
  4701. };
  4702. var Nl = {
  4703. id: Vt.id,
  4704. binding: I1.B | Ae.CTRL_COMMAND,
  4705. preconditions: de
  4706. };
  4707. var Ql2 = {
  4708. id: jt.id,
  4709. binding: I1.I | Ae.CTRL_COMMAND,
  4710. preconditions: de
  4711. };
  4712. var Ul = {
  4713. id: Wt2.id,
  4714. binding: I1.U | Ae.CTRL_COMMAND,
  4715. preconditions: de
  4716. };
  4717. var Ll = {
  4718. id: zt.id,
  4719. binding: I1.X | Ae.SHIFT | Ae.CTRL_COMMAND,
  4720. preconditions: de
  4721. };
  4722. var Fl = {
  4723. id: Ct2.id,
  4724. binding: I1.COMMA | Ae.CTRL_COMMAND,
  4725. preconditions: de
  4726. };
  4727. var Hl = {
  4728. id: Gt.id,
  4729. binding: I1.PERIOD | Ae.CTRL_COMMAND,
  4730. preconditions: de
  4731. };
  4732. var kl = {
  4733. id: go.id,
  4734. binding: I1.L | Ae.CTRL_COMMAND | Ae.SHIFT,
  4735. preconditions: de
  4736. };
  4737. var Vl = {
  4738. id: po.id,
  4739. binding: I1.R | Ae.CTRL_COMMAND | Ae.SHIFT,
  4740. preconditions: de
  4741. };
  4742. var jl2 = {
  4743. id: fo.id,
  4744. binding: I1.E | Ae.CTRL_COMMAND | Ae.SHIFT,
  4745. preconditions: de
  4746. };
  4747. var Wl = {
  4748. id: mo.id,
  4749. binding: I1.J | Ae.CTRL_COMMAND | Ae.SHIFT,
  4750. preconditions: de
  4751. };
  4752. var zl = {
  4753. id: ho.id,
  4754. binding: I1.Digit7 | Ae.CTRL_COMMAND | Ae.SHIFT,
  4755. preconditions: de
  4756. };
  4757. var Gl = {
  4758. id: uo.id,
  4759. binding: I1.Digit8 | Ae.CTRL_COMMAND | Ae.SHIFT,
  4760. preconditions: de
  4761. };
  4762. var Yl2 = "univer-doc-count-bar";
  4763. var ql2 = {
  4764. docCountBar: Yl2
  4765. };
  4766. var Kl = (n, e) => {
  4767. const t = n.get(_n).getUniverDocInstance(e.unitId), o = (t == null ? void 0 : t.zoomRatio) || 1;
  4768. return {
  4769. ...re.deepClone(e),
  4770. zoomRatio: o
  4771. };
  4772. };
  4773. var Ye = {
  4774. id: "doc.operation.set-zoom-ratio",
  4775. type: ar.OPERATION,
  4776. handler: (n, e) => {
  4777. const t = n.get(_n).getUniverDocInstance(e.unitId);
  4778. if (!t)
  4779. return false;
  4780. const o = t.getSnapshot();
  4781. return o.settings == null ? o.settings = {
  4782. zoomRatio: e.zoomRatio
  4783. } : o.settings.zoomRatio = e.zoomRatio, true;
  4784. }
  4785. };
  4786. var Xl2 = [50, 80, 100, 130, 150, 170, 200, 400];
  4787. var Jl = [10, 400];
  4788. function Zl() {
  4789. const n = W0(Pt), e = W0(_n), t = (0, import_react.useMemo)(() => e.getCurrentTypeOfUnit$(Fe.UNIVER_DOC), []), o = z0(t), s = (0, import_react.useCallback)(() => {
  4790. var A, l;
  4791. if (!o)
  4792. return 100;
  4793. const c = ((l = (A = o.getSettings()) == null ? void 0 : A.zoomRatio) != null ? l : 1) * 100;
  4794. return Math.round(c);
  4795. }, [o]), [r, i] = (0, import_react.useState)(() => s());
  4796. (0, import_react.useEffect)(() => (i(s()), n.onCommandExecuted((A) => {
  4797. if (A.id === Ye.id) {
  4798. const l = s();
  4799. i(l);
  4800. }
  4801. }).dispose), [n, s]);
  4802. function a(c) {
  4803. if (i(c), o == null)
  4804. return;
  4805. const A = c / 100;
  4806. n.executeCommand(Ye.id, {
  4807. unitId: o.getUnitId(),
  4808. zoomRatio: A
  4809. });
  4810. }
  4811. return w.jsx(
  4812. i_,
  4813. {
  4814. min: Jl[0],
  4815. value: r,
  4816. shortcuts: Xl2,
  4817. onChange: a
  4818. }
  4819. );
  4820. }
  4821. function $l2(n) {
  4822. return w.jsx("section", { className: ql2.docCountBar, children: w.jsx(Zl, {}) });
  4823. }
  4824. var ed = "univer-doc-footer-container";
  4825. var td = {
  4826. docFooterContainer: ed
  4827. };
  4828. var nd = () => w.jsxs("div", { className: td.docFooterContainer, children: [
  4829. w.jsx("div", {}),
  4830. w.jsx($l2, {})
  4831. ] });
  4832. var Us = "docs-ui.config";
  4833. var qr = {
  4834. layout: {
  4835. docContainerConfig: sA,
  4836. toolbarConfig: oA
  4837. }
  4838. };
  4839. var Eo = ((n) => (n[n.ABOVE = 0] = "ABOVE", n[n.BELLOW = 1] = "BELLOW", n))(Eo || {});
  4840. var Ls = ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Ls || {});
  4841. function od(n, e) {
  4842. let t = ln.TABLE_START;
  4843. const o = [], s = [];
  4844. for (let r = 0; r < n; r++) {
  4845. t += ln.TABLE_ROW_START;
  4846. for (let i = 0; i < e; i++)
  4847. t += `${ln.TABLE_CELL_START}\r
  4848. ${ln.TABLE_CELL_END}`, o.push({
  4849. startIndex: t.length - 3,
  4850. paragraphStyle: {
  4851. spaceAbove: { v: 3 },
  4852. lineSpacing: 2,
  4853. spaceBelow: { v: 0 }
  4854. }
  4855. }), s.push({
  4856. startIndex: t.length - 2
  4857. });
  4858. t += ln.TABLE_ROW_END;
  4859. }
  4860. return t += ln.TABLE_END, {
  4861. dataStream: t,
  4862. paragraphs: o,
  4863. sectionBreaks: s
  4864. };
  4865. }
  4866. function Fs() {
  4867. return {
  4868. margin: {
  4869. start: {
  4870. v: 10
  4871. },
  4872. end: {
  4873. v: 10
  4874. },
  4875. top: {
  4876. v: 5
  4877. },
  4878. bottom: {
  4879. v: 5
  4880. }
  4881. }
  4882. };
  4883. }
  4884. function Hs(n) {
  4885. const e = Fs();
  4886. return {
  4887. tableCells: [...new Array(n).fill(null).map(() => re.deepClone(e))],
  4888. trHeight: {
  4889. val: { v: 30 },
  4890. hRule: sm.AUTO
  4891. }
  4892. };
  4893. }
  4894. function ks(n) {
  4895. return {
  4896. size: {
  4897. type: em.SPECIFIED,
  4898. width: {
  4899. v: n
  4900. }
  4901. }
  4902. };
  4903. }
  4904. function ua(n, e, t) {
  4905. const o = ks(t / e), s = Hs(e), r = [...new Array(n).fill(null).map(() => re.deepClone(s))], i = [...new Array(e).fill(null).map(() => re.deepClone(o))], a = qt(6);
  4906. return {
  4907. tableRows: r,
  4908. tableColumns: i,
  4909. tableId: a,
  4910. align: tm.START,
  4911. indent: {
  4912. v: 0
  4913. },
  4914. textWrap: rm.NONE,
  4915. position: {
  4916. positionH: {
  4917. relativeFrom: om.PAGE,
  4918. posOffset: 0
  4919. },
  4920. positionV: {
  4921. relativeFrom: am.PAGE,
  4922. posOffset: 0
  4923. }
  4924. },
  4925. dist: {
  4926. distB: 0,
  4927. distL: 0,
  4928. distR: 0,
  4929. distT: 0
  4930. },
  4931. cellMargin: {
  4932. start: {
  4933. v: 10
  4934. },
  4935. end: {
  4936. v: 10
  4937. },
  4938. top: {
  4939. v: 5
  4940. },
  4941. bottom: {
  4942. v: 5
  4943. }
  4944. },
  4945. size: {
  4946. type: em.UNSPECIFIED,
  4947. width: {
  4948. v: t
  4949. }
  4950. }
  4951. };
  4952. }
  4953. function En(n, e) {
  4954. if (!n && !e)
  4955. return null;
  4956. if (e && e.length > 0) {
  4957. let t = Number.POSITIVE_INFINITY, o = Number.NEGATIVE_INFINITY;
  4958. const s = "";
  4959. for (const r of e) {
  4960. const { startOffset: i, endOffset: a, segmentId: c } = r;
  4961. i == null || a == null || c == null || (t = Math.min(t, i), o = Math.max(o, a));
  4962. }
  4963. if (Number.isFinite(t) && Number.isFinite(o))
  4964. return {
  4965. startOffset: t,
  4966. endOffset: o,
  4967. segmentId: s
  4968. };
  4969. } else if (n) {
  4970. const { startOffset: t, endOffset: o, segmentId: s } = n;
  4971. return t == null || o == null || s == null ? null : {
  4972. startOffset: t,
  4973. endOffset: o,
  4974. segmentId: s
  4975. };
  4976. }
  4977. }
  4978. function sd(n) {
  4979. let e = ln.TABLE_ROW_START;
  4980. const t = [], o = [];
  4981. for (let s = 0; s < n; s++)
  4982. e += `${ln.TABLE_CELL_START}\r
  4983. ${ln.TABLE_CELL_END}`, t.push({
  4984. startIndex: e.length - 3,
  4985. paragraphStyle: {
  4986. spaceAbove: { v: 3 },
  4987. lineSpacing: 2,
  4988. spaceBelow: { v: 0 }
  4989. }
  4990. }), o.push({
  4991. startIndex: e.length - 2
  4992. });
  4993. return e += ln.TABLE_ROW_END, {
  4994. dataStream: e,
  4995. paragraphs: t,
  4996. sectionBreaks: o
  4997. };
  4998. }
  4999. function rd() {
  5000. const n = `${ln.TABLE_CELL_START}\r
  5001. ${ln.TABLE_CELL_END}`, e = [], t = [];
  5002. return e.push({
  5003. startIndex: 1,
  5004. paragraphStyle: {
  5005. spaceAbove: { v: 3 },
  5006. lineSpacing: 2,
  5007. spaceBelow: { v: 0 }
  5008. }
  5009. }), t.push({
  5010. startIndex: 2
  5011. }), {
  5012. dataStream: n,
  5013. paragraphs: e,
  5014. sectionBreaks: t
  5015. };
  5016. }
  5017. function id(n, e, t) {
  5018. var d, h, u;
  5019. const { startOffset: o, endOffset: s, segmentId: r } = n, i = t.getSelfOrHeaderFooterViewModel(r), a = e === 0 ? o : s;
  5020. let c = null;
  5021. const A = (u = (h = (d = t.getBody()) == null ? void 0 : d.tables) == null ? void 0 : h.find((g) => a >= g.startIndex && a <= g.endIndex)) == null ? void 0 : u.tableId;
  5022. let l = 0;
  5023. for (const g of i.getChildren()) {
  5024. for (const f of g.children) {
  5025. const { children: p } = f, m2 = p[0];
  5026. if (m2) {
  5027. for (const E of m2.children)
  5028. if (E.startIndex <= a && a <= E.endIndex) {
  5029. l = m2.children.indexOf(E), c = E;
  5030. break;
  5031. }
  5032. }
  5033. if (c)
  5034. break;
  5035. }
  5036. if (c)
  5037. break;
  5038. }
  5039. return c == null || A == null ? null : {
  5040. offset: e === 0 ? c.startIndex : c.endIndex + 1,
  5041. colCount: c.children.length,
  5042. tableId: A,
  5043. insertRowIndex: e === 0 ? l : l + 1
  5044. };
  5045. }
  5046. function ad(n, e, t) {
  5047. var u, g, f;
  5048. const { startOffset: o, endOffset: s, segmentId: r } = n, i = t.getSelfOrHeaderFooterViewModel(r), a = e === 0 ? o : s, c = (f = (g = (u = t.getBody()) == null ? void 0 : u.tables) == null ? void 0 : g.find((p) => a >= p.startIndex && a <= p.endIndex)) == null ? void 0 : f.tableId, A = [];
  5049. let l = null, d = -1;
  5050. for (const p of i.getChildren()) {
  5051. for (const m2 of p.children) {
  5052. const { children: E } = m2, I = E[0];
  5053. if (I) {
  5054. if (a < I.startIndex || a > I.endIndex)
  5055. continue;
  5056. l = I;
  5057. for (const v of I.children) {
  5058. for (const R of v.children) {
  5059. const S = v.children.indexOf(R);
  5060. if (a >= R.startIndex && a <= R.endIndex) {
  5061. d = S;
  5062. break;
  5063. }
  5064. }
  5065. if (d !== -1)
  5066. break;
  5067. }
  5068. }
  5069. if (l)
  5070. break;
  5071. }
  5072. if (l)
  5073. break;
  5074. }
  5075. if (l == null || c == null || d === -1)
  5076. return null;
  5077. let h = 0;
  5078. for (const p of l.children) {
  5079. const m2 = p.children[d], E = e === 0 ? m2.startIndex : m2.endIndex + 1;
  5080. A.push(E - h), h = E;
  5081. }
  5082. return {
  5083. offsets: A,
  5084. tableId: c,
  5085. columnIndex: d,
  5086. rowCount: l.children.length
  5087. };
  5088. }
  5089. function cd(n, e, t) {
  5090. const o = [];
  5091. let s = e[t].size.width.v, r = 0;
  5092. for (let i = 0; i < e.length; i++)
  5093. r += e[i].size.width.v;
  5094. r += s;
  5095. for (let i = 0; i < e.length; i++)
  5096. o.push(e[i].size.width.v / r * n);
  5097. return s = s / r * n, {
  5098. widths: o,
  5099. newColWidth: s
  5100. };
  5101. }
  5102. function ha(n, e) {
  5103. var h, u, g;
  5104. const { startOffset: t, endOffset: o, segmentId: s } = n, r = e.getSelfOrHeaderFooterViewModel(s), i = (g = (u = (h = e.getBody()) == null ? void 0 : h.tables) == null ? void 0 : u.find((f) => t >= f.startIndex && o <= f.endIndex)) == null ? void 0 : g.tableId, a = [];
  5105. let c = -1, A = 0, l = -1, d = false;
  5106. for (const f of r.getChildren()) {
  5107. for (const p of f.children) {
  5108. const { children: m2 } = p, E = m2[0];
  5109. if (E) {
  5110. if (t < E.startIndex || o > E.endIndex)
  5111. continue;
  5112. l = E.startIndex + 3;
  5113. for (const I of E.children) {
  5114. const v = E.children.indexOf(I), { startIndex: R, endIndex: S } = I;
  5115. t >= R && t <= S ? (c = R, a.push(v), A += S - R + 1) : (R > t && S < o || o >= R && o <= S) && (a.push(v), A += S - R + 1), a.length === E.children.length && (d = true);
  5116. }
  5117. }
  5118. if (a.length)
  5119. break;
  5120. }
  5121. if (a.length)
  5122. break;
  5123. }
  5124. return i == null || a.length === 0 ? null : {
  5125. tableId: i,
  5126. rowIndexes: a,
  5127. offset: c,
  5128. len: A,
  5129. cursor: l,
  5130. selectWholeTable: d
  5131. };
  5132. }
  5133. function Ad(n, e) {
  5134. var g, f, p;
  5135. const { startOffset: t, endOffset: o, segmentId: s } = n, r = e.getSelfOrHeaderFooterViewModel(s), i = (p = (f = (g = e.getBody()) == null ? void 0 : g.tables) == null ? void 0 : f.find((m2) => t >= m2.startIndex && o <= m2.endIndex)) == null ? void 0 : p.tableId, a = [];
  5136. let c = null;
  5137. const A = [];
  5138. let l = -1, d = -1, h = -1;
  5139. for (const m2 of r.getChildren()) {
  5140. for (const E of m2.children) {
  5141. const { children: I } = E, v = I[0];
  5142. if (v) {
  5143. if (t < v.startIndex || o > v.endIndex)
  5144. continue;
  5145. c = v;
  5146. for (const R of v.children)
  5147. for (const S of R.children) {
  5148. const C = R.children.indexOf(S);
  5149. t >= S.startIndex && t <= S.endIndex && (d = C), o >= S.startIndex && o <= S.endIndex && (h = C);
  5150. }
  5151. }
  5152. if (c)
  5153. break;
  5154. }
  5155. if (c)
  5156. break;
  5157. }
  5158. if (c == null || i == null)
  5159. return null;
  5160. for (let m2 = d; m2 <= h; m2++)
  5161. A.push(m2);
  5162. let u = 0;
  5163. for (const m2 of c.children) {
  5164. const E = m2.children[d], I = m2.children[h];
  5165. a.push({
  5166. retain: E.startIndex - u,
  5167. delete: I.endIndex - E.startIndex + 1
  5168. }), u = I.endIndex + 1;
  5169. }
  5170. return l = c.startIndex + 3, {
  5171. offsets: a,
  5172. tableId: i,
  5173. columnIndexes: A,
  5174. cursor: l,
  5175. selectWholeTable: A.length === c.children[0].children.length,
  5176. rowCount: c.children.length
  5177. };
  5178. }
  5179. function ga(n, e) {
  5180. var l, d, h;
  5181. const { startOffset: t, endOffset: o, segmentId: s } = n, r = e.getSelfOrHeaderFooterViewModel(s), i = (h = (d = (l = e.getBody()) == null ? void 0 : l.tables) == null ? void 0 : d.find((u) => t >= u.startIndex && o <= u.endIndex)) == null ? void 0 : h.tableId;
  5182. let a = -1, c = 0, A = -1;
  5183. for (const u of r.getChildren()) {
  5184. for (const g of u.children) {
  5185. const { children: f } = g, p = f[0];
  5186. if (p) {
  5187. if (t < p.startIndex || o > p.endIndex)
  5188. continue;
  5189. a = p.startIndex, c = p.endIndex - p.startIndex + 1, A = p.startIndex;
  5190. }
  5191. if (p)
  5192. break;
  5193. }
  5194. if (c > 0)
  5195. break;
  5196. }
  5197. return i == null ? null : {
  5198. tableId: i,
  5199. offset: a,
  5200. len: c,
  5201. cursor: A
  5202. };
  5203. }
  5204. function ld(n, e) {
  5205. var g, f, p;
  5206. const { startOffset: t, endOffset: o, segmentId: s } = n, r = e.getSelfOrHeaderFooterViewModel(s), i = (p = (f = (g = e.getBody()) == null ? void 0 : g.tables) == null ? void 0 : f.find((m2) => t >= m2.startIndex && o <= m2.endIndex)) == null ? void 0 : p.tableId, a = [];
  5207. let c = null, A = -1, l = -1, d = -1, h = -1;
  5208. for (const m2 of r.getChildren()) {
  5209. for (const E of m2.children) {
  5210. const { children: I } = E, v = I[0];
  5211. if (v) {
  5212. if (t < v.startIndex || o > v.endIndex)
  5213. continue;
  5214. c = v;
  5215. for (const R of v.children) {
  5216. const S = v.children.indexOf(R);
  5217. for (const C of R.children) {
  5218. const T = R.children.indexOf(C);
  5219. t >= C.startIndex && t <= C.endIndex && (l = S, d = T), o >= C.startIndex && o <= C.endIndex && (h = T);
  5220. }
  5221. }
  5222. }
  5223. if (c)
  5224. break;
  5225. }
  5226. if (c)
  5227. break;
  5228. }
  5229. if (c == null || i == null || l === -1)
  5230. return null;
  5231. const u = c.children[l];
  5232. for (let m2 = d; m2 <= h; m2++) {
  5233. const E = u.children[m2];
  5234. a.push({
  5235. retain: E.startIndex + 1,
  5236. delete: E.endIndex - E.startIndex - 3
  5237. });
  5238. }
  5239. return A = c.startIndex + 3, {
  5240. offsets: a,
  5241. tableId: i,
  5242. cursor: A,
  5243. rowCount: c.children.length
  5244. };
  5245. }
  5246. var ts = ((n) => (n[n.NEXT = 0] = "NEXT", n[n.PREV = 1] = "PREV", n))(ts || {});
  5247. function Kr(n, e, t) {
  5248. const { startOffset: o } = e;
  5249. let s = null;
  5250. for (const A of n.getChildren()) {
  5251. for (const l of A.children) {
  5252. const d = l.children[0];
  5253. if (d && o > d.startIndex && o < d.endIndex) {
  5254. s = d;
  5255. break;
  5256. }
  5257. }
  5258. if (s)
  5259. break;
  5260. }
  5261. if (s == null)
  5262. return null;
  5263. let r = -1, i = -1, a = null;
  5264. for (const A of s.children) {
  5265. for (const l of A.children)
  5266. if (o > l.startIndex && o < l.endIndex) {
  5267. r = A.children.indexOf(l), i = s.children.indexOf(A), a = A;
  5268. break;
  5269. }
  5270. if (r > -1)
  5271. break;
  5272. }
  5273. if (r === -1 || i === -1 || a == null)
  5274. return null;
  5275. let c = null;
  5276. if (t === 0) {
  5277. if (c = a.children[r + 1], !c) {
  5278. const A = s.children[i + 1];
  5279. A && (c = A.children[0]);
  5280. }
  5281. } else if (c = a.children[r - 1], !c) {
  5282. const A = s.children[i - 1];
  5283. A && (c = A.children[A.children.length - 1]);
  5284. }
  5285. if (c) {
  5286. const { startIndex: A, endIndex: l } = c;
  5287. return {
  5288. startOffset: A + 1,
  5289. endOffset: l - 2
  5290. };
  5291. }
  5292. }
  5293. function dd(n, e) {
  5294. const t = [], { customBlocks: o = [] } = n;
  5295. for (const s of e) {
  5296. const { startOffset: r, endOffset: i } = s;
  5297. if (!(r == null || i == null))
  5298. for (const a of o) {
  5299. const { startIndex: c } = a;
  5300. c >= r && c < i && t.push(a.blockId);
  5301. }
  5302. }
  5303. return t;
  5304. }
  5305. function ud(n) {
  5306. return n.some((e) => {
  5307. const { startNodePosition: t } = e;
  5308. return t ? (t == null ? void 0 : t.path.indexOf("cells")) > -1 : false;
  5309. });
  5310. }
  5311. var hd = BC;
  5312. var fa = {
  5313. id: "doc.command.inner-paste",
  5314. type: ar.COMMAND,
  5315. // eslint-disable-next-line max-lines-per-function, complexity
  5316. handler: async (n, e) => {
  5317. var O, P, b, B, M2, H;
  5318. const { segmentId: t, textRanges: o, doc: s } = e, r = n.get(Pt), i = n.get(m), a = n.get(_n), c = i.getTextRanges(), A = i.getRectRanges(), { body: l, tableSource: d, drawings: h } = s;
  5319. if (!Array.isArray(c) || c.length === 0 || l == null)
  5320. return false;
  5321. const u = a.getCurrentUniverDocInstance(), g = u == null ? void 0 : u.getSelfOrHeaderFooterModel(t).getBody();
  5322. if (u == null || g == null)
  5323. return false;
  5324. const f = u.getUnitId(), p = {
  5325. id: M.id,
  5326. params: {
  5327. unitId: f,
  5328. actions: [],
  5329. textRanges: o,
  5330. segmentId: t
  5331. }
  5332. }, m2 = new lr();
  5333. m2.reset();
  5334. const E = new Ke(), I = tn.getInstance(), v = [], R = !!((O = l.tables) != null && O.length), S = !!((P = l.customBlocks) != null && P.length);
  5335. if (R && t || R && ud(c) || c.length && (A != null && A.length))
  5336. return false;
  5337. for (let F = 0; F < c.length; F++) {
  5338. const D2 = c[F], { startOffset: te2, endOffset: q, collapsed: V } = D2, Y = te2 - m2.cursor, oe = re.deepClone(l);
  5339. if (R)
  5340. for (const Ae2 of oe.tables) {
  5341. const { tableId: ne } = Ae2, ae = re.generateRandomId(6);
  5342. Ae2.tableId = ae;
  5343. const Te = re.deepClone(d[ne]);
  5344. Te.tableId = ae;
  5345. const je = I.insertOp(["tableSource", ae], Te);
  5346. v.push(je);
  5347. }
  5348. if (S && h) {
  5349. const Ae2 = (B = (b = u.getSnapshot().drawingsOrder) == null ? void 0 : b.length) != null ? B : 0;
  5350. for (const ne of oe.customBlocks) {
  5351. const { blockId: ae } = ne, Te = re.generateRandomId(6);
  5352. ne.blockId = Te;
  5353. const je = re.deepClone(h[ae]);
  5354. je.drawingId = Te;
  5355. const ut = I.insertOp(["drawings", Te], je), we2 = I.insertOp(["drawingsOrder", Ae2], Te);
  5356. v.push(ut), v.push(we2);
  5357. }
  5358. }
  5359. const ce2 = Os((M2 = g.customRanges) != null ? M2 : [], q, hd.includes(f)), he = Ts((H = g.customDecorations) != null ? H : [], q);
  5360. if (ce2 && (oe.customRanges = [{
  5361. ...ce2,
  5362. startIndex: 0,
  5363. endIndex: l.dataStream.length - 1
  5364. }]), he.length && (oe.customDecorations = he.map((Ae2) => ({
  5365. ...Ae2,
  5366. startIndex: 0,
  5367. endIndex: l.dataStream.length - 1
  5368. }))), V)
  5369. E.push({
  5370. t: ce.RETAIN,
  5371. len: Y
  5372. }), E.push({
  5373. t: ce.INSERT,
  5374. body: oe,
  5375. len: l.dataStream.length
  5376. });
  5377. else {
  5378. const Ae2 = st.selection.delete([D2], l, m2.cursor, oe, c.length === 1);
  5379. E.push(...Ae2);
  5380. }
  5381. m2.reset(), m2.moveCursor(q);
  5382. }
  5383. const C = le(u, t);
  5384. return v.push(I.editOp(E.serialize(), C)), p.params.actions = v.reduce((F, D2) => tn.compose(F, D2), null), !!r.syncExecuteCommand(p.id, p.params);
  5385. }
  5386. };
  5387. function gd(n, e) {
  5388. const { startOffset: t, endOffset: o } = n, s = e.some((i) => i.startIndex === o), r = Math.max(t, s ? o - 1 : o);
  5389. return {
  5390. ...n,
  5391. endOffset: r,
  5392. collapsed: t === r
  5393. };
  5394. }
  5395. function fd(n, e, t) {
  5396. var g, f;
  5397. const o = e.getSelfOrHeaderFooterModel(t).getBody(), s = new Ke(), r = tn.getInstance(), i = [];
  5398. if (o == null)
  5399. return i;
  5400. const { tables: a = [] } = o, c = new lr();
  5401. c.reset();
  5402. for (let p = 0; p < n.length; p++) {
  5403. const m2 = gd(n[p], a), { startOffset: E, endOffset: I, collapsed: v } = m2, R = E - c.cursor;
  5404. v ? s.push({
  5405. t: ce.RETAIN,
  5406. len: R
  5407. }) : s.push(...st.selection.delete([m2], o, c.cursor, null, false)), c.reset(), c.moveCursor(I);
  5408. }
  5409. const A = le(e, t);
  5410. i.push(r.editOp(s.serialize(), A));
  5411. const l = dd(o, n), d = (g = e.getDrawings()) != null ? g : {}, h = (f = e.getDrawingsOrder()) != null ? f : [], u = l.sort((p, m2) => h.indexOf(p) > h.indexOf(m2) ? -1 : h.indexOf(p) < h.indexOf(m2) ? 1 : 0);
  5412. if (u.length > 0)
  5413. for (const p of u) {
  5414. const m2 = d[p], E = h.indexOf(p);
  5415. if (m2 == null || E < 0)
  5416. continue;
  5417. const I = r.removeOp(["drawings", p], m2), v = r.removeOp(["drawingsOrder", E], p);
  5418. i.push(I), i.push(v);
  5419. }
  5420. return i.reduce((p, m2) => tn.compose(p, m2), null);
  5421. }
  5422. function pd(n, e, t, o) {
  5423. const s = [];
  5424. if (e.getSelfOrHeaderFooterModel(o).getBody() == null)
  5425. return s;
  5426. const i = new Ke(), a = tn.getInstance(), c = new lr();
  5427. c.reset();
  5428. for (const l of n) {
  5429. const { startOffset: d, endOffset: h, spanEntireRow: u, spanEntireTable: g } = l;
  5430. if (!(d == null || h == null))
  5431. if (g) {
  5432. const f = ga({ startOffset: d, endOffset: h, segmentId: o }, t);
  5433. if (f == null)
  5434. continue;
  5435. const { offset: p, len: m2, tableId: E } = f;
  5436. p - c.cursor > 0 && i.push({
  5437. t: ce.RETAIN,
  5438. len: p - c.cursor
  5439. }), i.push({
  5440. t: ce.DELETE,
  5441. len: m2
  5442. });
  5443. const I = a.removeOp(["tableSource", E]);
  5444. s.push(I), c.moveCursorTo(p + m2);
  5445. } else if (u) {
  5446. const f = ha({ startOffset: d, endOffset: h, segmentId: o }, t);
  5447. if (f == null)
  5448. continue;
  5449. const { offset: p, rowIndexes: m2, len: E, tableId: I } = f;
  5450. p - c.cursor > 0 && i.push({
  5451. t: ce.RETAIN,
  5452. len: p - c.cursor
  5453. }), i.push({
  5454. t: ce.DELETE,
  5455. len: E
  5456. });
  5457. for (const v of m2.reverse()) {
  5458. const R = a.removeOp(["tableSource", I, "tableRows", v]);
  5459. s.push(R);
  5460. }
  5461. c.moveCursorTo(p + E);
  5462. } else {
  5463. const f = ld({ startOffset: d, endOffset: h, segmentId: o }, t);
  5464. if (f == null)
  5465. continue;
  5466. const { offsets: p } = f;
  5467. for (const m2 of p) {
  5468. const { retain: E, delete: I } = m2;
  5469. E - c.cursor > 0 && i.push({
  5470. t: ce.RETAIN,
  5471. len: E - c.cursor
  5472. }), i.push({
  5473. t: ce.DELETE,
  5474. len: I
  5475. }), c.moveCursorTo(E + I);
  5476. }
  5477. }
  5478. }
  5479. const A = le(e, o);
  5480. return s.push(a.editOp(i.serialize(), A)), s.reduce((l, d) => tn.compose(l, d), null);
  5481. }
  5482. function md(n, e, t, o, s) {
  5483. let r = [];
  5484. if (Array.isArray(n) && (n == null ? void 0 : n.length) !== 0 && (r = fd(n, t, s)), Array.isArray(e) && (e == null ? void 0 : e.length) !== 0) {
  5485. const i = pd(e, t, o, s);
  5486. r == null || r.length === 0 ? r = i : r = tn.compose(
  5487. r,
  5488. tn.transform(i, r, "right")
  5489. );
  5490. }
  5491. return r;
  5492. }
  5493. var Qt = {
  5494. id: "doc.command.inner-cut",
  5495. type: ar.COMMAND,
  5496. handler: async (n, e) => {
  5497. var f, p;
  5498. const { segmentId: t, textRanges: o } = e, s = n.get(Pt), r = n.get(m), i = n.get(_n), a = (f = e.selections) != null ? f : r.getTextRanges(), c = r.getRectRanges();
  5499. if ((!Array.isArray(a) || a.length === 0) && (!Array.isArray(c) || c.length === 0))
  5500. return false;
  5501. const A = (p = i.getCurrentUniverDocInstance()) == null ? void 0 : p.getUnitId();
  5502. if (!A)
  5503. return false;
  5504. const l = i.getUniverDocInstance(A);
  5505. if (l == null)
  5506. return false;
  5507. const d = ke2(n, A);
  5508. if (d == null)
  5509. return false;
  5510. const h = d.getViewModel(), u = {
  5511. id: M.id,
  5512. params: {
  5513. unitId: A,
  5514. actions: [],
  5515. textRanges: o
  5516. }
  5517. };
  5518. return u.params.actions = md(a, c, l, h, t), !!s.syncExecuteCommand(u.id, u.params);
  5519. }
  5520. };
  5521. var Be = ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Be || {});
  5522. var Ed = "doc.command.insert-text";
  5523. var Vs = {
  5524. id: Ed,
  5525. type: ar.COMMAND,
  5526. handler: async (n, e) => {
  5527. var S;
  5528. const t = n.get(Pt), { range: o, segmentId: s, body: r, unitId: i, cursorOffset: a } = e, c = n.get(m), l = n.get(_n).getUnit(i, Fe.UNIVER_DOC);
  5529. if (l == null)
  5530. return false;
  5531. const d = c.getActiveTextRange(), h = l.getSelfOrHeaderFooterModel((S = d == null ? void 0 : d.segmentId) != null ? S : "").getBody();
  5532. if (h == null)
  5533. return false;
  5534. const { startOffset: u, collapsed: g } = o, f = a != null ? a : r.dataStream.length, p = [
  5535. {
  5536. startOffset: u + f,
  5537. endOffset: u + f,
  5538. style: d == null ? void 0 : d.style,
  5539. collapsed: g
  5540. }
  5541. ], m2 = {
  5542. id: M.id,
  5543. params: {
  5544. unitId: i,
  5545. actions: [],
  5546. textRanges: p,
  5547. debounce: true
  5548. }
  5549. }, E = new Ke(), I = tn.getInstance();
  5550. if (g)
  5551. u > 0 && E.push({
  5552. t: ce.RETAIN,
  5553. len: u
  5554. }), E.push({
  5555. t: ce.INSERT,
  5556. body: r,
  5557. len: r.dataStream.length
  5558. });
  5559. else {
  5560. const C = st.selection.delete([o], h, 0, r);
  5561. E.push(...C);
  5562. }
  5563. m2.params.textRanges = [{
  5564. startOffset: u + f,
  5565. endOffset: u + f,
  5566. collapsed: g
  5567. }];
  5568. const v = le(l, s);
  5569. return m2.params.actions = I.editOp(E.serialize(), v), !!t.syncExecuteCommand(m2.id, m2.params);
  5570. }
  5571. };
  5572. var dn = {
  5573. id: "doc.command.delete-text",
  5574. type: ar.COMMAND,
  5575. handler: async (n, e) => {
  5576. var R;
  5577. const t = n.get(Pt), o = n.get(_n), { range: s, segmentId: r, unitId: i, direction: a, len: c = 1 } = e, A = o.getUnit(i, Fe.UNIVER_DOC), l = A == null ? void 0 : A.getSelfOrHeaderFooterModel(r).getBody();
  5578. if (A == null || l == null)
  5579. return false;
  5580. const { startOffset: d } = s;
  5581. let h = a === Be.LEFT ? d - c : d, u = a === Be.LEFT ? d - 1 : d + c - 1;
  5582. const g = (R = l.customRanges) == null ? void 0 : R.find((S) => S.startIndex <= h && S.endIndex >= u);
  5583. g != null && g.wholeEntity && (h = g.startIndex, u = Math.max(u, g.endIndex));
  5584. const f = {
  5585. id: M.id,
  5586. params: {
  5587. unitId: i,
  5588. actions: [],
  5589. textRanges: [{
  5590. startOffset: h,
  5591. endOffset: h,
  5592. collapsed: true
  5593. }],
  5594. debounce: true
  5595. }
  5596. }, p = new Ke(), m2 = tn.getInstance();
  5597. p.push({
  5598. t: ce.RETAIN,
  5599. len: h - 0
  5600. }), p.push({
  5601. t: ce.DELETE,
  5602. len: u - h + 1
  5603. });
  5604. const I = le(A, r);
  5605. return f.params.actions = m2.editOp(p.serialize(), I), !!t.syncExecuteCommand(f.id, f.params);
  5606. }
  5607. };
  5608. var pa = {
  5609. id: "doc.command.update-text",
  5610. type: ar.COMMAND,
  5611. handler: async (n, e) => {
  5612. const { range: t, segmentId: o, updateBody: s, coverType: r, unitId: i, textRanges: a } = e, c = n.get(Pt), l = n.get(_n).getCurrentUniverDocInstance();
  5613. if (l == null)
  5614. return false;
  5615. const d = {
  5616. id: M.id,
  5617. params: {
  5618. unitId: i,
  5619. actions: [],
  5620. textRanges: a
  5621. }
  5622. }, h = new Ke(), u = tn.getInstance(), { startOffset: g, endOffset: f } = t;
  5623. h.push({
  5624. t: ce.RETAIN,
  5625. len: g
  5626. }), h.push({
  5627. t: ce.RETAIN,
  5628. body: s,
  5629. len: f - g,
  5630. coverType: r
  5631. });
  5632. const p = le(l, o);
  5633. return d.params.actions = u.editOp(h.serialize(), p), !!c.syncExecuteCommand(d.id, d.params);
  5634. }
  5635. };
  5636. var js = {
  5637. id: "doc.command.delete-custom-block",
  5638. type: ar.COMMAND,
  5639. handler: async (n, e) => {
  5640. var b;
  5641. const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = t.getActiveTextRange(), i = o.getCurrentUniverDocInstance();
  5642. if (r == null || i == null)
  5643. return false;
  5644. const { direction: a, range: c, unitId: A, drawingId: l } = e, { startOffset: d, segmentId: h, style: u } = r, g = a === Be.LEFT ? d - 1 : d, f = [
  5645. {
  5646. startOffset: g,
  5647. endOffset: g,
  5648. style: u
  5649. }
  5650. ], p = {
  5651. id: M.id,
  5652. params: {
  5653. unitId: A,
  5654. actions: [],
  5655. textRanges: f,
  5656. prevTextRanges: [c]
  5657. }
  5658. }, m2 = new Ke(), E = tn.getInstance(), I = [];
  5659. d > 0 && m2.push({
  5660. t: ce.RETAIN,
  5661. len: a === Be.LEFT ? d - 1 : d
  5662. }), m2.push({
  5663. t: ce.DELETE,
  5664. len: 1
  5665. });
  5666. const v = le(i, h);
  5667. I.push(E.editOp(m2.serialize(), v));
  5668. const R = ((b = i.getDrawings()) != null ? b : {})[l], C = i.getDrawingsOrder().indexOf(l), T = E.removeOp(["drawings", l], R), O = E.removeOp(["drawingsOrder", C], l);
  5669. return I.push(T), I.push(O), p.params.actions = I.reduce((B, M2) => tn.compose(B, M2), null), !!s.syncExecuteCommand(p.id, p.params);
  5670. }
  5671. };
  5672. var Ws = {
  5673. id: "doc.command.merge-two-paragraph",
  5674. type: ar.COMMAND,
  5675. // eslint-disable-next-line max-lines-per-function
  5676. handler: async (n, e) => {
  5677. const t = n.get(m), o = n.get(_n), s = n.get(Pt), { direction: r, range: i } = e, a = t.getActiveTextRange(), c = t.getTextRanges();
  5678. if (a == null || c == null)
  5679. return false;
  5680. const { segmentId: A, style: l } = a, d = o.getCurrentUnitForType(Fe.UNIVER_DOC), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
  5681. if (d == null || h == null)
  5682. return false;
  5683. const u = a, g = d.getUnitId(), { startOffset: f, collapsed: p } = u;
  5684. if (!p)
  5685. return false;
  5686. const m2 = r === Be.LEFT ? f : f + 1;
  5687. let E, I;
  5688. for (const b of h.paragraphs) {
  5689. if (b.startIndex >= m2) {
  5690. I = b;
  5691. break;
  5692. }
  5693. E = b;
  5694. }
  5695. if (E == null || I == null)
  5696. return false;
  5697. const v = r === Be.LEFT ? f - 1 : f, R = [
  5698. {
  5699. startOffset: v,
  5700. endOffset: v,
  5701. style: l
  5702. }
  5703. ], S = {
  5704. id: M.id,
  5705. params: {
  5706. unitId: g,
  5707. actions: [],
  5708. textRanges: R,
  5709. prevTextRanges: [i]
  5710. }
  5711. }, C = new Ke(), T = tn.getInstance();
  5712. E.startIndex > 0 && C.push({
  5713. t: ce.RETAIN,
  5714. len: E.startIndex
  5715. }), C.push({
  5716. t: ce.DELETE,
  5717. len: 1
  5718. }), I.startIndex > E.startIndex + 1 && C.push({
  5719. t: ce.RETAIN,
  5720. len: I.startIndex - E.startIndex - 1
  5721. }), C.push({
  5722. t: ce.RETAIN,
  5723. len: 1,
  5724. coverType: Pe.REPLACE,
  5725. body: {
  5726. dataStream: "",
  5727. paragraphs: [
  5728. {
  5729. ...re.deepClone(E),
  5730. startIndex: 0
  5731. }
  5732. ]
  5733. }
  5734. });
  5735. const O = le(d, A);
  5736. return S.params.actions = T.editOp(C.serialize(), O), !!s.syncExecuteCommand(S.id, S.params);
  5737. }
  5738. };
  5739. function zs(n, e) {
  5740. let t = 0;
  5741. if (n == null || n.length === 0) {
  5742. if (typeof e[0].startOffset == "number") {
  5743. const o = e[0], { spanEntireRow: s, spanEntireTable: r } = o;
  5744. r ? t = o.startOffset - 3 : s ? o.startRow > 0 ? t = o.startOffset - 6 : t = o.startOffset : t = e[0].startOffset;
  5745. }
  5746. } else if (n.length > 0 && e.length > 0) {
  5747. const o = n[0], s = e[0];
  5748. if (o.startOffset != null && s.startOffset != null) {
  5749. if (o.startOffset < s.startOffset)
  5750. t = o.startOffset;
  5751. else if (o.startOffset >= s.startOffset) {
  5752. const { spanEntireRow: r, spanEntireTable: i } = s;
  5753. i ? t = s.startOffset - 3 : r && (t = s.startOffset - 6);
  5754. }
  5755. }
  5756. }
  5757. return t;
  5758. }
  5759. var So = {
  5760. id: "doc.command.delete-left",
  5761. type: ar.COMMAND,
  5762. // eslint-disable-next-line max-lines-per-function, complexity
  5763. handler: async (n) => {
  5764. var O, P;
  5765. const e = n.get(m), t = n.get(_n), o = n.get(Pt);
  5766. let s = true;
  5767. const r = t.getCurrentUniverDocInstance();
  5768. if (r == null)
  5769. return false;
  5770. const i = r.getUnitId(), a = ke2(n, i), c = e.getActiveTextRange(), A = e.getRectRanges(), l = e.getTextRanges(), d = a == null ? void 0 : a.getSkeleton();
  5771. if (d == null)
  5772. return false;
  5773. if (A != null && A.length) {
  5774. const b = zs(l, A), B = A[0].segmentId, M2 = [
  5775. {
  5776. startOffset: b,
  5777. endOffset: b
  5778. }
  5779. ];
  5780. return o.executeCommand(Qt.id, {
  5781. segmentId: B,
  5782. textRanges: M2
  5783. });
  5784. }
  5785. if (c == null || l == null)
  5786. return false;
  5787. const { segmentId: h, style: u, segmentPage: g } = c, f = r.getSelfOrHeaderFooterModel(h).getBody();
  5788. if (f == null)
  5789. return false;
  5790. const p = c, { startOffset: m2, collapsed: E } = p, I = d.findNodeByCharIndex(m2, h, g), v = FS(I), R = SS(I, f);
  5791. let S = m2;
  5792. const C = d.findNodeByCharIndex(m2 - 1, h, g);
  5793. if (BS(I) && C !== I && (v === true || R === true) && E) {
  5794. const b = gf(I, f);
  5795. if (b == null)
  5796. return false;
  5797. const B = b == null ? void 0 : b.startIndex, M2 = { startIndex: 0 }, H = b.paragraphStyle;
  5798. if (v === true) {
  5799. const D2 = b.paragraphStyle;
  5800. if (D2) {
  5801. M2.paragraphStyle = D2;
  5802. const { hanging: te2 } = D2;
  5803. te2 && (M2.paragraphStyle.indentStart = te2, M2.paragraphStyle.hanging = void 0);
  5804. }
  5805. } else if (R === true) {
  5806. const D2 = b.bullet;
  5807. D2 && (M2.bullet = D2), H != null && (M2.paragraphStyle = { ...H }, delete M2.paragraphStyle.hanging, delete M2.paragraphStyle.indentStart);
  5808. }
  5809. const F = [
  5810. {
  5811. startOffset: S,
  5812. endOffset: S,
  5813. style: u
  5814. }
  5815. ];
  5816. s = await o.executeCommand(pa.id, {
  5817. unitId: r.getUnitId(),
  5818. updateBody: {
  5819. dataStream: "",
  5820. paragraphs: [{ ...M2 }]
  5821. },
  5822. range: {
  5823. startOffset: B,
  5824. endOffset: B + 1
  5825. },
  5826. textRanges: F,
  5827. coverType: Pe.REPLACE,
  5828. segmentId: h
  5829. });
  5830. } else if (E === true) {
  5831. if (C == null)
  5832. return true;
  5833. if (C.content === "\r")
  5834. s = await o.executeCommand(Ws.id, {
  5835. direction: Be.LEFT,
  5836. range: p
  5837. });
  5838. else if (C.streamType === "\b") {
  5839. const b = (P = r.getSnapshot().drawings) == null ? void 0 : P[(O = C.drawingId) != null ? O : ""];
  5840. if (b == null)
  5841. return true;
  5842. if (b.layoutType === Xp.INLINE) {
  5843. const M2 = r.getUnitId();
  5844. s = await o.executeCommand(js.id, {
  5845. direction: Be.LEFT,
  5846. range: c,
  5847. unitId: M2,
  5848. drawingId: C.drawingId
  5849. });
  5850. } else {
  5851. const M2 = d.findNodeByCharIndex(m2 - 2);
  5852. if (M2 == null)
  5853. return true;
  5854. S -= C.count, S -= M2.count;
  5855. const H = [
  5856. {
  5857. startOffset: S,
  5858. endOffset: S,
  5859. style: u
  5860. }
  5861. ];
  5862. s = await o.executeCommand(dn.id, {
  5863. unitId: r.getUnitId(),
  5864. range: {
  5865. ...c,
  5866. startOffset: c.startOffset - 1,
  5867. endOffset: c.endOffset - 1
  5868. },
  5869. segmentId: h,
  5870. direction: Be.LEFT,
  5871. len: M2.count,
  5872. textRanges: H
  5873. });
  5874. }
  5875. } else
  5876. S -= C.count, s = await o.executeCommand(dn.id, {
  5877. unitId: r.getUnitId(),
  5878. range: p,
  5879. segmentId: h,
  5880. direction: Be.LEFT,
  5881. len: C.count
  5882. });
  5883. } else {
  5884. const b = Ea(p, [p]);
  5885. s = await o.executeCommand(Qt.id, {
  5886. segmentId: h,
  5887. textRanges: b,
  5888. selections: [p]
  5889. });
  5890. }
  5891. return s;
  5892. }
  5893. };
  5894. var ma = {
  5895. id: "doc.command.delete-right",
  5896. type: ar.COMMAND,
  5897. // eslint-disable-next-line max-lines-per-function, complexity
  5898. handler: async (n) => {
  5899. var I, v;
  5900. const e = n.get(m), o = n.get(_n).getCurrentUniverDocInstance();
  5901. if (!o)
  5902. return false;
  5903. const s = ke2(n, o.getUnitId()), r = n.get(Pt), i = e.getActiveTextRange(), a = e.getRectRanges(), c = e.getTextRanges(), A = s == null ? void 0 : s.getSkeleton();
  5904. if (a != null && a.length) {
  5905. const R = zs(c, a), S = a[0].segmentId, C = [
  5906. {
  5907. startOffset: R,
  5908. endOffset: R
  5909. }
  5910. ];
  5911. return r.executeCommand(Qt.id, {
  5912. segmentId: S,
  5913. textRanges: C
  5914. });
  5915. }
  5916. if (i == null || A == null || c == null)
  5917. return false;
  5918. const { segmentId: l, style: d, segmentPage: h } = i, u = o == null ? void 0 : o.getSelfOrHeaderFooterModel(l).getBody();
  5919. if (!o || !u)
  5920. return false;
  5921. const g = i, { startOffset: f, endOffset: p, collapsed: m2 } = g;
  5922. if (f === u.dataStream.length - 2 && m2)
  5923. return true;
  5924. let E = false;
  5925. if (m2 === true) {
  5926. const R = A.findNodeByCharIndex(f, l, h), S = A.findNodeByCharIndex(f + 1);
  5927. if (R.streamType === ln.PARAGRAPH && (S == null ? void 0 : S.streamType) === ln.SECTION_BREAK)
  5928. return false;
  5929. if (R.content === "\r")
  5930. E = await r.executeCommand(Ws.id, {
  5931. direction: Be.RIGHT,
  5932. range: i
  5933. });
  5934. else if (R.streamType === "\b") {
  5935. const C = (v = o.getSnapshot().drawings) == null ? void 0 : v[(I = R.drawingId) != null ? I : ""];
  5936. if (C == null)
  5937. return true;
  5938. if (C.layoutType === Xp.INLINE) {
  5939. const O = o.getUnitId();
  5940. E = await r.executeCommand(js.id, {
  5941. direction: Be.RIGHT,
  5942. range: i,
  5943. unitId: O,
  5944. drawingId: R.drawingId
  5945. });
  5946. } else {
  5947. if (S == null)
  5948. return true;
  5949. const O = [
  5950. {
  5951. startOffset: f + 1,
  5952. endOffset: f + 1,
  5953. style: d
  5954. }
  5955. ];
  5956. E = await r.executeCommand(dn.id, {
  5957. unitId: o.getUnitId(),
  5958. range: {
  5959. ...i,
  5960. startOffset: f + 1,
  5961. endOffset: p + 1
  5962. },
  5963. segmentId: l,
  5964. direction: Be.RIGHT,
  5965. textRanges: O,
  5966. len: S.count
  5967. });
  5968. }
  5969. } else {
  5970. const C = [
  5971. {
  5972. startOffset: f,
  5973. endOffset: f,
  5974. style: d
  5975. }
  5976. ];
  5977. E = await r.executeCommand(dn.id, {
  5978. unitId: o.getUnitId(),
  5979. range: g,
  5980. segmentId: l,
  5981. direction: Be.RIGHT,
  5982. textRanges: C,
  5983. len: R.count
  5984. });
  5985. }
  5986. } else {
  5987. const R = Ea(g, [g]);
  5988. E = await r.executeCommand(Qt.id, {
  5989. segmentId: l,
  5990. textRanges: R,
  5991. selections: [g]
  5992. });
  5993. }
  5994. return E;
  5995. }
  5996. };
  5997. function Ea(n, e) {
  5998. let t = n.endOffset;
  5999. for (const s of e) {
  6000. const { startOffset: r, endOffset: i } = s;
  6001. r == null || i == null || i <= n.endOffset && (t -= i - r);
  6002. }
  6003. return [
  6004. {
  6005. startOffset: t,
  6006. endOffset: t,
  6007. style: n.style
  6008. }
  6009. ];
  6010. }
  6011. var Sd = 10;
  6012. var Id = 6;
  6013. function Cd() {
  6014. return re.generateRandomId(Id);
  6015. }
  6016. function vd(n) {
  6017. const e = n.match(/data-copy-id="([^\s]+)"/);
  6018. return e && e[1] ? e[1] : null;
  6019. }
  6020. var Rd = class {
  6021. constructor() {
  6022. x(this, "_cache", new Qr(Sd));
  6023. }
  6024. set(e, t) {
  6025. this._cache.set(e, t);
  6026. }
  6027. get(e) {
  6028. return this._cache.get(e);
  6029. }
  6030. clear() {
  6031. this._cache.clear();
  6032. }
  6033. };
  6034. var No = new Rd();
  6035. function Gs(n) {
  6036. const e = n.style, t = {}, o = n.tagName.toLowerCase();
  6037. switch (o) {
  6038. case "b":
  6039. case "em":
  6040. case "strong": {
  6041. t.bl = we.TRUE;
  6042. break;
  6043. }
  6044. case "s": {
  6045. t.st = {
  6046. s: we.TRUE
  6047. };
  6048. break;
  6049. }
  6050. case "u": {
  6051. t.ul = {
  6052. s: we.TRUE
  6053. };
  6054. break;
  6055. }
  6056. case "i": {
  6057. t.it = we.TRUE;
  6058. break;
  6059. }
  6060. case "sub":
  6061. case "sup": {
  6062. t.va = o === "sup" ? Bt.SUPERSCRIPT : Bt.SUBSCRIPT;
  6063. break;
  6064. }
  6065. }
  6066. for (let s = 0; s < e.length; s++) {
  6067. const r = e[s], i = e.getPropertyValue(r);
  6068. switch (r) {
  6069. case "font-family": {
  6070. t.ff = i.replace(/^"/g, "").replace(/"$/g, "");
  6071. break;
  6072. }
  6073. case "font-size": {
  6074. const a = Number.parseInt(i);
  6075. Number.isNaN(a) || (i.endsWith("pt") ? t.fs = a : i.endsWith("px") && (t.fs = wS(a)));
  6076. break;
  6077. }
  6078. case "font-style": {
  6079. i === "italic" && (t.it = we.TRUE);
  6080. break;
  6081. }
  6082. case "font-weight": {
  6083. (Number(i) > 400 || String(i) === "bold") && (t.bl = we.TRUE);
  6084. break;
  6085. }
  6086. case "text-decoration": {
  6087. /underline/.test(i) ? t.ul = {
  6088. s: we.TRUE
  6089. } : /overline/.test(i) ? t.ol = {
  6090. s: we.TRUE
  6091. } : /line-through/.test(i) && (t.st = {
  6092. s: we.TRUE
  6093. });
  6094. break;
  6095. }
  6096. case "color": {
  6097. try {
  6098. const a = new Nt(i);
  6099. a.isValid && (t.cl = {
  6100. rgb: a.toRgbString()
  6101. });
  6102. } catch {
  6103. }
  6104. break;
  6105. }
  6106. case "background-color": {
  6107. const a = new Nt(i);
  6108. a.isValid && (t.bg = {
  6109. rgb: a.toRgbString()
  6110. });
  6111. break;
  6112. }
  6113. }
  6114. }
  6115. return t;
  6116. }
  6117. function bd(n) {
  6118. const e = new DOMParser(), t = `<x-univer id="univer-root">${n}</x-univer>`;
  6119. return e.parseFromString(t, "text/html").querySelector("#univer-root");
  6120. }
  6121. function Xr(n, e) {
  6122. const t = n.tagName.toLowerCase();
  6123. return typeof e == "string" ? t === e : Array.isArray(e) ? e.some((o) => o === t) : e(n);
  6124. }
  6125. var Jr = 660;
  6126. var Jn = class Jn2 {
  6127. constructor() {
  6128. x(this, "_tableCache", []);
  6129. x(this, "_styleCache", /* @__PURE__ */ new Map());
  6130. x(this, "_styleRules", []);
  6131. x(this, "_afterProcessRules", []);
  6132. }
  6133. static use(e) {
  6134. if (this._pluginList.includes(e))
  6135. throw new Error(`Univer paste plugin ${e.name} already added`);
  6136. this._pluginList.push(e);
  6137. }
  6138. convert(e, t = {}) {
  6139. var a;
  6140. const o = Jn2._pluginList.find((c) => c.checkPasteType(e)), s = bd(e), i = {
  6141. body: {
  6142. dataStream: "",
  6143. paragraphs: [],
  6144. sectionBreaks: [],
  6145. tables: [],
  6146. textRuns: [],
  6147. customBlocks: []
  6148. },
  6149. tableSource: {},
  6150. id: (a = t == null ? void 0 : t.unitId) != null ? a : ""
  6151. };
  6152. return o && (this._styleRules = [...o.stylesRules], this._afterProcessRules = [...o.afterProcessRules]), this._tableCache = [], this._styleCache.clear(), this._process(null, s.childNodes, i), this._styleCache.clear(), this._styleRules = [], this._afterProcessRules = [], i;
  6153. }
  6154. // eslint-disable-next-line max-lines-per-function, complexity
  6155. _process(e, t, o) {
  6156. var r, i, a, c;
  6157. const s = o.body;
  6158. for (const A of t)
  6159. if (A.nodeType === Node.TEXT_NODE) {
  6160. if (((r = A.nodeValue) == null ? void 0 : r.trim()) === "")
  6161. continue;
  6162. const l = (i = A.nodeValue) == null ? void 0 : i.replace(/[\r\n]/g, "");
  6163. let d;
  6164. e && this._styleCache.has(e) && (d = this._styleCache.get(e)), s.dataStream += l, d && Object.getOwnPropertyNames(d).length && s.textRuns.push({
  6165. st: s.dataStream.length - l.length,
  6166. ed: s.dataStream.length,
  6167. ts: d
  6168. });
  6169. } else if (A.nodeName === "IMG") {
  6170. const l = A, d = l.dataset.imageSourceType, h = d === vl.UUID ? l.dataset.source : l.src;
  6171. if (h && d) {
  6172. const u = Number(l.dataset.width || 100), g = Number(l.dataset.height || 100), f = Number(l.dataset.docTransformWidth || u), p = Number(l.dataset.docTransformHeight || g), m2 = re.generateRandomId(6);
  6173. (c = (a = o.body) == null ? void 0 : a.customBlocks) == null || c.push({ startIndex: s.dataStream.length, blockId: m2 }), s.dataStream += "\b", o.drawings || (o.drawings = {}), o.drawings[m2] = {
  6174. drawingId: m2,
  6175. title: "",
  6176. description: "",
  6177. imageSourceType: d,
  6178. source: h,
  6179. transform: { width: u, height: g, left: 0 },
  6180. docTransform: {
  6181. size: { width: f, height: p },
  6182. angle: 0,
  6183. positionH: {
  6184. relativeFrom: om.PAGE,
  6185. posOffset: 0
  6186. },
  6187. positionV: {
  6188. relativeFrom: am.PARAGRAPH,
  6189. posOffset: 0
  6190. }
  6191. },
  6192. layoutType: Xp.INLINE,
  6193. drawingType: gm.DRAWING_IMAGE,
  6194. unitId: o.id || "",
  6195. subUnitId: o.id || ""
  6196. };
  6197. }
  6198. } else {
  6199. if (FR.includes(A.nodeName.toLowerCase()))
  6200. continue;
  6201. if (A.nodeType === Node.ELEMENT_NODE) {
  6202. const l = A, d = this._processBeforeLink(l, o), h = e ? this._styleCache.get(e) : {}, u = this._styleRules.find(({ filter: m2 }) => Xr(A, m2)), g = u ? u.getStyle(A) : Gs(A);
  6203. this._styleCache.set(A, { ...h, ...g });
  6204. const { childNodes: f } = A;
  6205. this._processBeforeTable(A, o), this._process(A, f, o), this._processAfterTable(A, o);
  6206. const p = this._afterProcessRules.find(
  6207. ({ filter: m2 }) => Xr(A, m2)
  6208. );
  6209. p && p.handler(o, A), this._processAfterLink(l, o, d);
  6210. }
  6211. }
  6212. }
  6213. _processBeforeTable(e, t) {
  6214. var r;
  6215. const o = e.tagName.toUpperCase(), s = t.body;
  6216. switch (o) {
  6217. case "TABLE": {
  6218. s.dataStream[s.dataStream.length - 1] !== "\r" && (s.dataStream += "\r", s.paragraphs == null && (s.paragraphs = []), (r = s.paragraphs) == null || r.push({
  6219. startIndex: s.dataStream.length - 1
  6220. }));
  6221. const i = ua(0, 0, Jr);
  6222. this._tableCache.push({
  6223. table: i,
  6224. startIndex: s.dataStream.length
  6225. }), s.dataStream += ln.TABLE_START;
  6226. break;
  6227. }
  6228. case "TR": {
  6229. const i = Hs(0);
  6230. this._tableCache[this._tableCache.length - 1].table.tableRows.push(i), s.dataStream += ln.TABLE_ROW_START;
  6231. break;
  6232. }
  6233. case "TD": {
  6234. const i = Fs(), a = this._tableCache[this._tableCache.length - 1].table;
  6235. a.tableRows[a.tableRows.length - 1].tableCells.push(i), s.dataStream += ln.TABLE_CELL_START;
  6236. break;
  6237. }
  6238. }
  6239. }
  6240. _processAfterTable(e, t) {
  6241. var i, a;
  6242. const o = e.tagName.toUpperCase(), s = t.body;
  6243. t.tableSource == null && (t.tableSource = {}), s.tables == null && (s.tables = []), s.sectionBreaks == null && (s.sectionBreaks = []);
  6244. const { tableSource: r } = t;
  6245. switch (o) {
  6246. case "TABLE": {
  6247. const c = this._tableCache.pop(), { startIndex: A, table: l } = c, d = l.tableRows[0].tableCells.length, h = ks(Jr / d), u = [...new Array(d).fill(null).map(() => re.deepClone(h))];
  6248. l.tableColumns = u, r[l.tableId] = l, s.dataStream += ln.TABLE_END, s.tables.push({
  6249. startIndex: A,
  6250. endIndex: s.dataStream.length,
  6251. tableId: l.tableId
  6252. });
  6253. break;
  6254. }
  6255. case "TR": {
  6256. s.dataStream += ln.TABLE_ROW_END;
  6257. break;
  6258. }
  6259. case "TD": {
  6260. s.dataStream[s.dataStream.length - 1] !== "\r" && ((i = s.paragraphs) == null || i.push({
  6261. startIndex: s.dataStream.length
  6262. }), s.dataStream += "\r"), (a = s.sectionBreaks) == null || a.push({
  6263. startIndex: s.dataStream.length
  6264. }), s.dataStream += `
  6265. ${ln.TABLE_CELL_END}`;
  6266. break;
  6267. }
  6268. }
  6269. }
  6270. _processBeforeLink(e, t) {
  6271. return t.body.dataStream.length;
  6272. }
  6273. _processAfterLink(e, t, o) {
  6274. var i, a;
  6275. const s = t.body, r = e;
  6276. r.tagName.toUpperCase() === "A" && (s.customRanges = (i = s.customRanges) != null ? i : [], s.customRanges.push({
  6277. startIndex: o,
  6278. endIndex: s.dataStream.length - 1,
  6279. rangeId: (a = r.dataset.rangeid) != null ? a : qt(),
  6280. rangeType: mn.HYPERLINK,
  6281. properties: { url: r.href }
  6282. }));
  6283. }
  6284. };
  6285. x(Jn, "_pluginList", []);
  6286. var Ut = Jn;
  6287. var xd = {
  6288. name: "univer-doc-paste-plugin-lark",
  6289. checkPasteType(n) {
  6290. return /lark-record-clipboard/i.test(n);
  6291. },
  6292. // TODO: @JOCS, support inline code copy from lark.
  6293. stylesRules: [
  6294. {
  6295. filter: ["s"],
  6296. getStyle(n) {
  6297. const e = Gs(n);
  6298. return {
  6299. st: {
  6300. s: we.TRUE
  6301. },
  6302. ...e
  6303. };
  6304. }
  6305. }
  6306. ],
  6307. afterProcessRules: [
  6308. {
  6309. filter(n) {
  6310. return n.tagName === "DIV" && /ace-line/i.test(n.className);
  6311. },
  6312. handler(n) {
  6313. const e = n.body;
  6314. e.paragraphs == null && (e.paragraphs = []), e.paragraphs.push({
  6315. startIndex: e.dataStream.length
  6316. }), e.dataStream += "\r";
  6317. }
  6318. }
  6319. ]
  6320. };
  6321. function Sa(n) {
  6322. const e = n.style, t = {};
  6323. for (let o = 0; o < e.length; o++) {
  6324. const s = e[o], r = e.getPropertyValue(s);
  6325. switch (s) {
  6326. case "margin-top": {
  6327. const i = Number.parseInt(r);
  6328. t.spaceAbove = { v: /pt/.test(r) ? i3(i) : i };
  6329. break;
  6330. }
  6331. case "margin-bottom": {
  6332. const i = Number.parseInt(r);
  6333. t.spaceBelow = { v: /pt/.test(r) ? i3(i) : i };
  6334. break;
  6335. }
  6336. case "line-height": {
  6337. let i = Number.parseFloat(r);
  6338. r.endsWith("%") && (i /= 100), t.lineSpacing = i;
  6339. break;
  6340. }
  6341. }
  6342. }
  6343. return Object.getOwnPropertyNames(t).length ? t : null;
  6344. }
  6345. var Od = {
  6346. name: "univer-doc-paste-plugin-univer",
  6347. checkPasteType(n) {
  6348. return /UniverNormal/i.test(n);
  6349. },
  6350. stylesRules: [],
  6351. afterProcessRules: [
  6352. {
  6353. filter(n) {
  6354. return n.tagName === "P" && /UniverNormal/i.test(n.className);
  6355. },
  6356. handler(n, e) {
  6357. const t = n.body;
  6358. t.paragraphs == null && (t.paragraphs = []);
  6359. const o = {
  6360. startIndex: t.dataStream.length
  6361. }, s = Sa(e);
  6362. s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
  6363. }
  6364. }
  6365. ]
  6366. };
  6367. var Td = {
  6368. name: "univer-doc-paste-plugin-word",
  6369. checkPasteType(n) {
  6370. return /word|mso/i.test(n);
  6371. },
  6372. stylesRules: [
  6373. {
  6374. filter: ["b"],
  6375. getStyle(n) {
  6376. const e = Gs(n);
  6377. return { bl: we.TRUE, ...e };
  6378. }
  6379. }
  6380. ],
  6381. afterProcessRules: [
  6382. {
  6383. filter(n) {
  6384. return n.tagName === "P";
  6385. },
  6386. handler(n, e) {
  6387. const t = n.body;
  6388. t.paragraphs == null && (t.paragraphs = []);
  6389. const o = {
  6390. startIndex: t.dataStream.length
  6391. }, s = Sa(e);
  6392. s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
  6393. }
  6394. }
  6395. ]
  6396. };
  6397. function yd(n) {
  6398. var o, s;
  6399. const e = (r) => {
  6400. let i = "";
  6401. return Object.keys(r).forEach((a) => {
  6402. r[a] !== void 0 && (i += ` ${a}=${r[a]}`);
  6403. }), i;
  6404. }, t = {
  6405. "data-doc-transform-height": n.docTransform.size.height,
  6406. "data-doc-transform-width": n.docTransform.size.width,
  6407. "data-width": (o = n.transform) == null ? void 0 : o.width,
  6408. "data-height": (s = n.transform) == null ? void 0 : s.height,
  6409. "data-image-source-type": n.imageSourceType,
  6410. "data-source": n.imageSourceType === vl.UUID ? n.source : void 0,
  6411. src: n.source
  6412. };
  6413. return `<img ${e(t)}></img>`;
  6414. }
  6415. function Zr(n, e) {
  6416. const { st: t, ed: o, ts: s = {} } = e, { ff: r, fs: i, it: a, bl: c, ul: A, st: l, ol: d, bg: h, cl: u, va: g } = s;
  6417. let f = n.slice(t, o);
  6418. const p = [];
  6419. return a === we.TRUE && (f = `<i>${f}</i>`), g === Bt.SUPERSCRIPT ? f = `<sup>${f}</sup>` : g === Bt.SUBSCRIPT && (f = `<sub>${f}</sub>`), (A == null ? void 0 : A.s) === we.TRUE && (f = `<u>${f}</u>`), (l == null ? void 0 : l.s) === we.TRUE && (f = `<s>${f}</s>`), c === we.TRUE && (f = `<strong>${f}</strong>`), r && p.push(`font-family: ${r}`), u && p.push(`color: ${u.rgb}`), i && p.push(`font-size: ${i}pt`), d && p.push("text-decoration: overline"), h && p.push(`background: ${h.rgb}`), p.length ? `<span style="${p.join("; ")};">${f}</span>` : f;
  6420. }
  6421. function Qo(n, e, t) {
  6422. const { dataStream: o, textRuns: s = [] } = n;
  6423. if (e === t)
  6424. return "";
  6425. let r = e;
  6426. const i = [];
  6427. for (const a of s) {
  6428. const { st: c, ed: A } = a;
  6429. re.hasIntersectionBetweenTwoRanges(e, t, c, A) && (c > r ? (i.push(o.slice(r, c)), i.push(Zr(o, {
  6430. ...a,
  6431. ed: Math.min(A, t)
  6432. }))) : i.push(Zr(o, {
  6433. ...a,
  6434. st: r,
  6435. ed: Math.min(A, t)
  6436. }))), r = Math.max(e, Math.min(A, t));
  6437. }
  6438. return r !== t && i.push(o.slice(r, t)), i.join("");
  6439. }
  6440. function Bd(n, e, t) {
  6441. const o = n.body, s = n.drawings || {}, { customRanges: r = [], customBlocks: i = [] } = o || {}, a = [...i], c = r.filter((u) => u.startIndex >= e && u.endIndex <= t);
  6442. let A = e, l = "";
  6443. const d = (u, g) => {
  6444. let f = "", p = 0, m2 = u, E = a.findIndex((I) => u <= I.startIndex && g >= I.startIndex);
  6445. if (E === -1)
  6446. return f = Qo(o, u, g), { sliceHtml: f, customBlockLength: p };
  6447. for (; E !== -1; ) {
  6448. const I = a[E];
  6449. a.splice(E, 1), f += Qo(o, m2, I.startIndex);
  6450. const v = s[I.blockId];
  6451. if (v)
  6452. switch (v.drawingType) {
  6453. case gm.DRAWING_IMAGE: {
  6454. f += yd(v), p++;
  6455. break;
  6456. }
  6457. }
  6458. m2 = I.startIndex + 1, E = a.findIndex((R) => m2 <= R.startIndex && g >= R.startIndex);
  6459. }
  6460. return f = f + Qo(o, m2, g + 1), { sliceHtml: f, customBlockLength: p };
  6461. };
  6462. c.forEach((u) => {
  6463. var v, R;
  6464. const { startIndex: g, endIndex: f, rangeType: p, rangeId: m2 } = u, E = d(A, g);
  6465. l += E.sliceHtml;
  6466. const I = d(g, f + 1);
  6467. switch (p) {
  6468. case mn.HYPERLINK: {
  6469. l += `<a data-rangeid="${m2}" href="${(R = (v = u.properties) == null ? void 0 : v.url) != null ? R : ""}">${I.sliceHtml}</a>`;
  6470. break;
  6471. }
  6472. default: {
  6473. l += I.sliceHtml;
  6474. break;
  6475. }
  6476. }
  6477. A = f + 1 + (E.customBlockLength + I.customBlockLength);
  6478. });
  6479. const h = d(A, t);
  6480. return l += h.sliceHtml, l;
  6481. }
  6482. function Md(n) {
  6483. const e = n.body || {}, { paragraphs: t = [], sectionBreaks: o = [] } = e;
  6484. let { dataStream: s = "" } = e;
  6485. s.endsWith(`\r
  6486. `) || (s += `\r
  6487. `, t.push({
  6488. startIndex: s.length - 2
  6489. }), o.push({
  6490. startIndex: s.length - 1
  6491. }), e.dataStream = s, e.paragraphs = t, e.sectionBreaks = o);
  6492. const r = { html: "" }, i = B6(s).sectionList;
  6493. for (const a of i)
  6494. yt(a, n, r);
  6495. return r.html;
  6496. }
  6497. function yt(n, e, t) {
  6498. var o, s;
  6499. switch (n.nodeType) {
  6500. case O_.SECTION_BREAK: {
  6501. for (const r of n.children)
  6502. yt(r, e, t);
  6503. break;
  6504. }
  6505. case O_.PARAGRAPH: {
  6506. const { children: r, startIndex: i, endIndex: a } = n, c = (s = (o = e.body) == null ? void 0 : o.paragraphs.find((g) => g.startIndex === a)) != null ? s : {}, { paragraphStyle: A = {} } = c, { spaceAbove: l, spaceBelow: d, lineSpacing: h } = A, u = [];
  6507. if (l != null && (typeof l == "number" ? u.push(`margin-top: ${l}px`) : u.push(`margin-top: ${l.v}px`)), d != null && (typeof d == "number" ? u.push(`margin-bottom: ${d}px`) : u.push(`margin-bottom: ${d.v}px`)), h != null && u.push(`line-height: ${h}`), t.html += `<p class="UniverNormal" ${u.length ? `style="${u.join("; ")};"` : ""}>`, r.length)
  6508. for (const g of r)
  6509. yt(g, e, t);
  6510. t.html += `${Bd(e, i, a)}</p>`;
  6511. break;
  6512. }
  6513. case O_.TABLE: {
  6514. const { children: r } = n;
  6515. t.html += '<table class="UniverTable" style="width: 100%; border-collapse: collapse;"><tbody>';
  6516. for (const i of r)
  6517. yt(i, e, t);
  6518. t.html += "</tbody></table>";
  6519. break;
  6520. }
  6521. case O_.TABLE_ROW: {
  6522. const { children: r } = n;
  6523. t.html += '<tr class="UniverTableRow">';
  6524. for (const i of r)
  6525. yt(i, e, t);
  6526. t.html += "</tr>";
  6527. break;
  6528. }
  6529. case O_.TABLE_CELL: {
  6530. const { children: r } = n;
  6531. t.html += '<td class="UniverTableCell">';
  6532. for (const i of r)
  6533. yt(i, e, t);
  6534. t.html += "</td>";
  6535. break;
  6536. }
  6537. default:
  6538. throw new Error(`Unknown node type: ${n.nodeType}`);
  6539. }
  6540. }
  6541. var _d = class {
  6542. convert(e) {
  6543. if (e.length === 0)
  6544. throw new Error("The bodyList length at least to be 1");
  6545. let t = "";
  6546. for (const o of re.deepClone(e))
  6547. t += Md(o);
  6548. return t;
  6549. }
  6550. };
  6551. var Pd = Object.defineProperty;
  6552. var Dd = Object.getOwnPropertyDescriptor;
  6553. var wd = (n, e, t, o) => {
  6554. for (var s = o > 1 ? void 0 : o ? Dd(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  6555. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  6556. return o && s && Pd(e, t, s), s;
  6557. };
  6558. var Jt = (n, e) => (t, o) => e(t, o, n);
  6559. Ut.use(Td);
  6560. Ut.use(xd);
  6561. Ut.use(Od);
  6562. function $r(n, e, t) {
  6563. var r, i, a;
  6564. const o = Dt(n, e, t + 2), s = ln.TABLE_START + ln.TABLE_ROW_START + ln.TABLE_CELL_START + o.dataStream + ln.TABLE_CELL_END + ln.TABLE_ROW_END + ln.TABLE_END;
  6565. return o.dataStream = s, (r = o.textRuns) == null || r.forEach((c) => {
  6566. const { st: A, ed: l } = c;
  6567. c.st = A + 3, c.ed = l + 3;
  6568. }), (i = o.tables) == null || i.forEach((c) => {
  6569. const { startIndex: A, endIndex: l } = c;
  6570. c.startIndex = A + 3, c.endIndex = l + 3;
  6571. }), (a = o.paragraphs) == null || a.forEach((c) => {
  6572. const { startIndex: A } = c;
  6573. c.startIndex = A + 3;
  6574. }), o;
  6575. }
  6576. var Sn = Ct("doc.clipboard-service");
  6577. var ns = class extends nt {
  6578. constructor(e, t, o, s, r) {
  6579. super();
  6580. x(this, "_clipboardHooks", []);
  6581. x(this, "_htmlToUDM", new Ut());
  6582. x(this, "_umdToHtml", new _d());
  6583. this._univerInstanceService = e, this._logService = t, this._commandService = o, this._clipboardInterfaceService = s, this._docSelectionManagerService = r;
  6584. }
  6585. async copy(e = el.copy) {
  6586. var r;
  6587. const { newSnapshotList: t = [], needCache: o = false, snapshot: s } = (r = this._getDocumentBodyInRanges(e)) != null ? r : {};
  6588. if (t.length === 0 || s == null)
  6589. return false;
  6590. try {
  6591. const i = this._docSelectionManagerService.getActiveTextRange(), a = !!(i != null && i.segmentId);
  6592. this._setClipboardData(t, !a && o);
  6593. } catch (i) {
  6594. return this._logService.error("[DocClipboardService] copy failed", i), false;
  6595. }
  6596. return true;
  6597. }
  6598. async cut() {
  6599. return this._cut();
  6600. }
  6601. async paste(e) {
  6602. const t = await this._genDocDataFromClipboardItems(e);
  6603. return this._paste(t);
  6604. }
  6605. async legacyPaste(e) {
  6606. let { html: t, text: o, files: s } = e;
  6607. const r = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC), i = (r == null ? void 0 : r.getUnitId()) || "";
  6608. !t && !o && s.length && (t = await this._createImagePasteHtml(s));
  6609. const a = this._genDocDataFromHtmlAndText(t, o, i);
  6610. if (i === su)
  6611. if (o) {
  6612. const c = st.transform.fromPlainText(o);
  6613. return this._paste({ body: c });
  6614. } else
  6615. a.body.textRuns = [];
  6616. return this._paste(a);
  6617. }
  6618. async _cut() {
  6619. var i, a, c;
  6620. const {
  6621. segmentId: e,
  6622. endOffset: t,
  6623. style: o
  6624. } = (i = this._docSelectionManagerService.getActiveTextRange()) != null ? i : {}, s = (a = this._docSelectionManagerService.getTextRanges()) != null ? a : [], r = (c = this._docSelectionManagerService.getRectRanges()) != null ? c : [];
  6625. if (e == null && this._logService.error("[DocClipboardController] segmentId is not existed"), s.length === 0 && r.length === 0)
  6626. return false;
  6627. this.copy(el.cut);
  6628. try {
  6629. let A = 0;
  6630. if (r.length > 0)
  6631. A = zs(s, r);
  6632. else if (t != null) {
  6633. A = t;
  6634. for (const d of s) {
  6635. const { startOffset: h, endOffset: u } = d;
  6636. h == null || u == null || u <= t && (A -= u - h);
  6637. }
  6638. }
  6639. const l = [
  6640. {
  6641. startOffset: A,
  6642. endOffset: A,
  6643. style: o
  6644. }
  6645. ];
  6646. return this._commandService.executeCommand(Qt.id, { segmentId: e, textRanges: l });
  6647. } catch {
  6648. return this._logService.error("[DocClipboardController] cut content failed"), false;
  6649. }
  6650. }
  6651. async _paste(e) {
  6652. var l, d;
  6653. const { body: t } = e;
  6654. if (t == null)
  6655. return false;
  6656. let o = qC(t);
  6657. if (!((l = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC)) == null ? void 0 : l.getUnitId()))
  6658. return false;
  6659. this._clipboardHooks.forEach((h) => {
  6660. h.onBeforePaste && (o = h.onBeforePaste(o));
  6661. }), o.customRanges = (d = o.customRanges) == null ? void 0 : d.map(st.customRange.copyCustomRange);
  6662. const r = this._docSelectionManagerService.getActiveTextRange(), { segmentId: i, endOffset: a, style: c } = r || {}, A = this._docSelectionManagerService.getTextRanges();
  6663. if (i == null && this._logService.error("[DocClipboardController] segmentId does not exist!"), a == null || A == null)
  6664. return false;
  6665. try {
  6666. let h = a;
  6667. for (const g of A) {
  6668. const { startOffset: f, endOffset: p } = g;
  6669. f == null || p == null || p <= a && (h += o.dataStream.length - (p - f));
  6670. }
  6671. const u = [
  6672. {
  6673. startOffset: h,
  6674. endOffset: h,
  6675. style: c
  6676. }
  6677. ];
  6678. return this._commandService.executeCommand(fa.id, {
  6679. doc: {
  6680. ...e,
  6681. body: o
  6682. },
  6683. segmentId: i,
  6684. textRanges: u
  6685. });
  6686. } catch {
  6687. return this._logService.error("[DocClipboardController]", "clipboard is empty."), false;
  6688. }
  6689. }
  6690. async _setClipboardData(e, t = true) {
  6691. var i, a, c, A;
  6692. const o = Cd(), s = (e.length > 1 ? e.map((l) => {
  6693. var d;
  6694. return ((d = l.body) == null ? void 0 : d.dataStream) || "";
  6695. }).join(`
  6696. `) : ((i = e[0].body) == null ? void 0 : i.dataStream) || "").replaceAll(ln.TABLE_START, "").replaceAll(ln.TABLE_END, "").replaceAll(ln.TABLE_ROW_START, "").replaceAll(ln.TABLE_ROW_END, "").replaceAll(ln.TABLE_CELL_START, "").replaceAll(ln.TABLE_CELL_END, "").replaceAll(`\r
  6697. `, " ");
  6698. let r = this._umdToHtml.convert(e);
  6699. if (e.length === 1 && t) {
  6700. r = r.replace(/(<[a-z]+)/, (h, u) => `${u} data-copy-id="${o}"`);
  6701. const l = e[0], d = { body: l.body };
  6702. if ((c = (a = l.body) == null ? void 0 : a.customBlocks) != null && c.length) {
  6703. d.drawings = {};
  6704. for (const h of l.body.customBlocks) {
  6705. const { blockId: u } = h, g = (A = l.drawings) == null ? void 0 : A[u];
  6706. if (g) {
  6707. const f = re.generateRandomId(6);
  6708. h.blockId = f, d.drawings[f] = {
  6709. ...re.deepClone(g),
  6710. drawingId: f
  6711. };
  6712. }
  6713. }
  6714. }
  6715. No.set(o, d);
  6716. }
  6717. return this._clipboardInterfaceService.write(s, r);
  6718. }
  6719. addClipboardHook(e) {
  6720. return this._clipboardHooks.push(e), Ze(() => {
  6721. const t = this._clipboardHooks.indexOf(e);
  6722. t > -1 && this._clipboardHooks.splice(t, 1);
  6723. });
  6724. }
  6725. _getDocumentBodyInRanges(e) {
  6726. var A;
  6727. const t = this._univerInstanceService.getCurrentUniverDocInstance(), o = this._docSelectionManagerService.getDocRanges(), s = [];
  6728. let r = true;
  6729. if (t == null || o.length === 0)
  6730. return;
  6731. const i = o[0].segmentId, a = (A = t == null ? void 0 : t.getSelfOrHeaderFooterModel(i)) == null ? void 0 : A.getBody(), c = t.getSnapshot();
  6732. if (a != null) {
  6733. for (const l of o) {
  6734. const { startOffset: d, endOffset: h, collapsed: u, rangeType: g } = l;
  6735. if (u || d == null || h == null)
  6736. continue;
  6737. if (g === Ag.RECT) {
  6738. r = false;
  6739. const { spanEntireRow: m2 } = l;
  6740. let E;
  6741. E = $r(a, d, h), s.push(E);
  6742. continue;
  6743. }
  6744. const f = { startOffset: d, endOffset: h, collapsed: u }, p = t.getSelfOrHeaderFooterModel(i).sliceBody(f.startOffset, f.endOffset, e);
  6745. p != null && s.push(p);
  6746. }
  6747. return {
  6748. newSnapshotList: s.map((l) => ({ ...c, body: l })),
  6749. needCache: r,
  6750. snapshot: c
  6751. };
  6752. }
  6753. }
  6754. async _genDocDataFromClipboardItems(e) {
  6755. try {
  6756. let t = "", o = "";
  6757. const s = [];
  6758. for (const r of e)
  6759. for (const i of r.types)
  6760. switch (i) {
  6761. case vr: {
  6762. o = await r.getType(i).then((a) => a && a.text());
  6763. break;
  6764. }
  6765. case mr: {
  6766. t = await r.getType(i).then((a) => a && a.text());
  6767. break;
  6768. }
  6769. case Xl:
  6770. case ql:
  6771. case Ql:
  6772. case Yl: {
  6773. const a = await r.getType(i), c = new File([a], `pasted_image.${i.split("/")[1]}`, { type: i });
  6774. s.push(c);
  6775. break;
  6776. }
  6777. }
  6778. return !t && !o && s.length && (t = await this._createImagePasteHtml(s)), this._genDocDataFromHtmlAndText(t, o);
  6779. } catch (t) {
  6780. return Promise.reject(t);
  6781. }
  6782. }
  6783. _genDocDataFromHtmlAndText(e, t, o) {
  6784. if (!e) {
  6785. if (t)
  6786. return { body: st.transform.fromPlainText(t) };
  6787. throw new Error("[DocClipboardService] html and text cannot be both empty!");
  6788. }
  6789. const s = vd(e);
  6790. if (s) {
  6791. const i = No.get(s);
  6792. if (i)
  6793. return i;
  6794. }
  6795. if (!o) {
  6796. const i = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
  6797. o = (i == null ? void 0 : i.getUnitId()) || "";
  6798. }
  6799. const r = this._htmlToUDM.convert(e, { unitId: o });
  6800. return s && No.set(s, r), r;
  6801. }
  6802. async _createImagePasteHtml(e) {
  6803. var a, c;
  6804. const t = {
  6805. id: "",
  6806. documentStyle: {},
  6807. body: {
  6808. dataStream: "",
  6809. customBlocks: []
  6810. },
  6811. drawings: {}
  6812. }, o = async (A) => {
  6813. const l = new FileReader();
  6814. return new Promise((d) => {
  6815. l.onloadend = function() {
  6816. d({
  6817. source: l.result,
  6818. imageSourceType: vl.BASE64
  6819. });
  6820. }, l.readAsDataURL(A);
  6821. });
  6822. }, s = (A) => {
  6823. const l = new Image(), d = 500;
  6824. return new Promise((h) => {
  6825. l.src = typeof A == "string" ? A : URL.createObjectURL(A), l.onload = () => {
  6826. const u = Math.min(d, l.naturalWidth), g = l.naturalHeight / l.naturalWidth;
  6827. h({ width: u, height: u * g });
  6828. };
  6829. });
  6830. }, r = (c = (a = this._clipboardHooks.find((A) => A.onBeforePasteImage)) == null ? void 0 : a.onBeforePasteImage) != null ? c : o;
  6831. return await Promise.all(e.map(async (A, l) => {
  6832. var m2;
  6833. const d = await r(A);
  6834. if (!d)
  6835. return Promise.resolve();
  6836. const { width: h = 100, height: u = 100 } = await s(A), g = `paste_image_id_${l}`, f = t.body, p = t.drawings;
  6837. f.dataStream += "\b", (m2 = f.customBlocks) == null || m2.push({ startIndex: l, blockId: g }), p[g] = {
  6838. drawingId: g,
  6839. unitId: "",
  6840. subUnitId: "",
  6841. imageSourceType: d.imageSourceType,
  6842. title: "",
  6843. source: d.source,
  6844. description: "",
  6845. layoutType: Xp.INLINE,
  6846. drawingType: gm.DRAWING_IMAGE,
  6847. transform: {
  6848. width: h,
  6849. height: u,
  6850. angle: 0
  6851. },
  6852. docTransform: {
  6853. angle: 0,
  6854. size: { width: h, height: u },
  6855. positionH: { relativeFrom: om.CHARACTER, posOffset: 0 },
  6856. positionV: { relativeFrom: am.LINE, posOffset: 0 }
  6857. }
  6858. };
  6859. })), this._umdToHtml.convert([t]);
  6860. }
  6861. };
  6862. ns = wd([
  6863. Jt(0, _n),
  6864. Jt(1, Mt),
  6865. Jt(2, Pt),
  6866. Jt(3, Pi),
  6867. Jt(4, ot(m))
  6868. ], ns);
  6869. function Io(n) {
  6870. return n.getContextValue(Nr) || n.getContextValue(oE);
  6871. }
  6872. var Ys = 999;
  6873. var Fn = {
  6874. id: bi.id,
  6875. name: "doc.command.copy",
  6876. type: ar.COMMAND,
  6877. multi: true,
  6878. priority: Ys,
  6879. preconditions: Io,
  6880. handler: async (n) => n.get(Sn).copy()
  6881. };
  6882. var qs = {
  6883. id: yi.id,
  6884. name: "doc.command.cut",
  6885. type: ar.COMMAND,
  6886. multi: true,
  6887. priority: Ys,
  6888. preconditions: Io,
  6889. handler: async (n) => n.get(Sn).cut()
  6890. };
  6891. var Ks = {
  6892. id: Li.id,
  6893. name: "doc.command.paste",
  6894. type: ar.COMMAND,
  6895. multi: true,
  6896. priority: Ys,
  6897. preconditions: Io,
  6898. handler: async (n) => {
  6899. const e = n.get(Sn), o = await n.get(Pi).read();
  6900. return o.length === 0 ? false : e.paste(o);
  6901. }
  6902. };
  6903. var Co = {
  6904. id: "doc.command.switch-mode",
  6905. type: ar.COMMAND,
  6906. // eslint-disable-next-line max-lines-per-function, complexity
  6907. handler: async (n) => {
  6908. var E, I, v, R, S;
  6909. const e = n.get(Pt), t = n.get(Yx), o = n.get(m), r = n.get(_n).getCurrentUniverDocInstance();
  6910. if (r == null)
  6911. return false;
  6912. const i = r.getUnitId(), a = (E = t.getRenderById(i)) == null ? void 0 : E.with(D).getSkeleton(), c = (I = t.getRenderById(i)) == null ? void 0 : I.with(Se);
  6913. if (a == null || c == null)
  6914. return false;
  6915. const A = c == null ? void 0 : c.getSegment(), l = c == null ? void 0 : c.getSegmentPage(), d = r.getSnapshot().documentStyle.documentFlavor, h = o.getDocRanges(), u = {
  6916. id: M.id,
  6917. params: {
  6918. unitId: i,
  6919. actions: [],
  6920. textRanges: d === ku.TRADITIONAL && A ? [] : h
  6921. }
  6922. }, g = tn.getInstance(), f = [];
  6923. let p;
  6924. if (d === void 0 ? p = g.insertOp(["documentStyle", "documentFlavor"], ku.MODERN) : d === ku.MODERN ? p = g.replaceOp(["documentStyle", "documentFlavor"], d, ku.TRADITIONAL) : p = g.replaceOp(["documentStyle", "documentFlavor"], d, ku.MODERN), p)
  6925. f.push(p);
  6926. else
  6927. return false;
  6928. if (d !== ku.MODERN) {
  6929. const C = r.getSnapshot(), { drawings: T = {}, body: O } = C, P = (v = O == null ? void 0 : O.customBlocks) != null ? v : [];
  6930. for (const b in T) {
  6931. const B = T[b], M2 = P.find((ae) => ae.blockId === b);
  6932. if (M2 == null)
  6933. continue;
  6934. const H = B.docTransform.positionV, { relativeFrom: F, posOffset: D2 } = H;
  6935. if (F === am.PARAGRAPH)
  6936. continue;
  6937. const { startIndex: te2 } = M2, q = a.findNodeByCharIndex(te2, A, l), V = (R = q == null ? void 0 : q.parent) == null ? void 0 : R.parent, Y = V == null ? void 0 : V.parent, oe = Y == null ? void 0 : Y.lines.find((ae) => ae.paragraphIndex === (V == null ? void 0 : V.paragraphIndex) && ae.paragraphStart), ce2 = (S = Y == null ? void 0 : Y.parent) == null ? void 0 : S.parent;
  6938. if (q == null || V == null || oe == null || Y == null || ce2 == null)
  6939. continue;
  6940. let he = 0;
  6941. F === am.LINE ? he -= V.top : F === am.PAGE && (he += ce2.marginTop), he += oe.top;
  6942. const Ae2 = {
  6943. ...H,
  6944. relativeFrom: am.PARAGRAPH,
  6945. posOffset: (D2 != null ? D2 : 0) - he
  6946. }, ne = g.replaceOp(["drawings", b, "docTransform", "positionV"], H, Ae2);
  6947. ne && f.push(ne);
  6948. }
  6949. }
  6950. return u.params.actions = f.reduce((C, T) => tn.compose(C, T), null), !!e.syncExecuteCommand(u.id, u.params);
  6951. }
  6952. };
  6953. var Xs = {
  6954. id: "doc.table.delete-rows",
  6955. type: ar.COMMAND,
  6956. // eslint-disable-next-line max-lines-per-function
  6957. handler: async (n) => {
  6958. const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  6959. if (i == null)
  6960. return false;
  6961. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  6962. if (c == null || A == null)
  6963. return false;
  6964. const l = ke2(n, c.getUnitId());
  6965. if (l == null)
  6966. return false;
  6967. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = ha(i, d);
  6968. if (f == null)
  6969. return false;
  6970. const { offset: p, rowIndexes: m2, len: E, tableId: I, cursor: v, selectWholeTable: R } = f;
  6971. if (R)
  6972. return o.executeCommand(In.id);
  6973. const S = [], C = [{
  6974. startOffset: v,
  6975. endOffset: v,
  6976. collapsed: true
  6977. }], T = {
  6978. id: M.id,
  6979. params: {
  6980. unitId: h,
  6981. actions: [],
  6982. textRanges: C
  6983. }
  6984. };
  6985. p > 0 && u.push({
  6986. t: ce.RETAIN,
  6987. len: p
  6988. }), u.push({
  6989. t: ce.DELETE,
  6990. len: E
  6991. });
  6992. const O = le(c, a);
  6993. S.push(g.editOp(u.serialize(), O));
  6994. for (const b of m2.reverse()) {
  6995. const B = g.removeOp(["tableSource", I, "tableRows", b]);
  6996. S.push(B);
  6997. }
  6998. return T.params.actions = S.reduce((b, B) => tn.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
  6999. }
  7000. };
  7001. var Js = {
  7002. id: "doc.table.delete-columns",
  7003. type: ar.COMMAND,
  7004. // eslint-disable-next-line max-lines-per-function
  7005. handler: async (n) => {
  7006. const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  7007. if (i == null)
  7008. return false;
  7009. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  7010. if (c == null || A == null)
  7011. return false;
  7012. const l = ke2(n, c.getUnitId());
  7013. if (l == null)
  7014. return false;
  7015. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = Ad(i, d);
  7016. if (f == null)
  7017. return false;
  7018. const { offsets: p, columnIndexes: m2, tableId: E, cursor: I, rowCount: v, selectWholeTable: R } = f;
  7019. if (R)
  7020. return o.executeCommand(In.id);
  7021. const S = [], C = [{
  7022. startOffset: I,
  7023. endOffset: I,
  7024. collapsed: true
  7025. }], T = {
  7026. id: M.id,
  7027. params: {
  7028. unitId: h,
  7029. actions: [],
  7030. textRanges: C
  7031. }
  7032. };
  7033. for (const b of p) {
  7034. const { retain: B, delete: M2 } = b;
  7035. B > 0 && u.push({
  7036. t: ce.RETAIN,
  7037. len: B
  7038. }), u.push({
  7039. t: ce.DELETE,
  7040. len: M2
  7041. });
  7042. }
  7043. const O = le(c, a);
  7044. S.push(g.editOp(u.serialize(), O)), m2.reverse();
  7045. for (let b = 0; b < v; b++)
  7046. for (const B of m2) {
  7047. const M2 = g.removeOp(["tableSource", E, "tableRows", b, "tableCells", B]);
  7048. S.push(M2);
  7049. }
  7050. for (const b of m2) {
  7051. const B = g.removeOp(["tableSource", E, "tableColumns", b]);
  7052. S.push(B);
  7053. }
  7054. return T.params.actions = S.reduce((b, B) => tn.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
  7055. }
  7056. };
  7057. var In = {
  7058. id: "doc.table.delete-table",
  7059. type: ar.COMMAND,
  7060. // eslint-disable-next-line max-lines-per-function
  7061. handler: async (n) => {
  7062. const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  7063. if (i == null)
  7064. return false;
  7065. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  7066. if (c == null || A == null)
  7067. return false;
  7068. const l = ke2(n, c.getUnitId());
  7069. if (l == null)
  7070. return false;
  7071. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = ga(i, d);
  7072. if (f == null)
  7073. return false;
  7074. const { offset: p, len: m2, tableId: E, cursor: I } = f, v = [], R = [{
  7075. startOffset: I,
  7076. endOffset: I,
  7077. collapsed: true
  7078. }], S = {
  7079. id: M.id,
  7080. params: {
  7081. unitId: h,
  7082. actions: [],
  7083. textRanges: R
  7084. }
  7085. };
  7086. p > 0 && u.push({
  7087. t: ce.RETAIN,
  7088. len: p
  7089. }), u.push({
  7090. t: ce.DELETE,
  7091. len: m2
  7092. });
  7093. const C = le(c, a);
  7094. v.push(g.editOp(u.serialize(), C));
  7095. const T = g.removeOp(["tableSource", E]);
  7096. return v.push(T), S.params.actions = v.reduce((P, b) => tn.compose(P, b), null), !!o.syncExecuteCommand(S.id, S.params);
  7097. }
  7098. };
  7099. var Zs = "doc.command.table-insert-row";
  7100. var $s = "doc.command.table-insert-column";
  7101. var Nd = "doc.command.table-insert-row-above";
  7102. var Qd = "doc.command.table-insert-row-bellow";
  7103. var Ud = "doc.command.table-insert-column-left";
  7104. var Ld = "doc.command.table-insert-column-right";
  7105. var er = {
  7106. id: Nd,
  7107. type: ar.COMMAND,
  7108. handler: async (n) => n.get(Pt).executeCommand(Zs, { position: Eo.ABOVE })
  7109. };
  7110. var tr = {
  7111. id: Qd,
  7112. type: ar.COMMAND,
  7113. handler: async (n) => n.get(Pt).executeCommand(Zs, { position: Eo.BELLOW })
  7114. };
  7115. var nr = {
  7116. id: Ud,
  7117. type: ar.COMMAND,
  7118. handler: async (n) => n.get(Pt).executeCommand($s, { position: Ls.LEFT })
  7119. };
  7120. var or = {
  7121. id: Ld,
  7122. type: ar.COMMAND,
  7123. handler: async (n) => n.get(Pt).executeCommand($s, { position: Ls.RIGHT })
  7124. };
  7125. var Ia = {
  7126. id: Zs,
  7127. type: ar.COMMAND,
  7128. // eslint-disable-next-line max-lines-per-function
  7129. handler: async (n, e) => {
  7130. const { position: t } = e, o = n.get(m), s = n.get(_n), r = n.get(Pt), i = o.getRectRanges(), a = o.getActiveTextRange(), c = En(a, i);
  7131. if (c == null)
  7132. return false;
  7133. const { segmentId: A } = c, l = s.getCurrentUnitForType(Fe.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
  7134. if (l == null || d == null)
  7135. return false;
  7136. const h = ke2(n, l.getUnitId());
  7137. if (h == null)
  7138. return false;
  7139. const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new Ke(), p = tn.getInstance(), m2 = id(c, t, u);
  7140. if (m2 == null)
  7141. return false;
  7142. const { offset: E, colCount: I, tableId: v, insertRowIndex: R } = m2, S = [], C = E + 2, T = [{
  7143. startOffset: C,
  7144. endOffset: C,
  7145. collapsed: true
  7146. }], O = {
  7147. id: M.id,
  7148. params: {
  7149. unitId: g,
  7150. actions: [],
  7151. textRanges: T
  7152. }
  7153. };
  7154. E > 0 && f.push({
  7155. t: ce.RETAIN,
  7156. len: E
  7157. });
  7158. const P = sd(I);
  7159. f.push({
  7160. t: ce.INSERT,
  7161. body: P,
  7162. len: P.dataStream.length
  7163. });
  7164. const b = le(l, A);
  7165. S.push(p.editOp(f.serialize(), b));
  7166. const B = Hs(I), M2 = p.insertOp(["tableSource", v, "tableRows", R], B);
  7167. return S.push(M2), O.params.actions = S.reduce((F, D2) => tn.compose(F, D2), null), !!r.syncExecuteCommand(O.id, O.params);
  7168. }
  7169. };
  7170. var Fd = {
  7171. id: $s,
  7172. type: ar.COMMAND,
  7173. // eslint-disable-next-line max-lines-per-function
  7174. handler: async (n, e) => {
  7175. var ce2, he, Ae2;
  7176. const { position: t } = e, o = n.get(m), s = n.get(_n), r = n.get(Pt), i = o.getRectRanges(), a = o.getActiveTextRange(), c = En(a, i);
  7177. if (c == null)
  7178. return false;
  7179. const { segmentId: A } = c, l = s.getCurrentUniverDocInstance(), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
  7180. if (l == null || d == null)
  7181. return false;
  7182. const h = ke2(n, l.getUnitId());
  7183. if (h == null)
  7184. return false;
  7185. const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new Ke(), p = tn.getInstance(), m2 = ad(c, t, u);
  7186. if (m2 == null)
  7187. return false;
  7188. const { offsets: E, columnIndex: I, tableId: v, rowCount: R } = m2, S = [], C = E[0] + 1, T = [{
  7189. startOffset: C,
  7190. endOffset: C,
  7191. collapsed: true
  7192. }], O = {
  7193. id: M.id,
  7194. params: {
  7195. unitId: g,
  7196. actions: [],
  7197. textRanges: T
  7198. }
  7199. };
  7200. for (const ne of E) {
  7201. f.push({
  7202. t: ce.RETAIN,
  7203. len: ne
  7204. });
  7205. const ae = rd();
  7206. f.push({
  7207. t: ce.INSERT,
  7208. body: ae,
  7209. len: ae.dataStream.length
  7210. });
  7211. }
  7212. const P = le(l, A);
  7213. S.push(p.editOp(f.serialize(), P));
  7214. for (let ne = 0; ne < R; ne++) {
  7215. const ae = Fs(), Te = p.insertOp(["tableSource", v, "tableRows", ne, "tableCells", I], ae);
  7216. S.push(Te);
  7217. }
  7218. const b = l.getSnapshot(), B = b.documentStyle, { marginLeft: M2 = 0, marginRight: H = 0 } = B, F = ((he = (ce2 = B.pageSize) == null ? void 0 : ce2.width) != null ? he : 800) - M2 - H, D2 = (Ae2 = b == null ? void 0 : b.tableSource) == null ? void 0 : Ae2[v].tableColumns, { newColWidth: te2, widths: q } = cd(F, D2, I);
  7219. for (let ne = 0; ne < q.length; ne++) {
  7220. const ae = p.replaceOp(["tableSource", v, "tableColumns", ne, "size", "width", "v"], D2[ne].size.width.v, q[ne]);
  7221. S.push(ae);
  7222. }
  7223. const V = ks(te2), Y = p.insertOp(["tableSource", v, "tableColumns", I], V);
  7224. return S.push(Y), O.params.actions = S.reduce((ne, ae) => tn.compose(ne, ae), null), !!r.syncExecuteCommand(O.id, O.params);
  7225. }
  7226. };
  7227. var Ca = "COMPONENT_DOC_CREATE_TABLE_CONFIRM";
  7228. function va(n, e) {
  7229. const t = [];
  7230. for (let o = 0, s = n.length; o < s; o++)
  7231. n[o] === ln.PARAGRAPH && t.push({
  7232. startIndex: o
  7233. });
  7234. if (e)
  7235. for (const o of t)
  7236. e.bullet && (o.bullet = re.deepClone(e.bullet)), e.paragraphStyle && (o.paragraphStyle = re.deepClone(e.paragraphStyle));
  7237. return t;
  7238. }
  7239. var Ra2 = {
  7240. id: "doc.command.break-line",
  7241. type: ar.COMMAND,
  7242. // eslint-disable-next-line max-lines-per-function
  7243. handler: async (n) => {
  7244. var S, C, T;
  7245. const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = n.get(Je), r = e.getActiveTextRange(), i = e.getRectRanges();
  7246. if (r == null)
  7247. return false;
  7248. if (i && i.length) {
  7249. const { startOffset: O } = r;
  7250. return e.replaceDocRanges([{
  7251. startOffset: O,
  7252. endOffset: O
  7253. }]), true;
  7254. }
  7255. const { segmentId: a } = r, c = t.getCurrentUnitForType(Fe.UNIVER_DOC), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a != null ? a : "").getBody();
  7256. if (c == null || A == null)
  7257. return false;
  7258. const l = c.getUnitId(), { startOffset: d, endOffset: h } = r, g = ((S = A.paragraphs) != null ? S : []).find((O) => O.startIndex >= d);
  7259. if (!g)
  7260. return false;
  7261. const f = g.startIndex, p = s.getDefaultStyle(), m2 = s.getStyleCache(), E = co((C = A.textRuns) != null ? C : [], h, p, m2), I = {
  7262. dataStream: ln.PARAGRAPH,
  7263. paragraphs: va(ln.PARAGRAPH, g),
  7264. textRuns: [{
  7265. st: 0,
  7266. ed: 1,
  7267. ts: {
  7268. ...E.ts
  7269. }
  7270. }]
  7271. }, v = {
  7272. startOffset: d,
  7273. endOffset: h,
  7274. collapsed: d === h
  7275. }, R = await o.executeCommand(Vs.id, {
  7276. unitId: l,
  7277. body: I,
  7278. range: v,
  7279. segmentId: a
  7280. });
  7281. if (((T = g.bullet) == null ? void 0 : T.listType) === Ft.CHECK_LIST_CHECKED) {
  7282. const O = {
  7283. index: f + 1 - (h - d),
  7284. segmentId: a,
  7285. textRanges: [{
  7286. startOffset: d + 1,
  7287. endOffset: d + 1
  7288. }]
  7289. };
  7290. return !!await o.executeCommand(Ns.id, O) && R;
  7291. }
  7292. return R;
  7293. }
  7294. };
  7295. var Hd2 = "doc.command.create-table";
  7296. var ba = {
  7297. id: Hd2,
  7298. type: ar.COMMAND,
  7299. // eslint-disable-next-line max-lines-per-function
  7300. handler: async (n, e) => {
  7301. var Ae2, ne, ae, Te, je, ut;
  7302. const { rowCount: t, colCount: o } = e, s = n.get(m), r = n.get(_n), i = n.get(Pt), a = n.get(Je), c = s.getActiveTextRange();
  7303. if (c == null)
  7304. return false;
  7305. const { segmentId: A, segmentPage: l } = c, d = r.getCurrentUniverDocInstance(), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
  7306. if (d == null || h == null)
  7307. return false;
  7308. const u = d.getUnitId(), g = ke2(n, u), f = g == null ? void 0 : g.getSkeleton();
  7309. if (f == null)
  7310. return false;
  7311. const { startOffset: p } = c, E = ((Ae2 = h.paragraphs) != null ? Ae2 : []).find((we2) => we2.startIndex >= p), I = f.findNodeByCharIndex(p, A, l);
  7312. if (I == null)
  7313. return false;
  7314. const v = new Ke(), R = tn.getInstance(), S = [], C = p + 4, T = [{
  7315. startOffset: C,
  7316. endOffset: C,
  7317. collapsed: true
  7318. }], O = {
  7319. id: M.id,
  7320. params: {
  7321. unitId: u,
  7322. actions: [],
  7323. textRanges: T
  7324. }
  7325. };
  7326. p > 0 && v.push({
  7327. t: ce.RETAIN,
  7328. len: p
  7329. }), v.push({
  7330. t: ce.INSERT,
  7331. body: {
  7332. dataStream: ln.PARAGRAPH,
  7333. paragraphs: va(ln.PARAGRAPH, E)
  7334. },
  7335. len: 1
  7336. });
  7337. const P = a.getDefaultStyle(), b = a.getStyleCache(), B = co(
  7338. (ne = h.textRuns) != null ? ne : [],
  7339. p,
  7340. P,
  7341. b
  7342. ), { dataStream: M2, paragraphs: H, sectionBreaks: F } = od(t, o), D2 = (ut = (je = (Te = (ae = I.parent) == null ? void 0 : ae.parent) == null ? void 0 : Te.parent) == null ? void 0 : je.parent) == null ? void 0 : ut.parent;
  7343. if (D2 == null)
  7344. return false;
  7345. const { pageWidth: te2, marginLeft: q, marginRight: V } = D2, Y = ua(t, o, te2 - q - V);
  7346. v.push({
  7347. t: ce.INSERT,
  7348. body: {
  7349. dataStream: M2,
  7350. paragraphs: H,
  7351. sectionBreaks: F,
  7352. textRuns: [{
  7353. ...B,
  7354. st: 0,
  7355. ed: M2.length
  7356. }],
  7357. tables: [
  7358. {
  7359. startIndex: 0,
  7360. endIndex: M2.length,
  7361. tableId: Y.tableId
  7362. }
  7363. ]
  7364. },
  7365. len: M2.length
  7366. });
  7367. const oe = le(d, A);
  7368. S.push(R.editOp(v.serialize(), oe));
  7369. const ce2 = R.insertOp(["tableSource", Y.tableId], Y);
  7370. return S.push(ce2), O.params.actions = S.reduce((we2, Yt) => tn.compose(we2, Yt), null), !!i.syncExecuteCommand(O.id, O.params);
  7371. }
  7372. };
  7373. var Uo = "doc.component.create-table-confirm";
  7374. var sr = {
  7375. id: "doc.operation.create-table",
  7376. type: ar.COMMAND,
  7377. handler: async (n) => {
  7378. const e = n.get(Vr), t = n.get(d3), o = n.get(Pt), s = {
  7379. rowCount: 3,
  7380. colCount: 5
  7381. }, r = (i, a) => {
  7382. s.rowCount = i, s.colCount = a;
  7383. };
  7384. return await t.open({
  7385. id: Uo,
  7386. children: {
  7387. label: {
  7388. name: Ca,
  7389. props: {
  7390. handleRowColChange: r,
  7391. tableCreateParams: s
  7392. }
  7393. }
  7394. },
  7395. width: 400,
  7396. title: { title: e.t("toolbar.table.insert") },
  7397. onConfirm: () => {
  7398. o.executeCommand(ba.id, s), t.close(Uo);
  7399. },
  7400. onClose: () => {
  7401. t.close(Uo);
  7402. }
  7403. }), true;
  7404. }
  7405. };
  7406. var qe = {
  7407. id: "doc-paragraph-setting.command",
  7408. type: ar.COMMAND,
  7409. handler: async (n, e) => {
  7410. var m2, E;
  7411. const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = o.getCurrentUnitForType(Fe.UNIVER_DOC), i = t.getDocRanges();
  7412. if (!r || i.length === 0 || !e)
  7413. return false;
  7414. const a = i[0].segmentId, c = r.getUnitId(), A = (E = (m2 = r.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : m2.paragraphs) != null ? E : [], l = mn2(i, A), d = {
  7415. id: M.id,
  7416. params: {
  7417. unitId: c,
  7418. actions: [],
  7419. textRanges: i
  7420. }
  7421. }, h = new lr();
  7422. h.reset();
  7423. const u = new Ke(), g = tn.getInstance();
  7424. for (const I of l) {
  7425. const { startIndex: v } = I;
  7426. u.push({
  7427. t: ce.RETAIN,
  7428. len: v - h.cursor
  7429. });
  7430. const R = {
  7431. ...I.paragraphStyle,
  7432. ...e.paragraph
  7433. };
  7434. u.push({
  7435. t: ce.RETAIN,
  7436. len: 1,
  7437. body: {
  7438. dataStream: "",
  7439. paragraphs: [
  7440. {
  7441. ...I,
  7442. paragraphStyle: R,
  7443. startIndex: 0
  7444. }
  7445. ]
  7446. },
  7447. coverType: Pe.REPLACE
  7448. }), h.moveCursorTo(v + 1);
  7449. }
  7450. const f = le(r, a);
  7451. return d.params.actions = g.editOp(u.serialize(), f), !!s.syncExecuteCommand(d.id, d.params);
  7452. }
  7453. };
  7454. var kd = () => {
  7455. const n = W0(m), e = W0(Lt), t = (0, import_react.useMemo)(() => n.getDocRanges(), []);
  7456. return (0, import_react.useEffect)(() => {
  7457. t.length || e.closePanel();
  7458. }, [t]), t;
  7459. };
  7460. var Vd = () => {
  7461. var i, a;
  7462. const e = W0(_n).getCurrentUnitForType(Fe.UNIVER_DOC), t = kd();
  7463. if (!e || t.length === 0)
  7464. return [];
  7465. const o = t[0].segmentId, s = (a = (i = e.getSelfOrHeaderFooterModel(o).getBody()) == null ? void 0 : i.paragraphs) != null ? a : [];
  7466. return mn2(t, s);
  7467. };
  7468. var jd = (n, e) => {
  7469. const t = W0(Pt), [o, s] = (0, import_react.useState)(() => {
  7470. var a, c;
  7471. const i = n[0];
  7472. return i ? String((c = (a = i.paragraphStyle) == null ? void 0 : a.horizontalAlign) != null ? c : e) : e;
  7473. });
  7474. return [o, (i) => (s(i), t.executeCommand(qe.id, {
  7475. paragraph: { horizontalAlign: Number(i) }
  7476. }))];
  7477. };
  7478. var Wd2 = (n) => {
  7479. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7480. var i;
  7481. const r = n[0];
  7482. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentStart, 0) : 0;
  7483. });
  7484. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7485. paragraph: { indentStart: { v: r } }
  7486. }))];
  7487. };
  7488. var zd2 = (n) => {
  7489. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7490. var i;
  7491. const r = n[0];
  7492. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentEnd, 0) : 0;
  7493. });
  7494. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7495. paragraph: { indentEnd: { v: r } }
  7496. }))];
  7497. };
  7498. var Gd = (n) => {
  7499. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7500. var i;
  7501. const r = n[0];
  7502. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentFirstLine, 0) : 0;
  7503. });
  7504. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7505. paragraph: { indentFirstLine: { v: r } }
  7506. }))];
  7507. };
  7508. var Yd = (n) => {
  7509. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7510. var i;
  7511. const r = n[0];
  7512. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.hanging, 0) : 0;
  7513. });
  7514. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7515. paragraph: { hanging: { v: r } }
  7516. }))];
  7517. };
  7518. var qd = (n) => {
  7519. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7520. var i;
  7521. const r = n[0];
  7522. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.spaceAbove, 0) : 0;
  7523. });
  7524. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7525. paragraph: { spaceAbove: { v: r } }
  7526. }))];
  7527. };
  7528. var Kd = (n) => {
  7529. const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
  7530. var i;
  7531. const r = n[0];
  7532. return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.spaceBelow, 0) : 0;
  7533. });
  7534. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7535. paragraph: { spaceBelow: { v: r } }
  7536. }))];
  7537. };
  7538. var Xd = (n) => {
  7539. const e = W0(Pt), t = W0(Yx), o = W0(_n), s = (0, import_react.useMemo)(() => {
  7540. var g;
  7541. const u = o.getCurrentUnitForType(Fe.UNIVER_DOC);
  7542. if (u)
  7543. return (g = t.getRenderById(u == null ? void 0 : u.getUnitId())) == null ? void 0 : g.with(D).getSkeleton();
  7544. }, []), r = (0, import_react.useMemo)(() => new BehaviorSubject({}), []), [i, a] = (0, import_react.useState)(() => {
  7545. var g, f;
  7546. const u = n[0];
  7547. return u && (f = (g = u.paragraphStyle) == null ? void 0 : g.lineSpacing) != null ? f : 1;
  7548. }), c = (0, import_react.useRef)(i), [A, l] = (0, import_react.useState)(() => {
  7549. var g, f;
  7550. const u = n[0];
  7551. return u ? (f = (g = u.paragraphStyle) == null ? void 0 : g.spacingRule) != null ? f : Zp.AUTO : Zp.AUTO;
  7552. }), d = async (u) => {
  7553. a(u), r.next({ lineSpacing: u, spacingRule: A });
  7554. }, h = async (u) => {
  7555. if (u !== A) {
  7556. let g = c.current;
  7557. if (u === Zp.AT_LEAST) {
  7558. const f = s == null ? void 0 : s.findNodeByCharIndex(n[0].startIndex), p = f == null ? void 0 : f.parent, m2 = p == null ? void 0 : p.parent;
  7559. (m2 == null ? void 0 : m2.contentHeight) !== void 0 && (g = Math.max(m2.contentHeight, g));
  7560. } else
  7561. g > 5 && (g = 2);
  7562. c.current = i, d(g), l(u), r.next({ spacingRule: u });
  7563. }
  7564. };
  7565. return (0, import_react.useEffect)(() => {
  7566. const u = r.pipe(
  7567. filter((g) => !!Object.keys(g).length),
  7568. bufferTime(16),
  7569. filter((g) => !!g.length),
  7570. map((g) => g.reduce((f, p) => (Object.keys(p).forEach((m2) => {
  7571. f[m2] = p[m2];
  7572. }), f), {}))
  7573. ).subscribe((g) => e.executeCommand(qe.id, {
  7574. paragraph: { ...g }
  7575. }));
  7576. return () => u.unsubscribe();
  7577. }, []), {
  7578. lineSpacing: [i, d],
  7579. spacingRule: [A, h]
  7580. };
  7581. };
  7582. var Jd = "univer-paragraph-setting-icon-list";
  7583. var Zd = "univer-paragraph-setting-icon-list-item";
  7584. var $d = "univer-paragraph-setting-icon-list-active";
  7585. var eu = "univer-paragraph-setting-title";
  7586. var tu = "univer-paragraph-setting-label";
  7587. var nu2 = "univer-paragraph-setting-mt-base";
  7588. var ou = "univer-paragraph-setting-flex-col";
  7589. var su2 = "univer-paragraph-setting-space-line";
  7590. var re2 = {
  7591. paragraphSettingIconList: Jd,
  7592. paragraphSettingIconListItem: Zd,
  7593. paragraphSettingIconListActive: $d,
  7594. paragraphSettingTitle: eu,
  7595. paragraphSettingLabel: tu,
  7596. paragraphSettingMtBase: nu2,
  7597. paragraphSettingFlexCol: ou,
  7598. paragraphSettingSpaceLine: su2
  7599. };
  7600. var ht = (n) => {
  7601. const { value: e, onChange: t, className: o = "", min: s = 0, max: r = 100, step: i = 1 } = n, a = Hc.useRef(null);
  7602. return w.jsx(
  7603. BO,
  7604. {
  7605. step: i,
  7606. ref: a,
  7607. min: s,
  7608. max: r,
  7609. value: e,
  7610. onChange: (c) => {
  7611. t(c != null ? c : 0).finally(() => {
  7612. setTimeout(() => {
  7613. var A;
  7614. (A = a.current) == null || A.focus();
  7615. }, 30);
  7616. });
  7617. },
  7618. className: o
  7619. }
  7620. );
  7621. };
  7622. function ru() {
  7623. const n = W0(Vr), e = (0, import_react.useMemo)(
  7624. () => [
  7625. { label: n.t("toolbar.alignLeft"), value: String(Xt.LEFT), icon: w.jsx(Ji, {}) },
  7626. { label: n.t("toolbar.alignCenter"), value: String(Xt.CENTER), icon: w.jsx(Xi, {}) },
  7627. { label: n.t("toolbar.alignRight"), value: String(Xt.RIGHT), icon: w.jsx(Zi, {}) },
  7628. { label: n.t("toolbar.alignJustify"), value: String(Xt.JUSTIFIED), icon: w.jsx(Ki, {}) }
  7629. ],
  7630. []
  7631. ), t = Vd(), [o, s] = jd(t, e[0].value), [r, i] = Wd2(t), [a, c] = zd2(t), [A, l] = Gd(t), [d, h] = Yd(t), [u, g] = qd(t), [f, p] = Kd(t), { lineSpacing: [m2, E], spacingRule: [I, v] } = Xd(t), R = (0, import_react.useMemo)(() => I === Zp.AUTO ? { min: 1, max: 5, step: m2 < 2 ? 0.5 : 1 } : { min: 1, max: 100 }, [I, m2]);
  7632. return w.jsxs("div", { className: re2.paragraphSetting, children: [
  7633. w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.alignment") }),
  7634. w.jsx(
  7635. "div",
  7636. {
  7637. className: `
  7638. ${re2.paragraphSettingIconList}
  7639. ${re2.paragraphSettingMtBase}
  7640. `,
  7641. children: e.map((S) => w.jsx(Gf, { title: S.label, placement: "bottom", children: w.jsx(
  7642. "span",
  7643. {
  7644. className: Un(
  7645. re2.paragraphSettingIconListItem,
  7646. { [re2.paragraphSettingIconListActive]: o === S.value }
  7647. ),
  7648. onClick: () => s(S.value),
  7649. children: S.icon
  7650. }
  7651. ) }, S.value))
  7652. }
  7653. ),
  7654. w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.indentation") }),
  7655. w.jsxs("div", { children: [
  7656. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7657. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7658. n.t("doc.paragraphSetting.left"),
  7659. "(px)"
  7660. ] }),
  7661. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: r, onChange: (S) => i(S != null ? S : 0) })
  7662. ] }),
  7663. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7664. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7665. n.t("doc.paragraphSetting.right"),
  7666. "(px)"
  7667. ] }),
  7668. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: a, onChange: (S) => c(S != null ? S : 0) })
  7669. ] }),
  7670. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7671. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7672. n.t("doc.paragraphSetting.firstLine"),
  7673. "(px)"
  7674. ] }),
  7675. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: A, onChange: (S) => l(S != null ? S : 0) })
  7676. ] }),
  7677. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7678. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7679. n.t("doc.paragraphSetting.hanging"),
  7680. "(px)"
  7681. ] }),
  7682. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: d, onChange: (S) => h(S != null ? S : 0) })
  7683. ] })
  7684. ] }),
  7685. w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.spacing") }),
  7686. w.jsxs("div", { children: [
  7687. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7688. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7689. n.t("doc.paragraphSetting.before"),
  7690. "(px)"
  7691. ] }),
  7692. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: u, onChange: (S) => g(S != null ? S : 0) })
  7693. ] }),
  7694. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7695. w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
  7696. n.t("doc.paragraphSetting.after"),
  7697. "(px)"
  7698. ] }),
  7699. w.jsx(ht, { className: re2.paragraphSettingMtBase, value: f, onChange: (S) => p(S != null ? S : 0) })
  7700. ] }),
  7701. w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
  7702. w.jsx("div", { className: re2.paragraphSettingLabel, children: n.t("doc.paragraphSetting.lineSpace") }),
  7703. w.jsxs(
  7704. "div",
  7705. {
  7706. className: `
  7707. ${re2.paragraphSettingMtBase}
  7708. ${re2.paragraphSettingSpaceLine}
  7709. `,
  7710. style: { width: 162 },
  7711. children: [
  7712. w.jsx(
  7713. r_,
  7714. {
  7715. value: `${I}`,
  7716. options: [
  7717. { label: n.t("doc.paragraphSetting.multiSpace"), value: `${Zp.AUTO}` },
  7718. { label: n.t("doc.paragraphSetting.fixedValue"), value: `${Zp.AT_LEAST}` }
  7719. ],
  7720. onChange: (S) => v(Number(S))
  7721. }
  7722. ),
  7723. w.jsx(
  7724. ht,
  7725. {
  7726. ...R,
  7727. value: m2,
  7728. onChange: (S) => E(S != null ? S : 0)
  7729. }
  7730. )
  7731. ]
  7732. }
  7733. )
  7734. ] })
  7735. ] })
  7736. ] });
  7737. }
  7738. var iu2 = (n, e) => e.length === n.length && n.some((t) => e.some((o) => o.startOffset === t.startOffset && o.endOffset === t.endOffset));
  7739. function au() {
  7740. const n = W0(Pt), e = W0(Vr), t = z0(e.currentLocale$), [o, s] = (0, import_react.useState)(""), r = (0, import_react.useMemo)(() => S0(() => s(qt(4)), 300), []), i = (0, import_react.useRef)([]);
  7741. return (0, import_react.useEffect)(() => {
  7742. const a = n.onCommandExecuted((c) => {
  7743. if (j.id === c.id) {
  7744. const A = c.params.ranges;
  7745. iu2(A, i.current) || s(qt(4)), i.current = A;
  7746. }
  7747. M.id === c.id && c.params.trigger !== qe.id && r();
  7748. });
  7749. return () => a.dispose();
  7750. }, [r]), (0, import_react.useEffect)(() => {
  7751. s(qt(4));
  7752. }, [t]), (0, import_react.useEffect)(() => () => r.cancel(), [r]), w.jsx(ru, {}, o);
  7753. }
  7754. var cu = Object.defineProperty;
  7755. var Au = Object.getOwnPropertyDescriptor;
  7756. var lu = (n, e, t, o) => {
  7757. for (var s = o > 1 ? void 0 : o ? Au(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  7758. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  7759. return o && s && cu(e, t, s), s;
  7760. };
  7761. var Lo = (n, e) => (t, o) => e(t, o, n);
  7762. var ei = "doc_ui_paragraph-setting-panel";
  7763. var Lt = class extends nt {
  7764. constructor(e, t, o) {
  7765. super();
  7766. x(this, "_id");
  7767. this._commandService = e, this._componentManager = t, this._sidebarService = o, this._init();
  7768. }
  7769. _init() {
  7770. this.disposeWithMe(this._componentManager.register(ei, au));
  7771. }
  7772. openPanel() {
  7773. const e = {
  7774. header: { title: "doc.slider.paragraphSetting" },
  7775. id: this._id,
  7776. children: {
  7777. label: ei
  7778. },
  7779. width: 300
  7780. };
  7781. this._sidebarService.open(e);
  7782. }
  7783. closePanel() {
  7784. this._sidebarService.close(this._id);
  7785. }
  7786. };
  7787. Lt = lu([
  7788. Lo(0, Pt),
  7789. Lo(1, ot(n1)),
  7790. Lo(2, ot(rt))
  7791. ], Lt);
  7792. var rr = {
  7793. id: "sidebar.operation.doc-paragraph-setting-panel",
  7794. type: ar.OPERATION,
  7795. handler: (n) => (n.get(Lt).openPanel(), true)
  7796. };
  7797. var ir = (n) => {
  7798. const e = n.get(m);
  7799. return new Observable((t) => {
  7800. const o = e.textSelection$.subscribe(() => {
  7801. e.getDocRanges().some((i) => i.collapsed === false || i.rangeType === Ag.RECT) ? t.next(false) : t.next(true);
  7802. });
  7803. return () => o.unsubscribe();
  7804. });
  7805. };
  7806. function du(n) {
  7807. if (n.length < 2)
  7808. return true;
  7809. const e = n.map((t) => t.tableId);
  7810. return e.every((t) => t === e[0]);
  7811. }
  7812. function ti(n, e, t) {
  7813. var r;
  7814. const o = e.getRectRanges(), s = e.getActiveTextRange();
  7815. if (o && o.length && du(o) && s == null) {
  7816. n.next(false);
  7817. return;
  7818. }
  7819. if (s && (o == null || o.length === 0)) {
  7820. const { segmentId: i, startOffset: a, endOffset: c } = s, A = t.getCurrentUniverDocInstance(), l = (r = A == null ? void 0 : A.getSelfOrHeaderFooterModel(i).getBody()) == null ? void 0 : r.tables;
  7821. if (l && l.length && l.some((d) => {
  7822. const { startIndex: h, endIndex: u } = d;
  7823. return a > h && a < u || c > h && c < u;
  7824. })) {
  7825. n.next(false);
  7826. return;
  7827. }
  7828. }
  7829. n.next(true);
  7830. }
  7831. var tt = (n) => {
  7832. const e = n.get(m), t = n.get(_n);
  7833. return new Observable((o) => {
  7834. const s = e.textSelection$.subscribe(() => {
  7835. ti(o, e, t);
  7836. });
  7837. return ti(o, e, t), () => s.unsubscribe();
  7838. });
  7839. };
  7840. var uu = (n) => ({
  7841. id: Fn.name,
  7842. commandId: Fn.id,
  7843. type: $e.BUTTON,
  7844. icon: "Copy",
  7845. title: "rightClick.copy",
  7846. disabled$: ir(n),
  7847. hidden$: Fa(n, Fe.UNIVER_DOC)
  7848. });
  7849. var hu = (n) => ({
  7850. id: rr.id,
  7851. type: $e.BUTTON,
  7852. icon: "MenuSingle24",
  7853. title: "doc.menu.paragraphSetting",
  7854. hidden$: Fa(n, Fe.UNIVER_DOC)
  7855. });
  7856. var gu = (n) => ({
  7857. id: qs.id,
  7858. type: $e.BUTTON,
  7859. icon: "Copy",
  7860. title: "rightClick.cut",
  7861. disabled$: ir(n),
  7862. hidden$: Fa(n, Fe.UNIVER_DOC)
  7863. });
  7864. var fu = (n) => ({
  7865. id: Ks.id,
  7866. type: $e.BUTTON,
  7867. icon: "PasteSpecial",
  7868. title: "rightClick.paste",
  7869. hidden$: Fa(n, Fe.UNIVER_DOC)
  7870. });
  7871. var pu = (n) => ({
  7872. id: So.id,
  7873. type: $e.BUTTON,
  7874. icon: "PasteSpecial",
  7875. title: "rightClick.delete",
  7876. disabled$: ir(n),
  7877. hidden$: Fa(n, Fe.UNIVER_DOC)
  7878. });
  7879. var xa = "doc.menu.table-insert";
  7880. function mu(n) {
  7881. return {
  7882. id: xa,
  7883. type: $e.SUBITEMS,
  7884. title: "table.insert",
  7885. icon: "Insert",
  7886. hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC), tt(n), (e, t) => e || t)
  7887. };
  7888. }
  7889. function Eu(n) {
  7890. return {
  7891. id: er.id,
  7892. type: $e.BUTTON,
  7893. title: "table.insertRowAbove",
  7894. icon: "InsertRowAbove",
  7895. disabled$: tt(n),
  7896. hidden$: Fa(n, Fe.UNIVER_DOC)
  7897. };
  7898. }
  7899. function Su(n) {
  7900. return {
  7901. id: tr.id,
  7902. type: $e.BUTTON,
  7903. title: "table.insertRowBelow",
  7904. icon: "InsertRowBelow",
  7905. disabled$: tt(n),
  7906. hidden$: Fa(n, Fe.UNIVER_DOC)
  7907. };
  7908. }
  7909. function Iu(n) {
  7910. return {
  7911. id: nr.id,
  7912. type: $e.BUTTON,
  7913. title: "table.insertColumnLeft",
  7914. icon: "LeftInsertColumn",
  7915. disabled$: tt(n),
  7916. hidden$: Fa(n, Fe.UNIVER_DOC)
  7917. };
  7918. }
  7919. function Cu(n) {
  7920. return {
  7921. id: or.id,
  7922. type: $e.BUTTON,
  7923. title: "table.insertColumnRight",
  7924. icon: "RightInsertColumn",
  7925. disabled$: tt(n),
  7926. hidden$: Fa(n, Fe.UNIVER_DOC)
  7927. };
  7928. }
  7929. var Oa = "doc.menu.table-delete";
  7930. function vu(n) {
  7931. return {
  7932. id: Oa,
  7933. type: $e.SUBITEMS,
  7934. title: "table.delete",
  7935. icon: "Reduce",
  7936. hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC), tt(n), (e, t) => e || t)
  7937. };
  7938. }
  7939. function Ru(n) {
  7940. return {
  7941. id: Xs.id,
  7942. type: $e.BUTTON,
  7943. title: "table.deleteRows",
  7944. icon: "DeleteRow",
  7945. disabled$: tt(n),
  7946. hidden$: Fa(n, Fe.UNIVER_DOC)
  7947. };
  7948. }
  7949. function bu(n) {
  7950. return {
  7951. id: Js.id,
  7952. type: $e.BUTTON,
  7953. title: "table.deleteColumns",
  7954. icon: "DeleteColumn",
  7955. disabled$: tt(n),
  7956. hidden$: Fa(n, Fe.UNIVER_DOC)
  7957. };
  7958. }
  7959. function xu(n) {
  7960. return {
  7961. id: In.id,
  7962. type: $e.BUTTON,
  7963. title: "table.deleteTable",
  7964. icon: "GridSingle",
  7965. disabled$: tt(n),
  7966. hidden$: Fa(n, Fe.UNIVER_DOC)
  7967. };
  7968. }
  7969. function Ou(n) {
  7970. const e = n.get(_n), t = n.get(Yx);
  7971. return new Observable((o) => {
  7972. const s = e.focused$.subscribe((a) => {
  7973. if (a == null || e.getUnitType(a) !== Fe.UNIVER_DOC)
  7974. return o.next(true);
  7975. const A = t.getRenderById(a);
  7976. if (A == null)
  7977. return o.next(true);
  7978. A.with(D).getViewModel().editAreaChange$.subscribe((d) => {
  7979. o.next(d === n3.HEADER || d === n3.FOOTER);
  7980. });
  7981. }), r = t.getCurrentTypeOfRenderer(Fe.UNIVER_DOC);
  7982. if (r == null)
  7983. return o.next(true);
  7984. const i = r.with(D).getViewModel();
  7985. return o.next(i.getEditArea() !== n3.BODY), () => s.unsubscribe();
  7986. });
  7987. }
  7988. function Tu(n) {
  7989. const e = n.get(_n), t = n.get(Pt);
  7990. return new Observable((o) => {
  7991. const s = t.onCommandExecuted((c) => {
  7992. if (c.id === M.id) {
  7993. const { unitId: A } = c.params, l = e.getUnit(A);
  7994. if (l == null) {
  7995. o.next(true);
  7996. return;
  7997. }
  7998. const { documentStyle: d } = l.getSnapshot();
  7999. o.next((d == null ? void 0 : d.documentFlavor) !== ku.TRADITIONAL);
  8000. }
  8001. }), r = e.focused$.subscribe((c) => {
  8002. if (c == null)
  8003. return o.next(true);
  8004. const A = e.getUniverDocInstance(c), l = A == null ? void 0 : A.getSnapshot().documentStyle.documentFlavor;
  8005. o.next(l !== ku.TRADITIONAL);
  8006. }), i = e.getCurrentUniverDocInstance();
  8007. if (i == null)
  8008. return o.next(true);
  8009. const a = i == null ? void 0 : i.getSnapshot().documentStyle.documentFlavor;
  8010. return o.next(a !== ku.TRADITIONAL), () => {
  8011. s.dispose(), r.unsubscribe();
  8012. };
  8013. });
  8014. }
  8015. function yu(n) {
  8016. const e = n.get(m), t = n.get(_n);
  8017. return new Observable((o) => {
  8018. const s = e.textSelection$.subscribe((r) => {
  8019. if (r == null) {
  8020. o.next(true);
  8021. return;
  8022. }
  8023. const { textRanges: i } = r;
  8024. if (i.length !== 1) {
  8025. o.next(true);
  8026. return;
  8027. }
  8028. const a = i[0], { collapsed: c, startNodePosition: A, startOffset: l } = a;
  8029. if (!c || l == null) {
  8030. o.next(true);
  8031. return;
  8032. }
  8033. const d = t.getCurrentUniverDocInstance();
  8034. if (d == null) {
  8035. o.next(true);
  8036. return;
  8037. }
  8038. const h = ke2(n, d.getUnitId());
  8039. if (h == null) {
  8040. o.next(true);
  8041. return;
  8042. }
  8043. if (h.getViewModel().getCustomRangeRaw(l)) {
  8044. o.next(true);
  8045. return;
  8046. }
  8047. if (A != null) {
  8048. const { path: f } = A;
  8049. if (f.indexOf("cells") !== -1) {
  8050. o.next(true);
  8051. return;
  8052. }
  8053. }
  8054. o.next(false);
  8055. });
  8056. return () => s.unsubscribe();
  8057. });
  8058. }
  8059. function be(n) {
  8060. const e = n.get(m);
  8061. return new Observable((t) => {
  8062. const o = e.textSelection$.subscribe((s) => {
  8063. if (s == null) {
  8064. t.next(true);
  8065. return;
  8066. }
  8067. const { textRanges: r, rectRanges: i } = s;
  8068. if (r.length === 0 && i.length === 0) {
  8069. t.next(true);
  8070. return;
  8071. }
  8072. t.next(false);
  8073. });
  8074. return () => o.unsubscribe();
  8075. });
  8076. }
  8077. function Bu(n) {
  8078. const e = n.get(Pt);
  8079. return {
  8080. id: Vt.id,
  8081. type: $e.BUTTON,
  8082. icon: "BoldSingle",
  8083. title: "Set bold",
  8084. tooltip: "toolbar.bold",
  8085. activated$: new Observable((t) => {
  8086. const o = e.onCommandExecuted((s) => {
  8087. var i;
  8088. const r = s.id;
  8089. if (r === j.id || r === lt.id) {
  8090. const a = dt(n);
  8091. if (a == null) {
  8092. t.next(false);
  8093. return;
  8094. }
  8095. const c = (i = a.ts) == null ? void 0 : i.bl;
  8096. t.next(c === we.TRUE);
  8097. }
  8098. });
  8099. return t.next(false), o.dispose;
  8100. }),
  8101. disabled$: be(n),
  8102. hidden$: Fa(n, Fe.UNIVER_DOC)
  8103. };
  8104. }
  8105. function Mu(n) {
  8106. const e = n.get(Pt);
  8107. return {
  8108. id: jt.id,
  8109. type: $e.BUTTON,
  8110. icon: "ItalicSingle",
  8111. title: "Set italic",
  8112. tooltip: "toolbar.italic",
  8113. activated$: new Observable((t) => {
  8114. const o = e.onCommandExecuted((s) => {
  8115. var i;
  8116. const r = s.id;
  8117. if (r === j.id || r === lt.id) {
  8118. const a = dt(n);
  8119. if (a == null) {
  8120. t.next(false);
  8121. return;
  8122. }
  8123. const c = (i = a.ts) == null ? void 0 : i.it;
  8124. t.next(c === we.TRUE);
  8125. }
  8126. });
  8127. return t.next(false), o.dispose;
  8128. }),
  8129. disabled$: be(n),
  8130. hidden$: Fa(n, Fe.UNIVER_DOC)
  8131. };
  8132. }
  8133. function _u(n) {
  8134. const e = n.get(Pt);
  8135. return {
  8136. id: Wt2.id,
  8137. type: $e.BUTTON,
  8138. icon: "UnderlineSingle",
  8139. title: "Set underline",
  8140. tooltip: "toolbar.underline",
  8141. activated$: new Observable((t) => {
  8142. const o = e.onCommandExecuted((s) => {
  8143. var i;
  8144. const r = s.id;
  8145. if (r === j.id || r === lt.id) {
  8146. const a = dt(n);
  8147. if (a == null) {
  8148. t.next(false);
  8149. return;
  8150. }
  8151. const c = (i = a.ts) == null ? void 0 : i.ul;
  8152. t.next((c == null ? void 0 : c.s) === we.TRUE);
  8153. }
  8154. });
  8155. return t.next(false), o.dispose;
  8156. }),
  8157. disabled$: be(n),
  8158. hidden$: Fa(n, Fe.UNIVER_DOC)
  8159. };
  8160. }
  8161. function Pu(n) {
  8162. const e = n.get(Pt);
  8163. return {
  8164. id: zt.id,
  8165. type: $e.BUTTON,
  8166. icon: "StrikethroughSingle",
  8167. title: "Set strike through",
  8168. tooltip: "toolbar.strikethrough",
  8169. activated$: new Observable((t) => {
  8170. const o = e.onCommandExecuted((s) => {
  8171. var i;
  8172. const r = s.id;
  8173. if (r === j.id || r === lt.id) {
  8174. const a = dt(n);
  8175. if (a == null) {
  8176. t.next(false);
  8177. return;
  8178. }
  8179. const c = (i = a.ts) == null ? void 0 : i.st;
  8180. t.next((c == null ? void 0 : c.s) === we.TRUE);
  8181. }
  8182. });
  8183. return t.next(false), o.dispose;
  8184. }),
  8185. disabled$: be(n),
  8186. hidden$: Fa(n, Fe.UNIVER_DOC)
  8187. };
  8188. }
  8189. function Du(n) {
  8190. const e = n.get(Pt);
  8191. return {
  8192. id: Ct2.id,
  8193. type: $e.BUTTON,
  8194. icon: "SubscriptSingle",
  8195. tooltip: "toolbar.subscript",
  8196. activated$: new Observable((t) => {
  8197. const o = e.onCommandExecuted((s) => {
  8198. var i;
  8199. const r = s.id;
  8200. if (r === j.id || r === lt.id) {
  8201. const a = dt(n);
  8202. if (a == null) {
  8203. t.next(false);
  8204. return;
  8205. }
  8206. const c = (i = a.ts) == null ? void 0 : i.va;
  8207. t.next(c === Bt.SUBSCRIPT);
  8208. }
  8209. });
  8210. return t.next(false), o.dispose;
  8211. }),
  8212. disabled$: be(n),
  8213. hidden$: Fa(n, Fe.UNIVER_DOC)
  8214. };
  8215. }
  8216. function wu2(n) {
  8217. const e = n.get(Pt);
  8218. return {
  8219. id: Gt.id,
  8220. type: $e.BUTTON,
  8221. icon: "SuperscriptSingle",
  8222. tooltip: "toolbar.superscript",
  8223. activated$: new Observable((t) => {
  8224. const o = e.onCommandExecuted((s) => {
  8225. var i;
  8226. const r = s.id;
  8227. if (r === j.id || r === lt.id) {
  8228. const a = dt(n);
  8229. if (a == null) {
  8230. t.next(false);
  8231. return;
  8232. }
  8233. const c = (i = a.ts) == null ? void 0 : i.va;
  8234. t.next(c === Bt.SUPERSCRIPT);
  8235. }
  8236. });
  8237. return t.next(false), o.dispose;
  8238. }),
  8239. disabled$: be(n),
  8240. hidden$: Fa(n, Fe.UNIVER_DOC)
  8241. };
  8242. }
  8243. function Nu(n) {
  8244. const e = n.get(Pt);
  8245. return {
  8246. id: Dt2.id,
  8247. tooltip: "toolbar.font",
  8248. type: $e.SELECTOR,
  8249. label: oa,
  8250. selections: Pl.map((t) => ({
  8251. label: {
  8252. name: sa,
  8253. hoverable: true
  8254. },
  8255. value: t.value
  8256. })),
  8257. // disabled$: getCurrentSheetDisabled$(accessor),
  8258. value$: new Observable((t) => {
  8259. const o = gt.ff, s = e.onCommandExecuted((r) => {
  8260. var a;
  8261. const i = r.id;
  8262. if (i === j.id || i === Dt2.id) {
  8263. const c = dt(n);
  8264. if (c == null) {
  8265. t.next(o);
  8266. return;
  8267. }
  8268. const A = (a = c.ts) == null ? void 0 : a.ff;
  8269. t.next(A != null ? A : o);
  8270. }
  8271. });
  8272. return t.next(o), s.dispose;
  8273. }),
  8274. disabled$: be(n),
  8275. hidden$: Fa(n, Fe.UNIVER_DOC)
  8276. };
  8277. }
  8278. function Qu(n) {
  8279. const e = n.get(Pt);
  8280. return {
  8281. id: Pt2.id,
  8282. type: $e.SELECTOR,
  8283. tooltip: "toolbar.fontSize",
  8284. label: {
  8285. name: ra,
  8286. props: {
  8287. min: 1,
  8288. max: 400
  8289. // disabled$,
  8290. }
  8291. },
  8292. selections: $l,
  8293. // disabled$,
  8294. value$: new Observable((t) => {
  8295. const o = gt.fs, s = e.onCommandExecuted((r) => {
  8296. var a;
  8297. const i = r.id;
  8298. if (i === j.id || i === Pt2.id) {
  8299. const c = dt(n);
  8300. if (c == null) {
  8301. t.next(o);
  8302. return;
  8303. }
  8304. const A = (a = c.ts) == null ? void 0 : a.fs;
  8305. t.next(A != null ? A : o);
  8306. }
  8307. });
  8308. return t.next(o), s.dispose;
  8309. }),
  8310. disabled$: be(n),
  8311. hidden$: Fa(n, Fe.UNIVER_DOC)
  8312. };
  8313. }
  8314. function Uu(n) {
  8315. const e = n.get(Pt), t = n.get(ml);
  8316. return {
  8317. id: wt.id,
  8318. icon: "FontColor",
  8319. tooltip: "toolbar.textColor.main",
  8320. type: $e.BUTTON_SELECTOR,
  8321. selections: [
  8322. {
  8323. label: {
  8324. name: Ds,
  8325. hoverable: false
  8326. }
  8327. }
  8328. ],
  8329. value$: new Observable((o) => {
  8330. const s = t.getCurrentTheme().textColor, r = e.onCommandExecuted((i) => {
  8331. if (i.id === wt.id) {
  8332. const a = i.params.value;
  8333. o.next(a != null ? a : s);
  8334. }
  8335. });
  8336. return o.next(s), r.dispose;
  8337. }),
  8338. disabled$: be(n),
  8339. hidden$: Fa(n, Fe.UNIVER_DOC)
  8340. // disabled$: getCurrentSheetDisabled$(accessor),
  8341. };
  8342. }
  8343. function Lu(n) {
  8344. return {
  8345. id: _s.id,
  8346. type: $e.BUTTON,
  8347. icon: "HeaderFooterSingle",
  8348. tooltip: "toolbar.headerFooter",
  8349. hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC, void 0, Hd), Tu(n), (e, t) => e || t)
  8350. };
  8351. }
  8352. var Fu = "GridSingle";
  8353. var Ta = "doc.menu.table";
  8354. function Hu(n) {
  8355. return {
  8356. id: Ta,
  8357. type: $e.SUBITEMS,
  8358. icon: Fu,
  8359. tooltip: "toolbar.table.main",
  8360. disabled$: yu(n),
  8361. // Do not show header footer menu and insert table at zen mode.
  8362. hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC, void 0, Hd), Ou(n), (e, t) => e || t)
  8363. };
  8364. }
  8365. function ku2(n) {
  8366. return {
  8367. id: sr.id,
  8368. title: "toolbar.table.insert",
  8369. type: $e.BUTTON,
  8370. hidden$: Fa(n, Fe.UNIVER_DOC)
  8371. };
  8372. }
  8373. function Vu(n) {
  8374. const e = n.get(Pt);
  8375. return {
  8376. id: go.id,
  8377. type: $e.BUTTON,
  8378. icon: "LeftJustifyingSingle",
  8379. tooltip: "toolbar.alignLeft",
  8380. disabled$: be(n),
  8381. activated$: new Observable((t) => {
  8382. const o = e.onCommandExecuted((s) => {
  8383. var i;
  8384. const r = s.id;
  8385. if (r === j.id || r === et.id) {
  8386. const a = vo(n);
  8387. if (a == null)
  8388. return;
  8389. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8390. t.next(c === Xt.LEFT);
  8391. }
  8392. });
  8393. return t.next(false), o.dispose;
  8394. }),
  8395. hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
  8396. };
  8397. }
  8398. function ju(n) {
  8399. const e = n.get(Pt);
  8400. return {
  8401. id: fo.id,
  8402. type: $e.BUTTON,
  8403. icon: "HorizontallySingle",
  8404. tooltip: "toolbar.alignCenter",
  8405. activated$: new Observable((t) => {
  8406. const o = e.onCommandExecuted((s) => {
  8407. var i;
  8408. const r = s.id;
  8409. if (r === j.id || r === et.id) {
  8410. const a = vo(n);
  8411. if (a == null)
  8412. return;
  8413. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8414. t.next(c === Xt.CENTER);
  8415. }
  8416. });
  8417. return t.next(false), o.dispose;
  8418. }),
  8419. disabled$: be(n),
  8420. hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
  8421. };
  8422. }
  8423. function Wu(n) {
  8424. const e = n.get(Pt);
  8425. return {
  8426. id: po.id,
  8427. type: $e.BUTTON,
  8428. icon: "RightJustifyingSingle",
  8429. tooltip: "toolbar.alignRight",
  8430. activated$: new Observable((t) => {
  8431. const o = e.onCommandExecuted((s) => {
  8432. var i;
  8433. const r = s.id;
  8434. if (r === j.id || r === et.id) {
  8435. const a = vo(n);
  8436. if (a == null)
  8437. return;
  8438. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8439. t.next(c === Xt.RIGHT);
  8440. }
  8441. });
  8442. return t.next(false), o.dispose;
  8443. }),
  8444. disabled$: be(n),
  8445. hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
  8446. };
  8447. }
  8448. function zu(n) {
  8449. const e = n.get(Pt);
  8450. return {
  8451. id: mo.id,
  8452. type: $e.BUTTON,
  8453. icon: "AlignTextBothSingle",
  8454. tooltip: "toolbar.alignJustify",
  8455. activated$: new Observable((t) => {
  8456. const o = e.onCommandExecuted((s) => {
  8457. var i;
  8458. const r = s.id;
  8459. if (r === j.id || r === et.id) {
  8460. const a = vo(n);
  8461. if (a == null)
  8462. return;
  8463. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8464. t.next(c === Xt.JUSTIFIED);
  8465. }
  8466. });
  8467. return t.next(false), o.dispose;
  8468. }),
  8469. disabled$: be(n),
  8470. hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
  8471. };
  8472. }
  8473. var un = (n) => new Observable((e) => {
  8474. const t = n.get(_n), o = n.get(m);
  8475. let s;
  8476. const r = t.focused$.subscribe((i) => {
  8477. if (s == null || s.unsubscribe(), i == null)
  8478. return;
  8479. const a = t.getUniverDocInstance(i);
  8480. a != null && (s = o.textSelection$.subscribe(() => {
  8481. var l, d, h;
  8482. const c = o.getDocRanges(), A = (l = c.find((u) => u.isActive)) != null ? l : c[0];
  8483. if (A) {
  8484. const u = a.getSelfOrHeaderFooterModel(A == null ? void 0 : A.segmentId), g = Qs(A, (h = (d = u.getBody()) == null ? void 0 : d.paragraphs) != null ? h : []);
  8485. let f;
  8486. if (g.every((p) => {
  8487. var m2;
  8488. return f || (f = (m2 = p.bullet) == null ? void 0 : m2.listType), p.bullet && p.bullet.listType === f;
  8489. })) {
  8490. e.next(f);
  8491. return;
  8492. }
  8493. }
  8494. e.next(void 0);
  8495. }));
  8496. });
  8497. return () => {
  8498. r.unsubscribe(), s == null || s.unsubscribe();
  8499. };
  8500. });
  8501. function Gu(n) {
  8502. return {
  8503. id: ho.id,
  8504. type: $e.BUTTON_SELECTOR,
  8505. selections: [
  8506. {
  8507. label: {
  8508. name: aa,
  8509. hoverable: false
  8510. },
  8511. value$: un(n)
  8512. }
  8513. ],
  8514. icon: "OrderSingle",
  8515. tooltip: "toolbar.order",
  8516. hidden$: Fa(n, Fe.UNIVER_DOC),
  8517. disabled$: be(n),
  8518. activated$: un(n).pipe(map((e) => e && e.indexOf("ORDER_LIST") === 0))
  8519. };
  8520. }
  8521. function Yu(n) {
  8522. return {
  8523. id: uo.id,
  8524. type: $e.BUTTON_SELECTOR,
  8525. selections: [
  8526. {
  8527. label: {
  8528. name: ca,
  8529. hoverable: false
  8530. },
  8531. value$: un(n)
  8532. }
  8533. ],
  8534. icon: "UnorderSingle",
  8535. tooltip: "toolbar.unorder",
  8536. disabled$: be(n),
  8537. hidden$: Fa(n, Fe.UNIVER_DOC),
  8538. activated$: un(n).pipe(map((e) => e && e.indexOf("BULLET_LIST") === 0))
  8539. };
  8540. }
  8541. function qu(n) {
  8542. return {
  8543. id: ws.id,
  8544. type: $e.BUTTON,
  8545. icon: "TodoList",
  8546. tooltip: "toolbar.checklist",
  8547. disabled$: be(n),
  8548. hidden$: Fa(n, Fe.UNIVER_DOC),
  8549. activated$: un(n).pipe(map((e) => e && e.indexOf("CHECK_LIST") === 0))
  8550. };
  8551. }
  8552. function Ku(n) {
  8553. const e = n.get(Pt), t = n.get(_n);
  8554. return {
  8555. id: Co.id,
  8556. type: $e.BUTTON,
  8557. icon: "KeyboardSingle",
  8558. tooltip: "toolbar.documentFlavor",
  8559. hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd),
  8560. activated$: new Observable((o) => {
  8561. var i;
  8562. const s = e.onCommandExecuted((a) => {
  8563. var c;
  8564. if (a.id === M.id) {
  8565. const A = t.getCurrentUnitForType(Fe.UNIVER_DOC);
  8566. o.next(((c = A == null ? void 0 : A.getSnapshot()) == null ? void 0 : c.documentStyle.documentFlavor) === ku.MODERN);
  8567. }
  8568. }), r = t.getCurrentUnitForType(Fe.UNIVER_DOC);
  8569. return o.next(((i = r == null ? void 0 : r.getSnapshot()) == null ? void 0 : i.documentStyle.documentFlavor) === ku.MODERN), () => s.dispose();
  8570. })
  8571. };
  8572. }
  8573. function Xu(n) {
  8574. return {
  8575. id: fn.id,
  8576. type: $e.BUTTON,
  8577. title: "toolbar.resetColor",
  8578. icon: "NoColor"
  8579. };
  8580. }
  8581. function Ju(n) {
  8582. const e = n.get(Pt), t = n.get(ml);
  8583. return {
  8584. id: Nt2.id,
  8585. tooltip: "toolbar.fillColor.main",
  8586. type: $e.BUTTON_SELECTOR,
  8587. icon: "PaintBucket",
  8588. selections: [
  8589. {
  8590. label: {
  8591. name: Ds,
  8592. hoverable: false
  8593. }
  8594. }
  8595. ],
  8596. value$: new Observable((o) => {
  8597. const s = t.getCurrentTheme().primaryColor, r = e.onCommandExecuted((i) => {
  8598. if (i.id === Nt2.id) {
  8599. const a = i.params.value;
  8600. o.next(a != null ? a : s);
  8601. }
  8602. });
  8603. return o.next(s), r.dispose;
  8604. }),
  8605. disabled$: be(n),
  8606. hidden$: Fa(n, Fe.UNIVER_DOC)
  8607. };
  8608. }
  8609. function dt(n) {
  8610. var h, u;
  8611. const e = n.get(_n), t = n.get(m), o = n.get(Je), s = e.getCurrentUnitForType(Fe.UNIVER_DOC), r = t.getDocRanges(), i = (h = r.find((g) => g.isActive)) != null ? h : r[0], a = o.getDefaultStyle(), c = (u = o.getStyleCache()) != null ? u : {};
  8612. if (s == null || i == null)
  8613. return {
  8614. ts: {
  8615. ...a,
  8616. ...c
  8617. }
  8618. };
  8619. const { segmentId: A } = i, l = s.getSelfOrHeaderFooterModel(A).getBody();
  8620. return l == null ? {
  8621. ts: {
  8622. ...a,
  8623. ...c
  8624. }
  8625. } : {
  8626. ts: {
  8627. ...la(l, i, a),
  8628. ...c
  8629. }
  8630. };
  8631. }
  8632. function vo(n) {
  8633. var l, d;
  8634. const e = n.get(_n), t = n.get(m), o = e.getCurrentUniverDocInstance(), s = t.getDocRanges(), r = (l = s.find((h) => h.isActive)) != null ? l : s[0];
  8635. if (o == null || r == null)
  8636. return;
  8637. const { startOffset: i, segmentId: a } = r, c = (d = o.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : d.paragraphs;
  8638. if (c == null)
  8639. return;
  8640. let A = -1;
  8641. for (const h of c) {
  8642. const { startIndex: u } = h;
  8643. if (i > A && i <= u)
  8644. return h;
  8645. A = u;
  8646. }
  8647. return null;
  8648. }
  8649. var Zu = {
  8650. [l1.FORMAT]: {
  8651. [Vt.id]: {
  8652. order: 0,
  8653. menuItemFactory: Bu
  8654. },
  8655. [jt.id]: {
  8656. order: 1,
  8657. menuItemFactory: Mu
  8658. },
  8659. [Wt2.id]: {
  8660. order: 2,
  8661. menuItemFactory: _u
  8662. },
  8663. [zt.id]: {
  8664. order: 3,
  8665. menuItemFactory: Pu
  8666. },
  8667. [Ct2.id]: {
  8668. order: 4,
  8669. menuItemFactory: Du
  8670. },
  8671. [Gt.id]: {
  8672. order: 5,
  8673. menuItemFactory: wu2
  8674. },
  8675. [Pt2.id]: {
  8676. order: 6,
  8677. menuItemFactory: Qu
  8678. },
  8679. [Dt2.id]: {
  8680. order: 7,
  8681. menuItemFactory: Nu
  8682. },
  8683. [wt.id]: {
  8684. order: 8,
  8685. menuItemFactory: Uu
  8686. },
  8687. [Nt2.id]: {
  8688. order: 9,
  8689. menuItemFactory: Ju,
  8690. [fn.id]: {
  8691. order: 0,
  8692. menuItemFactory: Xu
  8693. }
  8694. }
  8695. },
  8696. [l1.LAYOUT]: {
  8697. [Ta]: {
  8698. order: 1,
  8699. menuItemFactory: Hu,
  8700. [sr.id]: {
  8701. order: 0,
  8702. menuItemFactory: ku2
  8703. }
  8704. },
  8705. [go.id]: {
  8706. order: 2,
  8707. menuItemFactory: Vu
  8708. },
  8709. [fo.id]: {
  8710. order: 3,
  8711. menuItemFactory: ju
  8712. },
  8713. [po.id]: {
  8714. order: 4,
  8715. menuItemFactory: Wu
  8716. },
  8717. [mo.id]: {
  8718. order: 5,
  8719. menuItemFactory: zu
  8720. },
  8721. [ho.id]: {
  8722. order: 6,
  8723. menuItemFactory: Gu
  8724. },
  8725. [uo.id]: {
  8726. order: 7,
  8727. menuItemFactory: Yu
  8728. },
  8729. [ws.id]: {
  8730. order: 8,
  8731. menuItemFactory: qu
  8732. },
  8733. [_s.id]: {
  8734. order: 9,
  8735. menuItemFactory: Lu
  8736. },
  8737. [Co.id]: {
  8738. order: 10,
  8739. menuItemFactory: Ku
  8740. }
  8741. },
  8742. [P1.MAIN_AREA]: {
  8743. [He.FORMAT]: {
  8744. [Fn.name]: {
  8745. order: 0,
  8746. menuItemFactory: uu
  8747. },
  8748. [qs.id]: {
  8749. order: 1,
  8750. menuItemFactory: gu
  8751. },
  8752. [Ks.id]: {
  8753. order: 2,
  8754. menuItemFactory: fu
  8755. },
  8756. [So.id]: {
  8757. order: 3,
  8758. menuItemFactory: pu
  8759. }
  8760. },
  8761. [He.LAYOUT]: {
  8762. [rr.id]: {
  8763. order: 0,
  8764. menuItemFactory: hu
  8765. },
  8766. [xa]: {
  8767. order: 1,
  8768. menuItemFactory: mu,
  8769. [er.id]: {
  8770. order: 1,
  8771. menuItemFactory: Eu
  8772. },
  8773. [tr.id]: {
  8774. order: 2,
  8775. menuItemFactory: Su
  8776. },
  8777. [nr.id]: {
  8778. order: 3,
  8779. menuItemFactory: Iu
  8780. },
  8781. [or.id]: {
  8782. order: 4,
  8783. menuItemFactory: Cu
  8784. }
  8785. },
  8786. [Oa]: {
  8787. order: 2,
  8788. menuItemFactory: vu,
  8789. [Xs.id]: {
  8790. order: 1,
  8791. menuItemFactory: Ru
  8792. },
  8793. [Js.id]: {
  8794. order: 2,
  8795. menuItemFactory: bu
  8796. },
  8797. [In.id]: {
  8798. order: 3,
  8799. menuItemFactory: xu
  8800. }
  8801. }
  8802. }
  8803. }
  8804. };
  8805. var $u = Object.defineProperty;
  8806. var eh = Object.getOwnPropertyDescriptor;
  8807. var th = (n, e, t, o) => {
  8808. for (var s = o > 1 ? void 0 : o ? eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8809. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8810. return o && s && $u(e, t, s), s;
  8811. };
  8812. var Ke2 = (n, e) => (t, o) => e(t, o, n);
  8813. var Hn = class extends nt {
  8814. constructor(n, e, t, o, s, r, i, a, c) {
  8815. super(), this._injector = n, this._componentManager = e, this._commandService = t, this._layoutService = o, this._menuManagerService = s, this._uiPartsService = r, this._univerInstanceService = i, this._shortcutService = a, this._configService = c, this._init();
  8816. }
  8817. _initCustomComponents() {
  8818. const n = this._componentManager;
  8819. this.disposeWithMe(n.register(Ds, $O)), this.disposeWithMe(n.register(oa, Dl)), this.disposeWithMe(n.register(sa, Al)), this.disposeWithMe(n.register(ra, jl)), this.disposeWithMe(n.register(ca, Cl)), this.disposeWithMe(n.register(aa, Sl)), this.disposeWithMe(n.register("TodoList", $i));
  8820. }
  8821. // TODO: @zhangwei, why add workbook to docs-ui?
  8822. _initUiParts() {
  8823. var t, o;
  8824. const n = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_SHEET), e = this._configService.getConfig(Us);
  8825. (o = (t = e == null ? void 0 : e.layout) == null ? void 0 : t.docContainerConfig) != null && o.footer && !n && this.disposeWithMe(this._uiPartsService.registerComponent(Le.FOOTER, () => B0(nd, this._injector)));
  8826. }
  8827. _initMenus() {
  8828. this._menuManagerService.mergeMenu(Zu);
  8829. }
  8830. _initShortCut() {
  8831. [
  8832. Nl,
  8833. Ql2,
  8834. Ul,
  8835. Ll,
  8836. Fl,
  8837. Hl,
  8838. jl2,
  8839. Wl,
  8840. Vl,
  8841. kl,
  8842. zl,
  8843. Gl,
  8844. xl
  8845. ].forEach((n) => {
  8846. this.disposeWithMe(this._shortcutService.registerShortcut(n));
  8847. });
  8848. }
  8849. _init() {
  8850. this._initCustomComponents(), this._initMenus(), this._initFocusHandler(), this._initCommands(), this._initUiParts(), this._initShortCut();
  8851. }
  8852. _initCommands() {
  8853. [
  8854. na,
  8855. _s,
  8856. Ms
  8857. ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
  8858. }
  8859. _initFocusHandler() {
  8860. this.disposeWithMe(
  8861. this._layoutService.registerFocusHandler(Fe.UNIVER_DOC, (n) => {
  8862. this._injector.get(Yx).getRenderById(n).with(Se).focus();
  8863. })
  8864. );
  8865. }
  8866. };
  8867. Hn = th([
  8868. Ke2(0, ot(Ot)),
  8869. Ke2(1, ot(n1)),
  8870. Ke2(2, Pt),
  8871. Ke2(3, _1),
  8872. Ke2(4, m1),
  8873. Ke2(5, f1),
  8874. Ke2(6, _n),
  8875. Ke2(7, it),
  8876. Ke2(8, SE)
  8877. ], Hn);
  8878. var nh = Object.defineProperty;
  8879. var oh = Object.getOwnPropertyDescriptor;
  8880. var sh = (n, e, t, o) => {
  8881. for (var s = o > 1 ? void 0 : o ? oh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8882. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8883. return o && s && nh(e, t, s), s;
  8884. };
  8885. var Fo = (n, e) => (t, o) => e(t, o, n);
  8886. var ni = 1.5;
  8887. var kn = class extends J0 {
  8888. constructor(n, e, t, o) {
  8889. super(), this._context = n, this._textSelectionManagerService = e, this._editorService = t, this._docSkeletonManagerService = o, this._init();
  8890. }
  8891. _init() {
  8892. this._textSelectionManagerService.textSelection$.pipe(takeUntil(this.dispose$)).subscribe((n) => {
  8893. if (n == null)
  8894. return;
  8895. const { isEditing: e, unitId: t } = n;
  8896. t !== this._context.unitId || !e || this._context.unitId !== su && this._scrollToSelection();
  8897. });
  8898. }
  8899. scrollToRange(n) {
  8900. const e = this._docSkeletonManagerService.getSkeleton();
  8901. if (!e)
  8902. return;
  8903. const { startOffset: t } = n, o = e.findNodePositionByCharIndex(t);
  8904. o && this.scrollToNode(o);
  8905. }
  8906. scrollToNode(n) {
  8907. var O;
  8908. const { unitId: e, scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton();
  8909. if (o == null || s == null)
  8910. return;
  8911. const r = o.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, c = new it2(r, s), { contentBoxPointGroup: A } = c.getRangePointData(n, n), { left: l, top: d, height: h } = Mn(A), u = l + i, g = d + a, f = t.getViewport(Xe.VIEW_MAIN), p = this._editorService.getEditor(e);
  8912. if (f == null)
  8913. return;
  8914. const {
  8915. left: m2,
  8916. top: E,
  8917. right: I,
  8918. bottom: v
  8919. } = f.getBounding().viewBound;
  8920. let R = 0, S = 0;
  8921. const C = p ? (O = p.params.backScrollOffset) != null ? O : 0 : 100;
  8922. g < E ? R = g - E - C : g > v - h && (R = g - v + h + C), u < m2 ? S = u - m2 : u > I - ni && (S = u - I + ni);
  8923. const T = f.transViewportScroll2ScrollValue(S, R);
  8924. f.scrollByBarDeltaValue(T);
  8925. }
  8926. // Let the selection show on the current screen.
  8927. _scrollToSelection() {
  8928. const n = this._textSelectionManagerService.getActiveTextRange();
  8929. if (n == null)
  8930. return;
  8931. const { collapsed: e, startNodePosition: t } = n;
  8932. e && this.scrollToNode(t);
  8933. }
  8934. };
  8935. kn = sh([
  8936. Fo(1, ot(m)),
  8937. Fo(2, He2),
  8938. Fo(3, ot(D))
  8939. ], kn);
  8940. var rh = Object.defineProperty;
  8941. var ih = Object.getOwnPropertyDescriptor;
  8942. var ah = (n, e, t, o) => {
  8943. for (var s = o > 1 ? void 0 : o ? ih(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8944. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8945. return o && s && rh(e, t, s), s;
  8946. };
  8947. var bt = (n, e) => (t, o) => e(t, o, n);
  8948. var os = class extends J0 {
  8949. constructor(n, e, t, o, s, r, i) {
  8950. super(), this._context = n, this._commandService = e, this._docSelectionRenderService = t, this._docSkeletonManagerService = o, this._editorService = s, this._renderManagerService = r, this._univerInstanceService = i, this._addNewRender(), this._initRenderRefresh(), this._initCommandListener();
  8951. }
  8952. reRender(n) {
  8953. var r, i;
  8954. const e = (r = this._renderManagerService.getRenderById(n)) == null ? void 0 : r.with(D), t = e == null ? void 0 : e.getSkeleton();
  8955. if (!t || !!t.getViewModel().getDataModel().getSnapshot().disabled)
  8956. return;
  8957. t.calculate();
  8958. const s = this._editorService.getEditor(n);
  8959. if (this._editorService.isEditor(n) && !(s != null && s.params.scrollBar)) {
  8960. (i = this._context.mainComponent) == null || i.makeDirty();
  8961. return;
  8962. }
  8963. this._recalculateSizeBySkeleton(t);
  8964. }
  8965. _addNewRender() {
  8966. const { scene: n, engine: e } = this._context, t = new uT(Xe.VIEW_MAIN, n, {
  8967. left: 0,
  8968. top: 0,
  8969. bottom: 0,
  8970. right: 0,
  8971. isWheelPreventDefaultX: true
  8972. });
  8973. n.attachControl(), n.onMouseWheel$.subscribeEvent((o, s) => {
  8974. const r = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
  8975. if ((r == null ? void 0 : r.getUnitId()) !== this._context.unitId)
  8976. return;
  8977. const i = o;
  8978. if (i.ctrlKey) {
  8979. const a = Math.abs(i.deltaX);
  8980. let c = a < 40 ? 0.2 : a < 80 ? 0.4 : 0.2;
  8981. c *= i.deltaY > 0 ? -1 : 1, n.scaleX < 1 && (c /= 2), n.scaleX + c > 4 ? n.scale(4, 4) : n.scaleX + c < 0.1 ? n.scale(0.1, 0.1) : i.preventDefault();
  8982. } else
  8983. t.onMouseWheel(i, s);
  8984. }), new v8(t), n.addLayer(
  8985. new Ex(n, [], Oo),
  8986. new Ex(n, [], aA)
  8987. ), this._addComponent(), e.runRenderLoop(() => {
  8988. n.render();
  8989. }), this._docSelectionRenderService.__attachScrollEvent();
  8990. }
  8991. _addComponent() {
  8992. const { scene: n, unit: e, components: t } = this._context, r = {
  8993. pageMarginLeft: 20,
  8994. pageMarginTop: 20
  8995. }, i = new ke(We.MAIN, void 0, r);
  8996. i.zIndex = xr;
  8997. const a = new b8(We.BACKGROUND, void 0, r);
  8998. a.zIndex = xr, this._context.mainComponent = i, t.set(We.MAIN, i), t.set(We.BACKGROUND, a), n.addObjects([i], Oo), n.addObjects([a], iA), this._editorService.getEditor(e.getUnitId()) == null && n.enableLayerCache(Oo);
  8999. }
  9000. _initRenderRefresh() {
  9001. this._docSkeletonManagerService.currentSkeletonBefore$.pipe(takeUntil(this.dispose$)).subscribe((n) => {
  9002. this._create(n);
  9003. });
  9004. }
  9005. _create(n) {
  9006. var a;
  9007. if (!n)
  9008. return;
  9009. const { mainComponent: e, components: t } = this._context, o = e, s = t.get(We.BACKGROUND);
  9010. o.changeSkeleton(n), s.changeSkeleton(n);
  9011. const { unitId: r } = this._context, i = this._editorService.getEditor(r);
  9012. if (this._editorService.isEditor(r) && !(i != null && i.params.scrollBar)) {
  9013. (a = this._context.mainComponent) == null || a.makeDirty();
  9014. return;
  9015. }
  9016. this._recalculateSizeBySkeleton(n);
  9017. }
  9018. _initCommandListener() {
  9019. const n = [M.id];
  9020. this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
  9021. if (n.includes(e.id)) {
  9022. const t = e.params, { unitId: o } = t;
  9023. this.reRender(o);
  9024. }
  9025. }));
  9026. }
  9027. _recalculateSizeBySkeleton(n) {
  9028. var u;
  9029. const { mainComponent: e, scene: t, unitId: o, components: s } = this._context, r = e, i = s.get(We.BACKGROUND), a = (u = n.getSkeletonData()) == null ? void 0 : u.pages;
  9030. if (a == null)
  9031. return;
  9032. let c = 0, A = 0;
  9033. const d = this._context.unit.getSnapshot().documentStyle.documentFlavor;
  9034. for (let g = 0, f = a.length; g < f; g++) {
  9035. const p = a[g];
  9036. let { pageWidth: m2, pageHeight: E } = p;
  9037. if (d === ku.MODERN) {
  9038. const I = ch(p);
  9039. m2 = I.pageWidth, E = I.pageHeight;
  9040. }
  9041. r.pageLayoutType === Y2.VERTICAL ? (A += E, A += r.pageMarginTop, g === f - 1 && (A += r.pageMarginTop), c = Math.max(c, m2)) : r.pageLayoutType === Y2.HORIZONTAL && (c += m2, g !== f - 1 && (c += r.pageMarginLeft), A = Math.max(A, E));
  9042. }
  9043. r.resize(c, A), i.resize(c, A);
  9044. const h = this._editorService.getEditor(o);
  9045. (!this._editorService.isEditor(o) || h != null && h.params.scrollBar) && t.resize(c, A);
  9046. }
  9047. };
  9048. os = ah([
  9049. bt(1, Pt),
  9050. bt(2, ot(Se)),
  9051. bt(3, ot(D)),
  9052. bt(4, He2),
  9053. bt(5, Yx),
  9054. bt(6, _n)
  9055. ], os);
  9056. function ch(n) {
  9057. let { pageWidth: e, pageHeight: t } = n;
  9058. const { marginLeft: o, marginRight: s, marginTop: r, marginBottom: i, skeDrawings: a, skeTables: c } = n;
  9059. e === Number.POSITIVE_INFINITY && (e = n.width + o + s), t === Number.POSITIVE_INFINITY && (t = n.height + r + i);
  9060. for (const A of a.values())
  9061. e = Math.max(e, A.aLeft + A.width + o + s), t = Math.max(t, A.aTop + A.height + r + i);
  9062. for (const A of c.values())
  9063. e = Math.max(e, A.left + A.width + o + s), t = Math.max(t, A.top + A.height + r + i);
  9064. return { pageWidth: e, pageHeight: t };
  9065. }
  9066. var ya = {
  9067. id: "doc.command.select-all",
  9068. type: ar.COMMAND,
  9069. handler: async (n) => {
  9070. var h;
  9071. const e = n.get(_n), t = n.get(m), o = e.getCurrentUnitForType(Fe.UNIVER_DOC), s = t.getDocRanges(), r = (h = s.find((u) => u.isActive)) != null ? h : s[0];
  9072. if (o == null || r == null)
  9073. return false;
  9074. const { segmentId: i } = r, a = o.getUnitId(), c = o.getSelfOrHeaderFooterModel(i).getSnapshot().body;
  9075. if (c == null)
  9076. return false;
  9077. const { tables: A = [] } = c, l = [];
  9078. let d = 0;
  9079. for (const u of A) {
  9080. const { startIndex: g, endIndex: f } = u;
  9081. d !== g && l.push({
  9082. startOffset: d,
  9083. endOffset: g - 1,
  9084. rangeType: Ag.TEXT
  9085. }), l.push({
  9086. startOffset: g + 3,
  9087. // 3 is TABLE_START, ROW_START, CELL_START.
  9088. endOffset: f - 5,
  9089. // 4 is CELL_END, ROW_END, TABLE_END AND \n.
  9090. rangeType: Ag.RECT
  9091. }), d = f;
  9092. }
  9093. return d !== c.dataStream.length - 2 && l.push({
  9094. startOffset: d,
  9095. endOffset: c.dataStream.length - 2,
  9096. rangeType: Ag.TEXT
  9097. }), t.replaceDocRanges(l, {
  9098. unitId: a,
  9099. subUnitId: a
  9100. }, false), true;
  9101. }
  9102. };
  9103. var Ro = class extends J0 {
  9104. constructor(t) {
  9105. super();
  9106. x(this, "_previousActiveRange", null);
  9107. x(this, "_undoMutationParamsCache", []);
  9108. x(this, "_redoMutationParamsCache", []);
  9109. this._context = t;
  9110. }
  9111. clearUndoRedoMutationParamsCache() {
  9112. this._undoMutationParamsCache = [], this._redoMutationParamsCache = [];
  9113. }
  9114. getUndoRedoMutationParamsCache() {
  9115. return {
  9116. undoCache: this._undoMutationParamsCache,
  9117. redoCache: this._redoMutationParamsCache
  9118. };
  9119. }
  9120. setUndoRedoMutationParamsCache({ undoCache: t = [], redoCache: o = [] }) {
  9121. this._undoMutationParamsCache = t, this._redoMutationParamsCache = o;
  9122. }
  9123. getActiveRange() {
  9124. return this._previousActiveRange;
  9125. }
  9126. setActiveRange(t) {
  9127. this._previousActiveRange = t;
  9128. }
  9129. pushUndoRedoMutationParams(t, o) {
  9130. this._undoMutationParamsCache.push(t), this._redoMutationParamsCache.push(o);
  9131. }
  9132. fetchComposedUndoRedoMutationParams() {
  9133. if (this._undoMutationParamsCache.length === 0 || this._previousActiveRange == null || this._redoMutationParamsCache.length === 0)
  9134. return null;
  9135. const { unitId: t } = this._undoMutationParamsCache[0], o = {
  9136. unitId: t,
  9137. actions: this._undoMutationParamsCache.reverse().reduce((r, i) => tn.compose(r, i.actions), null),
  9138. textRanges: []
  9139. // Add empty array, will never use, just fix type error
  9140. };
  9141. return { redoMutationParams: {
  9142. unitId: t,
  9143. actions: this._redoMutationParamsCache.reduce((r, i) => tn.compose(r, i.actions), null),
  9144. textRanges: []
  9145. // Add empty array, will never use, just fix type error
  9146. }, undoMutationParams: o, previousActiveRange: this._previousActiveRange };
  9147. }
  9148. dispose() {
  9149. this._undoMutationParamsCache = [], this._redoMutationParamsCache = [], this._previousActiveRange = null;
  9150. }
  9151. };
  9152. var Ah = BC;
  9153. var Ba = {
  9154. id: "doc.command.ime-input",
  9155. type: ar.COMMAND,
  9156. // eslint-disable-next-line max-lines-per-function
  9157. handler: async (n, e) => {
  9158. var D2, te2, q, V;
  9159. const { unitId: t, newText: o, oldTextLen: s, isCompositionEnd: r, isCompositionStart: i } = e, a = n.get(Pt), c = n.get(Yx), A = n.get(_n), l = n.get(Je), d = (D2 = c.getRenderById(t)) == null ? void 0 : D2.with(Ro), h = A.getUnit(t, Fe.UNIVER_DOC);
  9160. if (h == null || d == null)
  9161. return false;
  9162. const u = d.getActiveRange();
  9163. if (u == null)
  9164. return false;
  9165. const { style: g, segmentId: f } = u, p = h.getSelfOrHeaderFooterModel(f).getBody();
  9166. if (p == null)
  9167. return false;
  9168. Object.assign(u, u);
  9169. const { startOffset: E, endOffset: I } = u, v = o.length, R = [
  9170. {
  9171. startOffset: E + v,
  9172. endOffset: E + v,
  9173. collapsed: true,
  9174. style: g
  9175. }
  9176. ], S = {
  9177. id: M.id,
  9178. params: {
  9179. unitId: t,
  9180. actions: [],
  9181. textRanges: R
  9182. }
  9183. }, C = l.getDefaultStyle(), T = l.getStyleCache(), O = Os((te2 = p.customRanges) != null ? te2 : [], E + s, Ah.includes(t)), P = co(
  9184. (q = p.textRuns) != null ? q : [],
  9185. i ? I : E + s,
  9186. C,
  9187. T
  9188. ), b = Ts((V = p.customDecorations) != null ? V : [], E + s), B = new Ke(), M2 = tn.getInstance();
  9189. if (!u.collapsed && i) {
  9190. const Y = st.selection.delete([u], p, 0, null, false);
  9191. B.push(...Y), S.params.textRanges = [{
  9192. startOffset: E + v,
  9193. endOffset: E + v,
  9194. collapsed: true
  9195. }];
  9196. } else
  9197. B.push({
  9198. t: ce.RETAIN,
  9199. len: E
  9200. });
  9201. s > 0 && B.push({
  9202. t: ce.DELETE,
  9203. len: s
  9204. }), B.push({
  9205. t: ce.INSERT,
  9206. body: {
  9207. dataStream: o,
  9208. textRuns: P ? [{
  9209. ...P,
  9210. st: 0,
  9211. ed: o.length
  9212. }] : [],
  9213. customRanges: O ? [{
  9214. ...O,
  9215. startIndex: 0,
  9216. endIndex: o.length - 1
  9217. }] : [],
  9218. customDecorations: b.map((Y) => ({
  9219. ...Y,
  9220. startIndex: 0,
  9221. endIndex: o.length - 1
  9222. }))
  9223. },
  9224. len: o.length
  9225. });
  9226. const H = le(h, f);
  9227. S.params.actions = M2.editOp(B.serialize(), H), S.params.noHistory = !r, S.params.isCompositionEnd = r;
  9228. const F = a.syncExecuteCommand(S.id, S.params);
  9229. return d.pushUndoRedoMutationParams(F, S.params), !!F;
  9230. }
  9231. };
  9232. var ss = {
  9233. type: ar.COMMAND,
  9234. id: "doc.command.set-zoom-ratio",
  9235. handler: async (n, e) => {
  9236. var d, h, u;
  9237. const t = n.get(Pt), o = n.get(cn), s = n.get(_n);
  9238. let r = (d = s.getCurrentUniverDocInstance()) == null ? void 0 : d.getUnitId();
  9239. if (!r)
  9240. return false;
  9241. let i = 1;
  9242. if (e && (r = (h = e.documentId) != null ? h : r, i = (u = e.zoomRatio) != null ? u : i), !s.getUniverDocInstance(r))
  9243. return false;
  9244. const c = {
  9245. zoomRatio: i,
  9246. unitId: r
  9247. }, A = Kl(n, c);
  9248. return t.syncExecuteCommand(Ye.id, c) ? (o.pushUndoRedo({
  9249. unitID: r,
  9250. undoMutations: [{ id: Ye.id, params: A }],
  9251. redoMutations: [{ id: Ye.id, params: c }]
  9252. }), true) : false;
  9253. }
  9254. };
  9255. var Ma = {
  9256. id: "doc.table.tab-in-table",
  9257. type: ar.COMMAND,
  9258. handler: async (n, e) => {
  9259. var g;
  9260. const { shift: t } = e, o = n.get(m), s = o.getDocRanges(), r = n.get(Pt), a = n.get(_n).getCurrentUniverDocInstance();
  9261. if (!a)
  9262. return false;
  9263. const c = (g = s.find((f) => f.isActive)) != null ? g : s[0], A = a.getUnitId(), l = ke2(n, A), d = l == null ? void 0 : l.getSkeleton(), h = d == null ? void 0 : d.getViewModel().getSelfOrHeaderFooterViewModel(c == null ? void 0 : c.segmentId);
  9264. if (h == null || c == null)
  9265. return false;
  9266. let u = null;
  9267. if (t ? u = Kr(h, c, ts.PREV) : u = Kr(h, c, ts.NEXT), u) {
  9268. const { startOffset: f, endOffset: p } = u, m2 = [{
  9269. startOffset: f,
  9270. endOffset: p
  9271. }];
  9272. return o.replaceDocRanges(m2), true;
  9273. }
  9274. return t === false ? await r.executeCommand(Ia.id, {
  9275. position: Eo.BELLOW
  9276. }) : true;
  9277. }
  9278. };
  9279. var lh = Object.defineProperty;
  9280. var dh = Object.getOwnPropertyDescriptor;
  9281. var uh = (n, e, t, o) => {
  9282. for (var s = o > 1 ? void 0 : o ? dh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9283. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9284. return o && s && lh(e, t, s), s;
  9285. };
  9286. var Ho = (n, e) => (t, o) => e(t, o, n);
  9287. var rs = class {
  9288. constructor(n, e, t) {
  9289. x(this, "_docContainer");
  9290. x(this, "getComponent", (n2) => {
  9291. if (this._docContainer = n2, !n2.getContentRef().current)
  9292. throw new Error("container is not ready");
  9293. });
  9294. x(this, "changeLocale", (n2) => {
  9295. this._localeService.setLocale(n2);
  9296. });
  9297. this._localeService = n, this._injector = e, this._configService = t;
  9298. }
  9299. getUIConfig() {
  9300. return {
  9301. injector: this._injector,
  9302. config: this._configService.getConfig(Us),
  9303. changeLocale: this.changeLocale,
  9304. getComponent: this.getComponent
  9305. };
  9306. }
  9307. getContentRef() {
  9308. return this._docContainer.getContentRef();
  9309. }
  9310. UIDidMount(n) {
  9311. if (this._docContainer)
  9312. return n(this._docContainer);
  9313. }
  9314. getDocContainer() {
  9315. return this._docContainer;
  9316. }
  9317. };
  9318. rs = uh([
  9319. Ho(0, ot(Vr)),
  9320. Ho(1, ot(Ot)),
  9321. Ho(2, SE)
  9322. ], rs);
  9323. var hh = Object.defineProperty;
  9324. var gh = Object.getOwnPropertyDescriptor;
  9325. var fh = (n, e, t, o) => {
  9326. for (var s = o > 1 ? void 0 : o ? gh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9327. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9328. return o && s && hh(e, t, s), s;
  9329. };
  9330. var ph = (n, e) => (t, o) => e(t, o, n);
  9331. var Vn = class extends J0 {
  9332. constructor(e) {
  9333. super();
  9334. x(this, "_docContainerController");
  9335. this._injector = e, this._docContainerController = this._injector.createInstance(rs);
  9336. }
  9337. };
  9338. Vn = fh([
  9339. ph(0, ot(Ot))
  9340. ], Vn);
  9341. var mh = Object.defineProperty;
  9342. var Eh = Object.getOwnPropertyDescriptor;
  9343. var Sh = (n, e, t, o) => {
  9344. for (var s = o > 1 ? void 0 : o ? Eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9345. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9346. return o && s && mh(e, t, s), s;
  9347. };
  9348. var oi = (n, e) => (t, o) => e(t, o, n);
  9349. var jn = class extends nt {
  9350. constructor(n, e) {
  9351. super(), this._docAutoFormatService = n, this._renderManagerService = e, this._initListTabAutoFormat(), this._initListSpaceAutoFormat(), this._initDefaultEnterFormat(), this._initExitListAutoFormat();
  9352. }
  9353. _initListTabAutoFormat() {
  9354. this.disposeWithMe(
  9355. this._docAutoFormatService.registerAutoFormat({
  9356. id: _t.id,
  9357. match: (n) => {
  9358. var s;
  9359. const { selection: e, paragraphs: t, unit: o } = n;
  9360. if (t.length === 1 && e.startOffset === t[0].paragraphStart && t[0].bullet) {
  9361. const r = (s = o.getBody()) == null ? void 0 : s.paragraphs, i = r == null ? void 0 : r.filter((a) => {
  9362. var c;
  9363. return ((c = a.bullet) == null ? void 0 : c.listId) === t[0].bullet.listId;
  9364. });
  9365. return (i == null ? void 0 : i.findIndex((a) => a.startIndex === t[0].startIndex)) !== 0;
  9366. } else if (t.length > 1 && t.some((r) => r.bullet))
  9367. return true;
  9368. return false;
  9369. },
  9370. // traverse all paragraphs, set paragraph
  9371. getMutations(n) {
  9372. const e = n.commandParams;
  9373. return [{
  9374. id: es.id,
  9375. params: {
  9376. type: e != null && e.shift ? Pn.decrease : Pn.increase
  9377. }
  9378. }];
  9379. },
  9380. priority: 100
  9381. })
  9382. ), this.disposeWithMe(
  9383. this._docAutoFormatService.registerAutoFormat({
  9384. id: _t.id,
  9385. match: (n) => {
  9386. const { selection: e, unit: t } = n, { startNodePosition: o, endNodePosition: s } = e, r = this._renderManagerService.getRenderById(t.getUnitId()), i = r == null ? void 0 : r.with(D).getSkeleton();
  9387. return i == null ? false : !!(o && s && zi(i, o, s) || o && !s && o.path.indexOf("cells") > -1);
  9388. },
  9389. getMutations(n) {
  9390. const e = n.commandParams;
  9391. return [{
  9392. id: Ma.id,
  9393. params: {
  9394. shift: !!(e != null && e.shift)
  9395. }
  9396. }];
  9397. },
  9398. priority: 99
  9399. })
  9400. );
  9401. }
  9402. _initListSpaceAutoFormat() {
  9403. this.disposeWithMe(
  9404. this._docAutoFormatService.registerAutoFormat({
  9405. id: Ao.id,
  9406. match: (n) => {
  9407. var r;
  9408. const { selection: e, paragraphs: t, unit: o } = n;
  9409. if (!e.collapsed || t.length !== 1)
  9410. return false;
  9411. const s = (r = o.getBody()) == null ? void 0 : r.dataStream.slice(t[0].paragraphStart, t[0].paragraphEnd - 1);
  9412. return !!(s && Object.keys(ZC).includes(s));
  9413. },
  9414. getMutations(n) {
  9415. var s;
  9416. const { paragraphs: e, unit: t } = n, o = (s = t.getBody()) == null ? void 0 : s.dataStream.slice(e[0].paragraphStart, e[0].paragraphEnd - 1);
  9417. if (o && Object.keys(ZC).includes(o)) {
  9418. const r = ZC[o];
  9419. return [{
  9420. id: da.id,
  9421. params: {
  9422. listType: r,
  9423. paragraph: e[0]
  9424. }
  9425. }];
  9426. }
  9427. return [];
  9428. }
  9429. })
  9430. );
  9431. }
  9432. _initExitListAutoFormat() {
  9433. this.disposeWithMe(
  9434. this._docAutoFormatService.registerAutoFormat({
  9435. id: ln2.id,
  9436. match: (n) => {
  9437. const { paragraphs: e } = n;
  9438. return !!(e.length === 1 && e[0].bullet && e[0].paragraphStart === e[0].paragraphEnd);
  9439. },
  9440. getMutations: (n) => {
  9441. const e = n.paragraphs[0].bullet;
  9442. return e ? e.nestingLevel > 0 ? [{
  9443. id: es.id,
  9444. params: {
  9445. type: Pn.decrease
  9446. }
  9447. }] : [{
  9448. id: pn.id,
  9449. params: {
  9450. listType: n.paragraphs[0].bullet.listType
  9451. }
  9452. }] : [];
  9453. }
  9454. })
  9455. );
  9456. }
  9457. _initDefaultEnterFormat() {
  9458. this.disposeWithMe(
  9459. this._docAutoFormatService.registerAutoFormat({
  9460. id: ln2.id,
  9461. match: () => true,
  9462. getMutations() {
  9463. return [{
  9464. id: Ra2.id
  9465. }];
  9466. },
  9467. priority: -9999
  9468. })
  9469. );
  9470. }
  9471. };
  9472. jn = Sh([
  9473. oi(0, ot(Et)),
  9474. oi(1, Yx)
  9475. ], jn);
  9476. function Ih(n) {
  9477. return n.rows[0].cells[0].sections[0].columns[0].lines[0];
  9478. }
  9479. function Ch(n) {
  9480. const e = n.rows[n.rows.length - 1], t = e.cells[e.cells.length - 1];
  9481. return Mv(t);
  9482. }
  9483. function vh(n, e) {
  9484. const { ed: t } = n, { skeTables: o } = e;
  9485. let s = null;
  9486. for (const r of o.values())
  9487. if (r.st === t + 1) {
  9488. s = r;
  9489. break;
  9490. }
  9491. return s;
  9492. }
  9493. function si(n) {
  9494. const e = n == null ? void 0 : n.parent;
  9495. let t = null, o = null;
  9496. if (n == null || e == null)
  9497. return {
  9498. lineBeforeTable: t,
  9499. lineAfterTable: o
  9500. };
  9501. const { st: s, ed: r } = n, i = e.type === g1.CELL ? [e] : e.parent.pages;
  9502. return l0(i, (a) => {
  9503. a.st === r + 1 ? o = a : a.ed === s - 1 && (t = a);
  9504. }), {
  9505. lineBeforeTable: t,
  9506. lineAfterTable: o
  9507. };
  9508. }
  9509. function _a(n) {
  9510. return n.sections[0].columns[0].lines.length === 0;
  9511. }
  9512. function Pa(n) {
  9513. var i, a;
  9514. const e = n.parent, t = e == null ? void 0 : e.parent, o = t == null ? void 0 : t.tableId;
  9515. if (e == null || t == null)
  9516. return;
  9517. const s = e.cells.indexOf(n);
  9518. let r = t.rows[t.rows.indexOf(e) + 1];
  9519. if (r == null && o.indexOf("#-#")) {
  9520. const [c, A] = o.split("#-#"), l = (a = (i = t.parent) == null ? void 0 : i.parent) == null ? void 0 : a.pages, d = `${c}#-#${Number.parseInt(A) + 1}`;
  9521. if (l)
  9522. for (const h of l) {
  9523. const { skeTables: u } = h;
  9524. if (u.has(d)) {
  9525. const g = u.get(d);
  9526. if (g != null && g.rows.length) {
  9527. r = g.rows.find((f) => !f.isRepeatRow);
  9528. break;
  9529. }
  9530. }
  9531. }
  9532. }
  9533. if (r != null) {
  9534. const c = r.cells[s];
  9535. return _a(c) ? Pa(c) : c;
  9536. }
  9537. }
  9538. function Da(n) {
  9539. var r, i;
  9540. const e = n.parent, t = e == null ? void 0 : e.parent;
  9541. if (e == null || t == null)
  9542. return;
  9543. let o = t.rows[t.rows.indexOf(e) - 1];
  9544. const s = e.cells.indexOf(n);
  9545. if ((o == null || o.isRepeatRow) && t.tableId.indexOf("#-#")) {
  9546. const [a, c] = t.tableId.split("#-#"), A = (i = (r = t.parent) == null ? void 0 : r.parent) == null ? void 0 : i.pages, l = `${a}#-#${Number.parseInt(c) - 1}`;
  9547. if (A)
  9548. for (const d of A) {
  9549. const { skeTables: h } = d;
  9550. if (h.has(l)) {
  9551. const u = h.get(l);
  9552. if (u != null && u.rows.length) {
  9553. o = u.rows[u.rows.length - 1];
  9554. break;
  9555. }
  9556. }
  9557. }
  9558. }
  9559. if (o != null) {
  9560. const a = o.cells[s];
  9561. return _a(a) ? Da(a) : a;
  9562. }
  9563. }
  9564. function Rh(n, e) {
  9565. const { st: t } = n, { skeTables: o } = e;
  9566. let s = null;
  9567. for (const r of o.values())
  9568. if (r.ed === t - 1) {
  9569. s = r;
  9570. break;
  9571. }
  9572. return s;
  9573. }
  9574. function bh(n) {
  9575. return n.sections[0].columns[0].lines[0];
  9576. }
  9577. function xh(n) {
  9578. const e = VS(n);
  9579. return e.lines[e.lines.length - 1];
  9580. }
  9581. var Oh = Object.defineProperty;
  9582. var Th = Object.getOwnPropertyDescriptor;
  9583. var yh = (n, e, t, o) => {
  9584. for (var s = o > 1 ? void 0 : o ? Th(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9585. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9586. return o && s && Oh(e, t, s), s;
  9587. };
  9588. var Rn = (n, e) => (t, o) => e(t, o, n);
  9589. var Wn = class extends nt {
  9590. constructor(e, t, o, s) {
  9591. super();
  9592. x(this, "_onInputSubscription");
  9593. this._univerInstanceService = e, this._renderManagerService = t, this._textSelectionManagerService = o, this._commandService = s, this._commandExecutedListener();
  9594. }
  9595. dispose() {
  9596. var e;
  9597. super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
  9598. }
  9599. _commandExecutedListener() {
  9600. const e = [at.id, ct.id];
  9601. this.disposeWithMe(
  9602. this._commandService.onCommandExecuted((t) => {
  9603. if (!e.includes(t.id))
  9604. return;
  9605. const o = t.params;
  9606. switch (t.id) {
  9607. case at.id:
  9608. return this._handleMoveCursor(o.direction);
  9609. case ct.id:
  9610. return this._handleShiftMoveSelection(o.direction);
  9611. default:
  9612. throw new Error("Unknown command");
  9613. }
  9614. })
  9615. );
  9616. }
  9617. // eslint-disable-next-line max-lines-per-function, complexity
  9618. _handleShiftMoveSelection(e) {
  9619. var I, v, R;
  9620. const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
  9621. if (s == null)
  9622. return;
  9623. const r = (I = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : I.with(D).getSkeleton(), i = this._getDocObject();
  9624. if (t == null || r == null || i == null)
  9625. return;
  9626. const {
  9627. startOffset: a,
  9628. endOffset: c,
  9629. style: A,
  9630. collapsed: l,
  9631. direction: d,
  9632. segmentId: h,
  9633. startNodePosition: u,
  9634. endNodePosition: g,
  9635. segmentPage: f
  9636. } = t;
  9637. if (o.length > 1) {
  9638. let S = Number.POSITIVE_INFINITY, C = Number.NEGATIVE_INFINITY;
  9639. for (const T of o)
  9640. S = Math.min(S, T.startOffset), C = Math.max(C, T.endOffset);
  9641. this._textSelectionManagerService.replaceTextRanges([
  9642. {
  9643. startOffset: e === wu.LEFT || e === wu.UP ? C : S,
  9644. endOffset: e === wu.LEFT || e === wu.UP ? S : C,
  9645. style: A
  9646. }
  9647. ], false);
  9648. return;
  9649. }
  9650. const p = l || d === Sg.FORWARD ? a : c;
  9651. let m2 = l || d === Sg.FORWARD ? c : a;
  9652. const E = (v = s.getSelfOrHeaderFooterModel(h).getBody().dataStream.length) != null ? v : Number.POSITIVE_INFINITY;
  9653. if (e === wu.LEFT || e === wu.RIGHT) {
  9654. const S = r.findNodeByCharIndex(m2 - 1, h, f), C = r.findNodeByCharIndex(m2, h, f);
  9655. m2 = e === wu.RIGHT ? m2 + C.count : m2 - ((R = S == null ? void 0 : S.count) != null ? R : 0), m2 = Math.min(E - 2, Math.max(0, m2)), this._textSelectionManagerService.replaceTextRanges([
  9656. {
  9657. startOffset: p,
  9658. endOffset: m2,
  9659. style: A
  9660. }
  9661. ], false), this._scrollToFocusNodePosition(s.getUnitId(), m2);
  9662. } else {
  9663. const S = r.findNodeByCharIndex(m2, h, f), C = i.document.getOffsetConfig(), T = l ? u : d === Sg.FORWARD ? g : u, O = this._getTopOrBottomPosition(r, S, T, e === wu.DOWN, true);
  9664. if (O == null) {
  9665. const b = e === wu.UP ? 0 : E - 2;
  9666. if (b === m2)
  9667. return;
  9668. this._textSelectionManagerService.replaceTextRanges([
  9669. {
  9670. startOffset: p,
  9671. endOffset: b,
  9672. style: A
  9673. }
  9674. ], false);
  9675. return;
  9676. }
  9677. const P = new it2(C, r).getRangePointData(
  9678. O,
  9679. O
  9680. ).cursorList[0];
  9681. this._textSelectionManagerService.replaceTextRanges([
  9682. {
  9683. startOffset: p,
  9684. endOffset: P.endOffset,
  9685. style: A
  9686. }
  9687. ], false), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
  9688. }
  9689. }
  9690. // eslint-disable-next-line max-lines-per-function, complexity
  9691. _handleMoveCursor(e) {
  9692. var E, I, v, R;
  9693. const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
  9694. if (s == null)
  9695. return false;
  9696. const r = (E = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : E.with(D).getSkeleton(), i = this._getDocObject();
  9697. if (t == null || r == null || i == null || o == null)
  9698. return;
  9699. const { startOffset: a, endOffset: c, style: A, collapsed: l, segmentId: d, startNodePosition: h, endNodePosition: u, segmentPage: g } = t, f = s.getSelfOrHeaderFooterModel(d).getBody();
  9700. if (f == null)
  9701. return;
  9702. const p = (I = f.dataStream.length) != null ? I : Number.POSITIVE_INFINITY, m2 = (v = s.getCustomRanges()) != null ? v : [];
  9703. if (e === wu.LEFT || e === wu.RIGHT) {
  9704. let S;
  9705. if (!t.collapsed || o.length > 1) {
  9706. let O = Number.POSITIVE_INFINITY, P = Number.NEGATIVE_INFINITY;
  9707. for (const b of o)
  9708. O = Math.min(O, b.startOffset), P = Math.max(P, b.endOffset);
  9709. S = e === wu.LEFT ? O : P;
  9710. } else {
  9711. const O = r.findNodeByCharIndex(a - 1, d, g), P = r.findNodeByCharIndex(a, d, g), b = r.findNodeByCharIndex(a + 1, d, g);
  9712. e === wu.LEFT ? S = Math.max(0, a - ((R = O == null ? void 0 : O.count) != null ? R : 1)) : S = Math.min(p - 2, c + P.count + ((b == null ? void 0 : b.streamType) === ln.SECTION_BREAK ? 1 : 0));
  9713. }
  9714. const C = [
  9715. ln.TABLE_START,
  9716. ln.TABLE_END,
  9717. ln.TABLE_ROW_START,
  9718. ln.TABLE_ROW_END,
  9719. ln.TABLE_CELL_START,
  9720. ln.TABLE_CELL_END,
  9721. ln.SECTION_BREAK
  9722. ];
  9723. if (e === wu.LEFT)
  9724. for (; C.includes(f.dataStream[S]); )
  9725. S--;
  9726. else
  9727. for (; C.includes(f.dataStream[S]); )
  9728. S++;
  9729. m2.filter((O) => O.wholeEntity && O.startIndex < S && O.endIndex >= S).forEach((O) => {
  9730. e === wu.LEFT ? S = Math.min(O.startIndex, S) : S = Math.max(O.endIndex + 1, S);
  9731. }), this._textSelectionManagerService.replaceTextRanges([
  9732. {
  9733. startOffset: Math.max(0, S),
  9734. endOffset: Math.max(0, S),
  9735. style: A
  9736. }
  9737. ], false), this._scrollToFocusNodePosition(s.getUnitId(), S);
  9738. } else {
  9739. const S = r.findNodeByCharIndex(a, d, g), C = r.findNodeByCharIndex(c, d, g), T = i.document.getOffsetConfig(), O = this._getTopOrBottomPosition(
  9740. r,
  9741. e === wu.UP || l ? S : C,
  9742. e === wu.UP || l ? h : u,
  9743. e === wu.DOWN
  9744. );
  9745. if (O == null) {
  9746. let b;
  9747. l ? b = e === wu.UP ? 0 : p - 2 : b = e === wu.UP ? a : c, this._textSelectionManagerService.replaceTextRanges([
  9748. {
  9749. startOffset: Math.max(0, b),
  9750. endOffset: Math.max(0, b),
  9751. style: A
  9752. }
  9753. ], false);
  9754. return;
  9755. }
  9756. const P = new it2(T, r).getRangePointData(
  9757. O,
  9758. O
  9759. ).cursorList[0];
  9760. this._textSelectionManagerService.replaceTextRanges([
  9761. {
  9762. ...P,
  9763. style: A
  9764. }
  9765. ], false), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
  9766. }
  9767. }
  9768. _getTopOrBottomPosition(e, t, o, s, r = false) {
  9769. if (t == null || o == null)
  9770. return;
  9771. const i = this._getGlyphLeftOffsetInLine(t), a = this._getNextOrPrevLine(t, s, r);
  9772. if (a == null)
  9773. return;
  9774. const c = this._matchPositionByLeftOffset(e, a, i, o);
  9775. if (c != null)
  9776. return { ...c, isBack: true };
  9777. }
  9778. _getGlyphLeftOffsetInLine(e) {
  9779. const t = e.parent;
  9780. if (t == null)
  9781. return Number.NEGATIVE_INFINITY;
  9782. const o = t.left, { left: s } = e;
  9783. return o + s;
  9784. }
  9785. _matchPositionByLeftOffset(e, t, o, s) {
  9786. const r = {
  9787. distance: Number.POSITIVE_INFINITY
  9788. };
  9789. for (const a of t.divides) {
  9790. const c = a.left;
  9791. for (const A of a.glyphGroup) {
  9792. if (A.streamType === ln.SECTION_BREAK)
  9793. continue;
  9794. const { left: l } = A, d = c + l, h = Math.abs(o - d);
  9795. h < r.distance && (r.glyph = A, r.distance = h);
  9796. }
  9797. }
  9798. if (r.glyph == null)
  9799. return;
  9800. const { segmentPage: i } = s;
  9801. return e.findPositionByGlyph(r.glyph, i);
  9802. }
  9803. // eslint-disable-next-line max-lines-per-function, complexity
  9804. _getNextOrPrevLine(e, t, o = false) {
  9805. var f, p, m2, E, I, v, R, S, C, T, O, P;
  9806. const s = e.parent, r = s == null ? void 0 : s.parent, i = r == null ? void 0 : r.parent, a = i == null ? void 0 : i.parent, c = a == null ? void 0 : a.parent;
  9807. if (s == null || r == null || i == null || a == null || c == null)
  9808. return;
  9809. const A = i.lines.indexOf(r);
  9810. if (A === -1)
  9811. return;
  9812. let l;
  9813. if (c.type === g1.CELL && o) {
  9814. const b = ri(c, t);
  9815. if (b)
  9816. return b;
  9817. }
  9818. if (t === true) {
  9819. l = i.lines[A + 1];
  9820. const b = vh(r, c);
  9821. if (b) {
  9822. const B = Ih(b);
  9823. B && (l = B);
  9824. }
  9825. } else {
  9826. l = i.lines[A - 1];
  9827. const b = Rh(r, c);
  9828. if (b) {
  9829. const B = Ch(b);
  9830. B && (l = B);
  9831. }
  9832. }
  9833. if (l != null)
  9834. return l;
  9835. const d = a.columns.indexOf(i);
  9836. if (d === -1)
  9837. return;
  9838. if (t === true)
  9839. l = (f = a.columns[d + 1]) == null ? void 0 : f.lines[0];
  9840. else {
  9841. const b = (m2 = (p = a.columns) == null ? void 0 : p[d - 1]) == null ? void 0 : m2.lines;
  9842. l = b == null ? void 0 : b[b.length - 1];
  9843. }
  9844. if (l != null)
  9845. return l;
  9846. const h = c.sections.indexOf(a);
  9847. if (h === -1)
  9848. return;
  9849. if (t === true)
  9850. l = (I = (E = c.sections[h - 1]) == null ? void 0 : E.columns[0]) == null ? void 0 : I.lines[0];
  9851. else {
  9852. const b = (R = (v = c.sections) == null ? void 0 : v[h - 1]) == null ? void 0 : R.columns, B = b == null ? void 0 : b[b.length - 1], M2 = B == null ? void 0 : B.lines;
  9853. l = M2 == null ? void 0 : M2[M2.length - 1];
  9854. }
  9855. if (l != null)
  9856. return l;
  9857. if (c.type === g1.CELL)
  9858. return ri(c, t);
  9859. const u = c.parent;
  9860. if (u == null)
  9861. return;
  9862. const g = u.pages.indexOf(c);
  9863. if (g !== -1) {
  9864. if (t === true)
  9865. l = (T = (C = (S = u.pages[g + 1]) == null ? void 0 : S.sections[0]) == null ? void 0 : C.columns[0]) == null ? void 0 : T.lines[0];
  9866. else {
  9867. const b = (O = u.pages[g - 1]) == null ? void 0 : O.sections;
  9868. if (b == null)
  9869. return;
  9870. const B = (P = b[b.length - 1]) == null ? void 0 : P.columns, M2 = B[B.length - 1], H = M2 == null ? void 0 : M2.lines;
  9871. l = H[H.length - 1];
  9872. }
  9873. if (l != null)
  9874. return l;
  9875. }
  9876. }
  9877. _scrollToFocusNodePosition(e, t) {
  9878. var s;
  9879. const o = (s = this._renderManagerService.getRenderById(e)) == null ? void 0 : s.with(kn);
  9880. o != null && o.scrollToRange({
  9881. startOffset: t,
  9882. endOffset: t,
  9883. collapsed: true
  9884. });
  9885. }
  9886. _getDocObject() {
  9887. return cA(this._univerInstanceService, this._renderManagerService);
  9888. }
  9889. };
  9890. Wn = yh([
  9891. Rn(0, _n),
  9892. Rn(1, Yx),
  9893. Rn(2, ot(m)),
  9894. Rn(3, Pt)
  9895. ], Wn);
  9896. function ri(n, e) {
  9897. var o, s;
  9898. let t = null;
  9899. if (e === true) {
  9900. const r = Pa(n);
  9901. if (r)
  9902. t = bh(r);
  9903. else {
  9904. const i = (o = n.parent) == null ? void 0 : o.parent, { lineAfterTable: a } = si(i);
  9905. a && (t = a);
  9906. }
  9907. } else {
  9908. const r = Da(n);
  9909. if (r)
  9910. t = xh(r);
  9911. else {
  9912. const i = (s = n.parent) == null ? void 0 : s.parent, { lineBeforeTable: a } = si(i);
  9913. a && (t = a);
  9914. }
  9915. }
  9916. return t;
  9917. }
  9918. var Bh = "univer-create";
  9919. var Mh = "univer-create-item";
  9920. var _h = "univer-create-label";
  9921. var Ph = "univer-create-input";
  9922. var gt2 = {
  9923. create: Bh,
  9924. createItem: Mh,
  9925. createLabel: _h,
  9926. createInput: Ph
  9927. };
  9928. var Dh = ({
  9929. handleRowColChange: n,
  9930. tableCreateParams: e
  9931. }) => {
  9932. const t = W0(Vr), [o, s] = (0, import_react.useState)(3), [r, i] = (0, import_react.useState)(5);
  9933. function a(c, A) {
  9934. s(c), i(A), n(c, A);
  9935. }
  9936. return (0, import_react.useEffect)(() => {
  9937. s(e.rowCount), i(e.colCount);
  9938. }, [e]), w.jsxs("div", { className: gt2.create, children: [
  9939. w.jsxs("div", { className: gt2.createItem, children: [
  9940. w.jsx("span", { className: gt2.createLabel, children: t.t("toolbar.table.rowCount") }),
  9941. w.jsx(
  9942. BO,
  9943. {
  9944. min: 1,
  9945. max: 20,
  9946. precision: 0,
  9947. value: o,
  9948. onChange: (c) => {
  9949. a(c, r);
  9950. },
  9951. className: gt2.createInput
  9952. }
  9953. )
  9954. ] }),
  9955. w.jsxs("div", { className: gt2.createItem, children: [
  9956. w.jsx("span", { className: gt2.createLabel, children: t.t("toolbar.table.colCount") }),
  9957. w.jsx(
  9958. BO,
  9959. {
  9960. min: 1,
  9961. max: 20,
  9962. precision: 0,
  9963. value: r,
  9964. onChange: (c) => {
  9965. a(o, c);
  9966. },
  9967. className: gt2.createInput
  9968. }
  9969. )
  9970. ] })
  9971. ] });
  9972. };
  9973. var wh = Object.defineProperty;
  9974. var Nh = Object.getOwnPropertyDescriptor;
  9975. var Qh = (n, e, t, o) => {
  9976. for (var s = o > 1 ? void 0 : o ? Nh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9977. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9978. return o && s && wh(e, t, s), s;
  9979. };
  9980. var ii = (n, e) => (t, o) => e(t, o, n);
  9981. var zn = class extends nt {
  9982. constructor(n, e) {
  9983. super(), this._commandService = n, this._componentManager = e, this._initialize();
  9984. }
  9985. _initialize() {
  9986. this._init(), this._registerCommands(), this._initCustomComponents();
  9987. }
  9988. _registerCommands() {
  9989. [
  9990. sr
  9991. ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
  9992. }
  9993. _initCustomComponents() {
  9994. const n = this._componentManager;
  9995. this.disposeWithMe(n.register(Ca, Dh));
  9996. }
  9997. _init() {
  9998. }
  9999. };
  10000. zn = Qh([
  10001. ii(0, Pt),
  10002. ii(1, ot(n1))
  10003. ], zn);
  10004. var ai = 4;
  10005. var Uh = Object.defineProperty;
  10006. var Lh = Object.getOwnPropertyDescriptor;
  10007. var Fh = (n, e, t, o) => {
  10008. for (var s = o > 1 ? void 0 : o ? Lh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10009. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10010. return o && s && Uh(e, t, s), s;
  10011. };
  10012. var bn = (n, e) => (t, o) => e(t, o, n);
  10013. function wa(n, e) {
  10014. const t = ci(n.left, n.top, e), o = ci(n.right, n.bottom, e);
  10015. return {
  10016. left: t.x,
  10017. top: t.y,
  10018. right: o.x,
  10019. bottom: o.y
  10020. };
  10021. }
  10022. function ci(n, e, t) {
  10023. const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
  10024. if (!r)
  10025. return {
  10026. x: n,
  10027. y: e
  10028. };
  10029. const { viewportScrollX: i, viewportScrollY: a } = r, c = (n - i) * o, A = (e - a) * s;
  10030. return {
  10031. x: c,
  10032. y: A
  10033. };
  10034. }
  10035. function Ai(n, e, t) {
  10036. const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
  10037. if (!r)
  10038. return {
  10039. x: n,
  10040. y: e
  10041. };
  10042. const { viewportScrollX: i, viewportScrollY: a } = r, c = n / o + i, A = e / s + a;
  10043. return {
  10044. x: c,
  10045. y: A
  10046. };
  10047. }
  10048. var ko = (n, e) => {
  10049. const { scene: t, mainComponent: o, engine: s } = e, r = e.with(D).getSkeleton(), i = r.findNodePositionByCharIndex(n.startOffset, true, n.segmentId, n.segmentPage), a = r.findNodePositionByCharIndex(n.endOffset, true, n.segmentId, n.segmentPage), c = o;
  10050. if (!a || !i)
  10051. return;
  10052. const A = c.getOffsetConfig(), { docsLeft: l, docsTop: d } = A, h = s.getCanvasElement(), u = h.getBoundingClientRect(), g = w3(h.style.width), { top: f, left: p, width: m2 } = u, E = m2 / g, { scaleX: I, scaleY: v } = t.getAncestorScale(), R = new it2(A, r), { borderBoxPointGroup: S } = R.getRangePointData(i, a);
  10053. return Bs(S).map((O) => wa(O, t)).map((O) => ({
  10054. left: (O.left + l * I) * E + p,
  10055. right: (O.right + l * I) * E + p,
  10056. top: (O.top + d * v) * E + f,
  10057. bottom: (O.bottom + d * v) * E + f
  10058. }));
  10059. };
  10060. var is = class extends nt {
  10061. constructor(n, e, t, o) {
  10062. super(), this._globalPopupManagerService = n, this._renderManagerService = e, this._univerInstanceService = t, this._commandService = o;
  10063. }
  10064. _createObjectPositionObserver(n, e) {
  10065. const t = () => {
  10066. const { scene: a, engine: c } = e, { left: A, top: l, width: d, height: h } = n, u = {
  10067. left: A,
  10068. right: A + d,
  10069. top: l,
  10070. bottom: l + h
  10071. }, g = c.getCanvasElement(), f = g.getBoundingClientRect(), p = w3(g.style.width), m2 = wa(u, a), { top: E, left: I, width: v } = f, R = v / p;
  10072. return {
  10073. left: m2.left * R + I,
  10074. right: m2.right * R + I,
  10075. top: m2.top * R + E,
  10076. bottom: m2.bottom * R + E
  10077. };
  10078. }, o = t(), s = new BehaviorSubject(o), r = new Mi();
  10079. r.add(this._commandService.onCommandExecuted((a) => {
  10080. if (a.id === Ye.id || a.id === M.id) {
  10081. const c = t();
  10082. c && s.next(c);
  10083. }
  10084. }));
  10085. const i = e.scene.getViewport(Xe.VIEW_MAIN);
  10086. return i && r.add(i.onScrollAfter$.subscribeEvent(() => {
  10087. s.next(t());
  10088. })), {
  10089. position: o,
  10090. position$: s,
  10091. disposable: r
  10092. };
  10093. }
  10094. _createRangePositionObserver(n, e) {
  10095. var i;
  10096. const t = (i = ko(n, e)) != null ? i : [], o = new BehaviorSubject(t), s = new Mi();
  10097. s.add(this._commandService.onCommandExecuted((a) => {
  10098. if ((a.id === Ye.id || a.id === M.id) && a.params.unitId === e.unitId) {
  10099. const A = ko(n, e);
  10100. A && o.next(A);
  10101. }
  10102. }));
  10103. const r = e.scene.getViewport(Xe.VIEW_MAIN);
  10104. return r && s.add(r.onScrollAfter$.subscribeEvent(() => {
  10105. const a = ko(n, e);
  10106. a && o.next(a);
  10107. })), {
  10108. positions: t,
  10109. positions$: o,
  10110. disposable: s
  10111. };
  10112. }
  10113. // #region attach to object
  10114. /**
  10115. * attach a popup to canvas object
  10116. * @param targetObject target canvas object
  10117. * @param popup popup item
  10118. * @returns disposable
  10119. */
  10120. attachPopupToObject(n, e, t) {
  10121. const o = this._renderManagerService.getRenderById(t);
  10122. if (!o)
  10123. throw new Error(`Current render not found, unitId: ${t}`);
  10124. const { position: s, position$: r, disposable: i } = this._createObjectPositionObserver(n, o), a = this._globalPopupManagerService.addPopup({
  10125. ...e,
  10126. unitId: t,
  10127. subUnitId: "default",
  10128. anchorRect: s,
  10129. anchorRect$: r,
  10130. canvasElement: o.engine.getCanvasElement()
  10131. });
  10132. return {
  10133. dispose: () => {
  10134. this._globalPopupManagerService.removePopup(a), r.complete(), i.dispose();
  10135. }
  10136. };
  10137. }
  10138. // #endregion
  10139. // #region attach to range
  10140. /**
  10141. * attach a popup to doc range
  10142. * @param range doc range
  10143. * @param popup popup item
  10144. * @param unitId unit id
  10145. * @returns disposable
  10146. */
  10147. attachPopupToRange(n, e, t) {
  10148. if (!this._univerInstanceService.getUnit(t))
  10149. throw new Error(`Document not found, unitId: ${t}`);
  10150. const { direction: s = "top", multipleDirection: r } = e, i = this._renderManagerService.getRenderById(t);
  10151. if (!i)
  10152. throw new Error(`Current render not found, unitId: ${t}`);
  10153. const { positions: a, positions$: c, disposable: A } = this._createRangePositionObserver(n, i), l = c.pipe(map((h) => s.includes("top") ? h[0] : h[h.length - 1])), d = this._globalPopupManagerService.addPopup({
  10154. ...e,
  10155. unitId: t,
  10156. subUnitId: "default",
  10157. anchorRect: s.includes("top") ? a[0] : a[a.length - 1],
  10158. anchorRect$: l,
  10159. excludeRects: a,
  10160. excludeRects$: c,
  10161. direction: s.includes("top") || s.includes("bottom") ? a.length > 1 ? r : s : "bottom",
  10162. canvasElement: i.engine.getCanvasElement()
  10163. });
  10164. return {
  10165. dispose: () => {
  10166. this._globalPopupManagerService.removePopup(d), c.complete(), A.dispose();
  10167. },
  10168. canDispose: () => this._globalPopupManagerService.activePopupId !== d
  10169. };
  10170. }
  10171. // #endregion
  10172. };
  10173. is = Fh([
  10174. bn(0, ot(c3)),
  10175. bn(1, Yx),
  10176. bn(2, _n),
  10177. bn(3, Pt)
  10178. ], is);
  10179. var Hh = Object.defineProperty;
  10180. var kh = Object.getOwnPropertyDescriptor;
  10181. var Vh = (n, e, t, o) => {
  10182. for (var s = o > 1 ? void 0 : o ? kh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10183. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10184. return o && s && Hh(e, t, s), s;
  10185. };
  10186. var jh = (n, e) => (t, o) => e(t, o, n);
  10187. var Wh = (n, e, t, o) => {
  10188. var h, u, g, f, p;
  10189. const s = t.findNodePositionByCharIndex(n.startOffset, true, n.segmentId, o), r = t.getSkeletonData();
  10190. let i = n.endOffset;
  10191. if (n.segmentId) {
  10192. const m2 = (p = Array.from((u = (h = r == null ? void 0 : r.skeFooters.get(n.segmentId)) == null ? void 0 : h.values()) != null ? u : [])[0]) != null ? p : Array.from((f = (g = r == null ? void 0 : r.skeHeaders.get(n.segmentId)) == null ? void 0 : g.values()) != null ? f : [])[0];
  10193. m2 && (i = Math.min(m2.ed, i));
  10194. }
  10195. const a = t.findNodePositionByCharIndex(i, true, n.segmentId, o);
  10196. if (!a || !s)
  10197. return;
  10198. const c = e.getOffsetConfig(), A = new it2(c, t), { borderBoxPointGroup: l } = A.getRangePointData(s, a);
  10199. return Bs(l).map((m2) => ({
  10200. top: m2.top + c.docsTop - ai,
  10201. bottom: m2.bottom + c.docsTop + ai,
  10202. left: m2.left + c.docsLeft,
  10203. right: m2.right + c.docsLeft
  10204. }));
  10205. };
  10206. var zh = (n, e, t, o = -1) => {
  10207. const s = t.findPositionByGlyph(n, o);
  10208. if (!s)
  10209. return;
  10210. const r = e.getOffsetConfig(), i = { ...s, isBack: true }, a = new it2(r, t), { borderBoxPointGroup: c } = a.getRangePointData(i, i), l = Bs(c)[0];
  10211. return {
  10212. top: l.top + r.docsTop,
  10213. bottom: l.bottom + r.docsTop,
  10214. left: l.left + r.docsLeft,
  10215. right: l.left + r.docsLeft + n.width
  10216. };
  10217. };
  10218. var Gn = class extends nt {
  10219. constructor(e, t) {
  10220. super();
  10221. x(this, "_hoverCustomRanges$", new BehaviorSubject([]));
  10222. x(this, "hoverCustomRanges$", this._hoverCustomRanges$.pipe(distinctUntilChanged((e2, t2) => e2.length === t2.length && e2.every((o, s) => t2[s].range.rangeId === o.range.rangeId && t2[s].segmentId === o.segmentId && t2[s].segmentPageIndex === o.segmentPageIndex && t2[s].range.startIndex === o.range.startIndex))));
  10223. x(this, "_clickCustomRanges$", new Subject());
  10224. x(this, "clickCustomRanges$", this._clickCustomRanges$.asObservable());
  10225. x(this, "_hoverBullet$", new Subject());
  10226. x(this, "hoverBullet$", this._hoverBullet$.pipe(distinctUntilChanged((e2, t2) => (e2 == null ? void 0 : e2.paragraph.startIndex) === (t2 == null ? void 0 : t2.paragraph.startIndex) && (e2 == null ? void 0 : e2.segmentId) === (t2 == null ? void 0 : t2.segmentId) && (e2 == null ? void 0 : e2.segmentPageIndex) === (t2 == null ? void 0 : t2.segmentPageIndex))));
  10227. x(this, "_clickBullet$", new Subject());
  10228. x(this, "clickBullets$", this._clickBullet$.asObservable());
  10229. x(this, "_customRangeDirty", true);
  10230. x(this, "_bulletDirty", true);
  10231. x(this, "_customRangeBounds", []);
  10232. x(this, "_bulletBounds", []);
  10233. this._context = e, this._docSkeletonManagerService = t, this._initResetDirty(), this._initEvents(), this._initPointer();
  10234. }
  10235. get _skeleton() {
  10236. return this._docSkeletonManagerService.getSkeleton();
  10237. }
  10238. get _documents() {
  10239. return this._context.mainComponent;
  10240. }
  10241. dispose() {
  10242. this._hoverCustomRanges$.complete(), this._clickCustomRanges$.complete(), super.dispose();
  10243. }
  10244. _initPointer() {
  10245. let e = p1.TEXT;
  10246. this.disposeWithMe(this.hoverCustomRanges$.subscribe((t) => {
  10247. t.length ? (e = this._context.scene.getCursor(), this._context.scene.setCursor(p1.POINTER)) : this._context.scene.setCursor(e);
  10248. }));
  10249. }
  10250. _initResetDirty() {
  10251. this.disposeWithMe(this._skeleton.dirty$.subscribe(() => {
  10252. this._customRangeDirty = true, this._bulletDirty = true;
  10253. })), this.disposeWithMe(
  10254. DR(this._context.engine.onTransformChange$).pipe(
  10255. filter((e) => e.type === C1.resize)
  10256. ).subscribe(() => {
  10257. this._customRangeDirty = true, this._bulletDirty = true;
  10258. })
  10259. );
  10260. }
  10261. _initEvents() {
  10262. this.disposeWithMe(DR(this._context.scene.onPointerMove$).pipe(throttleTime(30)).subscribe((o) => {
  10263. this._hoverCustomRanges$.next(
  10264. this._calcActiveRanges(o)
  10265. ), this._hoverBullet$.next(
  10266. this._calcActiveBullet(o)
  10267. );
  10268. })), this.disposeWithMe(this._context.scene.onPointerEnter$.subscribeEvent(() => {
  10269. this._hoverBullet$.next(null), this._hoverCustomRanges$.next([]);
  10270. }));
  10271. const e = DR(this._context.mainComponent.onPointerDown$), t = DR(this._context.scene.onPointerUp$);
  10272. this.disposeWithMe(e.pipe(
  10273. switchMap((o) => t.pipe(take(1), map((s) => ({ down: o, up: s })))),
  10274. filter(({ down: o, up: s }) => o.target === s.target && s.timeStamp - o.timeStamp < 300)
  10275. // filter(({ down, up }) => down.offsetX === up.offsetX && down.offsetY === up.offsetY)
  10276. ).subscribe(({ down: o }) => {
  10277. if (o.button === 2)
  10278. return;
  10279. const s = this._calcActiveRanges(o);
  10280. s.length && this._clickCustomRanges$.next(s.pop());
  10281. const r = this._calcActiveBullet(o);
  10282. r && this._clickBullet$.next(r);
  10283. }));
  10284. }
  10285. _buildCustomRangeBoundsBySegment(e, t = -1) {
  10286. var r, i, a;
  10287. const o = (a = (i = (r = this._context.unit.getSelfOrHeaderFooterModel(e)) == null ? void 0 : r.getBody()) == null ? void 0 : i.customRanges) != null ? a : [], s = [];
  10288. return o.forEach((c) => {
  10289. const A = {
  10290. startOffset: c.startIndex,
  10291. endOffset: c.endIndex + 1,
  10292. collapsed: false,
  10293. segmentId: e
  10294. }, l = Wh(A, this._documents, this._skeleton, t);
  10295. if (!l)
  10296. return null;
  10297. s.push({
  10298. customRange: c,
  10299. rects: l,
  10300. segmentId: e,
  10301. segmentPageIndex: t
  10302. });
  10303. }), s;
  10304. }
  10305. _buildCustomRangeBounds() {
  10306. var t;
  10307. if (!this._customRangeDirty)
  10308. return;
  10309. this._customRangeDirty = false;
  10310. const e = [];
  10311. e.push(...this._buildCustomRangeBoundsBySegment()), (t = this._skeleton.getSkeletonData()) == null || t.pages.forEach((o, s) => {
  10312. o.headerId && e.push(...this._buildCustomRangeBoundsBySegment(o.headerId, s)), o.footerId && e.push(...this._buildCustomRangeBoundsBySegment(o.footerId, s));
  10313. }), this._customRangeBounds = e;
  10314. }
  10315. _calcActiveRanges(e) {
  10316. this._buildCustomRangeBounds();
  10317. const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
  10318. return this._customRangeBounds.filter((a) => a.rects.some((c) => {
  10319. const { left: A, right: l, top: d, bottom: h } = c;
  10320. return s >= A && s <= l && r >= d && r <= h;
  10321. })).map(
  10322. (a) => ({
  10323. segmentId: a.segmentId,
  10324. range: a.customRange,
  10325. segmentPageIndex: a.segmentPageIndex,
  10326. rects: a.rects
  10327. })
  10328. );
  10329. }
  10330. _buildBulletBoundsBySegment(e, t = -1) {
  10331. var c, A, l, d, h;
  10332. const o = (c = this._context.unit.getSelfOrHeaderFooterModel(e)) == null ? void 0 : c.getBody(), s = ((A = o == null ? void 0 : o.paragraphs) != null ? A : []).filter((u) => u.bullet && u.bullet.listType.indexOf("CHECK_LIST") === 0), r = [], i = this._skeleton.getSkeletonData();
  10333. if (!i)
  10334. return r;
  10335. const a = (u) => {
  10336. var g, f, p;
  10337. for (const m2 of u) {
  10338. const E = [...m2.sections];
  10339. if (m2.skeTables) {
  10340. const I = Array.from(m2.skeTables.values());
  10341. E.push(...I.map((v) => v.rows.map((R) => R.cells.map((S) => S.sections))).flat(4));
  10342. }
  10343. for (const I of E)
  10344. for (const v of I.columns)
  10345. for (const R of v.lines)
  10346. if (R.paragraphStart) {
  10347. const S = s.find((C) => C.startIndex === R.paragraphIndex);
  10348. if (S) {
  10349. const C = R, T = (p = (f = (g = C == null ? void 0 : C.divides) == null ? void 0 : g[0]) == null ? void 0 : f.glyphGroup) == null ? void 0 : p[0];
  10350. if (!T)
  10351. continue;
  10352. const O = zh(T, this._documents, this._skeleton, t);
  10353. if (!O)
  10354. continue;
  10355. r.push({
  10356. rect: O,
  10357. segmentId: e,
  10358. segmentPageIndex: t,
  10359. paragraph: S
  10360. });
  10361. }
  10362. }
  10363. }
  10364. return r;
  10365. };
  10366. if (e) {
  10367. const u = (h = (l = i.skeFooters.get(e)) == null ? void 0 : l.values()) != null ? h : (d = i.skeHeaders.get(e)) == null ? void 0 : d.values();
  10368. return u ? a(Array.from(u)) : r;
  10369. }
  10370. return a(i.pages);
  10371. }
  10372. _buildBulletBounds() {
  10373. var e;
  10374. this._bulletDirty && (this._bulletDirty = false, this._bulletBounds = [], this._bulletBounds.push(...this._buildBulletBoundsBySegment()), (e = this._skeleton.getSkeletonData()) == null || e.pages.forEach((t, o) => {
  10375. t.headerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.headerId, o)), t.footerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.footerId, o));
  10376. }));
  10377. }
  10378. _calcActiveBullet(e) {
  10379. this._buildBulletBounds();
  10380. const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
  10381. return this._bulletBounds.find((a) => {
  10382. const { left: c, right: A, top: l, bottom: d } = a.rect;
  10383. return s >= c && s <= A && r >= l && r <= d;
  10384. });
  10385. }
  10386. };
  10387. Gn = Vh([
  10388. jh(1, ot(D))
  10389. ], Gn);
  10390. var Gh = Object.defineProperty;
  10391. var Yh = Object.getOwnPropertyDescriptor;
  10392. var qh = (n, e, t, o) => {
  10393. for (var s = o > 1 ? void 0 : o ? Yh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10394. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10395. return o && s && Gh(e, t, s), s;
  10396. };
  10397. var xn = (n, e) => (t, o) => e(t, o, n);
  10398. var as = class extends nt {
  10399. constructor(n, e, t, o, s) {
  10400. super(), this._context = n, this._docSkeletonManagerService = e, this._commandService = t, this._docEventManagerService = o, this._textSelectionManagerService = s, this._initPointerDownObserver(), this._initHoverCursor();
  10401. }
  10402. _initPointerDownObserver() {
  10403. this._docEventManagerService.clickBullets$.subscribe((n) => {
  10404. const e = this._textSelectionManagerService.getTextRanges();
  10405. this._commandService.executeCommand(Ns.id, {
  10406. index: n.paragraph.startIndex,
  10407. segmentId: n.segmentId,
  10408. textRanges: e
  10409. });
  10410. });
  10411. }
  10412. _initHoverCursor() {
  10413. this.disposeWithMe(
  10414. this._docEventManagerService.hoverBullet$.subscribe((n) => {
  10415. n ? this._context.mainComponent.setCursor(p1.POINTER) : this._context.mainComponent.setCursor(p1.TEXT);
  10416. })
  10417. );
  10418. }
  10419. _getTransformCoordForDocumentOffset(n, e, t, o) {
  10420. const { documentTransform: s } = n.getOffsetConfig(), r = e.transformVector2SceneCoord($.FromArray([t, o]));
  10421. if (r)
  10422. return s.clone().invert().applyPoint(r);
  10423. }
  10424. };
  10425. as = qh([
  10426. xn(1, ot(D)),
  10427. xn(2, Pt),
  10428. xn(3, ot(Gn)),
  10429. xn(4, ot(m))
  10430. ], as);
  10431. var Kh = Object.defineProperty;
  10432. var Xh = Object.getOwnPropertyDescriptor;
  10433. var Jh = (n, e, t, o) => {
  10434. for (var s = o > 1 ? void 0 : o ? Xh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10435. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10436. return o && s && Kh(e, t, s), s;
  10437. };
  10438. var Zt = (n, e) => (t, o) => e(t, o, n);
  10439. var Yn = class extends J0 {
  10440. constructor(n, e, t, o, s, r) {
  10441. super(), this._context = n, this._commandService = e, this._docClipboardService = t, this._docSelectionRenderService = o, this._contextService = s, this._editorService = r, this._init();
  10442. }
  10443. _init() {
  10444. this._initLegacyPasteCommand();
  10445. }
  10446. _initLegacyPasteCommand() {
  10447. var n;
  10448. (n = this._docSelectionRenderService) == null || n.onPaste$.pipe(takeUntil(this.dispose$)).subscribe((e) => {
  10449. var c, A, l;
  10450. if (!Io(this._contextService))
  10451. return;
  10452. e.event.preventDefault();
  10453. const t = e.event;
  10454. let o = (c = t.clipboardData) == null ? void 0 : c.getData(mr);
  10455. const s = (A = t.clipboardData) == null ? void 0 : A.getData(vr), r = [
  10456. Xl,
  10457. ql,
  10458. Ql,
  10459. Yl
  10460. ], i = [...((l = t.clipboardData) == null ? void 0 : l.items) || []].filter((d) => r.includes(d.type)).map((d) => d.getAsFile()).filter((d) => !!d);
  10461. this._editorService.getEditor(this._context.unitId) && (o != null ? o : "").indexOf("</table>") > -1 && (o = ""), this._docClipboardService.legacyPaste({ html: o, text: s, files: i });
  10462. });
  10463. }
  10464. };
  10465. Yn = Jh([
  10466. Zt(1, Pt),
  10467. Zt(2, Sn),
  10468. Zt(3, ot(Se)),
  10469. Zt(4, fs),
  10470. Zt(5, He2)
  10471. ], Yn);
  10472. var Zh = Object.defineProperty;
  10473. var $h = Object.getOwnPropertyDescriptor;
  10474. var eg = (n, e, t, o) => {
  10475. for (var s = o > 1 ? void 0 : o ? $h(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10476. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10477. return o && s && Zh(e, t, s), s;
  10478. };
  10479. var li = (n, e) => (t, o) => e(t, o, n);
  10480. var tg = [
  10481. Wd,
  10482. iu,
  10483. su,
  10484. Hd
  10485. ];
  10486. var cs = class extends nt {
  10487. constructor(n, e, t) {
  10488. super(), this._context = n, this._contextMenuService = e, this._commandService = t, tg.includes(this._context.unitId) || (this._initPointerDown(), this._initEditChange());
  10489. }
  10490. _initPointerDown() {
  10491. var t, o;
  10492. const e = ((o = (t = this._context) == null ? void 0 : t.mainComponent) == null ? void 0 : o.onPointerDown$).subscribeEvent((s) => {
  10493. s.button === 2 && this._contextMenuService.triggerContextMenu(s, P1.MAIN_AREA);
  10494. });
  10495. this.disposeWithMe(e);
  10496. }
  10497. _initEditChange() {
  10498. this.disposeWithMe(
  10499. this._commandService.onCommandExecuted((n) => {
  10500. n.id === M.id && this._contextMenuService.visible && this._contextMenuService.hideContextMenu();
  10501. })
  10502. );
  10503. }
  10504. };
  10505. cs = eg([
  10506. li(1, Wt),
  10507. li(2, Pt)
  10508. ], cs);
  10509. var ng = Object.defineProperty;
  10510. var og = Object.getOwnPropertyDescriptor;
  10511. var sg = (n, e, t, o) => {
  10512. for (var s = o > 1 ? void 0 : o ? og(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10513. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10514. return o && s && ng(e, t, s), s;
  10515. };
  10516. var xt = (n, e) => (t, o) => e(t, o, n);
  10517. var qn = class extends nt {
  10518. constructor(e, t, o, s, r, i, a) {
  10519. super();
  10520. x(this, "_initialEditors", /* @__PURE__ */ new Set());
  10521. this._context = e, this._univerInstanceService = t, this._editorService = o, this._commandService = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._renderManagerService = a, this._initialize();
  10522. }
  10523. _initialize() {
  10524. this._editorService.getAllEditor().forEach((e) => {
  10525. const t = e.getEditorId();
  10526. t === this._context.unitId && (this._initialEditors.has(t) || (this._initialEditors.add(t), this._resize(t)));
  10527. }), this._commandExecutedListener(), this._initialBlur(), this._initialFocus();
  10528. }
  10529. _resize(e) {
  10530. if (e == null)
  10531. return;
  10532. const t = this._editorService.getEditor(e);
  10533. if ((t == null ? void 0 : t.cancelDefaultResizeListener) === true)
  10534. return;
  10535. const o = this._univerInstanceService.getUniverDocInstance(e);
  10536. if (!o)
  10537. return;
  10538. const s = this._docSkeletonManagerService.getSkeleton();
  10539. if (t == null || t.render == null || s == null || o == null)
  10540. return;
  10541. s.calculate();
  10542. const { marginTop: r = 0, marginBottom: i = 0, marginLeft: a = 0, marginRight: c = 0 } = o.getSnapshot().documentStyle, { scene: A, mainComponent: l } = t.render;
  10543. let { actualHeight: d, actualWidth: h } = s.getActualSize();
  10544. d += r + i, h += a + c;
  10545. const { width: u, height: g } = t.getBoundingClientRect(), f = Math.max(h, u), p = Math.max(d, g);
  10546. A.transformByState({
  10547. width: f,
  10548. height: p
  10549. }), l == null || l.resize(f, p);
  10550. }
  10551. _initialBlur() {
  10552. this.disposeWithMe(
  10553. this._editorService.blur$.subscribe(() => {
  10554. this._docSelectionRenderService.blur();
  10555. })
  10556. ), this.disposeWithMe(
  10557. this._docSelectionRenderService.onBlur$.subscribe(() => {
  10558. const { unitId: e } = this._context, t = this._editorService.getEditor(e), o = this._editorService.getFocusEditor();
  10559. t == null || t.isSheetEditor() || o && o.getEditorId() === e || e.includes("range_selector") || e.includes("embedding_formula_editor") || this._editorService.blur();
  10560. })
  10561. );
  10562. }
  10563. _initialFocus() {
  10564. const e = [
  10565. "univer-formula-search",
  10566. "univer-formula-help",
  10567. "formula-help-decorator",
  10568. "univer-formula-help-param"
  10569. ];
  10570. this.disposeWithMe(
  10571. fromEvent(window, "mousedown").subscribe((o) => {
  10572. const r = o.target.classList[0] || "";
  10573. NC(r, e) && o.stopPropagation();
  10574. })
  10575. ), this._univerInstanceService.getAllUnitsForType(Fe.UNIVER_SHEET).forEach((o) => {
  10576. const s = o.getUnitId(), r = this._renderManagerService.getRenderById(s), i = r == null ? void 0 : r.engine.getCanvas().getCanvasEle();
  10577. i != null && fromEvent(i, "mousedown").subscribe((a) => {
  10578. a.stopPropagation();
  10579. });
  10580. });
  10581. }
  10582. /**
  10583. * Listen to document edits to refresh the size of the formula editor.
  10584. */
  10585. _commandExecutedListener() {
  10586. const e = [M.id];
  10587. this.disposeWithMe(
  10588. this._commandService.onCommandExecuted((t) => {
  10589. if (e.includes(t.id)) {
  10590. const o = t.params, { unitId: s } = o;
  10591. if (this._editorService.isSheetEditor(s) || s !== this._context.unitId)
  10592. return;
  10593. const r = this._editorService.getEditor(s);
  10594. r && !r.params.scrollBar && this._resize(s);
  10595. }
  10596. })
  10597. );
  10598. }
  10599. };
  10600. qn = sg([
  10601. xt(1, _n),
  10602. xt(2, He2),
  10603. xt(3, Pt),
  10604. xt(4, ot(Se)),
  10605. xt(5, ot(D)),
  10606. xt(6, Yx)
  10607. ], qn);
  10608. var rg = Object.defineProperty;
  10609. var ig = Object.getOwnPropertyDescriptor;
  10610. var ag = (n, e, t, o) => {
  10611. for (var s = o > 1 ? void 0 : o ? ig(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10612. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10613. return o && s && rg(e, t, s), s;
  10614. };
  10615. var On = (n, e) => (t, o) => e(t, o, n);
  10616. var As = class extends nt {
  10617. constructor(e, t, o, s, r) {
  10618. super();
  10619. x(this, "_previousIMEContent", "");
  10620. x(this, "_isCompositionStart", true);
  10621. x(this, "_onStartSubscription");
  10622. x(this, "_onUpdateSubscription");
  10623. x(this, "_onEndSubscription");
  10624. this._context = e, this._docSelectionRenderService = t, this._docImeInputManagerService = o, this._docSkeletonManagerService = s, this._commandService = r, this._initialize();
  10625. }
  10626. dispose() {
  10627. var e, t, o;
  10628. (e = this._onStartSubscription) == null || e.unsubscribe(), (t = this._onUpdateSubscription) == null || t.unsubscribe(), (o = this._onEndSubscription) == null || o.unsubscribe();
  10629. }
  10630. _initialize() {
  10631. this._initialOnCompositionstart(), this._initialOnCompositionUpdate(), this._initialOnCompositionend();
  10632. }
  10633. _initialOnCompositionstart() {
  10634. this._onStartSubscription = this._docSelectionRenderService.onCompositionstart$.subscribe((e) => {
  10635. if (e == null)
  10636. return;
  10637. this._resetIME();
  10638. const { activeRange: t } = e;
  10639. t != null && this._docImeInputManagerService.setActiveRange(re.deepClone(t));
  10640. });
  10641. }
  10642. _initialOnCompositionUpdate() {
  10643. this._onUpdateSubscription = this._docSelectionRenderService.onCompositionupdate$.subscribe((e) => {
  10644. this._updateContent(e, true);
  10645. });
  10646. }
  10647. _initialOnCompositionend() {
  10648. this._onEndSubscription = this._docSelectionRenderService.onCompositionend$.subscribe((e) => {
  10649. this._updateContent(e, false);
  10650. });
  10651. }
  10652. async _updateContent(e, t) {
  10653. if (e == null)
  10654. return;
  10655. const o = this._context.unitId, s = this._docSkeletonManagerService.getSkeleton(), { event: r, activeRange: i } = e;
  10656. if (s == null || i == null)
  10657. return;
  10658. const c = r.data;
  10659. c === this._previousIMEContent && t || (await this._commandService.executeCommand(Ba.id, {
  10660. unitId: o,
  10661. newText: c,
  10662. oldTextLen: this._previousIMEContent.length,
  10663. isCompositionStart: this._isCompositionStart,
  10664. isCompositionEnd: !t
  10665. }), t ? (this._isCompositionStart && (this._isCompositionStart = false), this._previousIMEContent = c) : this._resetIME());
  10666. }
  10667. _resetIME() {
  10668. this._previousIMEContent = "", this._isCompositionStart = true, this._docImeInputManagerService.clearUndoRedoMutationParamsCache(), this._docImeInputManagerService.setActiveRange(null);
  10669. }
  10670. };
  10671. As = ag([
  10672. On(1, ot(Se)),
  10673. On(2, ot(Ro)),
  10674. On(3, ot(D)),
  10675. On(4, Pt)
  10676. ], As);
  10677. var cg = Object.defineProperty;
  10678. var Ag2 = Object.getOwnPropertyDescriptor;
  10679. var lg = (n, e, t, o) => {
  10680. for (var s = o > 1 ? void 0 : o ? Ag2(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10681. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10682. return o && s && cg(e, t, s), s;
  10683. };
  10684. var Tn = (n, e) => (t, o) => e(t, o, n);
  10685. var ls = class extends nt {
  10686. constructor(e, t, o, s, r) {
  10687. super();
  10688. x(this, "_onInputSubscription");
  10689. this._context = e, this._docSelectionRenderService = t, this._docSkeletonManagerService = o, this._commandService = s, this._docMenuStyleService = r, this._init();
  10690. }
  10691. dispose() {
  10692. var e;
  10693. super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
  10694. }
  10695. _init() {
  10696. this._initialNormalInput();
  10697. }
  10698. _initialNormalInput() {
  10699. this._onInputSubscription = this._docSelectionRenderService.onInput$.subscribe(async (e) => {
  10700. var p, m2, E;
  10701. if (e == null)
  10702. return;
  10703. const { unitId: t } = this._context, { event: o, content: s = "", activeRange: r } = e, i = o, a = this._docSkeletonManagerService.getSkeleton();
  10704. if (i.data == null || a == null || r == null)
  10705. return;
  10706. const { segmentId: c } = r, l = this._context.unit.getSelfOrHeaderFooterModel(c).getBody(), d = this._docMenuStyleService.getDefaultStyle(), h = this._docMenuStyleService.getStyleCache(), u = Os((p = l == null ? void 0 : l.customRanges) != null ? p : [], r.endOffset, BC.includes(t)), g = co((m2 = l == null ? void 0 : l.textRuns) != null ? m2 : [], r.endOffset, d, h), f = Ts((E = l == null ? void 0 : l.customDecorations) != null ? E : [], r.endOffset);
  10707. await this._commandService.executeCommand(Vs.id, {
  10708. unitId: t,
  10709. body: {
  10710. dataStream: s,
  10711. textRuns: g ? [
  10712. {
  10713. ...g,
  10714. st: 0,
  10715. ed: s.length
  10716. }
  10717. ] : [],
  10718. customRanges: u ? [{
  10719. ...u,
  10720. startIndex: 0,
  10721. endIndex: s.length - 1
  10722. }] : [],
  10723. customDecorations: f.map((I) => ({
  10724. ...I,
  10725. startIndex: 0,
  10726. endIndex: s.length - 1
  10727. }))
  10728. },
  10729. range: r,
  10730. segmentId: c
  10731. }), s === " " && await this._commandService.executeCommand(Ao.id);
  10732. });
  10733. }
  10734. };
  10735. ls = lg([
  10736. Tn(1, ot(Se)),
  10737. Tn(2, ot(D)),
  10738. Tn(3, Pt),
  10739. Tn(4, ot(Je))
  10740. ], ls);
  10741. var ar2 = class extends nt {
  10742. constructor(e) {
  10743. super(), this._context = e;
  10744. }
  10745. calculatePagePosition() {
  10746. var v, R;
  10747. const e = rt2(this._context), o = (R = (v = this._context.unit.getSettings()) == null ? void 0 : v.zoomRatio) != null ? R : 1, { document: s, scene: r, docBackground: i } = e, a = r == null ? void 0 : r.getParent(), { width: c, height: A, pageMarginLeft: l, pageMarginTop: d } = s;
  10748. if (a == null || c === Number.POSITIVE_INFINITY || A === Number.POSITIVE_INFINITY)
  10749. return;
  10750. const { width: h, height: u } = a;
  10751. let g = 0, f = d, p = 0, m2 = 0, E = Number.POSITIVE_INFINITY;
  10752. h > (c + l * 2) * o ? (g = h / 2 - c * o / 2, g /= o, p = (h - l * 2) / o, E = 0) : (g = l, p = c + l * 2, E = (p - h / o) / 2), u > A ? m2 = (u - d * 2) / o : m2 = A + d * 2, r.resize(p, m2), h <= 1 && (g = -1e4, f = -1e4), s.translate(g, f), i.translate(g, f);
  10753. const I = r.getViewport(Xe.VIEW_MAIN);
  10754. return E !== Number.POSITIVE_INFINITY && I != null && I.scrollToViewportPos({
  10755. viewportScrollX: E
  10756. }), this;
  10757. }
  10758. };
  10759. var dg = Object.defineProperty;
  10760. var ug = Object.getOwnPropertyDescriptor;
  10761. var hg = (n, e, t, o) => {
  10762. for (var s = o > 1 ? void 0 : o ? ug(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10763. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10764. return o && s && dg(e, t, s), s;
  10765. };
  10766. var di = (n, e) => (t, o) => e(t, o, n);
  10767. var ds = class extends nt {
  10768. constructor(n, e, t) {
  10769. super(), this._context = n, this._docPageLayoutService = e, this._textSelectionManagerService = t;
  10770. const o = this._context.unitId;
  10771. if (zd(o) && o !== Hd)
  10772. return this;
  10773. this._initResize();
  10774. }
  10775. _initResize() {
  10776. this.disposeWithMe(
  10777. DR(this._context.engine.onTransformChange$).pipe(
  10778. filter((n) => n.type === C1.resize),
  10779. throttleTime(0, animationFrameScheduler)
  10780. ).subscribe(() => {
  10781. this._docPageLayoutService.calculatePagePosition(), this._textSelectionManagerService.refreshSelection();
  10782. })
  10783. );
  10784. }
  10785. };
  10786. ds = hg([
  10787. di(1, ot(ar2)),
  10788. di(2, ot(m))
  10789. ], ds);
  10790. var gg = Object.defineProperty;
  10791. var fg = Object.getOwnPropertyDescriptor;
  10792. var pg = (n, e, t, o) => {
  10793. for (var s = o > 1 ? void 0 : o ? fg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10794. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10795. return o && s && gg(e, t, s), s;
  10796. };
  10797. var Ot2 = (n, e) => (t, o) => e(t, o, n);
  10798. var us = class extends nt {
  10799. constructor(e, t, o, s, r, i, a) {
  10800. super();
  10801. x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
  10802. this._context = e, this._commandService = t, this._editorService = o, this._instanceSrv = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._docSelectionManagerService = a, this._initialize();
  10803. }
  10804. _initialize() {
  10805. this._init(), this._skeletonListener(), this._commandExecutedListener(), this._refreshListener(), this._syncSelection();
  10806. }
  10807. _init() {
  10808. const { unitId: e } = this._context, t = rt2(this._context);
  10809. t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
  10810. }
  10811. _refreshListener() {
  10812. this.disposeWithMe(
  10813. this._docSelectionManagerService.refreshSelection$.subscribe((e) => {
  10814. if (e == null)
  10815. return;
  10816. const { unitId: t, docRanges: o, isEditing: s, options: r } = e;
  10817. t === this._context.unitId && (this._docSelectionRenderService.removeAllRanges(), this._docSelectionRenderService.addDocRanges(o, s, r));
  10818. })
  10819. );
  10820. }
  10821. _syncSelection() {
  10822. this.disposeWithMe(
  10823. this._docSelectionRenderService.textSelectionInner$.subscribe((e) => {
  10824. e != null && this._docSelectionManagerService.__replaceTextRangesWithNoRefresh(e, {
  10825. unitId: this._context.unitId,
  10826. subUnitId: this._context.unitId
  10827. });
  10828. })
  10829. );
  10830. }
  10831. // eslint-disable-next-line max-lines-per-function
  10832. _initialMain(e) {
  10833. const t = rt2(this._context), { document: o, scene: s } = t;
  10834. this.disposeWithMe(o.onPointerEnter$.subscribeEvent(() => {
  10835. this._isEditorReadOnly(e) || (o.cursor = p1.TEXT);
  10836. })), this.disposeWithMe(o.onPointerLeave$.subscribeEvent(() => {
  10837. o.cursor = p1.DEFAULT, s.resetCursor();
  10838. })), this.disposeWithMe(o.onPointerDown$.subscribeEvent((r, i) => {
  10839. if (this._isEditorReadOnly(e))
  10840. return;
  10841. const a = this._instanceSrv.getCurrentUnitForType(Fe.UNIVER_DOC);
  10842. (a == null ? void 0 : a.getUnitId()) !== e && this._instanceSrv.setCurrentUnitForType(e);
  10843. const c = this._docSkeletonManagerService.getSkeleton(), { offsetX: A, offsetY: l } = r, d = this._getTransformCoordForDocumentOffset(A, l);
  10844. if (d != null) {
  10845. const {
  10846. pageLayoutType: h = Y2.VERTICAL,
  10847. pageMarginLeft: u,
  10848. pageMarginTop: g
  10849. } = o.getOffsetConfig(), { editArea: f } = c.findEditAreaByCoord(
  10850. d,
  10851. h,
  10852. u,
  10853. g
  10854. ), p = this._docSkeletonManagerService.getViewModel(), m2 = p.getEditArea();
  10855. m2 !== n3.BODY && f !== n3.BODY && f !== m2 && p.setEditArea(f);
  10856. }
  10857. if (this._docSelectionRenderService.__onPointDown(r), this._editorService.getEditor(e)) {
  10858. this._setEditorFocus(e);
  10859. const { offsetX: h, offsetY: u } = r;
  10860. setTimeout(() => {
  10861. e !== this._editorService.getFocusId() && (this._setEditorFocus(e), this._docSelectionRenderService.setCursorManually(h, u));
  10862. }, 0);
  10863. }
  10864. r.button !== 2 && i.stopPropagation();
  10865. })), this.disposeWithMe(o.onDblclick$.subscribeEvent((r) => {
  10866. this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleDblClick(r);
  10867. })), this.disposeWithMe(o.onTripleClick$.subscribeEvent((r) => {
  10868. this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleTripleClick(r);
  10869. }));
  10870. }
  10871. _getTransformCoordForDocumentOffset(e, t) {
  10872. const o = rt2(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
  10873. if (a == null)
  10874. return;
  10875. const c = a.transformVector2SceneCoord($.FromArray([e, t]));
  10876. return i.clone().invert().applyPoint(c);
  10877. }
  10878. _isEditorReadOnly(e) {
  10879. const t = this._editorService.getEditor(e);
  10880. return t ? t.isReadOnly() : false;
  10881. }
  10882. _setEditorFocus(e) {
  10883. this._editorService.focus(e);
  10884. }
  10885. _commandExecutedListener() {
  10886. const e = [Ye.id];
  10887. this.disposeWithMe(
  10888. this._commandService.onCommandExecuted((t) => {
  10889. var o;
  10890. if (e.includes(t.id)) {
  10891. const s = t.params, { unitId: r } = s, i = (o = this._docSelectionManagerService.__getCurrentSelection()) == null ? void 0 : o.unitId;
  10892. if (r !== i)
  10893. return;
  10894. this._docSelectionManagerService.refreshSelection();
  10895. }
  10896. })
  10897. );
  10898. }
  10899. _skeletonListener() {
  10900. this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((e) => {
  10901. if (!e)
  10902. return;
  10903. const { unitId: t } = this._context;
  10904. if (!zd(t)) {
  10905. this._docSelectionRenderService.focus();
  10906. const r = this._context.unit.getSnapshot(), i = ea(r);
  10907. this._docSelectionManagerService.replaceDocRanges([
  10908. {
  10909. startOffset: i,
  10910. endOffset: i
  10911. }
  10912. ], {
  10913. unitId: t,
  10914. subUnitId: t
  10915. }, false);
  10916. }
  10917. }));
  10918. }
  10919. };
  10920. us = pg([
  10921. Ot2(1, Pt),
  10922. Ot2(2, He2),
  10923. Ot2(3, _n),
  10924. Ot2(4, ot(Se)),
  10925. Ot2(5, ot(D)),
  10926. Ot2(6, ot(m))
  10927. ], us);
  10928. var mg = Object.defineProperty;
  10929. var Eg = Object.getOwnPropertyDescriptor;
  10930. var Sg2 = (n, e, t, o) => {
  10931. for (var s = o > 1 ? void 0 : o ? Eg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10932. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10933. return o && s && mg(e, t, s), s;
  10934. };
  10935. var ft = (n, e) => (t, o) => e(t, o, n);
  10936. var hs = class extends nt {
  10937. constructor(n, e, t, o, s, r, i, a) {
  10938. super(), this._context = n, this._contextService = e, this._docSkeletonManagerService = t, this._univerInstanceService = o, this._commandService = s, this._textSelectionManagerService = r, this._editorService = i, this._docPageLayoutService = a, this._initSkeletonListener(), this._initCommandExecutedListener(), this._initRenderRefresher(), setTimeout(() => this.updateViewZoom(1, true), 20);
  10939. }
  10940. _initRenderRefresher() {
  10941. this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
  10942. if (n == null)
  10943. return;
  10944. const { unitId: e, scene: t } = this._context;
  10945. this._editorService.isEditor(e) || this.disposeWithMe(t.onMouseWheel$.subscribeEvent((o) => {
  10946. if (!o.ctrlKey || !this._contextService.getContextValue(Nr))
  10947. return;
  10948. const s = this._univerInstanceService.getCurrentUniverDocInstance();
  10949. if (!s)
  10950. return;
  10951. const { documentFlavor: r } = s.getSnapshot().documentStyle;
  10952. if (r === ku.MODERN)
  10953. return;
  10954. const i = Math.abs(o.deltaX);
  10955. let a = i < 40 ? 0.2 : i < 80 ? 0.4 : 0.2;
  10956. a *= o.deltaY > 0 ? -1 : 1, t.scaleX < 1 && (a /= 2);
  10957. const c = s.zoomRatio;
  10958. let A = +Number.parseFloat(`${c + a}`).toFixed(1);
  10959. A = A >= 4 ? 4 : A <= 0.1 ? 0.1 : A, this._commandService.executeCommand(ss.id, {
  10960. zoomRatio: A,
  10961. unitId: s.getUnitId()
  10962. }), o.preventDefault();
  10963. }));
  10964. });
  10965. }
  10966. _initSkeletonListener() {
  10967. this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
  10968. if (n == null)
  10969. return;
  10970. const e = this._univerInstanceService.getCurrentUniverDocInstance();
  10971. if (!e)
  10972. return;
  10973. const t = e.zoomRatio || 1;
  10974. this.updateViewZoom(t, false);
  10975. }));
  10976. }
  10977. _initCommandExecutedListener() {
  10978. const n = [Ye.id];
  10979. this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
  10980. if (n.includes(e.id) && e.params.unitId === this._context.unitId) {
  10981. const o = this._context.unit.zoomRatio || 1;
  10982. this.updateViewZoom(o);
  10983. }
  10984. })), this.disposeWithMe(
  10985. this._commandService.beforeCommandExecuted((e) => {
  10986. e.id === Co.id && this._commandService.executeCommand(ss.id, {
  10987. zoomRatio: 1,
  10988. unitId: this._context.unitId
  10989. });
  10990. })
  10991. );
  10992. }
  10993. updateViewZoom(n, e = true) {
  10994. var o;
  10995. const t = rt2(this._context);
  10996. t.scene.scale(n, n), this._editorService.isEditor(this._context.unitId) || this._docPageLayoutService.calculatePagePosition(), e && !this._editorService.isEditor(this._context.unitId) && this._textSelectionManagerService.refreshSelection(), (o = t.scene.getTransformer()) == null || o.clearSelectedObjects();
  10997. }
  10998. };
  10999. hs = Sg2([
  11000. ft(1, fs),
  11001. ft(2, ot(D)),
  11002. ft(3, _n),
  11003. ft(4, Pt),
  11004. ft(5, ot(m)),
  11005. ft(6, He2),
  11006. ft(7, ot(ar2))
  11007. ], hs);
  11008. var Ig = Object.defineProperty;
  11009. var Cg = Object.getOwnPropertyDescriptor;
  11010. var vg = (n, e, t, o) => {
  11011. for (var s = o > 1 ? void 0 : o ? Cg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  11012. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  11013. return o && s && Ig(e, t, s), s;
  11014. };
  11015. var $t = (n, e) => (t, o) => e(t, o, n);
  11016. var ui = 300;
  11017. var Kn = class extends J0 {
  11018. constructor(e, t, o, s, r) {
  11019. super();
  11020. x(this, "_docStateChange$", new BehaviorSubject(null));
  11021. x(this, "docStateChange$", this._docStateChange$.asObservable());
  11022. x(this, "_historyStateCache", /* @__PURE__ */ new Map());
  11023. x(this, "_changeStateCache", /* @__PURE__ */ new Map());
  11024. x(this, "_historyTimer", null);
  11025. x(this, "_changeStateCacheTimer", null);
  11026. this._undoRedoService = e, this._commandService = t, this._univerInstanceService = o, this._docStateEmitService = s, this._renderManagerService = r, this._initialize(), this._listenDocStateChange();
  11027. }
  11028. getStateCache(e) {
  11029. var t, o;
  11030. return {
  11031. history: (t = this._historyStateCache.get(e)) != null ? t : [],
  11032. collaboration: (o = this._changeStateCache.get(e)) != null ? o : []
  11033. };
  11034. }
  11035. setStateCache(e, t) {
  11036. this._historyStateCache.set(e, t.history), this._changeStateCache.set(e, t.collaboration);
  11037. }
  11038. _setChangeState(e) {
  11039. this._cacheChangeState(e, "history"), this._cacheChangeState(e, "collaboration");
  11040. }
  11041. _initialize() {
  11042. this.disposeWithMe(
  11043. this._commandService.beforeCommandExecuted((e) => {
  11044. if (e.id === IE || e.id === RE) {
  11045. const t = this._univerInstanceService.getCurrentUniverDocInstance();
  11046. if (t == null)
  11047. return;
  11048. const o = t.getUnitId();
  11049. this._pushHistory(o), this._emitChangeState(o);
  11050. }
  11051. })
  11052. );
  11053. }
  11054. _listenDocStateChange() {
  11055. this._docStateEmitService.docStateChangeParams$.pipe(takeUntil(this.dispose$)).subscribe((e) => {
  11056. var a;
  11057. if (e == null)
  11058. return;
  11059. const { isCompositionEnd: t, isSync: o, syncer: s, ...r } = e, i = (a = this._renderManagerService.getRenderById(o ? s : e.unitId)) == null ? void 0 : a.with(Ro);
  11060. if (i != null) {
  11061. if (t) {
  11062. const c = i.fetchComposedUndoRedoMutationParams();
  11063. if (c == null)
  11064. throw new Error("historyParams is null in RichTextEditingMutation");
  11065. const { undoMutationParams: A, redoMutationParams: l, previousActiveRange: d } = c;
  11066. r.redoState.actions = l.actions, r.undoState.actions = A.actions, r.undoState.textRanges = [d];
  11067. }
  11068. this._setChangeState(r);
  11069. }
  11070. });
  11071. }
  11072. _cacheChangeState(e, t = "history") {
  11073. const { trigger: o, unitId: s, noHistory: r, debounce: i = false } = e;
  11074. if (r || o == null || t === "history" && (o === RE || o === IE))
  11075. return;
  11076. const a = t === "history" ? this._historyStateCache : this._changeStateCache, c = t === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
  11077. if (a.has(s)) {
  11078. const A = a.get(s);
  11079. A == null || A.push(e);
  11080. } else
  11081. a.set(s, [e]);
  11082. i ? t === "history" ? (this._historyTimer && clearTimeout(this._historyTimer), this._historyTimer = setTimeout(() => {
  11083. c(s);
  11084. }, ui)) : (this._changeStateCacheTimer && clearTimeout(this._changeStateCacheTimer), this._changeStateCacheTimer = setTimeout(() => {
  11085. c(s);
  11086. }, ui)) : c(s);
  11087. }
  11088. _pushHistory(e) {
  11089. const t = this._undoRedoService, o = this._historyStateCache.get(e);
  11090. if (!Array.isArray(o) || o.length === 0)
  11091. return;
  11092. const s = o.length, r = o[0].commandId, i = o[0], a = o[s - 1], c = {
  11093. unitId: e,
  11094. actions: o.reduce((l, d) => tn.compose(l, d.redoState.actions), null),
  11095. textRanges: a.redoState.textRanges
  11096. }, A = {
  11097. unitId: e,
  11098. // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
  11099. actions: o.reverse().reduce((l, d) => tn.compose(l, d.undoState.actions), null),
  11100. textRanges: i.undoState.textRanges
  11101. };
  11102. t.pushUndoRedo({
  11103. unitID: e,
  11104. undoMutations: [{ id: r, params: A }],
  11105. redoMutations: [{ id: r, params: c }]
  11106. }), o.length = 0;
  11107. }
  11108. _emitChangeState(e) {
  11109. const t = this._changeStateCache.get(e);
  11110. if (!Array.isArray(t) || t.length === 0)
  11111. return;
  11112. const o = t.length, { commandId: s, trigger: r, segmentId: i, noHistory: a, debounce: c } = t[0], A = t[0], l = t[o - 1], d = {
  11113. unitId: e,
  11114. actions: t.reduce((g, f) => tn.compose(g, f.redoState.actions), null),
  11115. textRanges: l.redoState.textRanges
  11116. }, h = {
  11117. unitId: e,
  11118. // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
  11119. actions: t.reverse().reduce((g, f) => tn.compose(g, f.undoState.actions), null),
  11120. textRanges: A.undoState.textRanges
  11121. }, u = {
  11122. commandId: s,
  11123. unitId: e,
  11124. trigger: r,
  11125. redoState: d,
  11126. undoState: h,
  11127. segmentId: i,
  11128. noHistory: a,
  11129. debounce: c
  11130. };
  11131. t.length = 0, this._docStateChange$.next(u);
  11132. }
  11133. };
  11134. Kn = vg([
  11135. $t(0, ot(cn)),
  11136. $t(1, Pt),
  11137. $t(2, _n),
  11138. $t(3, ot(te)),
  11139. $t(4, Yx)
  11140. ], Kn);
  11141. var Rg = Object.defineProperty;
  11142. var bg = Object.getOwnPropertyDescriptor;
  11143. var xg = (n, e, t, o) => {
  11144. for (var s = o > 1 ? void 0 : o ? bg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  11145. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  11146. return o && s && Rg(e, t, s), s;
  11147. };
  11148. var hi = (n, e) => (t, o) => e(t, o, n);
  11149. var gi = "univer-doc-main-canvas";
  11150. var Xn = class extends J0 {
  11151. constructor(n, e) {
  11152. super(), this._instanceSrv = n, this._renderManagerService = e, this._init();
  11153. }
  11154. _init() {
  11155. this._renderManagerService.createRender$.pipe(takeUntil(this.dispose$)).subscribe((n) => this._createRenderWithId(n)), this._instanceSrv.getAllUnitsForType(Fe.UNIVER_DOC).forEach((n) => this._createRenderer(n)), this._instanceSrv.getTypeOfUnitAdded$(Fe.UNIVER_DOC).pipe(takeUntil(this.dispose$)).subscribe((n) => this._createRenderer(n)), this._instanceSrv.getTypeOfUnitDisposed$(Fe.UNIVER_DOC).pipe(takeUntil(this.dispose$)).subscribe((n) => this._disposeRenderer(n));
  11156. }
  11157. _createRenderer(n) {
  11158. var o;
  11159. const e = n.getUnitId(), t = (o = this._instanceSrv.getCurrentUnitForType(Fe.UNIVER_DOC)) == null ? void 0 : o.getUnitId();
  11160. this._renderManagerService.created$.subscribe((s) => {
  11161. s.unitId === t && (s.engine.getCanvas().setId(gi), s.engine.getCanvas().getContext().setId(gi));
  11162. }), this._renderManagerService.has(e) || (this._createRenderWithId(e), this._renderManagerService.setCurrent(e));
  11163. }
  11164. _createRenderWithId(n) {
  11165. this._renderManagerService.createRender(n);
  11166. }
  11167. _disposeRenderer(n) {
  11168. const e = n.getUnitId();
  11169. this._renderManagerService.removeRender(e);
  11170. }
  11171. };
  11172. Xn = xg([
  11173. hi(0, _n),
  11174. hi(1, Yx)
  11175. ], Xn);
  11176. var Og = class extends nt {
  11177. constructor() {
  11178. super(...arguments);
  11179. x(this, "_currentSelectorId");
  11180. x(this, "_selectionChange$", new Subject());
  11181. x(this, "selectionChange$", this._selectionChange$.asObservable());
  11182. x(this, "_openSelector$", new Subject());
  11183. x(this, "openSelector$", this._openSelector$.asObservable());
  11184. x(this, "_selectorModalVisible$", new BehaviorSubject(false));
  11185. x(this, "selectorModalVisible$", this._selectorModalVisible$.asObservable());
  11186. }
  11187. get selectorModalVisible() {
  11188. return this._selectorModalVisible$.getValue();
  11189. }
  11190. setCurrentSelectorId(t) {
  11191. this._currentSelectorId = t;
  11192. }
  11193. getCurrentSelectorId() {
  11194. return this._currentSelectorId;
  11195. }
  11196. selectionChange(t) {
  11197. this._currentSelectorId && this._selectionChange$.next(t);
  11198. }
  11199. openSelector() {
  11200. this._openSelector$.next(null);
  11201. }
  11202. triggerModalVisibleChange(t) {
  11203. this._selectorModalVisible$.next(t);
  11204. }
  11205. };
  11206. var Tg = Ct(
  11207. "univer.range-selector.service"
  11208. );
  11209. var yg = {
  11210. id: ln2.id,
  11211. preconditions: bl,
  11212. binding: I1.ENTER
  11213. };
  11214. var Bg = {
  11215. id: So.id,
  11216. preconditions: de,
  11217. binding: I1.BACKSPACE
  11218. };
  11219. var Mg = {
  11220. id: ma.id,
  11221. preconditions: de,
  11222. binding: I1.DELETE
  11223. };
  11224. var _g = {
  11225. id: at.id,
  11226. binding: I1.ARROW_UP,
  11227. preconditions: de,
  11228. staticParameters: {
  11229. direction: wu.UP
  11230. }
  11231. };
  11232. var Pg = {
  11233. id: at.id,
  11234. binding: I1.ARROW_DOWN,
  11235. preconditions: de,
  11236. staticParameters: {
  11237. direction: wu.DOWN
  11238. }
  11239. };
  11240. var Dg = {
  11241. id: at.id,
  11242. binding: I1.ARROW_LEFT,
  11243. preconditions: de,
  11244. staticParameters: {
  11245. direction: wu.LEFT
  11246. }
  11247. };
  11248. var wg = {
  11249. id: at.id,
  11250. binding: I1.ARROW_RIGHT,
  11251. preconditions: de,
  11252. staticParameters: {
  11253. direction: wu.RIGHT
  11254. }
  11255. };
  11256. var Ng = {
  11257. id: ct.id,
  11258. binding: I1.ARROW_UP | Ae.SHIFT,
  11259. preconditions: de,
  11260. staticParameters: {
  11261. direction: wu.UP
  11262. }
  11263. };
  11264. var Qg = {
  11265. id: ct.id,
  11266. binding: I1.ARROW_DOWN | Ae.SHIFT,
  11267. preconditions: de,
  11268. staticParameters: {
  11269. direction: wu.DOWN
  11270. }
  11271. };
  11272. var Ug = {
  11273. id: ct.id,
  11274. binding: I1.ARROW_LEFT | Ae.SHIFT,
  11275. preconditions: de,
  11276. staticParameters: {
  11277. direction: wu.LEFT
  11278. }
  11279. };
  11280. var Lg = {
  11281. id: ct.id,
  11282. binding: I1.ARROW_RIGHT | Ae.SHIFT,
  11283. preconditions: de,
  11284. staticParameters: {
  11285. direction: wu.RIGHT
  11286. }
  11287. };
  11288. var Fg = {
  11289. id: ya.id,
  11290. binding: I1.A | Ae.CTRL_COMMAND,
  11291. preconditions: (n) => n.getContextValue(CR) && (n.getContextValue(Nr) || n.getContextValue(oE))
  11292. };
  11293. var Na = Object.defineProperty;
  11294. var Hg = Object.getOwnPropertyDescriptor;
  11295. var kg = (n, e, t) => e in n ? Na(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
  11296. var Vg = (n, e, t, o) => {
  11297. for (var s = o > 1 ? void 0 : o ? Hg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  11298. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  11299. return o && s && Na(e, t, s), s;
  11300. };
  11301. var en2 = (n, e) => (t, o) => e(t, o, n);
  11302. var jg = (n, e, t) => kg(n, e + "", t);
  11303. var gs = class extends Ra {
  11304. // static override type = UniverInstanceType.UNIVER_DOC;
  11305. constructor(n = qr, e, t, o, s, r) {
  11306. super(), this._config = n, this._injector = e, this._renderManagerSrv = t, this._commandService = o, this._logService = s, this._configService = r;
  11307. const { menu: i, ...a } = nu(
  11308. {},
  11309. qr,
  11310. this._config
  11311. );
  11312. i && this._configService.setConfig("menu", i, { merge: true }), this._configService.setConfig(Us, a), this._initDependencies(e), this._initializeShortcut(), this._initCommand();
  11313. }
  11314. onReady() {
  11315. this._initRenderBasics(), this._markDocAsFocused(), Mf(this._injector, [
  11316. [Kn],
  11317. [Xn]
  11318. ]);
  11319. }
  11320. onRendered() {
  11321. this._initUI(), this._initRenderModules(), Mf(this._injector, [
  11322. [jn],
  11323. [Wn],
  11324. [Lt],
  11325. [zn],
  11326. // FIXME: LifecycleStages.Rendered must be used, otherwise the menu cannot be added to the DOM, but the sheet ui
  11327. // plugin can be added in LifecycleStages.Ready
  11328. [Hn]
  11329. ]);
  11330. }
  11331. _initCommand() {
  11332. [
  11333. So,
  11334. ma,
  11335. Vt,
  11336. jt,
  11337. Wt2,
  11338. zt,
  11339. Ct2,
  11340. Gt,
  11341. Pt2,
  11342. Dt2,
  11343. wt,
  11344. fn,
  11345. Nt2,
  11346. lt,
  11347. Ra2,
  11348. Vs,
  11349. dn,
  11350. js,
  11351. pa,
  11352. Ws,
  11353. Ye,
  11354. ho,
  11355. uo,
  11356. pn,
  11357. go,
  11358. fo,
  11359. po,
  11360. et,
  11361. mo,
  11362. ba,
  11363. Ia,
  11364. er,
  11365. tr,
  11366. Fd,
  11367. nr,
  11368. or,
  11369. Xs,
  11370. Js,
  11371. In,
  11372. Ps,
  11373. Ma,
  11374. _t,
  11375. Ao,
  11376. ln2,
  11377. es,
  11378. lo,
  11379. ws,
  11380. Ns,
  11381. da,
  11382. Ba,
  11383. Co,
  11384. qe,
  11385. fa,
  11386. Qt,
  11387. gA,
  11388. Vi,
  11389. fA,
  11390. ss,
  11391. ya,
  11392. rr,
  11393. at,
  11394. ct,
  11395. mA
  11396. ].forEach((n) => {
  11397. this._commandService.registerCommand(n);
  11398. }), [Fn, qs, Ks].forEach((n) => this.disposeWithMe(this._commandService.registerMultipleCommand(n)));
  11399. }
  11400. _initializeShortcut() {
  11401. [
  11402. _g,
  11403. Pg,
  11404. wg,
  11405. Dg,
  11406. Ng,
  11407. Qg,
  11408. Ug,
  11409. Lg,
  11410. Fg,
  11411. Bg,
  11412. Mg,
  11413. yg,
  11414. Ol
  11415. ].forEach((n) => {
  11416. this._injector.get(it).registerShortcut(n);
  11417. });
  11418. }
  11419. _initDependencies(n) {
  11420. kE([
  11421. [Yn],
  11422. [qn],
  11423. [Hn],
  11424. [jn],
  11425. [zn],
  11426. [Wn],
  11427. [Vn],
  11428. [Lt],
  11429. [He2, { useClass: Jo }],
  11430. [Tg, { useClass: Og }],
  11431. [Sn, { useClass: ns }],
  11432. [is],
  11433. [Xn],
  11434. [Kn],
  11435. [Et],
  11436. [Je]
  11437. ], this._config.override).forEach((t) => n.add(t));
  11438. }
  11439. _markDocAsFocused() {
  11440. const n = this._injector.get(_n), e = this._injector.get(He2);
  11441. try {
  11442. const t = n.getCurrentUnitForType(Fe.UNIVER_DOC);
  11443. if (!t)
  11444. return;
  11445. const o = t.getUnitId();
  11446. e.isEditor(o) || n.focusUnit(t.getUnitId());
  11447. } catch (t) {
  11448. this._logService.warn(t);
  11449. }
  11450. }
  11451. _initUI() {
  11452. this._injector.get(Vn);
  11453. }
  11454. _initRenderBasics() {
  11455. [
  11456. [D],
  11457. [Se],
  11458. [J],
  11459. [ar2],
  11460. [Ro],
  11461. [os],
  11462. [hs]
  11463. ].forEach((n) => {
  11464. this._renderManagerSrv.registerRenderModule(Fe.UNIVER_DOC, n);
  11465. });
  11466. }
  11467. _initRenderModules() {
  11468. [
  11469. [Gn],
  11470. [kn],
  11471. [us],
  11472. [Zo],
  11473. [ds],
  11474. [cs],
  11475. [as],
  11476. [Yn],
  11477. [ls],
  11478. [As],
  11479. [qn]
  11480. ].forEach((n) => {
  11481. this._renderManagerSrv.registerRenderModule(Fe.UNIVER_DOC, n);
  11482. });
  11483. }
  11484. };
  11485. jg(gs, "pluginName", rA);
  11486. gs = Vg([
  11487. OR(s7),
  11488. en2(1, ot(Ot)),
  11489. en2(2, Yx),
  11490. en2(3, Pt),
  11491. en2(4, Mt),
  11492. en2(5, SE)
  11493. ], gs);
  11494. export {
  11495. Et,
  11496. oA,
  11497. sA,
  11498. rA,
  11499. We,
  11500. Xe,
  11501. iA,
  11502. Oo,
  11503. aA,
  11504. xr,
  11505. ef,
  11506. rt2 as rt,
  11507. cA,
  11508. tf,
  11509. AA,
  11510. nf,
  11511. of,
  11512. sf,
  11513. rf,
  11514. af,
  11515. lA,
  11516. dA,
  11517. ke2 as ke,
  11518. le,
  11519. Vi,
  11520. gA,
  11521. fA,
  11522. mA,
  11523. yr,
  11524. it2 as it,
  11525. SA,
  11526. Wi,
  11527. Gi,
  11528. qo,
  11529. Mn,
  11530. Bs,
  11531. Mt2 as Mt,
  11532. Mo,
  11533. Yi,
  11534. yA,
  11535. Se,
  11536. DA,
  11537. Jo,
  11538. He2 as He,
  11539. at,
  11540. ct,
  11541. cf,
  11542. _t,
  11543. Ao,
  11544. ln2 as ln,
  11545. de,
  11546. Vt,
  11547. jt,
  11548. Wt2 as Wt,
  11549. zt,
  11550. Ct2 as Ct,
  11551. Gt,
  11552. Pt2 as Pt,
  11553. Dt2 as Dt,
  11554. wt,
  11555. Nt2 as Nt,
  11556. fn,
  11557. lt,
  11558. pn,
  11559. lo,
  11560. Pn,
  11561. es,
  11562. uo,
  11563. ws,
  11564. Ns,
  11565. ho,
  11566. da,
  11567. Qs,
  11568. mn2 as mn,
  11569. et,
  11570. go,
  11571. fo,
  11572. po,
  11573. mo,
  11574. Ye,
  11575. Fs,
  11576. Hs,
  11577. ks,
  11578. ua,
  11579. dd,
  11580. fa,
  11581. md,
  11582. Qt,
  11583. Ed,
  11584. Vs,
  11585. dn,
  11586. pa,
  11587. js,
  11588. Ws,
  11589. zs,
  11590. So,
  11591. ma,
  11592. xd,
  11593. Od,
  11594. Td,
  11595. Sn,
  11596. Fn,
  11597. qs,
  11598. Ks,
  11599. Xs,
  11600. Js,
  11601. In,
  11602. er,
  11603. tr,
  11604. nr,
  11605. or,
  11606. Ia,
  11607. Fd,
  11608. va,
  11609. Ra2 as Ra,
  11610. ba,
  11611. sr,
  11612. Zu,
  11613. Hn,
  11614. kn,
  11615. os,
  11616. ya,
  11617. Ro,
  11618. Ba,
  11619. ss,
  11620. Ma,
  11621. ai,
  11622. ko,
  11623. is,
  11624. Gn,
  11625. Kn,
  11626. Xn,
  11627. Og,
  11628. Tg,
  11629. gs
  11630. };
  11631. /*! Bundled license information:
  11632. @univerjs/docs-ui/lib/es/index.js:
  11633. (**
  11634. * @license React
  11635. * react-jsx-runtime.production.min.js
  11636. *
  11637. * Copyright (c) Facebook, Inc. and its affiliates.
  11638. *
  11639. * This source code is licensed under the MIT license found in the
  11640. * LICENSE file in the root directory of this source tree.
  11641. *)
  11642. */
  11643. //# sourceMappingURL=chunk-MIOQ566M.js.map