123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646 |
- import {
- $e,
- $l,
- Ae,
- Al,
- Dl,
- Fa,
- He,
- I1,
- Le,
- Li,
- P1,
- Pi,
- Pl,
- Ql,
- Wt,
- Xl,
- Yl,
- _1,
- bi,
- c3,
- d3,
- f1,
- it,
- jl,
- l1,
- m1,
- mr,
- n1,
- n3 as n32,
- ql,
- rt,
- vr,
- yi
- } from "./chunk-POAJ2YNP.js";
- import {
- $O,
- BO,
- Gf,
- Po,
- i_,
- r_,
- um
- } from "./chunk-GBYP4PB2.js";
- import {
- D,
- J,
- M,
- j,
- m,
- te
- } from "./chunk-PZD7N4BC.js";
- import {
- $,
- A1,
- B6,
- BS,
- C1,
- E2,
- ES,
- Ex,
- FS,
- G1,
- Jv,
- LS,
- Mv,
- PS,
- S3,
- SS,
- T3,
- U4,
- V1,
- VS,
- Y2,
- YS,
- Yx,
- b8,
- g1,
- gf,
- i0,
- i3,
- ke,
- l0,
- n3,
- p1,
- q3,
- s7,
- uT,
- v0,
- v8,
- vf,
- w3,
- wS
- } from "./chunk-2MK3Q52E.js";
- import {
- Ag,
- B0,
- BC,
- BehaviorSubject,
- Bt,
- CR,
- Ct,
- DR,
- Dt,
- Es,
- FR,
- Fe,
- Ft,
- Hd,
- IE,
- J0,
- Ke,
- Mf,
- Mi,
- Mt,
- NC,
- Nr,
- Nt,
- OR,
- O_,
- Observable,
- Ot,
- Pe,
- Pt,
- Q0,
- Qr,
- RE,
- RR,
- Ra,
- S0,
- SE,
- Sg,
- Subject,
- Vr,
- W0,
- Wd,
- Wp,
- Xp,
- Xt,
- ZC,
- Ze,
- Zp,
- _n,
- am,
- animationFrameScheduler,
- ar,
- bufferTime,
- ce,
- cn,
- combineLatest,
- distinctUntilChanged,
- el,
- em,
- en,
- filter,
- fromEvent,
- fs,
- gm,
- gt,
- hn,
- iu,
- k0,
- kE,
- ku,
- ln,
- lr,
- map,
- merge,
- ml,
- mn,
- nt,
- nu,
- oE,
- om,
- ot,
- ps,
- qC,
- qt,
- re,
- rm,
- sm,
- st,
- su,
- switchMap,
- take,
- takeUntil,
- throttleTime,
- tm,
- tn,
- vl,
- we,
- wu,
- xo,
- yR,
- z0,
- zd
- } from "./chunk-23V3HWTR.js";
- import {
- require_react
- } from "./chunk-GNR2UJZM.js";
- import {
- __toESM
- } from "./chunk-2LSFTFF7.js";
- // 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
- var Hc = __toESM(require_react());
- var import_react = __toESM(require_react());
- var Fa2 = Object.defineProperty;
- var Ha = (n, e, t) => e in n ? Fa2(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
- var x = (n, e, t) => Ha(n, typeof e != "symbol" ? e + "" : e, t);
- var $c = Object.defineProperty;
- var eA = Object.getOwnPropertyDescriptor;
- var tA = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? eA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && $c(e, t, s), s;
- };
- var br = (n, e) => (t, o) => e(t, o, n);
- function nA(n, e) {
- var i, a;
- const { startOffset: t, endOffset: o } = n, s = [];
- let r = -1;
- for (let c = 0; c < e.length; c++) {
- const A = e[c], l = e[c - 1], { startIndex: d } = A;
- t > r && t <= d || o > r && o <= d ? s.push({
- ...A,
- paragraphStart: ((i = l == null ? void 0 : l.startIndex) != null ? i : -1) + 1,
- paragraphEnd: A.startIndex
- }) : d >= t && d <= o && s.push({
- ...A,
- paragraphStart: ((a = l == null ? void 0 : l.startIndex) != null ? a : -1) + 1,
- paragraphEnd: A.startIndex
- }), r = d;
- }
- return s;
- }
- var Et = class extends nt {
- constructor(e, t) {
- super();
- x(this, "_matches", /* @__PURE__ */ new Map());
- this._univerInstanceService = e, this._textSelectionManagerService = t;
- }
- registerAutoFormat(e) {
- const t = this._matches.get(e.id);
- return t ? (t.push(e), t.sort((o, s) => {
- var r, i;
- return ((r = s.priority) != null ? r : 0) - ((i = o.priority) != null ? i : 0);
- })) : this._matches.set(e.id, [e]), Ze(() => {
- const o = this._matches.get(e.id);
- if (o) {
- const s = o.findIndex((r) => r === e);
- s >= 0 && o.splice(s, 1);
- }
- });
- }
- onAutoFormat(e, t) {
- var a, c, A, l, d, h, u;
- 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];
- if (s && i) {
- const g = s.getSelfOrHeaderFooterModel(i.segmentId), f = {
- unit: g,
- selection: i,
- isBody: !i.segmentId,
- paragraphs: nA(i, (l = (A = g.getBody()) == null ? void 0 : A.paragraphs) != null ? l : []),
- customRanges: st.customRange.getCustomRangesInterestsWithSelection(i, (h = (d = g.getBody()) == null ? void 0 : d.customRanges) != null ? h : []),
- commandId: e,
- commandParams: t
- }, p = o.find((m2) => m2.match(f));
- return (u = p == null ? void 0 : p.getMutations(f)) != null ? u : [];
- }
- return [];
- }
- };
- Et = tA([
- br(0, _n),
- br(1, ot(m))
- ], Et);
- var oA = {
- undo: true,
- redo: true,
- // Undo redo
- font: true,
- // 'font'
- fontSize: true,
- // 'Font size'
- bold: true,
- // 'Bold (Ctrl+B)'
- italic: true,
- // 'Italic (Ctrl+I)'
- strikethrough: true,
- // 'Strikethrough (Alt+Shift+5)'
- underline: true,
- // 'Underline (Alt+Shift+6)'
- textColor: true,
- // 'Text color'
- fillColor: true,
- // 'Cell color'
- horizontalAlignMode: true,
- // 'Horizontal alignment'
- verticalAlignMode: true,
- // 'Vertical alignment'
- textWrapMode: true,
- // 'Wrap mode'
- textRotateMode: true
- // 'Text Rotation Mode'
- };
- var sA = {
- outerLeft: false,
- outerRight: false,
- header: true,
- footer: true,
- innerLeft: false,
- innerRight: false,
- frozenHeaderLT: false,
- frozenHeaderRT: false,
- frozenHeaderLM: false,
- frozenContent: false,
- infoBar: true,
- toolbar: true
- };
- var rA = "DOC_UI_PLUGIN";
- var We = ((n) => (n.MAIN = "__Document_Render_Main__", n.BACKGROUND = "__Document_Render_Background__", n))(We || {});
- var Xe = ((n) => (n.VIEW_MAIN = "viewMain", n.VIEW_TOP = "viewTop", n.VIEW_LEFT = "viewLeft", n.VIEW_LEFT_TOP = "viewLeftTop", n))(Xe || {});
- var iA = 0;
- var Oo = 2;
- var aA = 4;
- var xr = 10;
- var ef = "normalTextSelectionPluginName";
- function rt2(n) {
- const { mainComponent: e, scene: t, engine: o, components: s } = n, r = e, i = s.get(We.BACKGROUND);
- return {
- document: r,
- docBackground: i,
- scene: t,
- engine: o
- };
- }
- function cA(n, e) {
- const t = n.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (!t)
- return null;
- const o = t.getUnitId(), s = e.getRenderById(o);
- if (s == null)
- return;
- const { mainComponent: r, scene: i, engine: a, components: c } = s, A = r, l = c.get(We.BACKGROUND);
- return {
- document: A,
- docBackground: l,
- scene: i,
- engine: a
- };
- }
- function tf(n, e) {
- const t = e.getRenderById(n);
- if (t == null)
- return;
- const { mainComponent: o, scene: s, engine: r, components: i } = t, a = o, c = i.get(We.BACKGROUND);
- return {
- document: a,
- docBackground: c,
- scene: s,
- engine: r
- };
- }
- function AA(n) {
- const { unitId: e, ranges: t, id: o, type: s, segmentId: r } = n, i = {
- id: M.id,
- params: {
- unitId: e,
- actions: [],
- textRanges: void 0,
- // noHistory: true,
- segmentId: r
- }
- }, a = tn.getInstance(), c = st.customDecoration.add({ ranges: t, id: o, type: s });
- return i.params.actions = a.editOp(c.serialize()), i;
- }
- function nf(n, e) {
- 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);
- if (!c)
- return false;
- const A = c.getUnitId(), l = i.getTextRanges({ unitId: A, subUnitId: A });
- return !l || !c.getBody() ? false : AA(
- {
- unitId: A,
- ranges: l,
- id: o,
- type: s,
- segmentId: t
- }
- );
- }
- function of(n, e) {
- const { unitId: t, id: o, segmentId: s } = e, i = n.get(_n).getUnit(t);
- if (!i)
- return false;
- const a = {
- id: M.id,
- params: {
- unitId: t,
- actions: [],
- textRanges: void 0,
- // noHistory: true,
- segmentId: s
- }
- }, c = st.customDecoration.delete({ id: o, segmentId: s, documentDataModel: i });
- if (!c)
- return false;
- const A = tn.getInstance();
- return a.params.actions = A.editOp(c.serialize()), a;
- }
- function sf(n, e) {
- return e.some((t) => n.startIndex > t.startIndex && n.startIndex < t.endIndex);
- }
- function co(n, e, t, o) {
- const s = {
- st: 0,
- ed: 0,
- ts: t
- };
- for (let r = n.length - 1; r >= 0; r--) {
- const i = n[r], { st: a, ed: c } = i;
- e > a && e <= c && (s.st = a, s.ed = c, s.ts = {
- ...s.ts,
- ...i.ts
- });
- }
- if (e === 0) {
- const r = n == null ? void 0 : n[0];
- r && r.st === 0 && (s.ts = {
- ...s.ts,
- ...r.ts
- });
- }
- return o && (s.ts = {
- ...s.ts,
- ...o
- }), s;
- }
- function Os(n, e, t) {
- if (t) {
- const s = n.find((r) => e >= r.startIndex && e <= r.endIndex + 1);
- return s != null && s.wholeEntity ? null : s;
- }
- const o = n.find((s) => e > s.startIndex && e <= s.endIndex);
- return o != null && o.wholeEntity ? null : o;
- }
- function Ts(n, e) {
- return n.filter((t) => e > t.startIndex && e <= t.endIndex);
- }
- function rf(n) {
- return {
- left: n.positionH.posOffset,
- top: n.positionV.posOffset,
- width: n.size.width,
- height: n.size.height
- };
- }
- function af(n, e = 0, t = 0) {
- return {
- size: {
- width: n.width,
- height: n.height
- },
- positionH: {
- relativeFrom: om.MARGIN,
- posOffset: (n.left || 0) - e
- },
- positionV: {
- relativeFrom: am.PAGE,
- posOffset: (n.top || 0) - t
- },
- angle: n.angle || 0
- };
- }
- function lA(n, e, t) {
- const o = W0(Pt), s = W0(it), r = (0, import_react.useMemo)(() => qt(4), []);
- (0, import_react.useEffect)(() => {
- if (!t || !n || !e)
- return;
- const a = `sheet.operation.editor-${t.getEditorId()}-keyboard-${r}`, c = new Mi();
- return c.add(o.registerCommand({
- id: a,
- type: ar.OPERATION,
- handler(A, l) {
- const { keyCode: d, metaKey: h } = l;
- e.handler(d, h);
- }
- })), e.keyCodes.map((A) => ({
- id: a,
- binding: A.metaKey ? A.keyCode | A.metaKey : A.keyCode,
- preconditions: () => true,
- priority: 901,
- staticParameters: {
- eventType: vf.Keyboard,
- keyCode: A.keyCode,
- metaKey: A.metaKey
- }
- })).forEach((A) => {
- c.add(s.registerShortcut(A));
- }), () => {
- c.dispose();
- };
- }, [o, e, t, n, r, s]);
- }
- var dA = (n, e = true, t, o) => {
- const s = (0, import_react.useCallback)(() => {
- if (n) {
- const { scene: i, mainComponent: a } = n.render, c = n.render.with(D), { width: A, height: l } = n.getBoundingClientRect();
- c.getViewModel().getDataModel().updateDocumentDataPageSize(e ? 1 / 0 : A, 1 / 0), i.transformByState({
- width: A,
- height: l
- }), a == null || a.resize(A, l);
- }
- }, [n, e]), r = (0, import_react.useMemo)(() => S0(() => {
- var E, I;
- if (!t || !n || !t)
- return;
- 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();
- let f = l == null ? void 0 : l.getScrollBar();
- const p = Math.max(d, u), m2 = Math.max(h, g);
- c.transformByState({
- width: p,
- height: m2
- }), A == null || A.resize(p, m2), e ? d > u ? (f == null ? l && new v8(l, {
- barSize: 8,
- enableVertical: false,
- enableHorizontal: true,
- minThumbSizeV: 8
- }) : 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, {
- enableHorizontal: false,
- enableVertical: true,
- barSize: 8,
- minThumbSizeV: 8
- })) : 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());
- }, 30), [n, t, e, o]);
- return (0, import_react.useEffect)(() => {
- if (t && n) {
- const i = setTimeout(() => {
- s(), r();
- }, 500);
- return () => {
- clearTimeout(i);
- };
- }
- }, [n, t, s, r]), (0, import_react.useEffect)(() => {
- if (t && n) {
- const i = n.input$.subscribe(() => {
- r();
- });
- return () => {
- i.unsubscribe();
- };
- }
- }, [n, t, r]), { resize: s, checkScrollBar: r };
- };
- var To = { exports: {} };
- var Kt = {};
- var Or;
- function uA() {
- if (Or)
- return Kt;
- Or = 1;
- 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 };
- function i(a, c, A) {
- var l, d = {}, h = null, u = null;
- A !== void 0 && (h = "" + A), c.key !== void 0 && (h = "" + c.key), c.ref !== void 0 && (u = c.ref);
- for (l in c)
- o.call(c, l) && !r.hasOwnProperty(l) && (d[l] = c[l]);
- if (a && a.defaultProps)
- for (l in c = a.defaultProps, c)
- d[l] === void 0 && (d[l] = c[l]);
- return { $$typeof: e, type: a, key: h, ref: u, props: d, _owner: s.current };
- }
- return Kt.Fragment = t, Kt.jsx = i, Kt.jsxs = i, Kt;
- }
- var Tr;
- function hA() {
- return Tr || (Tr = 1, To.exports = uA()), To.exports;
- }
- var w = hA();
- function ki(n) {
- var e, t, o = "";
- if (typeof n == "string" || typeof n == "number")
- o += n;
- else if (typeof n == "object")
- if (Array.isArray(n)) {
- var s = n.length;
- for (e = 0; e < s; e++)
- n[e] && (t = ki(n[e])) && (o && (o += " "), o += t);
- } else
- for (t in n)
- n[t] && (o && (o += " "), o += t);
- return o;
- }
- function Un() {
- for (var n, e, t = 0, o = "", s = arguments.length; t < s; t++)
- (n = arguments[t]) && (e = ki(n)) && (o && (o += " "), o += e);
- return o;
- }
- function ke2(n, e) {
- var o;
- return (o = n.get(Yx).getRenderById(e)) == null ? void 0 : o.with(D);
- }
- function le(n, e = "") {
- if (!e)
- return ["body"];
- const { headers: t, footers: o } = n.getSnapshot();
- if (t == null && o == null)
- throw new Error("Document data model must have headers or footers when update by segment id");
- if ((t == null ? void 0 : t[e]) != null)
- return ["headers", e, "body"];
- if ((o == null ? void 0 : o[e]) != null)
- return ["footers", e, "body"];
- throw new Error("Segment id not found in headers or footers");
- }
- var Vi = {
- id: "doc.command-replace-snapshot",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: (n, e) => {
- 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();
- if (l == null || d == null)
- return false;
- const { body: h, tableSource: u, footers: g, headers: f, lists: p, drawings: m2, drawingsOrder: E, documentStyle: I } = re.deepClone(o), {
- body: v,
- tableSource: R,
- footers: S,
- headers: C,
- lists: T,
- drawings: O,
- drawingsOrder: P,
- documentStyle: b
- } = d;
- if (h == null || v == null)
- return false;
- if (re.diffValue(h, v) && s)
- return A.replaceDocRanges(s, {
- unitId: t,
- subUnitId: t
- }, false), true;
- const B = {
- id: M.id,
- params: {
- unitId: t,
- actions: [],
- textRanges: s
- }
- };
- i && (B.params.options = i);
- const M2 = [], H = tn.getInstance();
- if (!re.diffValue(b, I)) {
- const D2 = H.replaceOp(["documentStyle"], b, I);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(h, v)) {
- const D2 = H.replaceOp(["body"], v, h);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(u, R)) {
- const D2 = H.replaceOp(["tableSource"], R, u);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(g, S)) {
- const D2 = H.replaceOp(["footers"], S, g);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(f, C)) {
- const D2 = H.replaceOp(["headers"], C, f);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(p, T)) {
- const D2 = H.replaceOp(["lists"], T, p);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(m2, O)) {
- const D2 = H.replaceOp(["drawings"], O, m2);
- D2 != null && M2.push(D2);
- }
- if (!re.diffValue(E, P)) {
- const D2 = H.replaceOp(["drawingsOrder"], P, E);
- D2 != null && M2.push(D2);
- }
- return B.params.actions = M2.reduce((D2, te2) => tn.compose(D2, te2), null), !!c.syncExecuteCommand(B.id, B.params);
- }
- };
- var gA = {
- id: "doc.command-replace-content",
- type: ar.COMMAND,
- handler: async (n, e) => {
- 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;
- if (l == null || d == null)
- return false;
- const h = ji(t, r, l, d, o);
- return h.params.textRanges = s, i && (h.params.options = i), h.params.actions == null && s ? (A.replaceDocRanges(s, {
- unitId: t,
- subUnitId: t
- }, false), true) : !!c.syncExecuteCommand(h.id, h.params);
- }
- };
- var fA = {
- id: "doc.command-cover-content",
- type: ar.COMMAND,
- handler: async (n, e) => {
- 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;
- if (c == null || A == null)
- return false;
- const l = ji(t, s, c, A, o);
- return l.params.noNeedSetTextRange = true, l.params.noHistory = true, i.syncExecuteCommand(
- l.id,
- l.params
- ), a.clearUndoRedo(t), true;
- }
- };
- function pA(n, e, t, o) {
- const s = new Ke(), r = tn.getInstance(), i = (t == null ? void 0 : t.dataStream.length) - 2;
- i > 0 && s.push({
- t: ce.DELETE,
- len: i
- }), o.dataStream.length > 0 && s.push({
- t: ce.INSERT,
- body: o,
- len: o.dataStream.length
- });
- const a = le(e, n);
- return r.editOp(s.serialize(), a);
- }
- function ji(n, e, t, o, s) {
- const r = {
- id: M.id,
- params: {
- unitId: n,
- actions: [],
- textRanges: []
- }
- }, i = pA(e, t, o, s);
- return r.params.actions = i, r;
- }
- ar.COMMAND;
- var mA = {
- id: "doc.command.replace-text-runs",
- type: ar.COMMAND,
- handler: (n, e) => {
- 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;
- if (A == null || l == null)
- return false;
- const d = st.selection.replaceTextRuns({
- doc: A,
- body: o,
- selection: {
- startOffset: 0,
- endOffset: l.dataStream.length - 2,
- collapsed: false
- }
- });
- if (!d)
- return false;
- const h = {
- id: M.id,
- params: {
- unitId: t,
- actions: [],
- textRanges: s,
- noHistory: true
- }
- }, u = tn.getInstance(), g = le(A, r);
- return h.params.actions = u.editOp(d.serialize(), g), h.params.textRanges = s, i && (h.params.options = i), !!c.syncExecuteCommand(h.id, h.params);
- }
- };
- 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 || {});
- var Tt = {
- page: 0,
- section: 1,
- column: 2,
- line: 3,
- divide: 4,
- glyph: 5
- };
- function ys(n, e) {
- 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);
- }
- function Go(n, e) {
- return ys(n, e) ? {
- start: n,
- end: e
- } : {
- start: e,
- end: n
- };
- }
- function yr(n) {
- const e = n.length;
- if (e === 0)
- return;
- const t = n[0], o = n[e - 1], s = n.length === 1 && t.collapsed;
- return {
- startOffset: t.startOffset,
- endOffset: o.endOffset,
- collapsed: s
- };
- }
- function EA(n, e, t, o) {
- let s = o, r = o;
- for (let i = 0; i < n.length; i++) {
- const c = n[i].count;
- i < e && (s += c), i < t && (r += c);
- }
- return {
- startOffset: s,
- endOffset: r
- };
- }
- function Yo(n) {
- const { startX: e, startY: t, endX: o, endY: s } = n, r = [];
- return r.push({
- x: e,
- y: t
- }), r.push({
- x: o,
- y: t
- }), r.push({
- x: o,
- y: s
- }), r.push({
- x: e,
- y: s
- }), r.push({
- x: e,
- y: t
- }), r;
- }
- var it2 = class {
- constructor(e, t) {
- x(this, "_liquid", new U4());
- x(this, "_currentStartState", {
- page: 0,
- section: 0,
- column: 0,
- line: 0,
- divide: 0,
- glyph: 0
- /* NORMAL */
- });
- x(this, "_currentEndState", {
- page: 0,
- section: 0,
- column: 0,
- line: 0,
- divide: 0,
- glyph: 0
- /* NORMAL */
- });
- this._documentOffsetConfig = e, this._docSkeleton = t;
- }
- // eslint-disable-next-line max-lines-per-function
- getRangePointData(e, t) {
- const o = [], s = [], r = [];
- if (e == null || t == null)
- return {
- borderBoxPointGroup: o,
- contentBoxPointGroup: s,
- cursorList: r
- };
- if (!this._isValidPosition(e, t))
- throw new Error(
- `
- Invalid positions in NodePositionConvertToCursor,
- they are not in the same segment page when in header or footer.`
- );
- const { start: a, end: c } = Go(e, t);
- return this._selectionIterator(a, c, (A, l, d, h, u, g) => {
- const { lineHeight: f, asc: p, paddingTop: m2, marginTop: E, marginBottom: I } = g, { glyphGroup: v, st: R } = u;
- if (v.length === 0)
- return;
- const { x: S, y: C } = this._liquid;
- let T, O;
- 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;
- if (A === 0 && l === v.length - 1)
- T = {
- startX: S + M2 + (te2 ? H : 0),
- startY: C,
- endX: S + F + (oe ? 0 : D2),
- endY: C + f - E - I
- }, O = {
- startX: S + M2 + (te2 ? H : 0),
- startY: C + m2 + p - he.bBox.ba,
- endX: S + F + (oe ? 0 : D2),
- endY: C + m2 + p + he.bBox.bd
- };
- else {
- const Ae2 = Y && !te2;
- T = {
- startX: S + M2 + (Ae2 ? 0 : H),
- startY: C,
- endX: S + F + (oe ? 0 : D2),
- endY: C + f - E - I
- }, O = {
- startX: S + M2 + (Ae2 ? 0 : H),
- startY: C + m2 + p - he.bBox.ba,
- endX: S + F + (oe ? 0 : D2),
- endY: C + m2 + p + he.bBox.bd
- };
- }
- o.push(Yo(T)), s.push(Yo(O)), r.push({
- startOffset: Y ? q : q + P.count,
- endOffset: oe ? V : V + b.count,
- collapsed: ce2
- });
- }), {
- borderBoxPointGroup: o,
- contentBoxPointGroup: s,
- cursorList: r
- };
- }
- _isValidPosition(e, t) {
- const { segmentPage: o, pageType: s } = e, { segmentPage: r, pageType: i } = t;
- return s !== i ? false : s === g1.HEADER || s === g1.FOOTER ? o === r : true;
- }
- _resetCurrentNodePositionState() {
- this._currentStartState = {
- page: 0,
- section: 0,
- column: 0,
- line: 0,
- divide: 0,
- glyph: 0
- /* NORMAL */
- }, this._currentEndState = {
- page: 0,
- section: 0,
- column: 0,
- line: 0,
- divide: 0,
- glyph: 0
- /* NORMAL */
- };
- }
- _setNodePositionState(e = 0, t, o, s) {
- s === t ? this._currentStartState[e] = 1 : this._currentStartState[e] = 0, s === o ? this._currentEndState[e] = 2 : this._currentEndState[e] = 0;
- }
- _checkPreviousNodePositionState(e, t = true) {
- let o = e, s;
- for (; o >= 0; ) {
- const r = Bn[o];
- let i;
- if (t ? i = this._currentStartState[r] : i = this._currentEndState[r], i === void 0)
- return;
- if (s === void 0 && (s = i), i !== s)
- return 0;
- o--;
- }
- return s;
- }
- _getSelectionRuler(e, t, o, s, r) {
- let i = 0, a = s;
- const c = Bn[e], A = Bn[e + 1];
- if (A === null || c === null)
- return {
- start_next: i,
- end_next: a
- };
- const l = t[c], d = o[c];
- this._setNodePositionState(c, l, d, r);
- const h = this._checkPreviousNodePositionState(e), u = this._checkPreviousNodePositionState(e, false);
- return h === 1 && (i = t[A]), u === 2 && (a = o[A]), {
- start_next: i,
- end_next: a
- };
- }
- // eslint-disable-next-line max-lines-per-function, complexity
- _selectionIterator(e, t, o) {
- var v, R;
- const s = this._docSkeleton;
- if (!s)
- return [];
- const { pageType: r, path: i } = e;
- this._liquid.reset();
- const a = s.getSkeletonData();
- if (a == null)
- return [];
- const { pages: c, skeHeaders: A, skeFooters: l } = a, { page: d, segmentPage: h } = e, { page: u, segmentPage: g } = t;
- if (this._resetCurrentNodePositionState(), this._documentOffsetConfig == null)
- return [];
- const { pageLayoutType: f, pageMarginLeft: p, pageMarginTop: m2 } = this._documentOffsetConfig, E = r === g1.BODY || r === g1.CELL ? d : h;
- for (let S = 0; S < E; S++) {
- const C = c[S];
- this._liquid.translatePage(C, f, p, m2);
- }
- const I = r === g1.BODY || r === g1.CELL ? u : g;
- for (let S = E; S <= I; S++) {
- const C = c[S], { headerId: T, footerId: O, pageWidth: P } = C;
- let b = C;
- 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) {
- this._liquid.translatePage(C, f, p, m2);
- continue;
- }
- const B = b.sections, { start_next: M2, end_next: H } = this._getSelectionRuler(
- Tt.page,
- e,
- t,
- B.length - 1,
- r === g1.BODY || r === g1.CELL ? S : 0
- );
- switch (this._liquid.translateSave(), r) {
- case g1.HEADER:
- this._liquid.translatePagePadding({
- ...b,
- marginLeft: C.marginLeft
- // Because header or footer margin Left is 0.
- });
- break;
- case g1.FOOTER: {
- const F = C.pageHeight - b.height - b.marginBottom;
- this._liquid.translate(C.marginLeft, F);
- break;
- }
- case g1.CELL: {
- this._liquid.translatePagePadding(C);
- const F = b.parent, D2 = F.parent, { left: te2 } = b, { top: q, left: V } = D2, { top: Y } = F;
- this._liquid.translate(V + te2, q + Y), this._liquid.translatePagePadding(b);
- break;
- }
- default:
- this._liquid.translatePagePadding(C);
- break;
- }
- for (let F = M2; F <= H; F++) {
- const D2 = B[F], te2 = D2.columns, { start_next: q, end_next: V } = this._getSelectionRuler(
- Tt.section,
- e,
- t,
- te2.length - 1,
- F
- );
- this._liquid.translateSection(D2);
- for (let Y = q; Y <= V; Y++) {
- const oe = te2[Y], ce2 = oe.lines, { start_next: he, end_next: Ae2 } = this._getSelectionRuler(
- Tt.column,
- e,
- t,
- ce2.length - 1,
- Y
- );
- this._liquid.translateColumn(oe);
- for (let ne = he; ne <= Ae2; ne++) {
- const ae = ce2[ne], { divides: Te } = ae, { start_next: je, end_next: ut } = this._getSelectionRuler(
- Tt.line,
- e,
- t,
- Te.length - 1,
- ne
- );
- this._liquid.translateSave(), this._liquid.translateLine(ae, true, false);
- for (let we2 = je; we2 <= ut; we2++) {
- const Yt = Te[we2];
- this._liquid.translateSave(), this._liquid.translateDivide(Yt);
- const { glyphGroup: Qa } = Yt, { start_next: Ua, end_next: La } = this._getSelectionRuler(
- Tt.divide,
- e,
- t,
- Qa.length - 1,
- we2
- );
- let cr = false, Ar = false;
- 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();
- }
- this._liquid.translateRestore();
- }
- }
- }
- this._liquid.translateRestore(), this._liquid.translatePage(C, f, p, m2);
- }
- }
- };
- function SA(n, e) {
- const { path: t } = n, { path: o } = e;
- if (t.length !== o.length || t.indexOf("cells") === -1)
- return false;
- 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]);
- if (a !== A)
- return false;
- const d = t[r], h = o[r], u = t[i], g = o[i];
- return !(d === h && u === g && c === l);
- }
- function Wi(n, e) {
- const { path: t } = n, { path: o } = e;
- return t.indexOf("cells") === -1 || o.indexOf("cells") === -1 || t.length !== o.length ? false : re.diffValue(t, o);
- }
- function zi(n, e, t) {
- var u, g, f, p, m2, E, I, v;
- const { path: o } = e, { path: s } = t;
- if (o.indexOf("cells") === -1 || s.indexOf("cells") === -1)
- return false;
- 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;
- if (a == null || c == null)
- return false;
- const A = a.parent, l = c.parent, d = A.cells.indexOf(a), h = l.cells.indexOf(c);
- return d === h && A.index === l.index;
- }
- function yo(n, e) {
- if (Wi(n, e))
- return ys(n, e);
- const { path: t } = n, { path: o } = e, s = t[t.length - 5], r = o[o.length - 5];
- if (s !== r && typeof s == "string" && typeof r == "string") {
- const l = s.split("#-#")[1], d = r.split("#-#")[1];
- return +l < +d;
- }
- const i = t[t.length - 3], a = o[o.length - 3], c = t[t.length - 1], A = o[o.length - 1];
- return i < a ? true : i > a ? false : c <= A;
- }
- function vt(n) {
- return n.sections[0].columns[0].lines.length === 0;
- }
- function IA(n, e, t) {
- let o = e, s = t, r = n[o], i = n[s];
- for (; o < s && (vt(r) || vt(i)); )
- vt(r) ? (o++, r = n[o]) : vt(i) && (s--, i = n[s]);
- if (!vt(r) && !vt(i))
- return [r, i];
- }
- var Gi = class {
- constructor(e, t) {
- x(this, "_liquid", new U4());
- this._documentOffsetConfig = e, this._docSkeleton = t;
- }
- // eslint-disable-next-line max-lines-per-function
- getRangePointData(e, t) {
- const o = [], r = this._docSkeleton.getSkeletonData();
- if (r == null)
- return;
- const { pages: i } = r, { segmentPage: a, page: c, pageType: A } = e, l = this._getTableRectRangeInfo(e, t);
- if (l == null)
- return;
- const {
- tableId: d,
- startRowIndex: h,
- startColumnIndex: u,
- endRowIndex: g,
- endColumnIndex: f
- } = l;
- this._liquid.reset();
- const { pageLayoutType: p, pageMarginLeft: m2, pageMarginTop: E } = this._documentOffsetConfig, I = A === g1.BODY || A === g1.CELL ? c : a;
- for (let v = 0; v < I; v++) {
- const R = i[v];
- this._liquid.translatePage(R, p, m2, E);
- }
- for (let v = I; v < i.length; v++) {
- const R = i[v];
- this._liquid.translatePagePadding(R);
- const { skeTables: S } = R;
- let C = null;
- for (const [b, B] of S.entries())
- b.startsWith(d) && (C = B);
- if (C == null) {
- this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m2, E);
- continue;
- }
- this._liquid.translateSave(), this._liquid.translate(0, C.top);
- const { x: T, y: O } = this._liquid, { left: P } = C;
- for (const b of C.rows)
- if (b.index >= h && b.index <= g) {
- const B = IA(b.cells, u, f);
- if (B == null)
- continue;
- const [M2, H] = B, F = {
- startX: T + M2.left + P,
- startY: O + b.top,
- endX: T + H.left + H.pageWidth + P,
- endY: O + b.top + b.height
- };
- o.push(Yo(F));
- }
- this._liquid.translateRestore(), this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m2, E);
- }
- return {
- pointGroup: o,
- startRow: h,
- startColumn: u,
- endRow: g,
- endColumn: f,
- tableId: d
- };
- }
- getNodePositionGroup(e, t) {
- const o = [], s = this._docSkeleton.findCharIndexByPosition(e), r = this._docSkeleton.findCharIndexByPosition(t);
- if (s == null || r == null)
- return;
- const i = s < r, a = this._getTableRectRangeInfo(e, t);
- if (a == null)
- return;
- const { tableId: c, startRowIndex: A, startColumnIndex: l, endRowIndex: d, endColumnIndex: h } = a, u = this._docSkeleton.getViewModel().findTableNodeById(c);
- if (u == null)
- return;
- const g = u.children[0].children.length;
- if (l === 0 && h === g - 1) {
- 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);
- if (m2 == null || I == null)
- return;
- o.push({
- anchor: i ? m2 : I,
- focus: i ? I : m2
- });
- } else
- for (let p = A; p <= d; p++) {
- 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);
- if (v == null || R == null)
- return;
- o.push({
- anchor: i ? v : R,
- focus: i ? R : v
- });
- }
- return o;
- }
- _getTableRectRangeInfo(e, t) {
- const s = this._docSkeleton.getSkeletonData();
- if (s == null)
- return;
- const { pages: r } = s, { path: i } = e, { path: a } = t, c = Jv(s, i), A = Jv(s, a);
- if (c == null || A == null)
- return;
- 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);
- return {
- pages: r,
- tableId: l,
- startRowIndex: f,
- startColumnIndex: m2,
- endRowIndex: p,
- endColumnIndex: E
- };
- }
- };
- var CA = "__TestSelectionRange__";
- var vA = "__TestSelectionAnchor__";
- var Br = 6;
- var Bo = 500;
- var RA = 500;
- var qo = 3;
- function Mn(n) {
- const e = n[0], t = e[0], o = e[2], { x: s, y: r } = t, { x: i, y: a } = o;
- return {
- left: s,
- top: r,
- width: i - s,
- height: a - r
- };
- }
- function Bs(n) {
- return n.map((e) => {
- let t = 1 / 0, o = -1 / 0, s = 1 / 0, r = -1 / 0;
- return e.forEach((i) => {
- t = Math.min(i.x, t), o = Math.max(i.x, o), r = Math.max(i.y, r), s = Math.min(i.y, s);
- }), {
- left: t,
- right: o,
- top: s,
- bottom: r
- };
- });
- }
- var Mt2 = class {
- constructor(e, t, o, s, r, i = LS, a = "", c = -1) {
- x(this, "rangeType", Ag.TEXT);
- x(this, "_current", false);
- x(this, "_rangeShape");
- x(this, "_anchorShape");
- x(this, "_cursorList", []);
- x(this, "_anchorBlinkTimer", null);
- 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();
- }
- _anchorBlink() {
- setTimeout(() => {
- this._anchorShape && this._anchorShape.visible && this.deactivateStatic();
- }, Bo), this._anchorBlinkTimer = setInterval(() => {
- this._anchorShape && this._anchorShape.visible && (this.activeStatic(), setTimeout(() => {
- this.deactivateStatic();
- }, Bo));
- }, RA + Bo);
- }
- // The start position of the range
- get startOffset() {
- var s;
- const { startOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
- if (e == null || t == null)
- return e;
- const o = t.dataStream.length - 2;
- return Math.min(o, e);
- }
- // The end position of the range
- get endOffset() {
- var s;
- const { endOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
- if (e == null || t == null)
- return e;
- const o = t.dataStream.length - 2;
- return Math.min(e, o);
- }
- get collapsed() {
- const { startOffset: e, endOffset: t } = this;
- return e != null && e === t;
- }
- get startNodePosition() {
- if (this.anchorNodePosition == null)
- return null;
- if (this.focusNodePosition == null)
- return this.anchorNodePosition;
- const { start: e } = Go(this.anchorNodePosition, this.focusNodePosition);
- return e;
- }
- get endNodePosition() {
- if (this.anchorNodePosition == null)
- return this.focusNodePosition;
- if (this.focusNodePosition == null)
- return null;
- const { end: e } = Go(this.anchorNodePosition, this.focusNodePosition);
- return e;
- }
- get direction() {
- const { collapsed: e, anchorNodePosition: t, focusNodePosition: o } = this;
- return e || t == null || o == null ? Sg.NONE : ys(t, o) ? Sg.FORWARD : Sg.BACKWARD;
- }
- get segmentId() {
- return this._segmentId;
- }
- get segmentPage() {
- return this._segmentPage;
- }
- getAbsolutePosition() {
- const e = this.anchorNodePosition, t = this.focusNodePosition;
- if (this._isEmpty())
- return;
- const o = this._document.getOffsetConfig(), { docsLeft: s, docsTop: r } = o, i = new it2(o, this._docSkeleton);
- if (this._isCollapsed()) {
- const { contentBoxPointGroup: l, cursorList: d } = i.getRangePointData(e, e);
- if (this._setCursorList(d), l.length === 0)
- return;
- const h = Mn(l);
- return {
- ...h,
- left: h.left + s,
- top: h.top + r
- };
- }
- const { borderBoxPointGroup: a, cursorList: c } = i.getRangePointData(e, t);
- if (this._setCursorList(c), a.length === 0)
- return;
- const A = Mn(a);
- return {
- ...A,
- left: A.left + s,
- top: A.top + r
- };
- }
- getAnchor() {
- return this._anchorShape;
- }
- activeStatic() {
- var e, t;
- (t = this._anchorShape) == null || t.setProps({
- stroke: ((e = this.style) == null ? void 0 : e.strokeActive) || E2(xo.black, 1)
- });
- }
- deactivateStatic() {
- var e, t;
- (t = this._anchorShape) == null || t.setProps({
- stroke: ((e = this.style) == null ? void 0 : e.stroke) || E2(xo.black, 0)
- });
- }
- isActive() {
- return this._current === true;
- }
- activate() {
- this._current = true;
- }
- deactivate() {
- this._current = false;
- }
- dispose() {
- var e, t;
- (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);
- }
- isIntersection(e) {
- const { startOffset: t, endOffset: o } = this, { startOffset: s, endOffset: r } = e;
- return t == null || o == null || s == null || r == null ? false : t <= r && o >= s;
- }
- // render cursor and selection.
- refresh() {
- var d, h;
- const { _document: e, _docSkeleton: t } = this, o = this.anchorNodePosition, s = this.focusNodePosition;
- if ((d = this._anchorShape) == null || d.hide(), (h = this._rangeShape) == null || h.hide(), this._isEmpty())
- return;
- const r = e.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, c = new it2(r, t);
- if (this._isCollapsed()) {
- const { contentBoxPointGroup: u, cursorList: g } = c.getRangePointData(o, o);
- if (this._setCursorList(g), u.length > 0) {
- const f = t.findGlyphByPosition(o);
- this._createOrUpdateAnchor(u, i, a, f);
- }
- return;
- }
- const { borderBoxPointGroup: A, cursorList: l } = c.getRangePointData(o, s);
- this._setCursorList(l), A.length > 0 && this._createOrUpdateRange(A, i, a);
- }
- _isEmpty() {
- return this.anchorNodePosition == null && this.focusNodePosition == null;
- }
- _isCollapsed() {
- const e = this.anchorNodePosition, t = this.focusNodePosition;
- if (e != null && t == null)
- return true;
- if (e == null || t == null)
- return false;
- const o = Object.keys(Tt);
- for (const s of o) {
- const r = e[s], i = t[s];
- if (r !== i)
- return false;
- }
- return e.isBack === t.isBack;
- }
- _createOrUpdateRange(e, t, o) {
- var i;
- if (this._rangeShape) {
- this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
- return;
- }
- const s = 0.3, r = new T3(CA + re.generateRandomId(Br), {
- pointsGroup: e,
- fill: ((i = this.style) == null ? void 0 : i.fill) || E2(xo.black, s),
- left: t,
- top: o,
- evented: false,
- debounceParentDirty: false
- });
- this._rangeShape = r, this._scene.addObject(r, qo);
- }
- _createOrUpdateAnchor(e, t, o, s) {
- var f, p, m2;
- const r = Mn(e), { left: i } = r;
- let { top: a, height: c } = r;
- const A = 14;
- c < A && (a -= A - c, c = A);
- const l = 12;
- let d = i + t;
- const h = a + o, u = ((f = s == null ? void 0 : s.ts) == null ? void 0 : f.it) === we.TRUE;
- if (u && (d += c * Math.tan(l * Math.PI / 180) / 2), this._anchorShape) {
- this._anchorShape.transformByState({ left: d, top: h, height: c }), this._anchorShape.show(), u ? this._anchorShape.skew(-12, 0) : this._anchorShape.skew(0, 0);
- return;
- }
- const g = new A1(vA + re.generateRandomId(Br), {
- left: d,
- top: h,
- height: c,
- strokeWidth: ((p = this.style) == null ? void 0 : p.strokeWidth) || 1.5,
- stroke: ((m2 = this.style) == null ? void 0 : m2.strokeActive) || E2(xo.black, 1),
- evented: false
- });
- u && g.skew(-12, 0), this._anchorShape = g, this._scene.addObject(g, qo), this.activeStatic();
- }
- _setCursorList(e) {
- e.length !== 0 && (this._cursorList = e);
- }
- };
- var bA = "__DocTableRectRange__";
- var xA = 6;
- function Mo(n, e, t, o, s, r = LS, i = "", a = -1) {
- const c = e.getOffsetConfig(), l = new Gi(c, t).getNodePositionGroup(o, s);
- return (l != null ? l : []).map((d) => new Yi(
- n,
- e,
- t,
- d.anchor,
- d.focus,
- r,
- i,
- a
- ));
- }
- var Yi = class {
- constructor(e, t, o, s, r, i = LS, a = "", c = -1) {
- x(this, "rangeType", Ag.RECT);
- x(this, "_rangeShape");
- x(this, "_current", false);
- x(this, "_startRow");
- x(this, "_startCol");
- x(this, "_endRow");
- x(this, "_endCol");
- x(this, "_tableId");
- 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();
- }
- get startOffset() {
- const { startNodePosition: e } = this;
- return this._docSkeleton.findCharIndexByPosition(e);
- }
- get endOffset() {
- const { endNodePosition: e } = this;
- return this._docSkeleton.findCharIndexByPosition(e);
- }
- get collapsed() {
- return false;
- }
- get startRow() {
- return this._startRow;
- }
- get startColumn() {
- return this._startCol;
- }
- get endRow() {
- return this._endRow;
- }
- get endColumn() {
- return this._endCol;
- }
- get tableId() {
- return this._tableId;
- }
- get segmentId() {
- return this._segmentId;
- }
- get segmentPage() {
- return this._segmentPage;
- }
- get spanEntireRow() {
- var i;
- const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startCol: o, _endCol: s } = this;
- if (t == null)
- throw new Error("Table is not found.");
- const { tableColumns: r } = t;
- return o === 0 && s === r.length - 1;
- }
- get spanEntireColumn() {
- var i;
- const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startRow: o, _endRow: s } = this;
- if (t == null)
- throw new Error("Table is not found.");
- const { tableRows: r } = t;
- return o === 0 && s === r.length - 1;
- }
- get spanEntireTable() {
- return this.spanEntireRow && this.spanEntireColumn;
- }
- get startNodePosition() {
- const { anchorNodePosition: e, focusNodePosition: t } = this;
- return yo(e, t) ? e : t;
- }
- get endNodePosition() {
- const { anchorNodePosition: e, focusNodePosition: t } = this;
- return yo(e, t) ? t : e;
- }
- get direction() {
- const { anchorNodePosition: e, focusNodePosition: t } = this;
- return yo(e, t) ? Sg.FORWARD : Sg.BACKWARD;
- }
- isActive() {
- return this._current === true;
- }
- activate() {
- this._current = true;
- }
- deactivate() {
- this._current = false;
- }
- dispose() {
- var e;
- (e = this._rangeShape) == null || e.dispose(), this._rangeShape = null;
- }
- isIntersection(e) {
- const { startRow: t, startColumn: o, endRow: s, endColumn: r } = this, { startRow: i, startColumn: a, endRow: c, endColumn: A } = e, l = {
- left: o,
- top: t,
- right: r,
- bottom: s
- }, d = {
- left: a,
- top: i,
- right: A,
- bottom: c
- };
- return en.hasIntersectionBetweenTwoRect(l, d);
- }
- refresh() {
- var p;
- (p = this._rangeShape) == null || p.hide();
- 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);
- if (A == null)
- return;
- const { pointGroup: l = [], startRow: d, endRow: h, startColumn: u, endColumn: g, tableId: f } = A;
- (l == null ? void 0 : l.length) > 0 && this._createOrUpdateRange(l, i, a), this._updateTableInfo(d, h, u, g, f);
- }
- _updateTableInfo(e, t, o, s, r) {
- this._startRow = e, this._endRow = t, this._startCol = o, this._endCol = s, this._tableId = r;
- }
- _createOrUpdateRange(e, t, o) {
- var i;
- if (this._rangeShape) {
- this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
- return;
- }
- const s = 0.3, r = new T3(bA + re.generateRandomId(xA), {
- pointsGroup: e,
- fill: ((i = this.style) == null ? void 0 : i.fill) || E2(xo.black, s),
- left: t,
- top: o,
- evented: false,
- debounceParentDirty: false
- });
- this._rangeShape = r, this._scene.addObject(r, qo);
- }
- };
- function Mr(n, e, t, o, s, r, i, a, c = true, A = true) {
- const l = s.findNodePositionByCharIndex(n, c, i, a), d = s.findNodePositionByCharIndex(e, A, i, a);
- if (!(l == null || d == null))
- return new Mt2(t, o, s, l, d, r, i, a);
- }
- function OA(n, e, t, o, s, r, i, a) {
- const c = s.findNodePositionByCharIndex(n, true, i, a), A = s.findNodePositionByCharIndex(e, true, i, a);
- if (!(c == null || A == null))
- return new Yi(t, o, s, c, A, r, i, a);
- }
- function TA(n, e, t, o, s, r, i, a) {
- const c = s.findNodePositionByCharIndex(n, true, i, a), A = s.findNodePositionByCharIndex(e, true, i, a);
- if (!(c == null || A == null))
- return Ko(
- c,
- A,
- t,
- o,
- s,
- r,
- i,
- a
- );
- }
- function Ko(n, e, t, o, s, r, i, a) {
- const c = [], A = [], l = [t, o, s, n, e, r, i, a];
- if (zi(s, n, e)) {
- if (Wi(n, e))
- return c.push(new Mt2(...l)), {
- textRanges: c,
- rectRanges: A
- };
- {
- const I = Mo(
- ...l
- );
- return A.push(...I), {
- textRanges: c,
- rectRanges: A
- };
- }
- }
- if (SA(n, e)) {
- const I = Mo(
- ...l
- );
- return A.push(...I), {
- textRanges: c,
- rectRanges: A
- };
- }
- const d = s.getViewModel().getSelfOrHeaderFooterViewModel(i), h = s.findCharIndexByPosition(n), u = s.findCharIndexByPosition(e);
- if (h == null || u == null)
- return;
- const g = h <= u ? Sg.FORWARD : Sg.BACKWARD, f = Math.min(h, u), p = Math.max(h, u);
- let m2 = f, E = p;
- for (const I of d.getChildren())
- for (const v of I.children) {
- const { startIndex: R, endIndex: S, children: C } = v, T = I.children.indexOf(v), O = I.children[T + 1], P = C[0];
- let b = false;
- if (P) {
- const { startIndex: B, endIndex: M2, children: H } = P;
- let F = null, D2 = null;
- const te2 = H.find((V) => V.startIndex <= f && V.endIndex >= f), q = H.find((V) => V.startIndex <= p && V.endIndex >= p);
- if (f > B && f < M2)
- F = s.findNodePositionByCharIndex(te2.startIndex + 2, true, i, a), D2 = s.findNodePositionByCharIndex(M2 - 4, true, i, a), m2 = M2 + 1;
- else if (p > B && p < M2)
- F = s.findNodePositionByCharIndex(B + 3, true, i, a), D2 = s.findNodePositionByCharIndex(q.endIndex - 3, true, i, a), E = B - 1, b = true;
- else if (B > f && M2 < p) {
- if (F = s.findNodePositionByCharIndex(B + 3, true, i, a), D2 = s.findNodePositionByCharIndex(M2 - 4, true, i, a), m2 <= B - 1) {
- 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;
- c.push(new Mt2(t, o, s, oe, ce2, r, i, a));
- }
- m2 = M2 + 1;
- }
- if (F && D2) {
- const V = g === Sg.FORWARD ? F : D2, Y = g === Sg.FORWARD ? D2 : F;
- A.push(...Mo(
- t,
- o,
- s,
- V,
- Y,
- r,
- i,
- a
- ));
- }
- }
- if (E === S + 1 && !b && O && O.children.length && (E = S, b = true), E >= R && E <= S || b) {
- 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;
- if (A.length && re.diffValue(H, F))
- continue;
- c.push(new Mt2(t, o, s, H, F, r, i, a));
- }
- }
- return {
- textRanges: c,
- rectRanges: A
- };
- }
- function yA(n) {
- const e = n == null ? void 0 : n.getCanvasElement();
- if (!e)
- return {
- left: 0,
- top: 0
- };
- const { top: t, left: o } = PS(e);
- return {
- left: o,
- top: t
- };
- }
- function _r(n) {
- var c;
- const e = (c = n.parent) == null ? void 0 : c.parent, t = e == null ? void 0 : e.parent;
- if (e == null || t == null)
- return;
- const { paragraphIndex: o } = e, s = t.lines.filter((A) => A.paragraphIndex === o);
- let r = -1, i = "", a = false;
- for (const A of s)
- for (const l of A.divides)
- for (const d of l.glyphGroup)
- a || (r += d.count), d === n && (a = true), i += d.count > 0 ? d.content : "";
- return {
- st: s[0].st,
- ed: o,
- content: i,
- nodeIndex: r
- };
- }
- function Xo(n) {
- const { startOffset: e, endOffset: t, collapsed: o, rangeType: s, startNodePosition: r, endNodePosition: i, direction: a, segmentId: c, segmentPage: A } = n;
- return {
- startOffset: e,
- endOffset: t,
- collapsed: o,
- rangeType: s,
- startNodePosition: r,
- endNodePosition: i,
- direction: a,
- segmentId: c,
- segmentPage: A,
- isActive: n.isActive()
- };
- }
- function BA(n) {
- const e = Xo(n), {
- startRow: t,
- startColumn: o,
- endRow: s,
- endColumn: r,
- tableId: i,
- spanEntireRow: a,
- spanEntireColumn: c,
- spanEntireTable: A
- } = n;
- return {
- ...e,
- startRow: t,
- startColumn: o,
- endRow: s,
- endColumn: r,
- tableId: i,
- spanEntireRow: a,
- spanEntireColumn: c,
- spanEntireTable: A
- };
- }
- var MA = Object.defineProperty;
- var _A = Object.getOwnPropertyDescriptor;
- var PA = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? _A(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && MA(e, t, s), s;
- };
- var Cn = (n, e) => (t, o) => e(t, o, n);
- var Se = class extends J0 {
- constructor(e, t, o, s, r) {
- super();
- x(this, "_onInputBefore$", new Subject());
- x(this, "onInputBefore$", this._onInputBefore$.asObservable());
- x(this, "_onKeydown$", new Subject());
- x(this, "onKeydown$", this._onKeydown$.asObservable());
- x(this, "_onInput$", new Subject());
- x(this, "onInput$", this._onInput$.asObservable());
- x(this, "_onCompositionstart$", new BehaviorSubject(null));
- x(this, "onCompositionstart$", this._onCompositionstart$.asObservable());
- x(this, "_onCompositionupdate$", new BehaviorSubject(null));
- x(this, "onCompositionupdate$", this._onCompositionupdate$.asObservable());
- x(this, "_onCompositionend$", new BehaviorSubject(null));
- x(this, "onCompositionend$", this._onCompositionend$.asObservable());
- x(this, "_onSelectionStart$", new BehaviorSubject(null));
- x(this, "onSelectionStart$", this._onSelectionStart$.asObservable());
- x(this, "onChangeByEvent$", merge(
- this._onInput$,
- this._onKeydown$.pipe(filter((e2) => e2.event.keyCode === I1.BACKSPACE)),
- this._onCompositionend$
- ));
- x(this, "_onPaste$", new Subject());
- x(this, "onPaste$", this._onPaste$.asObservable());
- x(this, "_textSelectionInner$", new BehaviorSubject(null));
- x(this, "textSelectionInner$", this._textSelectionInner$.asObservable());
- x(this, "_onFocus$", new Subject());
- x(this, "onFocus$", this._onFocus$.asObservable());
- x(this, "_onBlur$", new Subject());
- x(this, "onBlur$", this._onBlur$.asObservable());
- x(this, "_onPointerDown$", new Subject());
- x(this, "onPointerDown$", this._onPointerDown$.asObservable());
- x(this, "_container");
- x(this, "_inputParent");
- x(this, "_input");
- x(this, "_scrollTimers", []);
- x(this, "_rangeList", []);
- x(this, "_rangeListCache", []);
- x(this, "_rectRangeList", []);
- x(this, "_rectRangeListCache", []);
- x(this, "_anchorNodePosition", null);
- x(this, "_focusNodePosition", null);
- x(this, "_currentSegmentId", "");
- x(this, "_currentSegmentPage", -1);
- x(this, "_selectionStyle", LS);
- x(this, "_onPointerEvent", false);
- x(this, "_viewPortObserverMap", /* @__PURE__ */ new Map());
- x(this, "_isIMEInputApply", false);
- x(this, "_scenePointerMoveSubs", []);
- x(this, "_scenePointerUpSubs", []);
- x(this, "_reserveRanges", false);
- this._context = e, this._layoutService = t, this._logService = o, this._univerInstanceService = s, this._docSkeletonManagerService = r, this._initDOM(), this._registerContainer(), this._setSystemHighlightColorToStyle(), this._listenCurrentUnitChange();
- }
- get isOnPointerEvent() {
- return this._onPointerEvent;
- }
- get isFocusing() {
- return this._input === document.activeElement;
- }
- get canFocusing() {
- return this.isFocusing || document.activeElement === document.body || document.activeElement === null;
- }
- _listenCurrentUnitChange() {
- this._univerInstanceService.getCurrentTypeOfUnit$(Fe.UNIVER_DOC).pipe(takeUntil(this.dispose$)).subscribe((e) => {
- if (e == null)
- return;
- e.getUnitId() !== this._context.unitId && !this._reserveRanges && this.removeAllRanges();
- });
- }
- get activeViewPort() {
- return this._context.scene.getViewports()[0];
- }
- setSegment(e) {
- this._currentSegmentId = e;
- }
- getSegment() {
- return this._currentSegmentId;
- }
- setSegmentPage(e) {
- this._currentSegmentPage = e;
- }
- getSegmentPage() {
- return this._currentSegmentPage;
- }
- setReserveRangesStatus(e) {
- this._reserveRanges = e;
- }
- _setRangeStyle(e = LS) {
- this._selectionStyle = e;
- }
- // eslint-disable-next-line max-lines-per-function
- addDocRanges(e, t = true, o) {
- const {
- _currentSegmentId: s,
- _currentSegmentPage: r,
- _selectionStyle: i
- } = this, { scene: a, mainComponent: c } = this._context, A = c, l = this._docSkeletonManagerService.getSkeleton(), d = (h, u) => {
- const g = TA(
- h,
- u,
- a,
- A,
- l,
- i,
- s,
- r
- );
- if (g == null)
- return;
- const { textRanges: f, rectRanges: p } = g;
- for (const m2 of f)
- this._addTextRange(m2);
- this._addRectRanges(p);
- };
- for (const h of e) {
- const { startOffset: u, endOffset: g, rangeType: f, startNodePosition: p, endNodePosition: m2 } = h;
- if (f === Ag.RECT) {
- const E = OA(
- u,
- g,
- a,
- A,
- l,
- i,
- s,
- r
- );
- E && this._addRectRanges([E]);
- } else if (f === Ag.TEXT)
- try {
- let E = null;
- p && m2 ? E = Mr(
- p.isBack ? u : u - 1,
- m2.isBack ? g : g - 1,
- a,
- A,
- l,
- i,
- s,
- r,
- p.isBack,
- m2.isBack
- ) : E = Mr(
- u,
- g,
- a,
- A,
- l,
- i,
- s,
- r
- ), E && this._addTextRange(E);
- } catch {
- d(u, g);
- }
- else
- d(u, g);
- }
- this._textSelectionInner$.next({
- textRanges: this._getAllTextRanges(),
- rectRanges: this._getAllRectRanges(),
- segmentId: s,
- segmentPage: r,
- style: i,
- isEditing: t,
- options: o
- }), this._updateInputPosition(o == null ? void 0 : o.forceFocus);
- }
- setCursorManually(e, t) {
- const o = this._findNodeByCoord(e, t, {
- strict: true,
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage
- }), s = this._getNodePosition(o);
- if (s == null) {
- this._removeAllRanges();
- return;
- }
- (o == null ? void 0 : o.node.streamType) === ln.PARAGRAPH && (s.isBack = true), this._createTextRangeByAnchorPosition(s), this._textSelectionInner$.next({
- textRanges: this._getAllTextRanges(),
- rectRanges: this._getAllRectRanges(),
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage,
- style: this._selectionStyle,
- isEditing: false
- });
- }
- // Sync canvas selection to dom selection.
- sync() {
- this._updateInputPosition();
- }
- /**
- * @deprecated
- */
- activate(e, t, o = false) {
- this._container.style.left = `${e}px`, this._container.style.top = `${t}px`, this._container.style.zIndex = "1000", (this.canFocusing || o) && this.focus();
- }
- hasFocus() {
- return document.activeElement === this._input;
- }
- focus() {
- this._input.focus();
- }
- blur() {
- this._input.blur();
- }
- // FIXME: for editor cell editor we don't need to blur the input element
- /**
- * @deprecated
- */
- deactivate() {
- this._container.style.left = "0px", this._container.style.top = "0px";
- }
- // Handler double click.
- __handleDblClick(e) {
- const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
- strict: false,
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage
- });
- if (s == null || s.node == null)
- return;
- const r = _r(s.node);
- if (r == null)
- return;
- const { content: i, st: a, nodeIndex: c } = r;
- if (c === -1 || Intl.Segmenter == null)
- return;
- const l = new Intl.Segmenter(void 0, { granularity: "word" }).segment(i);
- let d = Number.NEGATIVE_INFINITY, h = Number.NEGATIVE_INFINITY;
- for (const { segment: u, index: g, isWordLike: f } of l)
- if (g <= c && c < g + u.length && f) {
- d = g + a, h = g + a + u.length;
- break;
- }
- if (Number.isFinite(d) && Number.isFinite(h)) {
- this.removeAllRanges();
- const u = [
- {
- startOffset: d,
- endOffset: h
- }
- ];
- this.addDocRanges(u, false, { forceFocus: true });
- }
- }
- __handleTripleClick(e) {
- const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
- strict: false,
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage
- });
- if (s == null || s.node == null)
- return;
- const r = _r(s.node);
- if (r == null)
- return;
- this.removeAllRanges();
- const { st: i, ed: a } = r, c = [
- {
- startOffset: i,
- endOffset: a
- }
- ];
- this.addDocRanges(c, false, { forceFocus: true });
- }
- // Handle pointer down.
- // eslint-disable-next-line max-lines-per-function, complexity
- __onPointDown(e) {
- var f, p;
- const { scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton(), { offsetX: r, offsetY: i } = e, a = this._findNodeByCoord(r, i, {
- strict: false,
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage
- }), c = this._getNodePosition(a);
- if (c == null || a == null) {
- this._removeAllRanges();
- return;
- }
- (a == null ? void 0 : a.node.streamType) === ln.PARAGRAPH && (c.isBack = true);
- const A = this._textSelectionInner$.value;
- if (a && e.button === 2 && A) {
- const m2 = s.findCharIndexByPosition(c);
- 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))
- return;
- }
- const { segmentId: l, segmentPage: d } = a;
- 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();
- const h = v0.create(t);
- 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();
- let u = r, g = i;
- this._onPointerEvent = true, this._scenePointerMoveSubs.push(t.onPointerMove$.subscribeEvent((m2) => {
- const { offsetX: E, offsetY: I } = m2;
- t.setCursor(p1.TEXT), !(Math.sqrt((E - u) ** 2 + (I - g) ** 2) < 3) && (this._moving(E, I), h.scrolling(E, I, () => {
- this._moving(E, I);
- }), u = E, g = I);
- })), this._scenePointerUpSubs.push(t.onPointerUp$.subscribeEvent(() => {
- if ([...this._scenePointerMoveSubs, ...this._scenePointerUpSubs].forEach((E) => {
- E.unsubscribe();
- }), this._onPointerEvent = false, t.enableObjectsEvent(), this._anchorNodePosition && !this._focusNodePosition) {
- if (e.ctrlKey) {
- this._disposeScrollTimers();
- return;
- }
- const E = new Mt2(t, o, s, this._anchorNodePosition, void 0, this._selectionStyle, this._currentSegmentId, this._currentSegmentPage);
- this._addTextRange(E);
- } else if (this._anchorNodePosition && this._focusNodePosition) {
- for (const E of this._rangeListCache)
- e.ctrlKey ? E.collapsed ? E.dispose() : this._addTextRange(E) : this._addTextRange(E);
- this._addRectRanges(this._rectRangeListCache), this._rangeListCache = [], this._rectRangeListCache = [];
- }
- this._anchorNodePosition = null, this._focusNodePosition = null;
- const m2 = {
- textRanges: this._getAllTextRanges(),
- rectRanges: this._getAllRectRanges(),
- segmentId: this._currentSegmentId,
- segmentPage: this._currentSegmentPage,
- style: this._selectionStyle,
- isEditing: false
- };
- this._textSelectionInner$.next(m2), this._disposeScrollTimers(), this._updateInputPosition(true);
- }));
- }
- removeAllRanges() {
- this._removeAllRanges(), this.deactivate();
- }
- getActiveTextRange() {
- return this._getActiveRangeInstance();
- }
- _disposeScrollTimers() {
- this._scrollTimers.forEach((e) => {
- e == null || e.dispose();
- }), this._scrollTimers = [];
- }
- _setSystemHighlightColorToStyle() {
- const { r: e, g: t, b: o, a: s } = ES(), r = {
- strokeWidth: 1.5,
- stroke: "rgba(0, 0, 0, 0)",
- strokeActive: "rgba(0, 0, 0, 1)",
- fill: `rgba(${e}, ${t}, ${o}, ${s != null ? s : 0.3})`
- };
- this._setRangeStyle(r);
- }
- _getAllTextRanges() {
- return this._rangeList.map(Xo);
- }
- _getAllRectRanges() {
- return this._rectRangeList.map(BA);
- }
- getAllTextRanges() {
- return this._getAllTextRanges();
- }
- getAllRectRanges() {
- return this._getAllRectRanges();
- }
- _getActiveRange() {
- const e = this._rangeList.find((s) => s.isActive());
- if (e == null)
- return null;
- const { startOffset: t, endOffset: o } = e;
- return t == null || o == null ? null : Xo(e);
- }
- _getActiveRangeInstance() {
- return this._rangeList.find((e) => e.isActive());
- }
- dispose() {
- super.dispose(), this._detachEvent(), this._removeAllRanges(), this._container.remove();
- }
- _initDOM() {
- const { unitId: e } = this._context, t = document.createElement("div");
- t.style.position = "fixed", t.style.left = "0px", t.style.top = "0px", t.id = `univer-doc-selection-container-${e}`;
- const o = document.createElement("div"), s = document.createElement("div");
- o.appendChild(s), t.appendChild(o), this._container = t, this._inputParent = o, this._input = s, this._initInput(), this._initInputEvents(), document.body.appendChild(t);
- }
- _registerContainer() {
- this.disposeWithMe(
- // the content editable div should be regarded as part of the applications container
- this._layoutService.registerContainerElement(this._container)
- );
- }
- _initInput() {
- this._inputParent.style.cssText = `
- position:absolute;
- height:1px;
- width:1px;
- overflow: hidden;
- `, this._input.contentEditable = "true", this._input.classList.add("univer-editor"), this._input.id = `__editor_${this._context.unitId}`, this._input.style.cssText = `
- position: absolute;
- overflow: hidden;
- opacity: 1;
- background: #000;
- color: transparent;
- outline: none;
- z-index: -2;
- caret-color: transparent;
- white-space: pre-wrap;
- user-select: text;
- `;
- }
- _getNodePosition(e) {
- if (e == null)
- return;
- const { node: t, ratioX: o, segmentPage: s } = e, i = this._docSkeletonManagerService.getSkeleton().findPositionByGlyph(t, s);
- if (i == null)
- return;
- let c = o < 0.5;
- return t.glyphType === V1.LIST && (c = true), {
- ...i,
- isBack: c
- };
- }
- _interactTextRanges(e) {
- const t = [];
- for (const o of this._rangeList) {
- if (e.some((s) => s.isIntersection(o))) {
- o.dispose();
- continue;
- }
- t.push(o);
- }
- this._rangeList = t;
- }
- _interactRectRanges(e) {
- const t = [];
- for (const o of this._rectRangeList) {
- if (e.some((s) => s.isIntersection(o))) {
- o.dispose();
- continue;
- }
- t.push(o);
- }
- this._rectRangeList = t;
- }
- _removeAllRanges() {
- this._removeAllTextRanges(), this._removeAllRectRanges();
- }
- _removeAllCacheRanges() {
- this._rangeListCache.forEach((e) => {
- e.dispose();
- }), this._rectRangeListCache.forEach((e) => {
- e.dispose();
- }), this._rangeListCache = [], this._rectRangeListCache = [];
- }
- _removeAllTextRanges() {
- this._rangeList.forEach((e) => {
- e.dispose();
- }), this._rangeList = [];
- }
- _removeAllRectRanges() {
- this._rectRangeList.forEach((e) => {
- e.dispose();
- }), this._rectRangeList = [];
- }
- _removeAllCollapsedTextRanges() {
- for (const e of this._rangeList)
- e.collapsed && e.dispose();
- }
- _deactivateAllTextRanges() {
- this._rangeList.forEach((e) => {
- e.deactivate();
- });
- }
- _deactivateAllRectRanges() {
- this._rectRangeList.forEach((e) => {
- e.deactivate();
- });
- }
- _addTextRangesToCache(e) {
- this._rangeListCache.push(...e);
- }
- _addTextRange(e) {
- this._deactivateAllTextRanges(), e.activate(), this._rangeList.push(e);
- }
- _addRectRangesToCache(e) {
- this._rectRangeListCache.push(...e);
- }
- _addRectRanges(e) {
- e.length !== 0 && (this._deactivateAllRectRanges(), e[e.length - 1].activate(), this._rectRangeList.push(...e));
- }
- _createTextRangeByAnchorPosition(e) {
- this._removeAllRanges();
- 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);
- this._addTextRange(r);
- }
- _updateActiveRangePosition(e) {
- const t = this._getActiveRangeInstance();
- if (t == null || t.anchorNodePosition == null) {
- this._logService.error(
- "[DocSelectionRenderService] _updateActiveRangeFocusPosition: active range has no anchor"
- );
- return;
- }
- this._removeAllRanges(), this._anchorNodePosition = t.anchorNodePosition, this._focusNodePosition = e;
- const { scene: o, mainComponent: s } = this._context, r = this._docSkeletonManagerService.getSkeleton(), { _anchorNodePosition: i, _focusNodePosition: a, _selectionStyle: c, _currentSegmentId: A, _currentSegmentPage: l } = this;
- if (i == null || a == null || s == null)
- return;
- const d = Ko(
- i,
- a,
- o,
- s,
- r,
- c,
- A,
- l
- );
- if (d == null)
- return;
- const { textRanges: h, rectRanges: u } = d;
- this._addTextRangesToCache(h), this._addRectRangesToCache(u), this.deactivate();
- }
- _isEmpty() {
- return this._rangeList.length === 0 && this._rectRangeList.length === 0;
- }
- _getCanvasOffset() {
- var t;
- const e = (t = this._context.scene) == null ? void 0 : t.getEngine();
- return yA(e);
- }
- _updateInputPosition(e = false) {
- const t = this._getActiveRangeInstance(), o = t == null ? void 0 : t.getAnchor();
- if (!o || o && !o.visible || this.activeViewPort == null) {
- this.focus();
- return;
- }
- const { left: s, top: r } = o, i = this.activeViewPort.getAbsoluteVector($.FromArray([s, r])), { x: a, y: c } = i;
- let { left: A, top: l } = this._getCanvasOffset();
- A += a, l += c, this.activate(A, l, e);
- }
- _moving(e, t) {
- var m2, E;
- const { _currentSegmentId: o, _currentSegmentPage: s } = this, r = this._findNodeByCoord(e, t, {
- strict: true,
- segmentId: o,
- segmentPage: s
- }), i = this._getNodePosition(r);
- if (i == null || r == null)
- return;
- const a = r == null ? void 0 : r.node.parent, c = a == null ? void 0 : a.glyphGroup[a.glyphGroup.indexOf(r.node) + 1];
- (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();
- const { _anchorNodePosition: A, _selectionStyle: l } = this, { scene: d, mainComponent: h } = this._context, u = this._docSkeletonManagerService.getSkeleton();
- if (A == null || h == null)
- return;
- const g = Ko(
- A,
- i,
- d,
- h,
- u,
- l,
- o,
- s
- );
- if (g == null)
- return;
- const { textRanges: f, rectRanges: p } = g;
- 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();
- }
- __attachScrollEvent() {
- const e = this.activeViewPort;
- if (!e)
- return;
- const { unitId: t } = this._context;
- if (this._viewPortObserverMap.has(t))
- return;
- const o = e.onScrollAfter$.subscribeEvent((r) => {
- if (!r.viewport)
- return;
- const a = this._getActiveRangeInstance();
- a == null || a.activeStatic();
- }), s = e.onScrollEnd$.subscribeEvent((r) => {
- const i = r.viewport;
- if (!i)
- return;
- const a = i.getBounding(), c = this._getActiveRangeInstance(), A = c == null ? void 0 : c.getAnchor();
- if (!(!A || A && !A.visible)) {
- if (a) {
- const { left: l, top: d, right: h, bottom: u } = a.viewBound;
- if (A.left < l || A.left > h || A.top < d || A.top > u) {
- c == null || c.deactivateStatic();
- return;
- }
- }
- this._updateInputPosition();
- }
- });
- this._viewPortObserverMap.set(t, {
- scrollBefore: o,
- scrollStop: s
- });
- }
- // FIXME: listeners here are not correctly disposed
- // eslint-disable-next-line max-lines-per-function
- _initInputEvents() {
- this.disposeWithMe(
- fromEvent(this._input, "keydown").subscribe((e) => {
- this._isIMEInputApply || this._eventHandle(e, (t) => {
- this._onKeydown$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "input").subscribe((e) => {
- if (!(e.inputType === "historyUndo" || e.inputType === "historyRedo")) {
- if (this._rectRangeList.length > 0)
- return e.stopPropagation(), e.preventDefault();
- this._isIMEInputApply || this._eventHandle(e, (t) => {
- this._onInputBefore$.next(t), this._onInput$.next(t);
- });
- }
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "compositionstart").subscribe((e) => {
- if (this._rectRangeList.length > 0)
- return e.stopPropagation(), e.preventDefault();
- this._isIMEInputApply = true, this._eventHandle(e, (t) => {
- this._onCompositionstart$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "compositionend").subscribe((e) => {
- this._isIMEInputApply = false, this._eventHandle(e, (t) => {
- this._onCompositionend$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "compositionupdate").subscribe((e) => {
- this._eventHandle(e, (t) => {
- this._onInputBefore$.next(t), this._onCompositionupdate$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "paste").subscribe((e) => {
- this._eventHandle(e, (t) => {
- this._onPaste$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "focus").subscribe((e) => {
- this._eventHandle(e, (t) => {
- this._onFocus$.next(t);
- });
- })
- ), this.disposeWithMe(
- fromEvent(this._input, "blur").subscribe((e) => {
- this._eventHandle(e, (t) => {
- this._onBlur$.next(t);
- });
- })
- );
- }
- _eventHandle(e, t) {
- const o = this._input.textContent || "";
- this._input.innerHTML = "";
- const s = this._getActiveRange(), r = this._getAllTextRanges();
- t({
- event: e,
- content: o,
- activeRange: s,
- rangeList: r
- });
- }
- _getTransformCoordForDocumentOffset(e, t) {
- const o = this._context.mainComponent, { documentTransform: s } = o.getOffsetConfig();
- if (this.activeViewPort == null || s == null)
- return;
- const r = this.activeViewPort.transformVector2SceneCoord($.FromArray([e, t]));
- if (r)
- return s.clone().invert().applyPoint(r);
- }
- _findNodeByCoord(e, t, o) {
- const s = this._getTransformCoordForDocumentOffset(e, t);
- if (s == null)
- return;
- const r = this._context.mainComponent, i = this._docSkeletonManagerService.getSkeleton(), {
- pageLayoutType: a = Y2.VERTICAL,
- pageMarginLeft: c,
- pageMarginTop: A
- } = r.getOffsetConfig();
- return i.findNodeByCoord(
- s,
- a,
- c,
- A,
- o
- );
- }
- _detachEvent() {
- 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();
- }
- };
- Se = PA([
- Cn(1, _1),
- Cn(2, Mt),
- Cn(3, _n),
- Cn(4, ot(D))
- ], Se);
- var DA = class extends nt {
- constructor(t, o, s, r, i) {
- super();
- x(this, "_change$", new Subject());
- x(this, "change$", this._change$.asObservable());
- x(this, "_input$", new Subject());
- x(this, "input$", this._input$.asObservable());
- x(this, "_paste$", new Subject());
- x(this, "paste$", this._paste$.asObservable());
- x(this, "_focus$", new Subject());
- x(this, "focus$", this._focus$.asObservable());
- x(this, "_blur$", new Subject());
- x(this, "blur$", this._blur$.asObservable());
- x(this, "_selectionChange$", new Subject());
- x(this, "selectionChange$", this._selectionChange$.asObservable());
- this._param = t, this._univerInstanceService = o, this._docSelectionManagerService = s, this._commandService = r, this._undoRedoService = i, this._listenSelection();
- }
- get docSelectionRenderService() {
- return this._param.render.with(Se);
- }
- _listenSelection() {
- const t = this._param.render.with(Se);
- this.disposeWithMe(
- t.onBlur$.subscribe((o) => {
- this._blur$.next(o);
- const s = this.getDocumentData();
- this._change$.next({
- target: this,
- data: s
- });
- })
- ), this.disposeWithMe(
- t.onFocus$.subscribe((o) => {
- this._focus$.next(o);
- })
- ), this.disposeWithMe(
- t.onPaste$.subscribe((o) => {
- this._paste$.next(o);
- })
- ), this.disposeWithMe(
- merge(
- t.onInput$,
- t.onKeydown$.pipe(filter((o) => {
- const s = o.event;
- return s.ctrlKey || s.metaKey ? [I1.X, I1.V].includes(s.keyCode) : [I1.BACKSPACE].includes(s.keyCode);
- })),
- t.onCompositionupdate$,
- t.onCompositionend$,
- t.onPaste$
- ).subscribe((o) => {
- if (o == null)
- return;
- const { content: s = "" } = o, r = this.getDocumentData();
- this._input$.next({
- target: this,
- content: s,
- data: r,
- isComposing: o.event.type === "compositionupdate"
- });
- })
- ), this.disposeWithMe(
- this._docSelectionManagerService.textSelection$.subscribe((o) => {
- if (o == null)
- return;
- const { unitId: s, subUnitId: r, ...i } = o, a = this.getEditorId();
- s === a && this._selectionChange$.next(i);
- })
- );
- }
- isFocus() {
- const t = this._param.render.with(Se);
- return t.isFocusing && !!t.getActiveTextRange();
- }
- /**
- * @deprecated use `IEditorService.focus` as instead. this is for internal usage.
- */
- focus() {
- const t = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC), o = this.getEditorId();
- (t == null || t.getUnitId() !== o) && this._univerInstanceService.setCurrentUnitForType(o), this._param.render.with(Se).focus();
- }
- /**
- * @deprecated use `IEditorService.blur` as instead. this is for internal usage.
- */
- blur() {
- this._param.render.with(Se).blur();
- }
- // Selects the entire content of the editor.
- // Calling editor.select() will not necessarily focus the editor, so it is often used with Editor.focus
- select() {
- const t = this.getDocumentData();
- return this.setSelectionRanges([{
- startOffset: 0,
- endOffset: t.body ? t.body.dataStream.length - 2 : 0
- }]);
- }
- // Selects the specified range of characters within editor.
- setSelectionRanges(t) {
- const o = this.getEditorId(), s = {
- unitId: o,
- subUnitId: o
- };
- return this._docSelectionManagerService.replaceDocRanges(t, s, false);
- }
- // Get current doc ranges. include text range and rect range.
- getSelectionRanges() {
- const t = this.getEditorId(), o = {
- unitId: t,
- subUnitId: t
- };
- return this._docSelectionManagerService.getDocRanges(o);
- }
- getCursorPosition() {
- var o, s;
- return (s = (o = this.getSelectionRanges().find((r) => r.collapsed)) == null ? void 0 : o.startOffset) != null ? s : -1;
- }
- // get editor id.
- getEditorId() {
- return this._getEditorId();
- }
- // get document data.
- getDocumentData() {
- return this._getDocDataModel().getSnapshot();
- }
- getDocumentDataModel() {
- return this._getDocDataModel();
- }
- // Set the new document data.
- setDocumentData(t, o) {
- const { id: s } = t;
- this._commandService.syncExecuteCommand(Vi.id, {
- unitId: s,
- snapshot: t,
- textRanges: o
- });
- }
- replaceText(t, o = true) {
- const s = this.getDocumentData();
- this.setDocumentData(
- {
- ...s,
- body: {
- dataStream: `${t}\r
- `,
- paragraphs: [{
- startIndex: 0
- }],
- customRanges: [],
- sectionBreaks: [],
- tables: [],
- textRuns: []
- }
- },
- o ? [{
- startOffset: t.length,
- endOffset: t.length,
- collapsed: true
- }] : null
- );
- }
- // Clear the undo redo history of this editor.
- clearUndoRedoHistory() {
- const t = this.getEditorId();
- return this._undoRedoService.clearUndoRedo(t);
- }
- dispose() {
- this._getDocDataModel().dispose();
- }
- /**
- * @deprecated use getEditorId.
- */
- get editorUnitId() {
- return this._param.editorUnitId;
- }
- /**
- * @deprecated @TODO: @JOCS remove this in the future.
- */
- get params() {
- return this._param;
- }
- get cancelDefaultResizeListener() {
- return this._param.cancelDefaultResizeListener;
- }
- get render() {
- return this._param.render;
- }
- isReadOnly() {
- return this._param.readonly === true;
- }
- getBoundingClientRect() {
- return this._param.editorDom.getBoundingClientRect();
- }
- get editorDOM() {
- return this._param.editorDom;
- }
- isVisible() {
- return this._param.visible;
- }
- isSheetEditor() {
- return zd(this._getEditorId());
- }
- /**
- * @deprecated use getDocumentData.
- */
- getValue() {
- var s;
- return (((s = this._getDocDataModel().getBody()) == null ? void 0 : s.dataStream) || "").replace(/\r\n/g, "").replace(/\n/g, "").replace(/\n/g, "");
- }
- /**
- * @deprecated use getDocumentData.
- */
- getBody() {
- return this._getDocDataModel().getBody();
- }
- /**
- * @deprecated.
- */
- update(t) {
- this._param = {
- ...this._param,
- ...t
- };
- }
- /**
- * @deprecated.
- */
- updateCanvasStyle() {
- var s;
- const t = this._getDocDataModel();
- if (t == null)
- return;
- const o = {};
- (s = this._param.canvasStyle) != null && s.fontSize && (o.textStyle == null && (o.textStyle = {}), o.textStyle.fs = this._param.canvasStyle.fontSize), t.updateDocumentStyle(o);
- }
- _getDocDataModel() {
- const t = this._getEditorId();
- return this._univerInstanceService.getUnit(t, Fe.UNIVER_DOC);
- }
- _getEditorId() {
- var t;
- return ((t = this._param.initialSnapshot) == null ? void 0 : t.id) || this._param.editorUnitId || "";
- }
- };
- var wA = Object.defineProperty;
- var NA = Object.getOwnPropertyDescriptor;
- var QA = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? NA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && wA(e, t, s), s;
- };
- var Rt = (n, e) => (t, o) => e(t, o, n);
- var UA = [
- "univer-editor",
- "univer-range-selector",
- "univer-range-selector-editor",
- "univer-render-canvas",
- "univer-text-editor-container-placeholder"
- ];
- var Jo = class extends nt {
- constructor(e, t, o, s, r, i) {
- super();
- x(this, "_editors", /* @__PURE__ */ new Map());
- x(this, "_focusEditorUnitId");
- x(this, "_blur$", new Subject());
- x(this, "blur$", this._blur$.asObservable());
- x(this, "_focus$", new Subject());
- x(this, "focus$", this._focus$.asObservable());
- this._univerInstanceService = e, this._renderManagerService = t, this._docSelectionManagerService = o, this._contextService = s, this._commandService = r, this._undoRedoService = i, this._initUniverFocusListener();
- }
- // REFACTOR: @Gggpound The specific business processing should not be placed here,
- // I moved from the layout service. https://github.com/dream-num/univer-pro/issues/1708
- _initUniverFocusListener() {
- this.disposeWithMe(
- fromEvent(window, "focusin").subscribe((e) => {
- const t = e.target;
- this._blurSheetEditor(t);
- })
- );
- }
- _blurSheetEditor(e) {
- if (UA.some((o) => e.classList.contains(o)))
- return;
- const t = this.getFocusEditor();
- t && t.isSheetEditor() !== true && this.blur();
- }
- _setFocusId(e) {
- this._focusEditorUnitId = e;
- }
- getFocusId() {
- return this._focusEditorUnitId;
- }
- getFocusEditor() {
- if (this._focusEditorUnitId)
- return this.getEditor(this._focusEditorUnitId);
- }
- isEditor(e) {
- return this._editors.has(e);
- }
- isSheetEditor(e) {
- const t = this._editors.get(e);
- return !!(t && t.isSheetEditor());
- }
- blur() {
- this._setFocusId(null), this._contextService.setContextValue(oE, false), this._contextService.setContextValue(RR, false);
- const e = this.getFocusEditor();
- e == null || e.blur(), this._blur$.next(null);
- }
- focus(e) {
- if (this._focusEditorUnitId && this.blur(), e == null)
- return;
- const t = this.getEditor(e);
- if (t == null)
- return;
- this._univerInstanceService.setCurrentUnitForType(e);
- const o = t.getValue().length;
- this._contextService.setContextValue(oE, true), zd(e) || this._contextService.setContextValue(RR, true), t.focus(), this._setFocusId(e), this._focus$.next({
- startOffset: o,
- endOffset: o
- });
- }
- dispose() {
- this._editors.clear(), super.dispose();
- }
- getEditor(e = this._getCurrentEditorUnitId()) {
- return this._editors.get(e);
- }
- getAllEditor() {
- return this._editors;
- }
- register(e, t) {
- var c, A, l, d;
- const { initialSnapshot: o, canvasStyle: s = {} } = e, r = o.id;
- this._univerInstanceService.getUnit(r, Fe.UNIVER_DOC) == null && this._univerInstanceService.createUnit(
- Fe.UNIVER_DOC,
- o || this._getBlank(r),
- { makeCurrent: false }
- );
- let a = this._renderManagerService.getRenderById(r);
- if (a == null && (this._renderManagerService.create(r), a = this._renderManagerService.getRenderById(r)), a) {
- a.engine.setContainer(t);
- const h = new DA(
- { ...e, render: a, editorDom: t, canvasStyle: s },
- this._univerInstanceService,
- this._docSelectionManagerService,
- this._commandService,
- this._undoRedoService
- );
- 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();
- }
- return Ze(() => {
- this._unRegister(r);
- });
- }
- _unRegister(e) {
- const t = this._editors.get(e);
- t != null && (this._renderManagerService.removeRender(e), t.dispose(), this._editors.delete(e), this._univerInstanceService.disposeUnit(e));
- }
- _getCurrentEditorUnitId() {
- return this._univerInstanceService.getCurrentUniverDocInstance().getUnitId();
- }
- _getBlank(e) {
- return {
- id: e,
- body: {
- dataStream: `${Wd}`,
- textRuns: [],
- paragraphs: [
- {
- startIndex: 0
- }
- ]
- },
- documentStyle: {
- renderConfig: {
- verticalAlign: hn.TOP,
- horizontalAlign: Xt.LEFT
- },
- marginLeft: 3,
- marginTop: 0,
- marginRight: 3
- }
- };
- }
- };
- Jo = QA([
- Rt(0, _n),
- Rt(1, Yx),
- Rt(2, ot(m)),
- Rt(3, fs),
- Rt(4, Pt),
- Rt(5, cn)
- ], Jo);
- var He2 = Ct("univer.editor.service");
- function LA(n) {
- 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);
- return (0, import_react.useLayoutEffect)(() => {
- var l, d;
- if (o.current) {
- const h = {
- body: {
- dataStream: `\r
- `,
- textRuns: [],
- customBlocks: [],
- customDecorations: [],
- customRanges: [],
- paragraphs: [{
- startIndex: 0
- }]
- },
- ...t,
- documentStyle: {
- ...t == null ? void 0 : t.documentStyle,
- pageSize: {
- width: r ? 1 / 0 : o.current.clientWidth,
- height: 1 / 0
- }
- },
- id: e
- }, u = A.register(
- {
- autofocus: true,
- editorUnitId: e,
- initialSnapshot: h
- },
- o.current
- ), g = A.getEditor(e);
- if (c(g), i) {
- g.focus();
- const f = ((d = (l = h.body) == null ? void 0 : l.dataStream.length) != null ? d : 2) - 2;
- g.setSelectionRanges([{ startOffset: f, endOffset: f }]);
- }
- return () => {
- u == null || u.dispose();
- };
- }
- }, []), a;
- }
- var at = {
- id: "doc.operation.move-cursor",
- type: ar.OPERATION,
- handler: (n, e) => !!e
- };
- var ct = {
- id: "doc.operation.move-selection",
- type: ar.OPERATION,
- handler: (n, e) => !!e
- };
- var FA = (n, e, t, o) => {
- const s = W0(Pt), r = W0(it), i = (0, import_react.useRef)(e);
- i.current = e;
- const a = (0, import_react.useRef)(o);
- a.current = o, (0, import_react.useEffect)(() => {
- if (!t || !n)
- return;
- const A = `sheet.formula-embedding-editor.${t.getEditorId()}`, l = new Mi(), d = (u, g) => {
- if (a.current) {
- a.current(u, g);
- return;
- }
- let f = wu.LEFT;
- 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, {
- direction: f
- }) : s.executeCommand(at.id, {
- direction: f
- });
- };
- return l.add(s.registerCommand({
- id: A,
- type: ar.OPERATION,
- handler(u, g) {
- const { keyCode: f } = g;
- d(f);
- }
- })), [
- { keyCode: I1.ARROW_DOWN },
- { keyCode: I1.ARROW_LEFT },
- { keyCode: I1.ARROW_RIGHT },
- { keyCode: I1.ARROW_UP },
- { keyCode: I1.ARROW_DOWN, metaKey: Ae.SHIFT },
- { keyCode: I1.ARROW_LEFT, metaKey: Ae.SHIFT },
- { keyCode: I1.ARROW_RIGHT, metaKey: Ae.SHIFT },
- { keyCode: I1.ARROW_UP, metaKey: Ae.SHIFT },
- { keyCode: I1.ARROW_DOWN, metaKey: Ae.CTRL_COMMAND },
- { keyCode: I1.ARROW_LEFT, metaKey: Ae.CTRL_COMMAND },
- { keyCode: I1.ARROW_RIGHT, metaKey: Ae.CTRL_COMMAND },
- { keyCode: I1.ARROW_UP, metaKey: Ae.CTRL_COMMAND },
- { keyCode: I1.ARROW_DOWN, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
- { keyCode: I1.ARROW_LEFT, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
- { keyCode: I1.ARROW_RIGHT, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT },
- { keyCode: I1.ARROW_UP, metaKey: Ae.CTRL_COMMAND | Ae.SHIFT }
- ].map(({ keyCode: u, metaKey: g }) => ({
- id: A,
- binding: g ? u | g : u,
- preconditions: () => true,
- priority: 900,
- staticParameters: {
- eventType: vf.Keyboard,
- keyCode: u
- }
- })).forEach((u) => {
- l.add(r.registerShortcut(u));
- }), () => {
- l.dispose();
- };
- }, [s, t, n, r]);
- };
- function HA(n, e) {
- const t = W0(Pt);
- (0, import_react.useEffect)(() => {
- if (!n)
- return;
- const o = t.onCommandExecuted((s) => {
- if (s.id === M.id) {
- if (s.params.unitId !== n.getEditorId())
- return;
- e(n.getDocumentData());
- }
- });
- return () => {
- o.dispose();
- };
- }, [n, e, t]);
- }
- var kA = "univer-rich-text-editor-active";
- var VA = "univer-rich-text-editor-wrap";
- var jA = "univer-rich-text-editor-text";
- var WA = "univer-rich-text-editor-error-wrap";
- var zA = "univer-rich-text-editor-placeholder";
- var Xt2 = {
- richTextEditorActive: kA,
- richTextEditorWrap: VA,
- richTextEditorText: jA,
- richTextEditorErrorWrap: WA,
- richTextEditorPlaceholder: zA
- };
- var cf = (0, import_react.forwardRef)((n, e) => {
- var te2;
- const {
- className: t,
- autoFocus: o,
- onFocusChange: s,
- initialValue: r,
- onClickOutside: i,
- keyboardEventConfig: a,
- moveCursor: c = true,
- style: A,
- isSingle: l,
- editorId: d,
- onHeightChange: h,
- onChange: u,
- defaultHeight: g = 32,
- maxHeight: f = 32
- } = 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({
- editorId: S,
- initialValue: r,
- container: R,
- autoFocus: o,
- isSingle: l
- }), 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)(() => {
- var q, V;
- return !st.transform.getPlainText((V = (q = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : q.dataStream) != null ? V : "");
- }), { checkScrollBar: F } = dA(C, l, true, true), D2 = n32((q) => {
- const V = O == null ? void 0 : O.with(D), Y = V == null ? void 0 : V.getSkeleton().getActualSize();
- Y && (h == null || h(Y.actualHeight), v(Math.max(g, Math.min(Y.actualHeight + 10, f)))), u == null || u(q), F();
- });
- return (0, import_react.useEffect)(() => {
- var V, Y;
- H(!st.transform.getPlainText((Y = (V = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : V.dataStream) != null ? Y : ""));
- const q = C == null ? void 0 : C.selectionChange$.subscribe(() => {
- var oe, ce2;
- H(!st.transform.getPlainText((ce2 = (oe = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : oe.dataStream) != null ? ce2 : ""));
- });
- return () => q == null ? void 0 : q.unsubscribe();
- }, [C]), z0(C == null ? void 0 : C.blur$), z0(C == null ? void 0 : C.focus$), (0, import_react.useEffect)(() => {
- m2 == null || m2(b);
- }, [b, m2]), (0, import_react.useEffect)(() => {
- const q = (V) => {
- var oe, ce2;
- 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());
- };
- return setTimeout(() => {
- document.addEventListener("click", q);
- }, 100), () => {
- document.removeEventListener("click", q);
- };
- }, [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(
- "div",
- {
- className: Un(Xt2.richTextEditorWrap, {
- [Xt2.richTextEditorActive]: b
- }),
- style: { height: I },
- ref: B,
- children: [
- w.jsx(
- "div",
- {
- className: Xt2.richTextEditorText,
- ref: R,
- onMouseUp: () => C == null ? void 0 : C.focus()
- }
- ),
- M2 ? w.jsx("div", { className: Xt2.richTextEditorPlaceholder, children: n.placeholder }) : null
- ]
- }
- ) });
- });
- var Qe = function() {
- return Qe = Object.assign || function(n) {
- for (var e, t = 1, o = arguments.length; t < o; t++) {
- e = arguments[t];
- for (var s in e)
- Object.prototype.hasOwnProperty.call(e, s) && (n[s] = e[s]);
- }
- return n;
- }, Qe.apply(this, arguments);
- };
- var GA = function(n, e) {
- var t = {};
- for (var o in n)
- Object.prototype.hasOwnProperty.call(n, o) && e.indexOf(o) < 0 && (t[o] = n[o]);
- if (n != null && typeof Object.getOwnPropertySymbols == "function")
- for (var s = 0, o = Object.getOwnPropertySymbols(n); s < o.length; s++)
- e.indexOf(o[s]) < 0 && Object.prototype.propertyIsEnumerable.call(n, o[s]) && (t[o[s]] = n[o[s]]);
- return t;
- };
- var Ht = (0, import_react.forwardRef)(function(n, e) {
- 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()));
- return qi(t, "".concat(o), { defIds: t.defIds, idSuffix: c.current }, Qe({ ref: e, className: a }, i), r);
- });
- function qi(n, e, t, o, s) {
- return (0, import_react.createElement)(n.tag, Qe(Qe({ key: e }, YA(n, t, s)), o), (qA(n, t).children || []).map(function(r, i) {
- return qi(r, "".concat(e, "-").concat(n.tag, "-").concat(i), t, void 0, s);
- }));
- }
- function YA(n, e, t) {
- var o = Qe({}, n.attrs);
- t != null && t.colorChannel1 && o.fill === "colorChannel1" && (o.fill = t.colorChannel1);
- var s = e.defIds;
- 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) {
- var i = r[0], a = r[1];
- typeof a == "string" && (o[i] = a.replace(/url\(#(.*)\)/, "url(#$1".concat(e.idSuffix, ")")));
- })), o;
- }
- function qA(n, e) {
- var t, o = e.defIds;
- 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) {
- 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;
- }) }) : n;
- }
- function KA() {
- return Math.random().toString(36).substring(2, 8);
- }
- Ht.displayName = "UniverIcon";
- 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" } }] };
- var Ki = (0, import_react.forwardRef)(function(n, e) {
- return (0, import_react.createElement)(Ht, Object.assign({}, n, {
- id: "align-text-both-single",
- ref: e,
- icon: XA
- }));
- });
- Ki.displayName = "AlignTextBothSingle";
- 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" } }] };
- var Xi = (0, import_react.forwardRef)(function(n, e) {
- return (0, import_react.createElement)(Ht, Object.assign({}, n, {
- id: "horizontally-single",
- ref: e,
- icon: JA
- }));
- });
- Xi.displayName = "HorizontallySingle";
- 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" } }] };
- var Ji = (0, import_react.forwardRef)(function(n, e) {
- return (0, import_react.createElement)(Ht, Object.assign({}, n, {
- id: "left-justifying-single",
- ref: e,
- icon: ZA
- }));
- });
- Ji.displayName = "LeftJustifyingSingle";
- 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" } }] };
- var Zi = (0, import_react.forwardRef)(function(n, e) {
- return (0, import_react.createElement)(Ht, Object.assign({}, n, {
- id: "right-justifying-single",
- ref: e,
- icon: $A
- }));
- });
- Zi.displayName = "RightJustifyingSingle";
- 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" } }] };
- var $i = (0, import_react.forwardRef)(function(n, e) {
- return (0, import_react.createElement)(Ht, Object.assign({}, n, {
- id: "todo-list",
- ref: e,
- icon: el2
- }));
- });
- $i.displayName = "TodoList";
- function ea(n) {
- var o;
- const { dataStream: e } = (o = n.body) != null ? o : {}, t = [
- ln.TABLE_START,
- ln.TABLE_CELL_END,
- ln.TABLE_CELL_START,
- ln.TABLE_END,
- ln.TABLE_ROW_END,
- ln.TABLE_ROW_START,
- ln.COLUMN_BREAK,
- ln.PAGE_BREAK,
- ln.TAB,
- ln.DOCS_END,
- ln.CUSTOM_BLOCK
- ];
- if (typeof e == "string")
- for (let s = 0; s < e.length; s++) {
- const r = e[s];
- if (!t.includes(r))
- return s;
- }
- return 0;
- }
- var ta = "COMPONENT_DOC_HEADER_FOOTER_PANEL";
- var tl = "univer-panel";
- var nl = "univer-options-section";
- var ol = "univer-options-form-item";
- var sl = "univer-options-input";
- var rl = "univer-options-margin-setting";
- var Pe2 = {
- panel: tl,
- optionsSection: nl,
- optionsFormItem: ol,
- optionsInput: sl,
- optionsMarginSetting: rl
- };
- function il(n, e, t) {
- const { useFirstPageHeaderFooter: o, evenAndOddHeaders: s, defaultHeaderId: r, defaultFooterId: i, firstPageHeaderId: a, firstPageFooterId: c, evenPageHeaderId: A, evenPageFooterId: l } = n;
- 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;
- }
- var al = (n) => {
- 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) => {
- var C;
- A((T) => ({
- ...T,
- [g]: u ? we.TRUE : we.FALSE
- }));
- 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();
- if (p == null || E == null)
- return;
- const I = E.getEditArea();
- let v = false;
- const R = a.getSegmentPage();
- let S = false;
- 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) {
- const O = re.generateRandomId(6);
- S && a.setSegment(O), s.executeCommand(_n2, {
- unitId: i,
- segmentId: O,
- headerFooterProps: {
- [g]: u ? we.TRUE : we.FALSE
- }
- });
- } else {
- const T = a.getSegmentPage(), O = a.getSegment(), P = il(
- {
- ...p,
- [g]: u ? we.TRUE : we.FALSE
- },
- I,
- T
- );
- P && P !== O && a.setSegment(P), s.executeCommand(_n2, {
- unitId: i,
- headerFooterProps: {
- [g]: u ? we.TRUE : we.FALSE
- }
- });
- }
- r.focus();
- }, d = async (u, g) => {
- A((f) => ({
- ...f,
- [g]: u
- })), await s.executeCommand(_n2, {
- unitId: i,
- headerFooterProps: {
- [g]: u
- }
- }), a.removeAllRanges(), a.blur();
- }, h = () => {
- s.executeCommand(Ps.id, {
- unitId: i
- });
- };
- return (0, import_react.useEffect)(() => {
- const u = t.getUniverDocInstance(i), g = u == null ? void 0 : u.getSnapshot().documentStyle;
- if (g) {
- const {
- marginHeader: f = 0,
- marginFooter: p = 0,
- useFirstPageHeaderFooter: m2 = we.FALSE,
- evenAndOddHeaders: E = we.FALSE
- } = g;
- A({
- marginHeader: f,
- marginFooter: p,
- useFirstPageHeaderFooter: m2,
- evenAndOddHeaders: E
- });
- }
- }, [i]), w.jsxs("div", { className: Pe2.options, children: [
- w.jsxs("div", { className: Pe2.optionsSection, children: [
- w.jsx("div", { className: Pe2.optionsFormItem, children: w.jsx(
- um,
- {
- checked: c.useFirstPageHeaderFooter === we.TRUE,
- onChange: (u) => {
- l(u, "useFirstPageHeaderFooter");
- },
- children: e.t("headerFooter.firstPageCheckBox")
- }
- ) }),
- w.jsx("div", { className: Pe2.optionsFormItem, children: w.jsx(
- um,
- {
- checked: c.evenAndOddHeaders === we.TRUE,
- onChange: (u) => {
- l(u, "evenAndOddHeaders");
- },
- children: e.t("headerFooter.oddEvenCheckBox")
- }
- ) })
- ] }),
- w.jsxs("div", { className: Un(Pe2.optionsSection, Pe2.optionsMarginSetting), children: [
- w.jsxs("div", { className: Pe2.optionsMarginItem, children: [
- w.jsx("span", { children: e.t("headerFooter.headerTopMargin") }),
- w.jsx(
- BO,
- {
- min: 0,
- max: 200,
- precision: 1,
- value: c.marginHeader,
- onChange: (u) => {
- d(u, "marginHeader");
- },
- className: Pe2.optionsInput
- }
- )
- ] }),
- w.jsxs("div", { className: Pe2.optionsMarginItem, children: [
- w.jsx("span", { children: e.t("headerFooter.footerBottomMargin") }),
- w.jsx(
- BO,
- {
- min: 0,
- max: 200,
- precision: 1,
- value: c.marginFooter,
- onChange: (u) => {
- d(u, "marginFooter");
- },
- className: Pe2.optionsInput
- }
- )
- ] })
- ] }),
- w.jsx("div", { className: Pe2.optionsSection, children: w.jsx(Po, { onClick: h, children: e.t("headerFooter.closeHeaderFooter") }) })
- ] });
- };
- var cl = () => {
- var A;
- 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);
- return (0, import_react.useEffect)(() => {
- const l = i.getEditArea();
- c(l !== n3.BODY);
- const d = i.editAreaChange$.subscribe((h) => {
- h != null && c(h !== n3.BODY);
- });
- return () => {
- d.unsubscribe();
- };
- }, []), w.jsx("div", { className: Pe2.panel, children: a ? w.jsx(al, { unitId: s }) : w.jsx("div", { className: Pe2.panelDisableText, children: n.t("headerFooter.disableText") }) });
- };
- var Pr = 18;
- var Dr = 200;
- var _o = 6;
- var Al2 = 4;
- function ll(n, e) {
- let { radius: t, width: o, height: s } = e;
- t = t != null ? t : 0, o = o != null ? o : 30, s = s != null ? s : 30;
- let r = 0;
- 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());
- }
- var Ln = class _Ln extends q3 {
- constructor(t, o) {
- super(t, o);
- x(this, "color");
- x(this, "text");
- this.color = o == null ? void 0 : o.color, this.text = o == null ? void 0 : o.text;
- }
- static drawWith(t, o) {
- const { text: s, color: r } = o;
- t.save(), t.font = "13px Source Han Sans CN";
- const i = t.measureText(s).width, a = Math.min(
- i + 2 * _o,
- Dr
- );
- ll(t, {
- height: Pr,
- width: a,
- radius: 4,
- fill: r,
- evented: false
- }), t.fillStyle = "rgba(58, 96, 247, 1)";
- const c = _o, A = Pr - Al2, l = Dr - 2 * _o;
- if (i > l) {
- let d = "", h = 0;
- for (const u of s) {
- const g = t.measureText(u).width;
- if (h + g <= l - t.measureText("...").width)
- d += u, h += g;
- else {
- d += "...";
- break;
- }
- }
- t.fillText(d, c, A);
- } else
- t.fillText(s, c, A);
- t.restore();
- }
- _draw(t) {
- _Ln.drawWith(t, this);
- }
- };
- var dl = Object.defineProperty;
- var ul = Object.getOwnPropertyDescriptor;
- var hl = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? ul(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && dl(e, t, s), s;
- };
- var nt2 = (n, e) => (t, o) => e(t, o, n);
- var wr = "rgba(58, 96, 247, 1)";
- var Nr2 = "rgba(58, 96, 247, 0.08)";
- 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 || {});
- function gl(n, e, t) {
- const { documentStyle: o } = n.getDataModel().getSnapshot(), {
- defaultHeaderId: s,
- defaultFooterId: r,
- evenPageHeaderId: i,
- evenPageFooterId: a,
- firstPageHeaderId: c,
- firstPageFooterId: A,
- evenAndOddHeaders: l,
- useFirstPageHeaderFooter: d
- } = o;
- switch (e) {
- case n3.BODY:
- return {
- createType: null,
- headerFooterId: null
- };
- case n3.HEADER:
- return d === we.TRUE && !c ? {
- createType: 0,
- headerFooterId: null
- } : l === we.TRUE && t % 2 === 0 && !i ? {
- createType: 4,
- headerFooterId: null
- } : s ? {
- createType: null,
- headerFooterId: s
- } : {
- createType: 2,
- headerFooterId: null
- };
- case n3.FOOTER:
- return d === we.TRUE && !A ? {
- createType: 1,
- headerFooterId: null
- } : l === we.TRUE && t % 2 === 0 && !a ? {
- createType: 5,
- headerFooterId: null
- } : r ? {
- createType: null,
- headerFooterId: r
- } : {
- createType: 3,
- headerFooterId: null
- };
- default:
- throw new Error(`Invalid editArea: ${e}`);
- }
- }
- var Zo = class extends nt {
- constructor(e, t, o, s, r, i, a, c, A) {
- super();
- x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
- 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();
- }
- _initialize() {
- this._init(), this._drawHeaderFooterLabel(), this._initCustomComponents(), this._listenSwitchMode();
- }
- // Close header footer panel when switch mode.
- _listenSwitchMode() {
- this.disposeWithMe(
- this._commandService.onCommandExecuted((e) => {
- if (M.id === e.id) {
- const t = this._context.unit, s = this._docSkeletonManagerService.getViewModel().getEditArea(), r = t.getSnapshot().documentStyle.documentFlavor;
- s !== n3.BODY && r === ku.MODERN && this._commandService.executeCommand(Ps.id, {
- unitId: this._context.unitId
- });
- }
- })
- );
- }
- _initCustomComponents() {
- const e = this._componentManager;
- this.disposeWithMe(e.register(ta, cl));
- }
- _init() {
- const { unitId: e } = this._context, t = rt2(this._context);
- t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
- }
- _initialMain(e) {
- const t = rt2(this._context), { document: o } = t;
- this.disposeWithMe(o.onDblclick$.subscribeEvent(async (s) => {
- if (this._isEditorReadOnly(e) || !this._isTraditionalMode())
- return;
- const { offsetX: r, offsetY: i } = s, {
- pageLayoutType: a = Y2.VERTICAL,
- pageMarginLeft: c,
- pageMarginTop: A
- } = o.getOffsetConfig(), l = this._getTransformCoordForDocumentOffset(r, i);
- if (l == null)
- return;
- const d = this._docSkeletonManagerService.getViewModel(), h = this._docSkeletonManagerService.getSkeleton(), u = d.getEditArea(), { editArea: g, pageNumber: f } = h.findEditAreaByCoord(
- l,
- a,
- c,
- A
- );
- if (u === g)
- return;
- d.setEditArea(g);
- const { createType: p, headerFooterId: m2 } = gl(d, g, f);
- if (g === n3.BODY)
- this._docSelectionRenderService.setSegment(""), this._docSelectionRenderService.setSegmentPage(-1), this._docSelectionRenderService.setCursorManually(r, i);
- else if (p != null) {
- const I = re.generateRandomId(6);
- this._docSelectionRenderService.setSegment(I), this._docSelectionRenderService.setSegmentPage(f), await this._commandService.executeCommand(na.id, {
- unitId: e,
- createType: p,
- segmentId: I
- });
- } else
- m2 != null && (this._docSelectionRenderService.setSegment(m2), this._docSelectionRenderService.setSegmentPage(f), this._docSelectionRenderService.setCursorManually(r, i));
- }));
- }
- _getTransformCoordForDocumentOffset(e, t) {
- const o = rt2(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
- if (a == null)
- return;
- const c = a.transformVector2SceneCoord($.FromArray([e, t]));
- return i.clone().invert().applyPoint(c);
- }
- // eslint-disable-next-line max-lines-per-function
- _drawHeaderFooterLabel() {
- const e = this._localeService;
- this._renderManagerService.currentRender$.subscribe((t) => {
- if (t == null)
- return;
- const o = this._renderManagerService.getRenderById(t);
- if (this._editorService.isEditor(t) || this._instanceSrv.getUniverDocInstance(t) == null || o == null)
- return;
- const { mainComponent: s } = o, r = s;
- this.disposeWithMe(
- Ze(
- // eslint-disable-next-line max-lines-per-function
- r.pageRender$.subscribe((i) => {
- if (this._editorService.isEditor(t) || !this._isTraditionalMode())
- return;
- 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;
- if (u.save(), u.translate(d - 0.5, h - 0.5), A ? (A1.drawWith(u, {
- left: 0,
- top: 0,
- width: g,
- height: p,
- fill: "rgba(255, 255, 255, 0.5)"
- }), u.save(), u.translate(0, f - m2), A1.drawWith(u, {
- left: 0,
- top: 0,
- width: g,
- height: m2,
- fill: "rgba(255, 255, 255, 0.5)"
- }), u.restore()) : (u.save(), u.translate(0, p), A1.drawWith(u, {
- left: 0,
- top: p,
- width: g,
- height: f - p - m2,
- fill: "rgba(255, 255, 255, 0.5)"
- }), u.restore()), !A) {
- const E = {
- dataArray: [{
- command: "M",
- points: [0, p]
- }, {
- command: "L",
- points: [g, p]
- }],
- strokeWidth: 1,
- stroke: wr
- }, I = {
- dataArray: [{
- command: "M",
- points: [0, f - m2]
- }, {
- command: "L",
- points: [g, f - m2]
- }],
- strokeWidth: 1,
- stroke: wr
- };
- G1.drawWith(u, E), G1.drawWith(u, I), u.translate(0, p + 1), Ln.drawWith(u, {
- text: e.t("headerFooter.header"),
- color: Nr2
- }), u.translate(0, f - p - m2), Ln.drawWith(u, {
- text: e.t("headerFooter.footer"),
- color: Nr2
- });
- }
- u.restore();
- })
- )
- );
- });
- }
- _isEditorReadOnly(e) {
- const t = this._editorService.getEditor(e);
- return t ? t.isReadOnly() : false;
- }
- _isTraditionalMode() {
- return this._context.unit.getSnapshot().documentStyle.documentFlavor === ku.TRADITIONAL;
- }
- };
- Zo = hl([
- nt2(1, Pt),
- nt2(2, He2),
- nt2(3, _n),
- nt2(4, Yx),
- nt2(5, ot(D)),
- nt2(6, ot(Se)),
- nt2(7, ot(Vr)),
- nt2(8, ot(n1))
- ], Zo);
- var Ms = {
- id: "sidebar.operation.doc-header-footer-panel",
- type: ar.OPERATION,
- handler: async (n, e) => {
- const t = n.get(rt), o = n.get(Vr);
- switch (e.value) {
- case "open":
- t.open({
- header: { title: o.t("headerFooter.panel") },
- children: { label: ta },
- onClose: () => {
- },
- width: 400
- });
- break;
- case "close":
- default:
- t.close();
- break;
- }
- return true;
- }
- };
- function Qr2() {
- return {
- dataStream: `\r
- `,
- textRuns: [{
- st: 0,
- ed: 0,
- ts: {
- fs: 9
- // The default header footer text size.
- }
- }],
- customBlocks: [],
- paragraphs: [
- {
- startIndex: 0,
- paragraphStyle: {
- spaceAbove: { v: 0 },
- lineSpacing: 1.5,
- spaceBelow: { v: 0 }
- }
- }
- ],
- sectionBreaks: [
- {
- startIndex: 1
- }
- ]
- };
- }
- function Po2(n, e, t, o) {
- 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], {
- [a ? "headerId" : "footerId"]: i,
- body: Qr2()
- });
- o.push(c);
- const A = re.generateRandomId(r), l = s.insertOp([a ? "footers" : "headers", A], {
- [a ? "footerId" : "headerId"]: A,
- body: Qr2()
- });
- o.push(l);
- let d = "defaultHeaderId", h = "defaultFooterId";
- switch (e) {
- case Me.DEFAULT_HEADER:
- d = "defaultHeaderId", h = "defaultFooterId";
- break;
- case Me.DEFAULT_FOOTER:
- d = "defaultFooterId", h = "defaultHeaderId";
- break;
- case Me.FIRST_PAGE_HEADER:
- d = "firstPageHeaderId", h = "firstPageFooterId";
- break;
- case Me.FIRST_PAGE_FOOTER:
- d = "firstPageFooterId", h = "firstPageHeaderId";
- break;
- case Me.EVEN_PAGE_HEADER:
- d = "evenPageHeaderId", h = "evenPageFooterId";
- break;
- case Me.EVEN_PAGE_FOOTER:
- d = "evenPageFooterId", h = "evenPageHeaderId";
- break;
- default:
- throw new Error(`Unknown header footer type: ${e}`);
- }
- for (const [u, g] of [[d, i], [h, A]])
- if (t[u] != null) {
- const f = s.replaceOp(["documentStyle", u], t[u], g);
- o.push(f);
- } else {
- const f = s.insertOp(["documentStyle", u], g);
- o.push(f);
- }
- return o;
- }
- var _n2 = "doc.command.core-header-footer";
- var na = {
- id: _n2,
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- var v;
- 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();
- if (l == null || d == null)
- return false;
- const h = d.getEditArea(), { documentStyle: u } = l.getSnapshot(), g = (c == null ? void 0 : c.marginFooter) != null || (c == null ? void 0 : c.marginHeader) != null, f = [{
- startOffset: 0,
- endOffset: 0,
- collapsed: true
- }], p = {
- id: M.id,
- params: {
- unitId: r,
- actions: [],
- textRanges: f,
- debounce: true
- }
- };
- g && (p.params.noNeedSetTextRange = true);
- const m2 = tn.getInstance(), E = [];
- return a != null && Po2(i, a, u, E), c != null && Object.keys(c).forEach((R) => {
- const S = c[R], C = u[R];
- if (S === C)
- return;
- let T;
- 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) {
- const O = h === n3.HEADER ? Me.FIRST_PAGE_HEADER : Me.FIRST_PAGE_FOOTER;
- Po2(i, O, u, E);
- } else if (R === "evenAndOddHeaders" && S === we.TRUE && !u.evenPageHeaderId) {
- const O = h === n3.HEADER ? Me.EVEN_PAGE_HEADER : Me.EVEN_PAGE_FOOTER;
- Po2(i, O, u, E);
- }
- }), E.length === 0 ? false : (p.params.actions = E.reduce((R, S) => tn.compose(R, S), null), !!t.syncExecuteCommand(p.id, p.params));
- }
- };
- var _s = {
- id: "doc.command.open-header-footer-panel",
- type: ar.COMMAND,
- handler: async (n, e) => n.get(Pt).executeCommand(Ms.id, { value: "open" })
- };
- var Ps = {
- id: "doc.command.close-header-footer",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var g;
- const t = n.get(Pt), o = n.get(Yx), s = n.get(m), r = n.get(_n), { unitId: i } = e, a = o.getRenderById(i);
- if (a == null)
- return false;
- 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();
- 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(() => {
- const f = r.getUnit(i), p = f == null ? void 0 : f.getSnapshot();
- if (p == null)
- return;
- const m2 = ea(p);
- s.replaceDocRanges([
- {
- startOffset: m2,
- endOffset: m2
- }
- ]);
- }), t.executeCommand(Ms.id, { value: "close" }), true);
- }
- };
- var kt = "UI_PLUGIN_DOCS";
- var Ds = `${kt}_COLOR_PICKER_COMPONENT`;
- var oa = `${kt}_FONT_FAMILY_COMPONENT`;
- var sa = `${kt}_FONT_FAMILY_ITEM_COMPONENT`;
- var ra = `${kt}_FONT_SIZE_COMPONENT`;
- var fl = "univer-doc-list-type-picker";
- var pl = "univer-doc-list-type-picker-item";
- var ml2 = "univer-doc-list-type-picker-item-active";
- var Do = {
- docListTypePicker: fl,
- docListTypePickerItem: pl,
- docListTypePickerItemActive: ml2
- };
- var ia = (n) => {
- const { value: e, onChange: t, options: o } = n;
- return w.jsx("div", { className: Do.docListTypePicker, children: o.map((s) => w.jsx(
- "img",
- {
- className: Do.docListTypePickerItem + (e === s.value ? `
- ${Do.docListTypePickerItemActive}
- ` : ""),
- onClick: () => {
- t(s.value);
- },
- src: s.img
- },
- s.value
- )) });
- };
- var El = [
- {
- value: Ft.ORDER_LIST,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.ORDER_LIST_1,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.ORDER_LIST_2,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.ORDER_LIST_3,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.ORDER_LIST_4,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.ORDER_LIST_5,
- img: "data:image/jpeg;base64,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"
- }
- ];
- var Sl = (n) => w.jsx(
- ia,
- {
- ...n,
- options: El
- }
- );
- var Il = [
- {
- value: Ft.BULLET_LIST,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.BULLET_LIST_1,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.BULLET_LIST_2,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.BULLET_LIST_3,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.BULLET_LIST_4,
- img: "data:image/jpeg;base64,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"
- },
- {
- value: Ft.BULLET_LIST_5,
- img: "data:image/jpeg;base64,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"
- }
- ];
- var Cl = (n) => w.jsx(
- ia,
- {
- ...n,
- options: Il
- }
- );
- var aa = `${kt}_ORDER_LIST_TYPE_COMPONENT`;
- var ca = `${kt}_BULLET_LIST_TYPE_COMPONENT`;
- var vl2 = "doc.command.tab";
- var _t = {
- id: vl2,
- type: ar.COMMAND,
- async handler(n, e) {
- const o = n.get(Et).onAutoFormat(_t.id, e);
- return (await Q0(o, n.get(Pt))).result;
- }
- };
- var Rl = "doc.command.after-space";
- var Ao = {
- id: Rl,
- type: ar.COMMAND,
- async handler(n) {
- const t = n.get(Et).onAutoFormat(Ao.id);
- return (await Q0(t, n.get(Pt))).result;
- }
- };
- var ln2 = {
- id: "doc.command.enter",
- type: ar.COMMAND,
- async handler(n) {
- const t = n.get(Et).onAutoFormat(ln2.id);
- return (await Q0(t, n.get(Pt))).result;
- }
- };
- function de(n) {
- return n.getContextValue(Nr) && n.getContextValue(CR) && !n.getContextValue(yR);
- }
- function bl(n) {
- return n.getContextValue(Nr) && n.getContextValue(CR) && !n.getContextValue(yR);
- }
- var xl = {
- id: _t.id,
- binding: I1.TAB,
- preconditions: de
- };
- var Ol = {
- id: _t.id,
- binding: I1.TAB | Ae.SHIFT,
- preconditions: de,
- staticParameters: {
- shift: true
- }
- };
- var Tl = Object.defineProperty;
- var yl = Object.getOwnPropertyDescriptor;
- var Bl = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? yl(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Tl(e, t, s), s;
- };
- var wo = (n, e) => (t, o) => e(t, o, n);
- var Ml = 11;
- var _l = 9;
- var vn = {
- /**
- * fontFamily
- */
- ff: "Arial",
- /**
- * fontSize
- */
- fs: Ml
- };
- var Je = class extends nt {
- constructor(e, t, o) {
- super();
- x(this, "_cacheStyle", null);
- this._textSelectionManagerService = e, this._univerInstanceService = t, this._renderManagerService = o, this._init();
- }
- _init() {
- this._listenDocRangeChange();
- }
- _listenDocRangeChange() {
- this.disposeWithMe(
- this._textSelectionManagerService.textSelection$.subscribe(() => {
- this._clearStyleCache();
- })
- );
- }
- getStyleCache() {
- return this._cacheStyle;
- }
- getDefaultStyle() {
- var i;
- const e = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (e == null)
- return {
- ...vn
- };
- 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();
- return s == null ? {
- ...vn
- } : s.getEditArea() === n3.BODY ? {
- ...vn
- } : {
- ...vn,
- fs: _l
- };
- }
- setStyleCache(e) {
- this._cacheStyle = {
- ...this._cacheStyle,
- ...e
- };
- }
- _clearStyleCache() {
- this._cacheStyle = null;
- }
- };
- Je = Bl([
- wo(0, ot(m)),
- wo(1, _n),
- wo(2, Yx)
- ], Je);
- function Ve(n, e, t) {
- return t.executeCommand(lt.id, {
- preCommandId: n,
- ...e != null ? e : {}
- });
- }
- var Ur = "doc.command.set-inline-format-bold";
- var Vt = {
- id: Ur,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Ur,
- e,
- t
- );
- }
- };
- var Lr = "doc.command.set-inline-format-italic";
- var jt = {
- id: Lr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Lr,
- e,
- t
- );
- }
- };
- var Fr = "doc.command.set-inline-format-underline";
- var Wt2 = {
- id: Fr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Fr,
- e,
- t
- );
- }
- };
- var Hr = "doc.command.set-inline-format-strikethrough";
- var zt = {
- id: Hr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Hr,
- e,
- t
- );
- }
- };
- var kr = "doc.command.set-inline-format-subscript";
- var Ct2 = {
- id: kr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- kr,
- e,
- t
- );
- }
- };
- var Vr2 = "doc.command.set-inline-format-superscript";
- var Gt = {
- id: Vr2,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Vr2,
- e,
- t
- );
- }
- };
- var jr = "doc.command.set-inline-format-fontsize";
- var Pt2 = {
- id: jr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- jr,
- e,
- t
- );
- }
- };
- var Wr = "doc.command.set-inline-format-font-family";
- var Dt2 = {
- id: Wr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Wr,
- e,
- t
- );
- }
- };
- var zr = "doc.command.set-inline-format-text-color";
- var wt = {
- id: zr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- zr,
- e,
- t
- );
- }
- };
- var Gr = "doc.command.set-inline-format-text-background-color";
- var Nt2 = {
- id: Gr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Gr,
- e,
- t
- );
- }
- };
- var Yr = "doc.command.reset-inline-format-text-background-color";
- var fn = {
- id: Yr,
- type: ar.COMMAND,
- handler: async (n, e) => {
- const t = n.get(Pt);
- return Ve(
- Yr,
- e,
- t
- );
- }
- };
- var $o = {
- [Vt.id]: "bl",
- [jt.id]: "it",
- [Wt2.id]: "ul",
- [zt.id]: "st",
- [Pt2.id]: "fs",
- [Dt2.id]: "ff",
- [wt.id]: "cl",
- [Nt2.id]: "bg",
- [fn.id]: "bg",
- [Ct2.id]: "va",
- [Gt.id]: "va"
- };
- var lt = {
- id: "doc.command.set-inline-format",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: async (n, e) => {
- var R;
- 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];
- if (c.length === 0)
- return false;
- const { segmentId: l } = c[0], d = i.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (d == null)
- return false;
- const h = d.getSelfOrHeaderFooterModel(l).getBody();
- if (h == null)
- return false;
- const u = d.getUnitId();
- let g;
- switch (o) {
- case Vt.id:
- case jt.id:
- case Wt2.id:
- case zt.id:
- case Ct2.id:
- case Gt.id: {
- const S = a.getDefaultStyle(), C = la(
- h,
- A,
- S
- );
- g = Dl2(
- C,
- o
- );
- break;
- }
- case Pt2.id:
- case Dt2.id: {
- g = t;
- break;
- }
- case wt.id:
- case Nt2.id: {
- g = {
- rgb: t
- };
- break;
- }
- case fn.id: {
- g = {
- rgb: null
- };
- break;
- }
- default:
- throw new Error(`Unknown command: ${o} in handleInlineFormat`);
- }
- const f = {
- id: M.id,
- params: {
- unitId: u,
- actions: [],
- textRanges: c
- }
- }, p = new Ke(), m2 = tn.getInstance(), E = new lr();
- E.reset();
- for (const S of c) {
- let { startOffset: C, endOffset: T, rangeType: O } = S;
- if (C == null || T == null)
- continue;
- if (O === Ag.RECT && (C = C - 1), C === T) {
- const B = a.getStyleCache(), M2 = $o[o];
- a.setStyleCache(
- {
- [M2]: (B == null ? void 0 : B[M2]) !== void 0 ? Aa(
- B,
- M2,
- o
- ) : g
- }
- );
- continue;
- }
- const P = {
- dataStream: "",
- textRuns: [
- {
- st: 0,
- ed: T - C,
- ts: {
- [$o[o]]: g
- }
- }
- ]
- }, b = C - E.cursor;
- b !== 0 && p.push({
- t: ce.RETAIN,
- len: b
- }), p.push({
- t: ce.RETAIN,
- body: P,
- len: T - C
- }), E.reset(), E.moveCursor(T);
- }
- const I = le(d, l);
- return f.params.actions = m2.editOp(p.serialize(), I), !!s.syncExecuteCommand(f.id, f.params);
- }
- };
- function Pl2(n) {
- return n !== null && typeof n == "object";
- }
- function Aa(n, e, t) {
- if (/bl|it/.test(e))
- return (n == null ? void 0 : n[e]) === we.TRUE ? we.FALSE : we.TRUE;
- if (/ul|st/.test(e))
- return Pl2(n == null ? void 0 : n[e]) && (n == null ? void 0 : n[e]).s === we.TRUE ? {
- s: we.FALSE
- } : {
- s: we.TRUE
- };
- if (/va/.test(e))
- 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;
- }
- function la(n, e, t) {
- var A, l, d, h, u, g, f, p, m2, E, I, v, R, S;
- const { startOffset: o, endOffset: s, collapsed: r } = e;
- if (r) {
- const C = (A = n.textRuns) != null ? A : [];
- let T = null;
- for (let O = C.length - 1; O >= 0; O--) {
- const P = C[O];
- if (P.st < o && o <= P.ed) {
- T = P;
- break;
- }
- }
- return T != null && T.ts ? { ...t, ...T.ts } : t;
- }
- const { textRuns: i = [] } = Dt(n, o, s), a = re.deepClone(t);
- a.fs = Math.max(a.fs, ...i.map((C) => {
- var T, O;
- return (O = (T = C == null ? void 0 : C.ts) == null ? void 0 : T.fs) != null ? O : a.fs;
- })), a.ff = (h = (d = (l = i.find((C) => {
- var T;
- return ((T = C.ts) == null ? void 0 : T.ff) != null;
- })) == null ? void 0 : l.ts) == null ? void 0 : d.ff) != null ? h : a.ff, a.it = i.length && i.every((C) => {
- var T;
- return ((T = C.ts) == null ? void 0 : T.it) === we.TRUE;
- }) ? we.TRUE : we.FALSE, a.bl = i.length && i.every((C) => {
- var T;
- return ((T = C.ts) == null ? void 0 : T.bl) === we.TRUE;
- }) ? we.TRUE : we.FALSE, a.ul = i.length && i.every((C) => {
- var T, O;
- return ((O = (T = C.ts) == null ? void 0 : T.ul) == null ? void 0 : O.s) === we.TRUE;
- }) ? (u = i[0].ts) == null ? void 0 : u.ul : a.ul, a.st = i.length && i.every((C) => {
- var T, O;
- return ((O = (T = C.ts) == null ? void 0 : T.st) == null ? void 0 : O.s) === we.TRUE;
- }) ? (g = i[0].ts) == null ? void 0 : g.st : a.st, a.bg = (m2 = (p = (f = i.find((C) => {
- var T;
- return ((T = C.ts) == null ? void 0 : T.bg) != null;
- })) == null ? void 0 : f.ts) == null ? void 0 : p.bg) != null ? m2 : a.bg, a.cl = (v = (I = (E = i.find((C) => {
- var T;
- return ((T = C.ts) == null ? void 0 : T.cl) != null;
- })) == null ? void 0 : E.ts) == null ? void 0 : I.cl) != null ? v : a.cl;
- const c = i.filter((C) => {
- var T;
- return ((T = C == null ? void 0 : C.ts) == null ? void 0 : T.va) != null;
- });
- if (c.length > 0 && c.length === i.length) {
- const C = (R = c[0].ts) == null ? void 0 : R.va;
- let T = true;
- for (let O = 1; O < c.length; O++)
- if (((S = c[O].ts) == null ? void 0 : S.va) !== C) {
- T = false;
- break;
- }
- T && (a.va = C);
- }
- return a;
- }
- function Dl2(n, e) {
- const t = $o[e];
- return Aa(n, t, e);
- }
- var pn = {
- id: "doc.command.list-operation",
- type: ar.COMMAND,
- handler: (n, e) => {
- var E, I;
- 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 : [];
- if (i == null || a.length === 0)
- return false;
- const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
- if (A == null)
- return false;
- const l = mn2(a, A), d = i.getUnitId(), h = {
- id: M.id,
- params: {
- unitId: d,
- actions: [],
- textRanges: a,
- isEditing: false
- }
- };
- new lr().reset();
- const g = st.paragraph.bullet.switch({
- paragraphs: l,
- listType: r,
- document: i,
- segmentId: c
- }), f = tn.getInstance(), p = le(i, c);
- return h.params.actions = f.editOp(g.serialize(), p), !!s.syncExecuteCommand(h.id, h.params);
- }
- };
- var lo = {
- id: "doc.command.change-list-type",
- type: ar.COMMAND,
- handler: (n, e) => {
- var E, I;
- 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();
- if (i == null || a == null || !a.length)
- return false;
- const { segmentId: c } = a[0], A = (E = t.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
- if (l == null)
- return false;
- const d = mn2(A, l), h = i.getUnitId(), u = st.paragraph.bullet.set({
- paragraphs: d,
- listType: r,
- segmentId: c,
- document: i
- });
- if (!u)
- return false;
- const g = tn.getInstance(), f = {
- id: M.id,
- params: {
- unitId: h,
- actions: [],
- textRanges: A,
- isEditing: false
- }
- }, p = le(i, c);
- return f.params.actions = g.editOp(u.serialize(), p), !!s.syncExecuteCommand(f.id, f.params);
- }
- };
- var Pn = ((n) => (n[n.increase = 1] = "increase", n[n.decrease = -1] = "decrease", n))(Pn || {});
- var es = {
- id: "doc.command.change-list-nesting-level",
- type: ar.COMMAND,
- handler: (n, e) => {
- var E, I;
- if (!e)
- return false;
- 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();
- if (i == null || a == null)
- return false;
- const { segmentId: c } = a, A = (E = o.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
- if (l == null)
- return false;
- const d = Qs(a, l), h = i.getUnitId(), u = tn.getInstance(), g = st.paragraph.bullet.changeNestLevel({
- paragraphs: d,
- type: t,
- segmentId: c,
- document: i
- }), f = {
- id: M.id,
- params: {
- unitId: h,
- actions: [],
- textRanges: A,
- isEditing: false
- }
- }, p = le(i, c);
- return f.params.actions = u.editOp(g.serialize(), p), !!r.syncExecuteCommand(f.id, f.params);
- }
- };
- var uo = {
- id: "doc.command.bullet-list",
- type: ar.COMMAND,
- handler: (n, e) => {
- const t = n.get(Pt);
- return e != null && e.value ? t.syncExecuteCommand(lo.id, {
- listType: e.value
- }) : t.syncExecuteCommand(pn.id, {
- listType: Ft.BULLET_LIST
- });
- }
- };
- var ws = {
- id: "doc.command.check-list",
- type: ar.COMMAND,
- handler: (n, e) => {
- const t = n.get(Pt);
- return e != null && e.value ? t.syncExecuteCommand(lo.id, {
- listType: e.value
- }) : t.syncExecuteCommand(pn.id, {
- listType: Ft.CHECK_LIST
- });
- }
- };
- var Ns = {
- id: "doc.command.toggle-check-list",
- type: ar.COMMAND,
- handler: (n, e) => {
- var f;
- if (!e)
- return false;
- const t = n.get(_n), o = n.get(Pt), { index: s, segmentId: r, textRanges: i } = e, a = t.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (a == null || ((f = a.getSelfOrHeaderFooterModel(r).getBody()) == null ? void 0 : f.paragraphs) == null)
- return false;
- const A = a.getUnitId(), l = {
- id: M.id,
- params: {
- unitId: A,
- actions: [],
- textRanges: i != null ? i : [],
- segmentId: r,
- isEditing: false
- }
- }, d = st.paragraph.bullet.toggleChecklist({
- document: a,
- paragraphIndex: s,
- segmentId: r
- });
- if (!d)
- return false;
- const h = tn.getInstance(), u = le(a, r);
- return l.params.actions = h.editOp(d.serialize(), u), !!o.syncExecuteCommand(l.id, l.params);
- }
- };
- var ho = {
- id: "doc.command.order-list",
- type: ar.COMMAND,
- handler: (n, e) => {
- const t = n.get(Pt);
- return e != null && e.value ? t.syncExecuteCommand(lo.id, {
- listType: e.value
- }) : t.syncExecuteCommand(pn.id, {
- listType: Ft.ORDER_LIST
- });
- }
- };
- var da = {
- id: "doc.command.quick-list",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler(n, e) {
- var oe, ce2, he, Ae2, ne;
- if (!e)
- return false;
- const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = o.getCurrentUnitForType(Fe.UNIVER_DOC), i = t.getActiveTextRange();
- if (r == null || i == null)
- return false;
- 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);
- let M2 = re.generateRandomId(6);
- 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];
- 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);
- const q = {
- id: M.id,
- params: {
- unitId: r.getUnitId(),
- actions: [],
- textRanges: [{
- startOffset: l,
- endOffset: l,
- collapsed: true
- }],
- isEditing: false
- }
- };
- h.push({
- t: ce.RETAIN,
- len: l
- }), h.push({
- t: ce.DELETE,
- len: d - l
- }), h.push({
- t: ce.RETAIN,
- len: 1,
- body: {
- dataStream: "",
- paragraphs: [
- {
- startIndex: 0,
- paragraphStyle: {
- ...m2,
- textStyle: {
- ...m2.textStyle,
- ...T
- },
- indentFirstLine: void 0,
- hanging: S,
- indentStart: { v: S3(C, b) - S3(S, b) + S3(E, b) + S3(v, b) }
- },
- bullet: {
- ...(ne = A.bullet) != null ? ne : {
- nestingLevel: 0,
- textStyle: {
- fs: 20
- }
- },
- listType: c,
- listId: M2
- }
- }
- ]
- }
- });
- const V = le(r, a);
- return q.params.actions = u.editOp(h.serialize(), V), !!s.syncExecuteCommand(q.id, q.params);
- }
- };
- function Qs(n, e) {
- const { startOffset: t, endOffset: o } = n, s = [];
- let r = -1;
- for (const i of e) {
- const { startIndex: a } = i;
- (t > r && t <= a || o > r && o <= a || a >= t && a <= o) && s.push(i), r = a;
- }
- return s;
- }
- function mn2(n, e) {
- const t = [];
- for (const o of n) {
- const s = Qs(o, e);
- t.push(...s);
- }
- return t;
- }
- function wl(n, e) {
- const t = e.sort(ps("startIndex"));
- for (let o = 0; o < t.length; o++) {
- const s = e[o];
- if (s.startIndex >= n)
- return s;
- }
- }
- var et = {
- id: "doc.command.align-action",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: (n, e) => {
- var I;
- const t = n.get(m), o = n.get(_n), s = n.get(Pt), { alignType: r } = e, i = o.getCurrentUniverDocInstance();
- if (i == null)
- return false;
- const a = t.getDocRanges();
- if (a.length === 0)
- return false;
- const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
- if (A == null)
- return false;
- const l = mn2(a, A), d = i.getUnitId(), h = l.every((v) => {
- var R;
- return ((R = v.paragraphStyle) == null ? void 0 : R.horizontalAlign) === r;
- }), u = {
- id: M.id,
- params: {
- unitId: d,
- actions: [],
- textRanges: a
- }
- }, g = new lr();
- g.reset();
- const f = new Ke(), p = tn.getInstance();
- for (const v of l) {
- const { startIndex: R } = v;
- f.push({
- t: ce.RETAIN,
- len: R - g.cursor
- });
- const S = {
- ...v.paragraphStyle,
- horizontalAlign: h ? Xt.UNSPECIFIED : r
- };
- f.push({
- t: ce.RETAIN,
- len: 1,
- body: {
- dataStream: "",
- paragraphs: [
- {
- ...v,
- paragraphStyle: S,
- startIndex: 0
- }
- ]
- },
- coverType: Pe.REPLACE
- }), g.moveCursorTo(R + 1);
- }
- const m2 = le(i, c);
- return u.params.actions = p.editOp(f.serialize(), m2), !!s.syncExecuteCommand(u.id, u.params);
- }
- };
- var go = {
- id: "doc.command.align-left",
- type: ar.COMMAND,
- handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
- alignType: Xt.LEFT
- })
- };
- var fo = {
- id: "doc.command.align-center",
- type: ar.COMMAND,
- handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
- alignType: Xt.CENTER
- })
- };
- var po = {
- id: "doc.command.align-right",
- type: ar.COMMAND,
- handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
- alignType: Xt.RIGHT
- })
- };
- var mo = {
- id: "doc.command.align-justify",
- type: ar.COMMAND,
- handler: (n) => n.get(Pt).syncExecuteCommand(et.id, {
- alignType: Xt.JUSTIFIED
- })
- };
- var Nl = {
- id: Vt.id,
- binding: I1.B | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var Ql2 = {
- id: jt.id,
- binding: I1.I | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var Ul = {
- id: Wt2.id,
- binding: I1.U | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var Ll = {
- id: zt.id,
- binding: I1.X | Ae.SHIFT | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var Fl = {
- id: Ct2.id,
- binding: I1.COMMA | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var Hl = {
- id: Gt.id,
- binding: I1.PERIOD | Ae.CTRL_COMMAND,
- preconditions: de
- };
- var kl = {
- id: go.id,
- binding: I1.L | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var Vl = {
- id: po.id,
- binding: I1.R | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var jl2 = {
- id: fo.id,
- binding: I1.E | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var Wl = {
- id: mo.id,
- binding: I1.J | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var zl = {
- id: ho.id,
- binding: I1.Digit7 | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var Gl = {
- id: uo.id,
- binding: I1.Digit8 | Ae.CTRL_COMMAND | Ae.SHIFT,
- preconditions: de
- };
- var Yl2 = "univer-doc-count-bar";
- var ql2 = {
- docCountBar: Yl2
- };
- var Kl = (n, e) => {
- const t = n.get(_n).getUniverDocInstance(e.unitId), o = (t == null ? void 0 : t.zoomRatio) || 1;
- return {
- ...re.deepClone(e),
- zoomRatio: o
- };
- };
- var Ye = {
- id: "doc.operation.set-zoom-ratio",
- type: ar.OPERATION,
- handler: (n, e) => {
- const t = n.get(_n).getUniverDocInstance(e.unitId);
- if (!t)
- return false;
- const o = t.getSnapshot();
- return o.settings == null ? o.settings = {
- zoomRatio: e.zoomRatio
- } : o.settings.zoomRatio = e.zoomRatio, true;
- }
- };
- var Xl2 = [50, 80, 100, 130, 150, 170, 200, 400];
- var Jl = [10, 400];
- function Zl() {
- 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)(() => {
- var A, l;
- if (!o)
- return 100;
- const c = ((l = (A = o.getSettings()) == null ? void 0 : A.zoomRatio) != null ? l : 1) * 100;
- return Math.round(c);
- }, [o]), [r, i] = (0, import_react.useState)(() => s());
- (0, import_react.useEffect)(() => (i(s()), n.onCommandExecuted((A) => {
- if (A.id === Ye.id) {
- const l = s();
- i(l);
- }
- }).dispose), [n, s]);
- function a(c) {
- if (i(c), o == null)
- return;
- const A = c / 100;
- n.executeCommand(Ye.id, {
- unitId: o.getUnitId(),
- zoomRatio: A
- });
- }
- return w.jsx(
- i_,
- {
- min: Jl[0],
- value: r,
- shortcuts: Xl2,
- onChange: a
- }
- );
- }
- function $l2(n) {
- return w.jsx("section", { className: ql2.docCountBar, children: w.jsx(Zl, {}) });
- }
- var ed = "univer-doc-footer-container";
- var td = {
- docFooterContainer: ed
- };
- var nd = () => w.jsxs("div", { className: td.docFooterContainer, children: [
- w.jsx("div", {}),
- w.jsx($l2, {})
- ] });
- var Us = "docs-ui.config";
- var qr = {
- layout: {
- docContainerConfig: sA,
- toolbarConfig: oA
- }
- };
- var Eo = ((n) => (n[n.ABOVE = 0] = "ABOVE", n[n.BELLOW = 1] = "BELLOW", n))(Eo || {});
- var Ls = ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Ls || {});
- function od(n, e) {
- let t = ln.TABLE_START;
- const o = [], s = [];
- for (let r = 0; r < n; r++) {
- t += ln.TABLE_ROW_START;
- for (let i = 0; i < e; i++)
- t += `${ln.TABLE_CELL_START}\r
- ${ln.TABLE_CELL_END}`, o.push({
- startIndex: t.length - 3,
- paragraphStyle: {
- spaceAbove: { v: 3 },
- lineSpacing: 2,
- spaceBelow: { v: 0 }
- }
- }), s.push({
- startIndex: t.length - 2
- });
- t += ln.TABLE_ROW_END;
- }
- return t += ln.TABLE_END, {
- dataStream: t,
- paragraphs: o,
- sectionBreaks: s
- };
- }
- function Fs() {
- return {
- margin: {
- start: {
- v: 10
- },
- end: {
- v: 10
- },
- top: {
- v: 5
- },
- bottom: {
- v: 5
- }
- }
- };
- }
- function Hs(n) {
- const e = Fs();
- return {
- tableCells: [...new Array(n).fill(null).map(() => re.deepClone(e))],
- trHeight: {
- val: { v: 30 },
- hRule: sm.AUTO
- }
- };
- }
- function ks(n) {
- return {
- size: {
- type: em.SPECIFIED,
- width: {
- v: n
- }
- }
- };
- }
- function ua(n, e, t) {
- 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);
- return {
- tableRows: r,
- tableColumns: i,
- tableId: a,
- align: tm.START,
- indent: {
- v: 0
- },
- textWrap: rm.NONE,
- position: {
- positionH: {
- relativeFrom: om.PAGE,
- posOffset: 0
- },
- positionV: {
- relativeFrom: am.PAGE,
- posOffset: 0
- }
- },
- dist: {
- distB: 0,
- distL: 0,
- distR: 0,
- distT: 0
- },
- cellMargin: {
- start: {
- v: 10
- },
- end: {
- v: 10
- },
- top: {
- v: 5
- },
- bottom: {
- v: 5
- }
- },
- size: {
- type: em.UNSPECIFIED,
- width: {
- v: t
- }
- }
- };
- }
- function En(n, e) {
- if (!n && !e)
- return null;
- if (e && e.length > 0) {
- let t = Number.POSITIVE_INFINITY, o = Number.NEGATIVE_INFINITY;
- const s = "";
- for (const r of e) {
- const { startOffset: i, endOffset: a, segmentId: c } = r;
- i == null || a == null || c == null || (t = Math.min(t, i), o = Math.max(o, a));
- }
- if (Number.isFinite(t) && Number.isFinite(o))
- return {
- startOffset: t,
- endOffset: o,
- segmentId: s
- };
- } else if (n) {
- const { startOffset: t, endOffset: o, segmentId: s } = n;
- return t == null || o == null || s == null ? null : {
- startOffset: t,
- endOffset: o,
- segmentId: s
- };
- }
- }
- function sd(n) {
- let e = ln.TABLE_ROW_START;
- const t = [], o = [];
- for (let s = 0; s < n; s++)
- e += `${ln.TABLE_CELL_START}\r
- ${ln.TABLE_CELL_END}`, t.push({
- startIndex: e.length - 3,
- paragraphStyle: {
- spaceAbove: { v: 3 },
- lineSpacing: 2,
- spaceBelow: { v: 0 }
- }
- }), o.push({
- startIndex: e.length - 2
- });
- return e += ln.TABLE_ROW_END, {
- dataStream: e,
- paragraphs: t,
- sectionBreaks: o
- };
- }
- function rd() {
- const n = `${ln.TABLE_CELL_START}\r
- ${ln.TABLE_CELL_END}`, e = [], t = [];
- return e.push({
- startIndex: 1,
- paragraphStyle: {
- spaceAbove: { v: 3 },
- lineSpacing: 2,
- spaceBelow: { v: 0 }
- }
- }), t.push({
- startIndex: 2
- }), {
- dataStream: n,
- paragraphs: e,
- sectionBreaks: t
- };
- }
- function id(n, e, t) {
- var d, h, u;
- const { startOffset: o, endOffset: s, segmentId: r } = n, i = t.getSelfOrHeaderFooterViewModel(r), a = e === 0 ? o : s;
- let c = null;
- 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;
- let l = 0;
- for (const g of i.getChildren()) {
- for (const f of g.children) {
- const { children: p } = f, m2 = p[0];
- if (m2) {
- for (const E of m2.children)
- if (E.startIndex <= a && a <= E.endIndex) {
- l = m2.children.indexOf(E), c = E;
- break;
- }
- }
- if (c)
- break;
- }
- if (c)
- break;
- }
- return c == null || A == null ? null : {
- offset: e === 0 ? c.startIndex : c.endIndex + 1,
- colCount: c.children.length,
- tableId: A,
- insertRowIndex: e === 0 ? l : l + 1
- };
- }
- function ad(n, e, t) {
- var u, g, f;
- 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 = [];
- let l = null, d = -1;
- for (const p of i.getChildren()) {
- for (const m2 of p.children) {
- const { children: E } = m2, I = E[0];
- if (I) {
- if (a < I.startIndex || a > I.endIndex)
- continue;
- l = I;
- for (const v of I.children) {
- for (const R of v.children) {
- const S = v.children.indexOf(R);
- if (a >= R.startIndex && a <= R.endIndex) {
- d = S;
- break;
- }
- }
- if (d !== -1)
- break;
- }
- }
- if (l)
- break;
- }
- if (l)
- break;
- }
- if (l == null || c == null || d === -1)
- return null;
- let h = 0;
- for (const p of l.children) {
- const m2 = p.children[d], E = e === 0 ? m2.startIndex : m2.endIndex + 1;
- A.push(E - h), h = E;
- }
- return {
- offsets: A,
- tableId: c,
- columnIndex: d,
- rowCount: l.children.length
- };
- }
- function cd(n, e, t) {
- const o = [];
- let s = e[t].size.width.v, r = 0;
- for (let i = 0; i < e.length; i++)
- r += e[i].size.width.v;
- r += s;
- for (let i = 0; i < e.length; i++)
- o.push(e[i].size.width.v / r * n);
- return s = s / r * n, {
- widths: o,
- newColWidth: s
- };
- }
- function ha(n, e) {
- var h, u, g;
- 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 = [];
- let c = -1, A = 0, l = -1, d = false;
- for (const f of r.getChildren()) {
- for (const p of f.children) {
- const { children: m2 } = p, E = m2[0];
- if (E) {
- if (t < E.startIndex || o > E.endIndex)
- continue;
- l = E.startIndex + 3;
- for (const I of E.children) {
- const v = E.children.indexOf(I), { startIndex: R, endIndex: S } = I;
- 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);
- }
- }
- if (a.length)
- break;
- }
- if (a.length)
- break;
- }
- return i == null || a.length === 0 ? null : {
- tableId: i,
- rowIndexes: a,
- offset: c,
- len: A,
- cursor: l,
- selectWholeTable: d
- };
- }
- function Ad(n, e) {
- var g, f, p;
- 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 = [];
- let c = null;
- const A = [];
- let l = -1, d = -1, h = -1;
- for (const m2 of r.getChildren()) {
- for (const E of m2.children) {
- const { children: I } = E, v = I[0];
- if (v) {
- if (t < v.startIndex || o > v.endIndex)
- continue;
- c = v;
- for (const R of v.children)
- for (const S of R.children) {
- const C = R.children.indexOf(S);
- t >= S.startIndex && t <= S.endIndex && (d = C), o >= S.startIndex && o <= S.endIndex && (h = C);
- }
- }
- if (c)
- break;
- }
- if (c)
- break;
- }
- if (c == null || i == null)
- return null;
- for (let m2 = d; m2 <= h; m2++)
- A.push(m2);
- let u = 0;
- for (const m2 of c.children) {
- const E = m2.children[d], I = m2.children[h];
- a.push({
- retain: E.startIndex - u,
- delete: I.endIndex - E.startIndex + 1
- }), u = I.endIndex + 1;
- }
- return l = c.startIndex + 3, {
- offsets: a,
- tableId: i,
- columnIndexes: A,
- cursor: l,
- selectWholeTable: A.length === c.children[0].children.length,
- rowCount: c.children.length
- };
- }
- function ga(n, e) {
- var l, d, h;
- 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;
- let a = -1, c = 0, A = -1;
- for (const u of r.getChildren()) {
- for (const g of u.children) {
- const { children: f } = g, p = f[0];
- if (p) {
- if (t < p.startIndex || o > p.endIndex)
- continue;
- a = p.startIndex, c = p.endIndex - p.startIndex + 1, A = p.startIndex;
- }
- if (p)
- break;
- }
- if (c > 0)
- break;
- }
- return i == null ? null : {
- tableId: i,
- offset: a,
- len: c,
- cursor: A
- };
- }
- function ld(n, e) {
- var g, f, p;
- 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 = [];
- let c = null, A = -1, l = -1, d = -1, h = -1;
- for (const m2 of r.getChildren()) {
- for (const E of m2.children) {
- const { children: I } = E, v = I[0];
- if (v) {
- if (t < v.startIndex || o > v.endIndex)
- continue;
- c = v;
- for (const R of v.children) {
- const S = v.children.indexOf(R);
- for (const C of R.children) {
- const T = R.children.indexOf(C);
- t >= C.startIndex && t <= C.endIndex && (l = S, d = T), o >= C.startIndex && o <= C.endIndex && (h = T);
- }
- }
- }
- if (c)
- break;
- }
- if (c)
- break;
- }
- if (c == null || i == null || l === -1)
- return null;
- const u = c.children[l];
- for (let m2 = d; m2 <= h; m2++) {
- const E = u.children[m2];
- a.push({
- retain: E.startIndex + 1,
- delete: E.endIndex - E.startIndex - 3
- });
- }
- return A = c.startIndex + 3, {
- offsets: a,
- tableId: i,
- cursor: A,
- rowCount: c.children.length
- };
- }
- var ts = ((n) => (n[n.NEXT = 0] = "NEXT", n[n.PREV = 1] = "PREV", n))(ts || {});
- function Kr(n, e, t) {
- const { startOffset: o } = e;
- let s = null;
- for (const A of n.getChildren()) {
- for (const l of A.children) {
- const d = l.children[0];
- if (d && o > d.startIndex && o < d.endIndex) {
- s = d;
- break;
- }
- }
- if (s)
- break;
- }
- if (s == null)
- return null;
- let r = -1, i = -1, a = null;
- for (const A of s.children) {
- for (const l of A.children)
- if (o > l.startIndex && o < l.endIndex) {
- r = A.children.indexOf(l), i = s.children.indexOf(A), a = A;
- break;
- }
- if (r > -1)
- break;
- }
- if (r === -1 || i === -1 || a == null)
- return null;
- let c = null;
- if (t === 0) {
- if (c = a.children[r + 1], !c) {
- const A = s.children[i + 1];
- A && (c = A.children[0]);
- }
- } else if (c = a.children[r - 1], !c) {
- const A = s.children[i - 1];
- A && (c = A.children[A.children.length - 1]);
- }
- if (c) {
- const { startIndex: A, endIndex: l } = c;
- return {
- startOffset: A + 1,
- endOffset: l - 2
- };
- }
- }
- function dd(n, e) {
- const t = [], { customBlocks: o = [] } = n;
- for (const s of e) {
- const { startOffset: r, endOffset: i } = s;
- if (!(r == null || i == null))
- for (const a of o) {
- const { startIndex: c } = a;
- c >= r && c < i && t.push(a.blockId);
- }
- }
- return t;
- }
- function ud(n) {
- return n.some((e) => {
- const { startNodePosition: t } = e;
- return t ? (t == null ? void 0 : t.path.indexOf("cells")) > -1 : false;
- });
- }
- var hd = BC;
- var fa = {
- id: "doc.command.inner-paste",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: async (n, e) => {
- var O, P, b, B, M2, H;
- 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;
- if (!Array.isArray(c) || c.length === 0 || l == null)
- return false;
- const u = a.getCurrentUniverDocInstance(), g = u == null ? void 0 : u.getSelfOrHeaderFooterModel(t).getBody();
- if (u == null || g == null)
- return false;
- const f = u.getUnitId(), p = {
- id: M.id,
- params: {
- unitId: f,
- actions: [],
- textRanges: o,
- segmentId: t
- }
- }, m2 = new lr();
- m2.reset();
- const E = new Ke(), I = tn.getInstance(), v = [], R = !!((O = l.tables) != null && O.length), S = !!((P = l.customBlocks) != null && P.length);
- if (R && t || R && ud(c) || c.length && (A != null && A.length))
- return false;
- for (let F = 0; F < c.length; F++) {
- const D2 = c[F], { startOffset: te2, endOffset: q, collapsed: V } = D2, Y = te2 - m2.cursor, oe = re.deepClone(l);
- if (R)
- for (const Ae2 of oe.tables) {
- const { tableId: ne } = Ae2, ae = re.generateRandomId(6);
- Ae2.tableId = ae;
- const Te = re.deepClone(d[ne]);
- Te.tableId = ae;
- const je = I.insertOp(["tableSource", ae], Te);
- v.push(je);
- }
- if (S && h) {
- const Ae2 = (B = (b = u.getSnapshot().drawingsOrder) == null ? void 0 : b.length) != null ? B : 0;
- for (const ne of oe.customBlocks) {
- const { blockId: ae } = ne, Te = re.generateRandomId(6);
- ne.blockId = Te;
- const je = re.deepClone(h[ae]);
- je.drawingId = Te;
- const ut = I.insertOp(["drawings", Te], je), we2 = I.insertOp(["drawingsOrder", Ae2], Te);
- v.push(ut), v.push(we2);
- }
- }
- const ce2 = Os((M2 = g.customRanges) != null ? M2 : [], q, hd.includes(f)), he = Ts((H = g.customDecorations) != null ? H : [], q);
- if (ce2 && (oe.customRanges = [{
- ...ce2,
- startIndex: 0,
- endIndex: l.dataStream.length - 1
- }]), he.length && (oe.customDecorations = he.map((Ae2) => ({
- ...Ae2,
- startIndex: 0,
- endIndex: l.dataStream.length - 1
- }))), V)
- E.push({
- t: ce.RETAIN,
- len: Y
- }), E.push({
- t: ce.INSERT,
- body: oe,
- len: l.dataStream.length
- });
- else {
- const Ae2 = st.selection.delete([D2], l, m2.cursor, oe, c.length === 1);
- E.push(...Ae2);
- }
- m2.reset(), m2.moveCursor(q);
- }
- const C = le(u, t);
- 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);
- }
- };
- function gd(n, e) {
- const { startOffset: t, endOffset: o } = n, s = e.some((i) => i.startIndex === o), r = Math.max(t, s ? o - 1 : o);
- return {
- ...n,
- endOffset: r,
- collapsed: t === r
- };
- }
- function fd(n, e, t) {
- var g, f;
- const o = e.getSelfOrHeaderFooterModel(t).getBody(), s = new Ke(), r = tn.getInstance(), i = [];
- if (o == null)
- return i;
- const { tables: a = [] } = o, c = new lr();
- c.reset();
- for (let p = 0; p < n.length; p++) {
- const m2 = gd(n[p], a), { startOffset: E, endOffset: I, collapsed: v } = m2, R = E - c.cursor;
- v ? s.push({
- t: ce.RETAIN,
- len: R
- }) : s.push(...st.selection.delete([m2], o, c.cursor, null, false)), c.reset(), c.moveCursor(I);
- }
- const A = le(e, t);
- i.push(r.editOp(s.serialize(), A));
- 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);
- if (u.length > 0)
- for (const p of u) {
- const m2 = d[p], E = h.indexOf(p);
- if (m2 == null || E < 0)
- continue;
- const I = r.removeOp(["drawings", p], m2), v = r.removeOp(["drawingsOrder", E], p);
- i.push(I), i.push(v);
- }
- return i.reduce((p, m2) => tn.compose(p, m2), null);
- }
- function pd(n, e, t, o) {
- const s = [];
- if (e.getSelfOrHeaderFooterModel(o).getBody() == null)
- return s;
- const i = new Ke(), a = tn.getInstance(), c = new lr();
- c.reset();
- for (const l of n) {
- const { startOffset: d, endOffset: h, spanEntireRow: u, spanEntireTable: g } = l;
- if (!(d == null || h == null))
- if (g) {
- const f = ga({ startOffset: d, endOffset: h, segmentId: o }, t);
- if (f == null)
- continue;
- const { offset: p, len: m2, tableId: E } = f;
- p - c.cursor > 0 && i.push({
- t: ce.RETAIN,
- len: p - c.cursor
- }), i.push({
- t: ce.DELETE,
- len: m2
- });
- const I = a.removeOp(["tableSource", E]);
- s.push(I), c.moveCursorTo(p + m2);
- } else if (u) {
- const f = ha({ startOffset: d, endOffset: h, segmentId: o }, t);
- if (f == null)
- continue;
- const { offset: p, rowIndexes: m2, len: E, tableId: I } = f;
- p - c.cursor > 0 && i.push({
- t: ce.RETAIN,
- len: p - c.cursor
- }), i.push({
- t: ce.DELETE,
- len: E
- });
- for (const v of m2.reverse()) {
- const R = a.removeOp(["tableSource", I, "tableRows", v]);
- s.push(R);
- }
- c.moveCursorTo(p + E);
- } else {
- const f = ld({ startOffset: d, endOffset: h, segmentId: o }, t);
- if (f == null)
- continue;
- const { offsets: p } = f;
- for (const m2 of p) {
- const { retain: E, delete: I } = m2;
- E - c.cursor > 0 && i.push({
- t: ce.RETAIN,
- len: E - c.cursor
- }), i.push({
- t: ce.DELETE,
- len: I
- }), c.moveCursorTo(E + I);
- }
- }
- }
- const A = le(e, o);
- return s.push(a.editOp(i.serialize(), A)), s.reduce((l, d) => tn.compose(l, d), null);
- }
- function md(n, e, t, o, s) {
- let r = [];
- 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) {
- const i = pd(e, t, o, s);
- r == null || r.length === 0 ? r = i : r = tn.compose(
- r,
- tn.transform(i, r, "right")
- );
- }
- return r;
- }
- var Qt = {
- id: "doc.command.inner-cut",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var f, p;
- 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();
- if ((!Array.isArray(a) || a.length === 0) && (!Array.isArray(c) || c.length === 0))
- return false;
- const A = (p = i.getCurrentUniverDocInstance()) == null ? void 0 : p.getUnitId();
- if (!A)
- return false;
- const l = i.getUniverDocInstance(A);
- if (l == null)
- return false;
- const d = ke2(n, A);
- if (d == null)
- return false;
- const h = d.getViewModel(), u = {
- id: M.id,
- params: {
- unitId: A,
- actions: [],
- textRanges: o
- }
- };
- return u.params.actions = md(a, c, l, h, t), !!s.syncExecuteCommand(u.id, u.params);
- }
- };
- var Be = ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Be || {});
- var Ed = "doc.command.insert-text";
- var Vs = {
- id: Ed,
- type: ar.COMMAND,
- handler: async (n, e) => {
- var S;
- 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);
- if (l == null)
- return false;
- const d = c.getActiveTextRange(), h = l.getSelfOrHeaderFooterModel((S = d == null ? void 0 : d.segmentId) != null ? S : "").getBody();
- if (h == null)
- return false;
- const { startOffset: u, collapsed: g } = o, f = a != null ? a : r.dataStream.length, p = [
- {
- startOffset: u + f,
- endOffset: u + f,
- style: d == null ? void 0 : d.style,
- collapsed: g
- }
- ], m2 = {
- id: M.id,
- params: {
- unitId: i,
- actions: [],
- textRanges: p,
- debounce: true
- }
- }, E = new Ke(), I = tn.getInstance();
- if (g)
- u > 0 && E.push({
- t: ce.RETAIN,
- len: u
- }), E.push({
- t: ce.INSERT,
- body: r,
- len: r.dataStream.length
- });
- else {
- const C = st.selection.delete([o], h, 0, r);
- E.push(...C);
- }
- m2.params.textRanges = [{
- startOffset: u + f,
- endOffset: u + f,
- collapsed: g
- }];
- const v = le(l, s);
- return m2.params.actions = I.editOp(E.serialize(), v), !!t.syncExecuteCommand(m2.id, m2.params);
- }
- };
- var dn = {
- id: "doc.command.delete-text",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var R;
- 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();
- if (A == null || l == null)
- return false;
- const { startOffset: d } = s;
- let h = a === Be.LEFT ? d - c : d, u = a === Be.LEFT ? d - 1 : d + c - 1;
- const g = (R = l.customRanges) == null ? void 0 : R.find((S) => S.startIndex <= h && S.endIndex >= u);
- g != null && g.wholeEntity && (h = g.startIndex, u = Math.max(u, g.endIndex));
- const f = {
- id: M.id,
- params: {
- unitId: i,
- actions: [],
- textRanges: [{
- startOffset: h,
- endOffset: h,
- collapsed: true
- }],
- debounce: true
- }
- }, p = new Ke(), m2 = tn.getInstance();
- p.push({
- t: ce.RETAIN,
- len: h - 0
- }), p.push({
- t: ce.DELETE,
- len: u - h + 1
- });
- const I = le(A, r);
- return f.params.actions = m2.editOp(p.serialize(), I), !!t.syncExecuteCommand(f.id, f.params);
- }
- };
- var pa = {
- id: "doc.command.update-text",
- type: ar.COMMAND,
- handler: async (n, e) => {
- const { range: t, segmentId: o, updateBody: s, coverType: r, unitId: i, textRanges: a } = e, c = n.get(Pt), l = n.get(_n).getCurrentUniverDocInstance();
- if (l == null)
- return false;
- const d = {
- id: M.id,
- params: {
- unitId: i,
- actions: [],
- textRanges: a
- }
- }, h = new Ke(), u = tn.getInstance(), { startOffset: g, endOffset: f } = t;
- h.push({
- t: ce.RETAIN,
- len: g
- }), h.push({
- t: ce.RETAIN,
- body: s,
- len: f - g,
- coverType: r
- });
- const p = le(l, o);
- return d.params.actions = u.editOp(h.serialize(), p), !!c.syncExecuteCommand(d.id, d.params);
- }
- };
- var js = {
- id: "doc.command.delete-custom-block",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var b;
- const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = t.getActiveTextRange(), i = o.getCurrentUniverDocInstance();
- if (r == null || i == null)
- return false;
- 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 = [
- {
- startOffset: g,
- endOffset: g,
- style: u
- }
- ], p = {
- id: M.id,
- params: {
- unitId: A,
- actions: [],
- textRanges: f,
- prevTextRanges: [c]
- }
- }, m2 = new Ke(), E = tn.getInstance(), I = [];
- d > 0 && m2.push({
- t: ce.RETAIN,
- len: a === Be.LEFT ? d - 1 : d
- }), m2.push({
- t: ce.DELETE,
- len: 1
- });
- const v = le(i, h);
- I.push(E.editOp(m2.serialize(), v));
- 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);
- 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);
- }
- };
- var Ws = {
- id: "doc.command.merge-two-paragraph",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- const t = n.get(m), o = n.get(_n), s = n.get(Pt), { direction: r, range: i } = e, a = t.getActiveTextRange(), c = t.getTextRanges();
- if (a == null || c == null)
- return false;
- const { segmentId: A, style: l } = a, d = o.getCurrentUnitForType(Fe.UNIVER_DOC), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
- if (d == null || h == null)
- return false;
- const u = a, g = d.getUnitId(), { startOffset: f, collapsed: p } = u;
- if (!p)
- return false;
- const m2 = r === Be.LEFT ? f : f + 1;
- let E, I;
- for (const b of h.paragraphs) {
- if (b.startIndex >= m2) {
- I = b;
- break;
- }
- E = b;
- }
- if (E == null || I == null)
- return false;
- const v = r === Be.LEFT ? f - 1 : f, R = [
- {
- startOffset: v,
- endOffset: v,
- style: l
- }
- ], S = {
- id: M.id,
- params: {
- unitId: g,
- actions: [],
- textRanges: R,
- prevTextRanges: [i]
- }
- }, C = new Ke(), T = tn.getInstance();
- E.startIndex > 0 && C.push({
- t: ce.RETAIN,
- len: E.startIndex
- }), C.push({
- t: ce.DELETE,
- len: 1
- }), I.startIndex > E.startIndex + 1 && C.push({
- t: ce.RETAIN,
- len: I.startIndex - E.startIndex - 1
- }), C.push({
- t: ce.RETAIN,
- len: 1,
- coverType: Pe.REPLACE,
- body: {
- dataStream: "",
- paragraphs: [
- {
- ...re.deepClone(E),
- startIndex: 0
- }
- ]
- }
- });
- const O = le(d, A);
- return S.params.actions = T.editOp(C.serialize(), O), !!s.syncExecuteCommand(S.id, S.params);
- }
- };
- function zs(n, e) {
- let t = 0;
- if (n == null || n.length === 0) {
- if (typeof e[0].startOffset == "number") {
- const o = e[0], { spanEntireRow: s, spanEntireTable: r } = o;
- r ? t = o.startOffset - 3 : s ? o.startRow > 0 ? t = o.startOffset - 6 : t = o.startOffset : t = e[0].startOffset;
- }
- } else if (n.length > 0 && e.length > 0) {
- const o = n[0], s = e[0];
- if (o.startOffset != null && s.startOffset != null) {
- if (o.startOffset < s.startOffset)
- t = o.startOffset;
- else if (o.startOffset >= s.startOffset) {
- const { spanEntireRow: r, spanEntireTable: i } = s;
- i ? t = s.startOffset - 3 : r && (t = s.startOffset - 6);
- }
- }
- }
- return t;
- }
- var So = {
- id: "doc.command.delete-left",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: async (n) => {
- var O, P;
- const e = n.get(m), t = n.get(_n), o = n.get(Pt);
- let s = true;
- const r = t.getCurrentUniverDocInstance();
- if (r == null)
- return false;
- const i = r.getUnitId(), a = ke2(n, i), c = e.getActiveTextRange(), A = e.getRectRanges(), l = e.getTextRanges(), d = a == null ? void 0 : a.getSkeleton();
- if (d == null)
- return false;
- if (A != null && A.length) {
- const b = zs(l, A), B = A[0].segmentId, M2 = [
- {
- startOffset: b,
- endOffset: b
- }
- ];
- return o.executeCommand(Qt.id, {
- segmentId: B,
- textRanges: M2
- });
- }
- if (c == null || l == null)
- return false;
- const { segmentId: h, style: u, segmentPage: g } = c, f = r.getSelfOrHeaderFooterModel(h).getBody();
- if (f == null)
- return false;
- const p = c, { startOffset: m2, collapsed: E } = p, I = d.findNodeByCharIndex(m2, h, g), v = FS(I), R = SS(I, f);
- let S = m2;
- const C = d.findNodeByCharIndex(m2 - 1, h, g);
- if (BS(I) && C !== I && (v === true || R === true) && E) {
- const b = gf(I, f);
- if (b == null)
- return false;
- const B = b == null ? void 0 : b.startIndex, M2 = { startIndex: 0 }, H = b.paragraphStyle;
- if (v === true) {
- const D2 = b.paragraphStyle;
- if (D2) {
- M2.paragraphStyle = D2;
- const { hanging: te2 } = D2;
- te2 && (M2.paragraphStyle.indentStart = te2, M2.paragraphStyle.hanging = void 0);
- }
- } else if (R === true) {
- const D2 = b.bullet;
- D2 && (M2.bullet = D2), H != null && (M2.paragraphStyle = { ...H }, delete M2.paragraphStyle.hanging, delete M2.paragraphStyle.indentStart);
- }
- const F = [
- {
- startOffset: S,
- endOffset: S,
- style: u
- }
- ];
- s = await o.executeCommand(pa.id, {
- unitId: r.getUnitId(),
- updateBody: {
- dataStream: "",
- paragraphs: [{ ...M2 }]
- },
- range: {
- startOffset: B,
- endOffset: B + 1
- },
- textRanges: F,
- coverType: Pe.REPLACE,
- segmentId: h
- });
- } else if (E === true) {
- if (C == null)
- return true;
- if (C.content === "\r")
- s = await o.executeCommand(Ws.id, {
- direction: Be.LEFT,
- range: p
- });
- else if (C.streamType === "\b") {
- const b = (P = r.getSnapshot().drawings) == null ? void 0 : P[(O = C.drawingId) != null ? O : ""];
- if (b == null)
- return true;
- if (b.layoutType === Xp.INLINE) {
- const M2 = r.getUnitId();
- s = await o.executeCommand(js.id, {
- direction: Be.LEFT,
- range: c,
- unitId: M2,
- drawingId: C.drawingId
- });
- } else {
- const M2 = d.findNodeByCharIndex(m2 - 2);
- if (M2 == null)
- return true;
- S -= C.count, S -= M2.count;
- const H = [
- {
- startOffset: S,
- endOffset: S,
- style: u
- }
- ];
- s = await o.executeCommand(dn.id, {
- unitId: r.getUnitId(),
- range: {
- ...c,
- startOffset: c.startOffset - 1,
- endOffset: c.endOffset - 1
- },
- segmentId: h,
- direction: Be.LEFT,
- len: M2.count,
- textRanges: H
- });
- }
- } else
- S -= C.count, s = await o.executeCommand(dn.id, {
- unitId: r.getUnitId(),
- range: p,
- segmentId: h,
- direction: Be.LEFT,
- len: C.count
- });
- } else {
- const b = Ea(p, [p]);
- s = await o.executeCommand(Qt.id, {
- segmentId: h,
- textRanges: b,
- selections: [p]
- });
- }
- return s;
- }
- };
- var ma = {
- id: "doc.command.delete-right",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: async (n) => {
- var I, v;
- const e = n.get(m), o = n.get(_n).getCurrentUniverDocInstance();
- if (!o)
- return false;
- 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();
- if (a != null && a.length) {
- const R = zs(c, a), S = a[0].segmentId, C = [
- {
- startOffset: R,
- endOffset: R
- }
- ];
- return r.executeCommand(Qt.id, {
- segmentId: S,
- textRanges: C
- });
- }
- if (i == null || A == null || c == null)
- return false;
- const { segmentId: l, style: d, segmentPage: h } = i, u = o == null ? void 0 : o.getSelfOrHeaderFooterModel(l).getBody();
- if (!o || !u)
- return false;
- const g = i, { startOffset: f, endOffset: p, collapsed: m2 } = g;
- if (f === u.dataStream.length - 2 && m2)
- return true;
- let E = false;
- if (m2 === true) {
- const R = A.findNodeByCharIndex(f, l, h), S = A.findNodeByCharIndex(f + 1);
- if (R.streamType === ln.PARAGRAPH && (S == null ? void 0 : S.streamType) === ln.SECTION_BREAK)
- return false;
- if (R.content === "\r")
- E = await r.executeCommand(Ws.id, {
- direction: Be.RIGHT,
- range: i
- });
- else if (R.streamType === "\b") {
- const C = (v = o.getSnapshot().drawings) == null ? void 0 : v[(I = R.drawingId) != null ? I : ""];
- if (C == null)
- return true;
- if (C.layoutType === Xp.INLINE) {
- const O = o.getUnitId();
- E = await r.executeCommand(js.id, {
- direction: Be.RIGHT,
- range: i,
- unitId: O,
- drawingId: R.drawingId
- });
- } else {
- if (S == null)
- return true;
- const O = [
- {
- startOffset: f + 1,
- endOffset: f + 1,
- style: d
- }
- ];
- E = await r.executeCommand(dn.id, {
- unitId: o.getUnitId(),
- range: {
- ...i,
- startOffset: f + 1,
- endOffset: p + 1
- },
- segmentId: l,
- direction: Be.RIGHT,
- textRanges: O,
- len: S.count
- });
- }
- } else {
- const C = [
- {
- startOffset: f,
- endOffset: f,
- style: d
- }
- ];
- E = await r.executeCommand(dn.id, {
- unitId: o.getUnitId(),
- range: g,
- segmentId: l,
- direction: Be.RIGHT,
- textRanges: C,
- len: R.count
- });
- }
- } else {
- const R = Ea(g, [g]);
- E = await r.executeCommand(Qt.id, {
- segmentId: l,
- textRanges: R,
- selections: [g]
- });
- }
- return E;
- }
- };
- function Ea(n, e) {
- let t = n.endOffset;
- for (const s of e) {
- const { startOffset: r, endOffset: i } = s;
- r == null || i == null || i <= n.endOffset && (t -= i - r);
- }
- return [
- {
- startOffset: t,
- endOffset: t,
- style: n.style
- }
- ];
- }
- var Sd = 10;
- var Id = 6;
- function Cd() {
- return re.generateRandomId(Id);
- }
- function vd(n) {
- const e = n.match(/data-copy-id="([^\s]+)"/);
- return e && e[1] ? e[1] : null;
- }
- var Rd = class {
- constructor() {
- x(this, "_cache", new Qr(Sd));
- }
- set(e, t) {
- this._cache.set(e, t);
- }
- get(e) {
- return this._cache.get(e);
- }
- clear() {
- this._cache.clear();
- }
- };
- var No = new Rd();
- function Gs(n) {
- const e = n.style, t = {}, o = n.tagName.toLowerCase();
- switch (o) {
- case "b":
- case "em":
- case "strong": {
- t.bl = we.TRUE;
- break;
- }
- case "s": {
- t.st = {
- s: we.TRUE
- };
- break;
- }
- case "u": {
- t.ul = {
- s: we.TRUE
- };
- break;
- }
- case "i": {
- t.it = we.TRUE;
- break;
- }
- case "sub":
- case "sup": {
- t.va = o === "sup" ? Bt.SUPERSCRIPT : Bt.SUBSCRIPT;
- break;
- }
- }
- for (let s = 0; s < e.length; s++) {
- const r = e[s], i = e.getPropertyValue(r);
- switch (r) {
- case "font-family": {
- t.ff = i.replace(/^"/g, "").replace(/"$/g, "");
- break;
- }
- case "font-size": {
- const a = Number.parseInt(i);
- Number.isNaN(a) || (i.endsWith("pt") ? t.fs = a : i.endsWith("px") && (t.fs = wS(a)));
- break;
- }
- case "font-style": {
- i === "italic" && (t.it = we.TRUE);
- break;
- }
- case "font-weight": {
- (Number(i) > 400 || String(i) === "bold") && (t.bl = we.TRUE);
- break;
- }
- case "text-decoration": {
- /underline/.test(i) ? t.ul = {
- s: we.TRUE
- } : /overline/.test(i) ? t.ol = {
- s: we.TRUE
- } : /line-through/.test(i) && (t.st = {
- s: we.TRUE
- });
- break;
- }
- case "color": {
- try {
- const a = new Nt(i);
- a.isValid && (t.cl = {
- rgb: a.toRgbString()
- });
- } catch {
- }
- break;
- }
- case "background-color": {
- const a = new Nt(i);
- a.isValid && (t.bg = {
- rgb: a.toRgbString()
- });
- break;
- }
- }
- }
- return t;
- }
- function bd(n) {
- const e = new DOMParser(), t = `<x-univer id="univer-root">${n}</x-univer>`;
- return e.parseFromString(t, "text/html").querySelector("#univer-root");
- }
- function Xr(n, e) {
- const t = n.tagName.toLowerCase();
- return typeof e == "string" ? t === e : Array.isArray(e) ? e.some((o) => o === t) : e(n);
- }
- var Jr = 660;
- var Jn = class Jn2 {
- constructor() {
- x(this, "_tableCache", []);
- x(this, "_styleCache", /* @__PURE__ */ new Map());
- x(this, "_styleRules", []);
- x(this, "_afterProcessRules", []);
- }
- static use(e) {
- if (this._pluginList.includes(e))
- throw new Error(`Univer paste plugin ${e.name} already added`);
- this._pluginList.push(e);
- }
- convert(e, t = {}) {
- var a;
- const o = Jn2._pluginList.find((c) => c.checkPasteType(e)), s = bd(e), i = {
- body: {
- dataStream: "",
- paragraphs: [],
- sectionBreaks: [],
- tables: [],
- textRuns: [],
- customBlocks: []
- },
- tableSource: {},
- id: (a = t == null ? void 0 : t.unitId) != null ? a : ""
- };
- 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;
- }
- // eslint-disable-next-line max-lines-per-function, complexity
- _process(e, t, o) {
- var r, i, a, c;
- const s = o.body;
- for (const A of t)
- if (A.nodeType === Node.TEXT_NODE) {
- if (((r = A.nodeValue) == null ? void 0 : r.trim()) === "")
- continue;
- const l = (i = A.nodeValue) == null ? void 0 : i.replace(/[\r\n]/g, "");
- let d;
- e && this._styleCache.has(e) && (d = this._styleCache.get(e)), s.dataStream += l, d && Object.getOwnPropertyNames(d).length && s.textRuns.push({
- st: s.dataStream.length - l.length,
- ed: s.dataStream.length,
- ts: d
- });
- } else if (A.nodeName === "IMG") {
- const l = A, d = l.dataset.imageSourceType, h = d === vl.UUID ? l.dataset.source : l.src;
- if (h && d) {
- 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);
- (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] = {
- drawingId: m2,
- title: "",
- description: "",
- imageSourceType: d,
- source: h,
- transform: { width: u, height: g, left: 0 },
- docTransform: {
- size: { width: f, height: p },
- angle: 0,
- positionH: {
- relativeFrom: om.PAGE,
- posOffset: 0
- },
- positionV: {
- relativeFrom: am.PARAGRAPH,
- posOffset: 0
- }
- },
- layoutType: Xp.INLINE,
- drawingType: gm.DRAWING_IMAGE,
- unitId: o.id || "",
- subUnitId: o.id || ""
- };
- }
- } else {
- if (FR.includes(A.nodeName.toLowerCase()))
- continue;
- if (A.nodeType === Node.ELEMENT_NODE) {
- 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);
- this._styleCache.set(A, { ...h, ...g });
- const { childNodes: f } = A;
- this._processBeforeTable(A, o), this._process(A, f, o), this._processAfterTable(A, o);
- const p = this._afterProcessRules.find(
- ({ filter: m2 }) => Xr(A, m2)
- );
- p && p.handler(o, A), this._processAfterLink(l, o, d);
- }
- }
- }
- _processBeforeTable(e, t) {
- var r;
- const o = e.tagName.toUpperCase(), s = t.body;
- switch (o) {
- case "TABLE": {
- s.dataStream[s.dataStream.length - 1] !== "\r" && (s.dataStream += "\r", s.paragraphs == null && (s.paragraphs = []), (r = s.paragraphs) == null || r.push({
- startIndex: s.dataStream.length - 1
- }));
- const i = ua(0, 0, Jr);
- this._tableCache.push({
- table: i,
- startIndex: s.dataStream.length
- }), s.dataStream += ln.TABLE_START;
- break;
- }
- case "TR": {
- const i = Hs(0);
- this._tableCache[this._tableCache.length - 1].table.tableRows.push(i), s.dataStream += ln.TABLE_ROW_START;
- break;
- }
- case "TD": {
- const i = Fs(), a = this._tableCache[this._tableCache.length - 1].table;
- a.tableRows[a.tableRows.length - 1].tableCells.push(i), s.dataStream += ln.TABLE_CELL_START;
- break;
- }
- }
- }
- _processAfterTable(e, t) {
- var i, a;
- const o = e.tagName.toUpperCase(), s = t.body;
- t.tableSource == null && (t.tableSource = {}), s.tables == null && (s.tables = []), s.sectionBreaks == null && (s.sectionBreaks = []);
- const { tableSource: r } = t;
- switch (o) {
- case "TABLE": {
- 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))];
- l.tableColumns = u, r[l.tableId] = l, s.dataStream += ln.TABLE_END, s.tables.push({
- startIndex: A,
- endIndex: s.dataStream.length,
- tableId: l.tableId
- });
- break;
- }
- case "TR": {
- s.dataStream += ln.TABLE_ROW_END;
- break;
- }
- case "TD": {
- s.dataStream[s.dataStream.length - 1] !== "\r" && ((i = s.paragraphs) == null || i.push({
- startIndex: s.dataStream.length
- }), s.dataStream += "\r"), (a = s.sectionBreaks) == null || a.push({
- startIndex: s.dataStream.length
- }), s.dataStream += `
- ${ln.TABLE_CELL_END}`;
- break;
- }
- }
- }
- _processBeforeLink(e, t) {
- return t.body.dataStream.length;
- }
- _processAfterLink(e, t, o) {
- var i, a;
- const s = t.body, r = e;
- r.tagName.toUpperCase() === "A" && (s.customRanges = (i = s.customRanges) != null ? i : [], s.customRanges.push({
- startIndex: o,
- endIndex: s.dataStream.length - 1,
- rangeId: (a = r.dataset.rangeid) != null ? a : qt(),
- rangeType: mn.HYPERLINK,
- properties: { url: r.href }
- }));
- }
- };
- x(Jn, "_pluginList", []);
- var Ut = Jn;
- var xd = {
- name: "univer-doc-paste-plugin-lark",
- checkPasteType(n) {
- return /lark-record-clipboard/i.test(n);
- },
- // TODO: @JOCS, support inline code copy from lark.
- stylesRules: [
- {
- filter: ["s"],
- getStyle(n) {
- const e = Gs(n);
- return {
- st: {
- s: we.TRUE
- },
- ...e
- };
- }
- }
- ],
- afterProcessRules: [
- {
- filter(n) {
- return n.tagName === "DIV" && /ace-line/i.test(n.className);
- },
- handler(n) {
- const e = n.body;
- e.paragraphs == null && (e.paragraphs = []), e.paragraphs.push({
- startIndex: e.dataStream.length
- }), e.dataStream += "\r";
- }
- }
- ]
- };
- function Sa(n) {
- const e = n.style, t = {};
- for (let o = 0; o < e.length; o++) {
- const s = e[o], r = e.getPropertyValue(s);
- switch (s) {
- case "margin-top": {
- const i = Number.parseInt(r);
- t.spaceAbove = { v: /pt/.test(r) ? i3(i) : i };
- break;
- }
- case "margin-bottom": {
- const i = Number.parseInt(r);
- t.spaceBelow = { v: /pt/.test(r) ? i3(i) : i };
- break;
- }
- case "line-height": {
- let i = Number.parseFloat(r);
- r.endsWith("%") && (i /= 100), t.lineSpacing = i;
- break;
- }
- }
- }
- return Object.getOwnPropertyNames(t).length ? t : null;
- }
- var Od = {
- name: "univer-doc-paste-plugin-univer",
- checkPasteType(n) {
- return /UniverNormal/i.test(n);
- },
- stylesRules: [],
- afterProcessRules: [
- {
- filter(n) {
- return n.tagName === "P" && /UniverNormal/i.test(n.className);
- },
- handler(n, e) {
- const t = n.body;
- t.paragraphs == null && (t.paragraphs = []);
- const o = {
- startIndex: t.dataStream.length
- }, s = Sa(e);
- s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
- }
- }
- ]
- };
- var Td = {
- name: "univer-doc-paste-plugin-word",
- checkPasteType(n) {
- return /word|mso/i.test(n);
- },
- stylesRules: [
- {
- filter: ["b"],
- getStyle(n) {
- const e = Gs(n);
- return { bl: we.TRUE, ...e };
- }
- }
- ],
- afterProcessRules: [
- {
- filter(n) {
- return n.tagName === "P";
- },
- handler(n, e) {
- const t = n.body;
- t.paragraphs == null && (t.paragraphs = []);
- const o = {
- startIndex: t.dataStream.length
- }, s = Sa(e);
- s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
- }
- }
- ]
- };
- function yd(n) {
- var o, s;
- const e = (r) => {
- let i = "";
- return Object.keys(r).forEach((a) => {
- r[a] !== void 0 && (i += ` ${a}=${r[a]}`);
- }), i;
- }, t = {
- "data-doc-transform-height": n.docTransform.size.height,
- "data-doc-transform-width": n.docTransform.size.width,
- "data-width": (o = n.transform) == null ? void 0 : o.width,
- "data-height": (s = n.transform) == null ? void 0 : s.height,
- "data-image-source-type": n.imageSourceType,
- "data-source": n.imageSourceType === vl.UUID ? n.source : void 0,
- src: n.source
- };
- return `<img ${e(t)}></img>`;
- }
- function Zr(n, e) {
- 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;
- let f = n.slice(t, o);
- const p = [];
- 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;
- }
- function Qo(n, e, t) {
- const { dataStream: o, textRuns: s = [] } = n;
- if (e === t)
- return "";
- let r = e;
- const i = [];
- for (const a of s) {
- const { st: c, ed: A } = a;
- re.hasIntersectionBetweenTwoRanges(e, t, c, A) && (c > r ? (i.push(o.slice(r, c)), i.push(Zr(o, {
- ...a,
- ed: Math.min(A, t)
- }))) : i.push(Zr(o, {
- ...a,
- st: r,
- ed: Math.min(A, t)
- }))), r = Math.max(e, Math.min(A, t));
- }
- return r !== t && i.push(o.slice(r, t)), i.join("");
- }
- function Bd(n, e, t) {
- const o = n.body, s = n.drawings || {}, { customRanges: r = [], customBlocks: i = [] } = o || {}, a = [...i], c = r.filter((u) => u.startIndex >= e && u.endIndex <= t);
- let A = e, l = "";
- const d = (u, g) => {
- let f = "", p = 0, m2 = u, E = a.findIndex((I) => u <= I.startIndex && g >= I.startIndex);
- if (E === -1)
- return f = Qo(o, u, g), { sliceHtml: f, customBlockLength: p };
- for (; E !== -1; ) {
- const I = a[E];
- a.splice(E, 1), f += Qo(o, m2, I.startIndex);
- const v = s[I.blockId];
- if (v)
- switch (v.drawingType) {
- case gm.DRAWING_IMAGE: {
- f += yd(v), p++;
- break;
- }
- }
- m2 = I.startIndex + 1, E = a.findIndex((R) => m2 <= R.startIndex && g >= R.startIndex);
- }
- return f = f + Qo(o, m2, g + 1), { sliceHtml: f, customBlockLength: p };
- };
- c.forEach((u) => {
- var v, R;
- const { startIndex: g, endIndex: f, rangeType: p, rangeId: m2 } = u, E = d(A, g);
- l += E.sliceHtml;
- const I = d(g, f + 1);
- switch (p) {
- case mn.HYPERLINK: {
- l += `<a data-rangeid="${m2}" href="${(R = (v = u.properties) == null ? void 0 : v.url) != null ? R : ""}">${I.sliceHtml}</a>`;
- break;
- }
- default: {
- l += I.sliceHtml;
- break;
- }
- }
- A = f + 1 + (E.customBlockLength + I.customBlockLength);
- });
- const h = d(A, t);
- return l += h.sliceHtml, l;
- }
- function Md(n) {
- const e = n.body || {}, { paragraphs: t = [], sectionBreaks: o = [] } = e;
- let { dataStream: s = "" } = e;
- s.endsWith(`\r
- `) || (s += `\r
- `, t.push({
- startIndex: s.length - 2
- }), o.push({
- startIndex: s.length - 1
- }), e.dataStream = s, e.paragraphs = t, e.sectionBreaks = o);
- const r = { html: "" }, i = B6(s).sectionList;
- for (const a of i)
- yt(a, n, r);
- return r.html;
- }
- function yt(n, e, t) {
- var o, s;
- switch (n.nodeType) {
- case O_.SECTION_BREAK: {
- for (const r of n.children)
- yt(r, e, t);
- break;
- }
- case O_.PARAGRAPH: {
- 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 = [];
- 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)
- for (const g of r)
- yt(g, e, t);
- t.html += `${Bd(e, i, a)}</p>`;
- break;
- }
- case O_.TABLE: {
- const { children: r } = n;
- t.html += '<table class="UniverTable" style="width: 100%; border-collapse: collapse;"><tbody>';
- for (const i of r)
- yt(i, e, t);
- t.html += "</tbody></table>";
- break;
- }
- case O_.TABLE_ROW: {
- const { children: r } = n;
- t.html += '<tr class="UniverTableRow">';
- for (const i of r)
- yt(i, e, t);
- t.html += "</tr>";
- break;
- }
- case O_.TABLE_CELL: {
- const { children: r } = n;
- t.html += '<td class="UniverTableCell">';
- for (const i of r)
- yt(i, e, t);
- t.html += "</td>";
- break;
- }
- default:
- throw new Error(`Unknown node type: ${n.nodeType}`);
- }
- }
- var _d = class {
- convert(e) {
- if (e.length === 0)
- throw new Error("The bodyList length at least to be 1");
- let t = "";
- for (const o of re.deepClone(e))
- t += Md(o);
- return t;
- }
- };
- var Pd = Object.defineProperty;
- var Dd = Object.getOwnPropertyDescriptor;
- var wd = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Dd(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Pd(e, t, s), s;
- };
- var Jt = (n, e) => (t, o) => e(t, o, n);
- Ut.use(Td);
- Ut.use(xd);
- Ut.use(Od);
- function $r(n, e, t) {
- var r, i, a;
- 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;
- return o.dataStream = s, (r = o.textRuns) == null || r.forEach((c) => {
- const { st: A, ed: l } = c;
- c.st = A + 3, c.ed = l + 3;
- }), (i = o.tables) == null || i.forEach((c) => {
- const { startIndex: A, endIndex: l } = c;
- c.startIndex = A + 3, c.endIndex = l + 3;
- }), (a = o.paragraphs) == null || a.forEach((c) => {
- const { startIndex: A } = c;
- c.startIndex = A + 3;
- }), o;
- }
- var Sn = Ct("doc.clipboard-service");
- var ns = class extends nt {
- constructor(e, t, o, s, r) {
- super();
- x(this, "_clipboardHooks", []);
- x(this, "_htmlToUDM", new Ut());
- x(this, "_umdToHtml", new _d());
- this._univerInstanceService = e, this._logService = t, this._commandService = o, this._clipboardInterfaceService = s, this._docSelectionManagerService = r;
- }
- async copy(e = el.copy) {
- var r;
- const { newSnapshotList: t = [], needCache: o = false, snapshot: s } = (r = this._getDocumentBodyInRanges(e)) != null ? r : {};
- if (t.length === 0 || s == null)
- return false;
- try {
- const i = this._docSelectionManagerService.getActiveTextRange(), a = !!(i != null && i.segmentId);
- this._setClipboardData(t, !a && o);
- } catch (i) {
- return this._logService.error("[DocClipboardService] copy failed", i), false;
- }
- return true;
- }
- async cut() {
- return this._cut();
- }
- async paste(e) {
- const t = await this._genDocDataFromClipboardItems(e);
- return this._paste(t);
- }
- async legacyPaste(e) {
- let { html: t, text: o, files: s } = e;
- const r = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC), i = (r == null ? void 0 : r.getUnitId()) || "";
- !t && !o && s.length && (t = await this._createImagePasteHtml(s));
- const a = this._genDocDataFromHtmlAndText(t, o, i);
- if (i === su)
- if (o) {
- const c = st.transform.fromPlainText(o);
- return this._paste({ body: c });
- } else
- a.body.textRuns = [];
- return this._paste(a);
- }
- async _cut() {
- var i, a, c;
- const {
- segmentId: e,
- endOffset: t,
- style: o
- } = (i = this._docSelectionManagerService.getActiveTextRange()) != null ? i : {}, s = (a = this._docSelectionManagerService.getTextRanges()) != null ? a : [], r = (c = this._docSelectionManagerService.getRectRanges()) != null ? c : [];
- if (e == null && this._logService.error("[DocClipboardController] segmentId is not existed"), s.length === 0 && r.length === 0)
- return false;
- this.copy(el.cut);
- try {
- let A = 0;
- if (r.length > 0)
- A = zs(s, r);
- else if (t != null) {
- A = t;
- for (const d of s) {
- const { startOffset: h, endOffset: u } = d;
- h == null || u == null || u <= t && (A -= u - h);
- }
- }
- const l = [
- {
- startOffset: A,
- endOffset: A,
- style: o
- }
- ];
- return this._commandService.executeCommand(Qt.id, { segmentId: e, textRanges: l });
- } catch {
- return this._logService.error("[DocClipboardController] cut content failed"), false;
- }
- }
- async _paste(e) {
- var l, d;
- const { body: t } = e;
- if (t == null)
- return false;
- let o = qC(t);
- if (!((l = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC)) == null ? void 0 : l.getUnitId()))
- return false;
- this._clipboardHooks.forEach((h) => {
- h.onBeforePaste && (o = h.onBeforePaste(o));
- }), o.customRanges = (d = o.customRanges) == null ? void 0 : d.map(st.customRange.copyCustomRange);
- const r = this._docSelectionManagerService.getActiveTextRange(), { segmentId: i, endOffset: a, style: c } = r || {}, A = this._docSelectionManagerService.getTextRanges();
- if (i == null && this._logService.error("[DocClipboardController] segmentId does not exist!"), a == null || A == null)
- return false;
- try {
- let h = a;
- for (const g of A) {
- const { startOffset: f, endOffset: p } = g;
- f == null || p == null || p <= a && (h += o.dataStream.length - (p - f));
- }
- const u = [
- {
- startOffset: h,
- endOffset: h,
- style: c
- }
- ];
- return this._commandService.executeCommand(fa.id, {
- doc: {
- ...e,
- body: o
- },
- segmentId: i,
- textRanges: u
- });
- } catch {
- return this._logService.error("[DocClipboardController]", "clipboard is empty."), false;
- }
- }
- async _setClipboardData(e, t = true) {
- var i, a, c, A;
- const o = Cd(), s = (e.length > 1 ? e.map((l) => {
- var d;
- return ((d = l.body) == null ? void 0 : d.dataStream) || "";
- }).join(`
- `) : ((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
- `, " ");
- let r = this._umdToHtml.convert(e);
- if (e.length === 1 && t) {
- r = r.replace(/(<[a-z]+)/, (h, u) => `${u} data-copy-id="${o}"`);
- const l = e[0], d = { body: l.body };
- if ((c = (a = l.body) == null ? void 0 : a.customBlocks) != null && c.length) {
- d.drawings = {};
- for (const h of l.body.customBlocks) {
- const { blockId: u } = h, g = (A = l.drawings) == null ? void 0 : A[u];
- if (g) {
- const f = re.generateRandomId(6);
- h.blockId = f, d.drawings[f] = {
- ...re.deepClone(g),
- drawingId: f
- };
- }
- }
- }
- No.set(o, d);
- }
- return this._clipboardInterfaceService.write(s, r);
- }
- addClipboardHook(e) {
- return this._clipboardHooks.push(e), Ze(() => {
- const t = this._clipboardHooks.indexOf(e);
- t > -1 && this._clipboardHooks.splice(t, 1);
- });
- }
- _getDocumentBodyInRanges(e) {
- var A;
- const t = this._univerInstanceService.getCurrentUniverDocInstance(), o = this._docSelectionManagerService.getDocRanges(), s = [];
- let r = true;
- if (t == null || o.length === 0)
- return;
- const i = o[0].segmentId, a = (A = t == null ? void 0 : t.getSelfOrHeaderFooterModel(i)) == null ? void 0 : A.getBody(), c = t.getSnapshot();
- if (a != null) {
- for (const l of o) {
- const { startOffset: d, endOffset: h, collapsed: u, rangeType: g } = l;
- if (u || d == null || h == null)
- continue;
- if (g === Ag.RECT) {
- r = false;
- const { spanEntireRow: m2 } = l;
- let E;
- E = $r(a, d, h), s.push(E);
- continue;
- }
- const f = { startOffset: d, endOffset: h, collapsed: u }, p = t.getSelfOrHeaderFooterModel(i).sliceBody(f.startOffset, f.endOffset, e);
- p != null && s.push(p);
- }
- return {
- newSnapshotList: s.map((l) => ({ ...c, body: l })),
- needCache: r,
- snapshot: c
- };
- }
- }
- async _genDocDataFromClipboardItems(e) {
- try {
- let t = "", o = "";
- const s = [];
- for (const r of e)
- for (const i of r.types)
- switch (i) {
- case vr: {
- o = await r.getType(i).then((a) => a && a.text());
- break;
- }
- case mr: {
- t = await r.getType(i).then((a) => a && a.text());
- break;
- }
- case Xl:
- case ql:
- case Ql:
- case Yl: {
- const a = await r.getType(i), c = new File([a], `pasted_image.${i.split("/")[1]}`, { type: i });
- s.push(c);
- break;
- }
- }
- return !t && !o && s.length && (t = await this._createImagePasteHtml(s)), this._genDocDataFromHtmlAndText(t, o);
- } catch (t) {
- return Promise.reject(t);
- }
- }
- _genDocDataFromHtmlAndText(e, t, o) {
- if (!e) {
- if (t)
- return { body: st.transform.fromPlainText(t) };
- throw new Error("[DocClipboardService] html and text cannot be both empty!");
- }
- const s = vd(e);
- if (s) {
- const i = No.get(s);
- if (i)
- return i;
- }
- if (!o) {
- const i = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
- o = (i == null ? void 0 : i.getUnitId()) || "";
- }
- const r = this._htmlToUDM.convert(e, { unitId: o });
- return s && No.set(s, r), r;
- }
- async _createImagePasteHtml(e) {
- var a, c;
- const t = {
- id: "",
- documentStyle: {},
- body: {
- dataStream: "",
- customBlocks: []
- },
- drawings: {}
- }, o = async (A) => {
- const l = new FileReader();
- return new Promise((d) => {
- l.onloadend = function() {
- d({
- source: l.result,
- imageSourceType: vl.BASE64
- });
- }, l.readAsDataURL(A);
- });
- }, s = (A) => {
- const l = new Image(), d = 500;
- return new Promise((h) => {
- l.src = typeof A == "string" ? A : URL.createObjectURL(A), l.onload = () => {
- const u = Math.min(d, l.naturalWidth), g = l.naturalHeight / l.naturalWidth;
- h({ width: u, height: u * g });
- };
- });
- }, r = (c = (a = this._clipboardHooks.find((A) => A.onBeforePasteImage)) == null ? void 0 : a.onBeforePasteImage) != null ? c : o;
- return await Promise.all(e.map(async (A, l) => {
- var m2;
- const d = await r(A);
- if (!d)
- return Promise.resolve();
- const { width: h = 100, height: u = 100 } = await s(A), g = `paste_image_id_${l}`, f = t.body, p = t.drawings;
- f.dataStream += "\b", (m2 = f.customBlocks) == null || m2.push({ startIndex: l, blockId: g }), p[g] = {
- drawingId: g,
- unitId: "",
- subUnitId: "",
- imageSourceType: d.imageSourceType,
- title: "",
- source: d.source,
- description: "",
- layoutType: Xp.INLINE,
- drawingType: gm.DRAWING_IMAGE,
- transform: {
- width: h,
- height: u,
- angle: 0
- },
- docTransform: {
- angle: 0,
- size: { width: h, height: u },
- positionH: { relativeFrom: om.CHARACTER, posOffset: 0 },
- positionV: { relativeFrom: am.LINE, posOffset: 0 }
- }
- };
- })), this._umdToHtml.convert([t]);
- }
- };
- ns = wd([
- Jt(0, _n),
- Jt(1, Mt),
- Jt(2, Pt),
- Jt(3, Pi),
- Jt(4, ot(m))
- ], ns);
- function Io(n) {
- return n.getContextValue(Nr) || n.getContextValue(oE);
- }
- var Ys = 999;
- var Fn = {
- id: bi.id,
- name: "doc.command.copy",
- type: ar.COMMAND,
- multi: true,
- priority: Ys,
- preconditions: Io,
- handler: async (n) => n.get(Sn).copy()
- };
- var qs = {
- id: yi.id,
- name: "doc.command.cut",
- type: ar.COMMAND,
- multi: true,
- priority: Ys,
- preconditions: Io,
- handler: async (n) => n.get(Sn).cut()
- };
- var Ks = {
- id: Li.id,
- name: "doc.command.paste",
- type: ar.COMMAND,
- multi: true,
- priority: Ys,
- preconditions: Io,
- handler: async (n) => {
- const e = n.get(Sn), o = await n.get(Pi).read();
- return o.length === 0 ? false : e.paste(o);
- }
- };
- var Co = {
- id: "doc.command.switch-mode",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function, complexity
- handler: async (n) => {
- var E, I, v, R, S;
- const e = n.get(Pt), t = n.get(Yx), o = n.get(m), r = n.get(_n).getCurrentUniverDocInstance();
- if (r == null)
- return false;
- 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);
- if (a == null || c == null)
- return false;
- const A = c == null ? void 0 : c.getSegment(), l = c == null ? void 0 : c.getSegmentPage(), d = r.getSnapshot().documentStyle.documentFlavor, h = o.getDocRanges(), u = {
- id: M.id,
- params: {
- unitId: i,
- actions: [],
- textRanges: d === ku.TRADITIONAL && A ? [] : h
- }
- }, g = tn.getInstance(), f = [];
- let p;
- 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)
- f.push(p);
- else
- return false;
- if (d !== ku.MODERN) {
- const C = r.getSnapshot(), { drawings: T = {}, body: O } = C, P = (v = O == null ? void 0 : O.customBlocks) != null ? v : [];
- for (const b in T) {
- const B = T[b], M2 = P.find((ae) => ae.blockId === b);
- if (M2 == null)
- continue;
- const H = B.docTransform.positionV, { relativeFrom: F, posOffset: D2 } = H;
- if (F === am.PARAGRAPH)
- continue;
- 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;
- if (q == null || V == null || oe == null || Y == null || ce2 == null)
- continue;
- let he = 0;
- F === am.LINE ? he -= V.top : F === am.PAGE && (he += ce2.marginTop), he += oe.top;
- const Ae2 = {
- ...H,
- relativeFrom: am.PARAGRAPH,
- posOffset: (D2 != null ? D2 : 0) - he
- }, ne = g.replaceOp(["drawings", b, "docTransform", "positionV"], H, Ae2);
- ne && f.push(ne);
- }
- }
- return u.params.actions = f.reduce((C, T) => tn.compose(C, T), null), !!e.syncExecuteCommand(u.id, u.params);
- }
- };
- var Xs = {
- id: "doc.table.delete-rows",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n) => {
- const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
- if (i == null)
- return false;
- const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
- if (c == null || A == null)
- return false;
- const l = ke2(n, c.getUnitId());
- if (l == null)
- return false;
- const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = ha(i, d);
- if (f == null)
- return false;
- const { offset: p, rowIndexes: m2, len: E, tableId: I, cursor: v, selectWholeTable: R } = f;
- if (R)
- return o.executeCommand(In.id);
- const S = [], C = [{
- startOffset: v,
- endOffset: v,
- collapsed: true
- }], T = {
- id: M.id,
- params: {
- unitId: h,
- actions: [],
- textRanges: C
- }
- };
- p > 0 && u.push({
- t: ce.RETAIN,
- len: p
- }), u.push({
- t: ce.DELETE,
- len: E
- });
- const O = le(c, a);
- S.push(g.editOp(u.serialize(), O));
- for (const b of m2.reverse()) {
- const B = g.removeOp(["tableSource", I, "tableRows", b]);
- S.push(B);
- }
- return T.params.actions = S.reduce((b, B) => tn.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
- }
- };
- var Js = {
- id: "doc.table.delete-columns",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n) => {
- const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
- if (i == null)
- return false;
- const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
- if (c == null || A == null)
- return false;
- const l = ke2(n, c.getUnitId());
- if (l == null)
- return false;
- const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = Ad(i, d);
- if (f == null)
- return false;
- const { offsets: p, columnIndexes: m2, tableId: E, cursor: I, rowCount: v, selectWholeTable: R } = f;
- if (R)
- return o.executeCommand(In.id);
- const S = [], C = [{
- startOffset: I,
- endOffset: I,
- collapsed: true
- }], T = {
- id: M.id,
- params: {
- unitId: h,
- actions: [],
- textRanges: C
- }
- };
- for (const b of p) {
- const { retain: B, delete: M2 } = b;
- B > 0 && u.push({
- t: ce.RETAIN,
- len: B
- }), u.push({
- t: ce.DELETE,
- len: M2
- });
- }
- const O = le(c, a);
- S.push(g.editOp(u.serialize(), O)), m2.reverse();
- for (let b = 0; b < v; b++)
- for (const B of m2) {
- const M2 = g.removeOp(["tableSource", E, "tableRows", b, "tableCells", B]);
- S.push(M2);
- }
- for (const b of m2) {
- const B = g.removeOp(["tableSource", E, "tableColumns", b]);
- S.push(B);
- }
- return T.params.actions = S.reduce((b, B) => tn.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
- }
- };
- var In = {
- id: "doc.table.delete-table",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n) => {
- const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
- if (i == null)
- return false;
- const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
- if (c == null || A == null)
- return false;
- const l = ke2(n, c.getUnitId());
- if (l == null)
- return false;
- const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new Ke(), g = tn.getInstance(), f = ga(i, d);
- if (f == null)
- return false;
- const { offset: p, len: m2, tableId: E, cursor: I } = f, v = [], R = [{
- startOffset: I,
- endOffset: I,
- collapsed: true
- }], S = {
- id: M.id,
- params: {
- unitId: h,
- actions: [],
- textRanges: R
- }
- };
- p > 0 && u.push({
- t: ce.RETAIN,
- len: p
- }), u.push({
- t: ce.DELETE,
- len: m2
- });
- const C = le(c, a);
- v.push(g.editOp(u.serialize(), C));
- const T = g.removeOp(["tableSource", E]);
- return v.push(T), S.params.actions = v.reduce((P, b) => tn.compose(P, b), null), !!o.syncExecuteCommand(S.id, S.params);
- }
- };
- var Zs = "doc.command.table-insert-row";
- var $s = "doc.command.table-insert-column";
- var Nd = "doc.command.table-insert-row-above";
- var Qd = "doc.command.table-insert-row-bellow";
- var Ud = "doc.command.table-insert-column-left";
- var Ld = "doc.command.table-insert-column-right";
- var er = {
- id: Nd,
- type: ar.COMMAND,
- handler: async (n) => n.get(Pt).executeCommand(Zs, { position: Eo.ABOVE })
- };
- var tr = {
- id: Qd,
- type: ar.COMMAND,
- handler: async (n) => n.get(Pt).executeCommand(Zs, { position: Eo.BELLOW })
- };
- var nr = {
- id: Ud,
- type: ar.COMMAND,
- handler: async (n) => n.get(Pt).executeCommand($s, { position: Ls.LEFT })
- };
- var or = {
- id: Ld,
- type: ar.COMMAND,
- handler: async (n) => n.get(Pt).executeCommand($s, { position: Ls.RIGHT })
- };
- var Ia = {
- id: Zs,
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- 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);
- if (c == null)
- return false;
- const { segmentId: A } = c, l = s.getCurrentUnitForType(Fe.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
- if (l == null || d == null)
- return false;
- const h = ke2(n, l.getUnitId());
- if (h == null)
- return false;
- const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new Ke(), p = tn.getInstance(), m2 = id(c, t, u);
- if (m2 == null)
- return false;
- const { offset: E, colCount: I, tableId: v, insertRowIndex: R } = m2, S = [], C = E + 2, T = [{
- startOffset: C,
- endOffset: C,
- collapsed: true
- }], O = {
- id: M.id,
- params: {
- unitId: g,
- actions: [],
- textRanges: T
- }
- };
- E > 0 && f.push({
- t: ce.RETAIN,
- len: E
- });
- const P = sd(I);
- f.push({
- t: ce.INSERT,
- body: P,
- len: P.dataStream.length
- });
- const b = le(l, A);
- S.push(p.editOp(f.serialize(), b));
- const B = Hs(I), M2 = p.insertOp(["tableSource", v, "tableRows", R], B);
- return S.push(M2), O.params.actions = S.reduce((F, D2) => tn.compose(F, D2), null), !!r.syncExecuteCommand(O.id, O.params);
- }
- };
- var Fd = {
- id: $s,
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- var ce2, he, Ae2;
- 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);
- if (c == null)
- return false;
- const { segmentId: A } = c, l = s.getCurrentUniverDocInstance(), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
- if (l == null || d == null)
- return false;
- const h = ke2(n, l.getUnitId());
- if (h == null)
- return false;
- const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new Ke(), p = tn.getInstance(), m2 = ad(c, t, u);
- if (m2 == null)
- return false;
- const { offsets: E, columnIndex: I, tableId: v, rowCount: R } = m2, S = [], C = E[0] + 1, T = [{
- startOffset: C,
- endOffset: C,
- collapsed: true
- }], O = {
- id: M.id,
- params: {
- unitId: g,
- actions: [],
- textRanges: T
- }
- };
- for (const ne of E) {
- f.push({
- t: ce.RETAIN,
- len: ne
- });
- const ae = rd();
- f.push({
- t: ce.INSERT,
- body: ae,
- len: ae.dataStream.length
- });
- }
- const P = le(l, A);
- S.push(p.editOp(f.serialize(), P));
- for (let ne = 0; ne < R; ne++) {
- const ae = Fs(), Te = p.insertOp(["tableSource", v, "tableRows", ne, "tableCells", I], ae);
- S.push(Te);
- }
- 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);
- for (let ne = 0; ne < q.length; ne++) {
- const ae = p.replaceOp(["tableSource", v, "tableColumns", ne, "size", "width", "v"], D2[ne].size.width.v, q[ne]);
- S.push(ae);
- }
- const V = ks(te2), Y = p.insertOp(["tableSource", v, "tableColumns", I], V);
- return S.push(Y), O.params.actions = S.reduce((ne, ae) => tn.compose(ne, ae), null), !!r.syncExecuteCommand(O.id, O.params);
- }
- };
- var Ca = "COMPONENT_DOC_CREATE_TABLE_CONFIRM";
- function va(n, e) {
- const t = [];
- for (let o = 0, s = n.length; o < s; o++)
- n[o] === ln.PARAGRAPH && t.push({
- startIndex: o
- });
- if (e)
- for (const o of t)
- e.bullet && (o.bullet = re.deepClone(e.bullet)), e.paragraphStyle && (o.paragraphStyle = re.deepClone(e.paragraphStyle));
- return t;
- }
- var Ra2 = {
- id: "doc.command.break-line",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n) => {
- var S, C, T;
- const e = n.get(m), t = n.get(_n), o = n.get(Pt), s = n.get(Je), r = e.getActiveTextRange(), i = e.getRectRanges();
- if (r == null)
- return false;
- if (i && i.length) {
- const { startOffset: O } = r;
- return e.replaceDocRanges([{
- startOffset: O,
- endOffset: O
- }]), true;
- }
- const { segmentId: a } = r, c = t.getCurrentUnitForType(Fe.UNIVER_DOC), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a != null ? a : "").getBody();
- if (c == null || A == null)
- return false;
- const l = c.getUnitId(), { startOffset: d, endOffset: h } = r, g = ((S = A.paragraphs) != null ? S : []).find((O) => O.startIndex >= d);
- if (!g)
- return false;
- const f = g.startIndex, p = s.getDefaultStyle(), m2 = s.getStyleCache(), E = co((C = A.textRuns) != null ? C : [], h, p, m2), I = {
- dataStream: ln.PARAGRAPH,
- paragraphs: va(ln.PARAGRAPH, g),
- textRuns: [{
- st: 0,
- ed: 1,
- ts: {
- ...E.ts
- }
- }]
- }, v = {
- startOffset: d,
- endOffset: h,
- collapsed: d === h
- }, R = await o.executeCommand(Vs.id, {
- unitId: l,
- body: I,
- range: v,
- segmentId: a
- });
- if (((T = g.bullet) == null ? void 0 : T.listType) === Ft.CHECK_LIST_CHECKED) {
- const O = {
- index: f + 1 - (h - d),
- segmentId: a,
- textRanges: [{
- startOffset: d + 1,
- endOffset: d + 1
- }]
- };
- return !!await o.executeCommand(Ns.id, O) && R;
- }
- return R;
- }
- };
- var Hd2 = "doc.command.create-table";
- var ba = {
- id: Hd2,
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- var Ae2, ne, ae, Te, je, ut;
- 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();
- if (c == null)
- return false;
- const { segmentId: A, segmentPage: l } = c, d = r.getCurrentUniverDocInstance(), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
- if (d == null || h == null)
- return false;
- const u = d.getUnitId(), g = ke2(n, u), f = g == null ? void 0 : g.getSkeleton();
- if (f == null)
- return false;
- const { startOffset: p } = c, E = ((Ae2 = h.paragraphs) != null ? Ae2 : []).find((we2) => we2.startIndex >= p), I = f.findNodeByCharIndex(p, A, l);
- if (I == null)
- return false;
- const v = new Ke(), R = tn.getInstance(), S = [], C = p + 4, T = [{
- startOffset: C,
- endOffset: C,
- collapsed: true
- }], O = {
- id: M.id,
- params: {
- unitId: u,
- actions: [],
- textRanges: T
- }
- };
- p > 0 && v.push({
- t: ce.RETAIN,
- len: p
- }), v.push({
- t: ce.INSERT,
- body: {
- dataStream: ln.PARAGRAPH,
- paragraphs: va(ln.PARAGRAPH, E)
- },
- len: 1
- });
- const P = a.getDefaultStyle(), b = a.getStyleCache(), B = co(
- (ne = h.textRuns) != null ? ne : [],
- p,
- P,
- b
- ), { 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;
- if (D2 == null)
- return false;
- const { pageWidth: te2, marginLeft: q, marginRight: V } = D2, Y = ua(t, o, te2 - q - V);
- v.push({
- t: ce.INSERT,
- body: {
- dataStream: M2,
- paragraphs: H,
- sectionBreaks: F,
- textRuns: [{
- ...B,
- st: 0,
- ed: M2.length
- }],
- tables: [
- {
- startIndex: 0,
- endIndex: M2.length,
- tableId: Y.tableId
- }
- ]
- },
- len: M2.length
- });
- const oe = le(d, A);
- S.push(R.editOp(v.serialize(), oe));
- const ce2 = R.insertOp(["tableSource", Y.tableId], Y);
- return S.push(ce2), O.params.actions = S.reduce((we2, Yt) => tn.compose(we2, Yt), null), !!i.syncExecuteCommand(O.id, O.params);
- }
- };
- var Uo = "doc.component.create-table-confirm";
- var sr = {
- id: "doc.operation.create-table",
- type: ar.COMMAND,
- handler: async (n) => {
- const e = n.get(Vr), t = n.get(d3), o = n.get(Pt), s = {
- rowCount: 3,
- colCount: 5
- }, r = (i, a) => {
- s.rowCount = i, s.colCount = a;
- };
- return await t.open({
- id: Uo,
- children: {
- label: {
- name: Ca,
- props: {
- handleRowColChange: r,
- tableCreateParams: s
- }
- }
- },
- width: 400,
- title: { title: e.t("toolbar.table.insert") },
- onConfirm: () => {
- o.executeCommand(ba.id, s), t.close(Uo);
- },
- onClose: () => {
- t.close(Uo);
- }
- }), true;
- }
- };
- var qe = {
- id: "doc-paragraph-setting.command",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var m2, E;
- const t = n.get(m), o = n.get(_n), s = n.get(Pt), r = o.getCurrentUnitForType(Fe.UNIVER_DOC), i = t.getDocRanges();
- if (!r || i.length === 0 || !e)
- return false;
- 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 = {
- id: M.id,
- params: {
- unitId: c,
- actions: [],
- textRanges: i
- }
- }, h = new lr();
- h.reset();
- const u = new Ke(), g = tn.getInstance();
- for (const I of l) {
- const { startIndex: v } = I;
- u.push({
- t: ce.RETAIN,
- len: v - h.cursor
- });
- const R = {
- ...I.paragraphStyle,
- ...e.paragraph
- };
- u.push({
- t: ce.RETAIN,
- len: 1,
- body: {
- dataStream: "",
- paragraphs: [
- {
- ...I,
- paragraphStyle: R,
- startIndex: 0
- }
- ]
- },
- coverType: Pe.REPLACE
- }), h.moveCursorTo(v + 1);
- }
- const f = le(r, a);
- return d.params.actions = g.editOp(u.serialize(), f), !!s.syncExecuteCommand(d.id, d.params);
- }
- };
- var kd = () => {
- const n = W0(m), e = W0(Lt), t = (0, import_react.useMemo)(() => n.getDocRanges(), []);
- return (0, import_react.useEffect)(() => {
- t.length || e.closePanel();
- }, [t]), t;
- };
- var Vd = () => {
- var i, a;
- const e = W0(_n).getCurrentUnitForType(Fe.UNIVER_DOC), t = kd();
- if (!e || t.length === 0)
- return [];
- const o = t[0].segmentId, s = (a = (i = e.getSelfOrHeaderFooterModel(o).getBody()) == null ? void 0 : i.paragraphs) != null ? a : [];
- return mn2(t, s);
- };
- var jd = (n, e) => {
- const t = W0(Pt), [o, s] = (0, import_react.useState)(() => {
- var a, c;
- const i = n[0];
- return i ? String((c = (a = i.paragraphStyle) == null ? void 0 : a.horizontalAlign) != null ? c : e) : e;
- });
- return [o, (i) => (s(i), t.executeCommand(qe.id, {
- paragraph: { horizontalAlign: Number(i) }
- }))];
- };
- var Wd2 = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentStart, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { indentStart: { v: r } }
- }))];
- };
- var zd2 = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentEnd, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { indentEnd: { v: r } }
- }))];
- };
- var Gd = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.indentFirstLine, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { indentFirstLine: { v: r } }
- }))];
- };
- var Yd = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.hanging, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { hanging: { v: r } }
- }))];
- };
- var qd = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.spaceAbove, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { spaceAbove: { v: r } }
- }))];
- };
- var Kd = (n) => {
- const e = W0(Pt), [t, o] = (0, import_react.useState)(() => {
- var i;
- const r = n[0];
- return r ? S3((i = r.paragraphStyle) == null ? void 0 : i.spaceBelow, 0) : 0;
- });
- return [t, (r) => (o(r), e.executeCommand(qe.id, {
- paragraph: { spaceBelow: { v: r } }
- }))];
- };
- var Xd = (n) => {
- const e = W0(Pt), t = W0(Yx), o = W0(_n), s = (0, import_react.useMemo)(() => {
- var g;
- const u = o.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (u)
- return (g = t.getRenderById(u == null ? void 0 : u.getUnitId())) == null ? void 0 : g.with(D).getSkeleton();
- }, []), r = (0, import_react.useMemo)(() => new BehaviorSubject({}), []), [i, a] = (0, import_react.useState)(() => {
- var g, f;
- const u = n[0];
- return u && (f = (g = u.paragraphStyle) == null ? void 0 : g.lineSpacing) != null ? f : 1;
- }), c = (0, import_react.useRef)(i), [A, l] = (0, import_react.useState)(() => {
- var g, f;
- const u = n[0];
- return u ? (f = (g = u.paragraphStyle) == null ? void 0 : g.spacingRule) != null ? f : Zp.AUTO : Zp.AUTO;
- }), d = async (u) => {
- a(u), r.next({ lineSpacing: u, spacingRule: A });
- }, h = async (u) => {
- if (u !== A) {
- let g = c.current;
- if (u === Zp.AT_LEAST) {
- 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;
- (m2 == null ? void 0 : m2.contentHeight) !== void 0 && (g = Math.max(m2.contentHeight, g));
- } else
- g > 5 && (g = 2);
- c.current = i, d(g), l(u), r.next({ spacingRule: u });
- }
- };
- return (0, import_react.useEffect)(() => {
- const u = r.pipe(
- filter((g) => !!Object.keys(g).length),
- bufferTime(16),
- filter((g) => !!g.length),
- map((g) => g.reduce((f, p) => (Object.keys(p).forEach((m2) => {
- f[m2] = p[m2];
- }), f), {}))
- ).subscribe((g) => e.executeCommand(qe.id, {
- paragraph: { ...g }
- }));
- return () => u.unsubscribe();
- }, []), {
- lineSpacing: [i, d],
- spacingRule: [A, h]
- };
- };
- var Jd = "univer-paragraph-setting-icon-list";
- var Zd = "univer-paragraph-setting-icon-list-item";
- var $d = "univer-paragraph-setting-icon-list-active";
- var eu = "univer-paragraph-setting-title";
- var tu = "univer-paragraph-setting-label";
- var nu2 = "univer-paragraph-setting-mt-base";
- var ou = "univer-paragraph-setting-flex-col";
- var su2 = "univer-paragraph-setting-space-line";
- var re2 = {
- paragraphSettingIconList: Jd,
- paragraphSettingIconListItem: Zd,
- paragraphSettingIconListActive: $d,
- paragraphSettingTitle: eu,
- paragraphSettingLabel: tu,
- paragraphSettingMtBase: nu2,
- paragraphSettingFlexCol: ou,
- paragraphSettingSpaceLine: su2
- };
- var ht = (n) => {
- const { value: e, onChange: t, className: o = "", min: s = 0, max: r = 100, step: i = 1 } = n, a = Hc.useRef(null);
- return w.jsx(
- BO,
- {
- step: i,
- ref: a,
- min: s,
- max: r,
- value: e,
- onChange: (c) => {
- t(c != null ? c : 0).finally(() => {
- setTimeout(() => {
- var A;
- (A = a.current) == null || A.focus();
- }, 30);
- });
- },
- className: o
- }
- );
- };
- function ru() {
- const n = W0(Vr), e = (0, import_react.useMemo)(
- () => [
- { label: n.t("toolbar.alignLeft"), value: String(Xt.LEFT), icon: w.jsx(Ji, {}) },
- { label: n.t("toolbar.alignCenter"), value: String(Xt.CENTER), icon: w.jsx(Xi, {}) },
- { label: n.t("toolbar.alignRight"), value: String(Xt.RIGHT), icon: w.jsx(Zi, {}) },
- { label: n.t("toolbar.alignJustify"), value: String(Xt.JUSTIFIED), icon: w.jsx(Ki, {}) }
- ],
- []
- ), 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]);
- return w.jsxs("div", { className: re2.paragraphSetting, children: [
- w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.alignment") }),
- w.jsx(
- "div",
- {
- className: `
- ${re2.paragraphSettingIconList}
- ${re2.paragraphSettingMtBase}
- `,
- children: e.map((S) => w.jsx(Gf, { title: S.label, placement: "bottom", children: w.jsx(
- "span",
- {
- className: Un(
- re2.paragraphSettingIconListItem,
- { [re2.paragraphSettingIconListActive]: o === S.value }
- ),
- onClick: () => s(S.value),
- children: S.icon
- }
- ) }, S.value))
- }
- ),
- w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.indentation") }),
- w.jsxs("div", { children: [
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.left"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: r, onChange: (S) => i(S != null ? S : 0) })
- ] }),
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.right"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: a, onChange: (S) => c(S != null ? S : 0) })
- ] }),
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.firstLine"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: A, onChange: (S) => l(S != null ? S : 0) })
- ] }),
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.hanging"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: d, onChange: (S) => h(S != null ? S : 0) })
- ] })
- ] }),
- w.jsx("div", { className: re2.paragraphSettingTitle, children: n.t("doc.paragraphSetting.spacing") }),
- w.jsxs("div", { children: [
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.before"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: u, onChange: (S) => g(S != null ? S : 0) })
- ] }),
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsxs("div", { className: re2.paragraphSettingLabel, children: [
- n.t("doc.paragraphSetting.after"),
- "(px)"
- ] }),
- w.jsx(ht, { className: re2.paragraphSettingMtBase, value: f, onChange: (S) => p(S != null ? S : 0) })
- ] }),
- w.jsxs("div", { className: re2.paragraphSettingFlexCol, children: [
- w.jsx("div", { className: re2.paragraphSettingLabel, children: n.t("doc.paragraphSetting.lineSpace") }),
- w.jsxs(
- "div",
- {
- className: `
- ${re2.paragraphSettingMtBase}
- ${re2.paragraphSettingSpaceLine}
- `,
- style: { width: 162 },
- children: [
- w.jsx(
- r_,
- {
- value: `${I}`,
- options: [
- { label: n.t("doc.paragraphSetting.multiSpace"), value: `${Zp.AUTO}` },
- { label: n.t("doc.paragraphSetting.fixedValue"), value: `${Zp.AT_LEAST}` }
- ],
- onChange: (S) => v(Number(S))
- }
- ),
- w.jsx(
- ht,
- {
- ...R,
- value: m2,
- onChange: (S) => E(S != null ? S : 0)
- }
- )
- ]
- }
- )
- ] })
- ] })
- ] });
- }
- var iu2 = (n, e) => e.length === n.length && n.some((t) => e.some((o) => o.startOffset === t.startOffset && o.endOffset === t.endOffset));
- function au() {
- 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)([]);
- return (0, import_react.useEffect)(() => {
- const a = n.onCommandExecuted((c) => {
- if (j.id === c.id) {
- const A = c.params.ranges;
- iu2(A, i.current) || s(qt(4)), i.current = A;
- }
- M.id === c.id && c.params.trigger !== qe.id && r();
- });
- return () => a.dispose();
- }, [r]), (0, import_react.useEffect)(() => {
- s(qt(4));
- }, [t]), (0, import_react.useEffect)(() => () => r.cancel(), [r]), w.jsx(ru, {}, o);
- }
- var cu = Object.defineProperty;
- var Au = Object.getOwnPropertyDescriptor;
- var lu = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Au(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && cu(e, t, s), s;
- };
- var Lo = (n, e) => (t, o) => e(t, o, n);
- var ei = "doc_ui_paragraph-setting-panel";
- var Lt = class extends nt {
- constructor(e, t, o) {
- super();
- x(this, "_id");
- this._commandService = e, this._componentManager = t, this._sidebarService = o, this._init();
- }
- _init() {
- this.disposeWithMe(this._componentManager.register(ei, au));
- }
- openPanel() {
- const e = {
- header: { title: "doc.slider.paragraphSetting" },
- id: this._id,
- children: {
- label: ei
- },
- width: 300
- };
- this._sidebarService.open(e);
- }
- closePanel() {
- this._sidebarService.close(this._id);
- }
- };
- Lt = lu([
- Lo(0, Pt),
- Lo(1, ot(n1)),
- Lo(2, ot(rt))
- ], Lt);
- var rr = {
- id: "sidebar.operation.doc-paragraph-setting-panel",
- type: ar.OPERATION,
- handler: (n) => (n.get(Lt).openPanel(), true)
- };
- var ir = (n) => {
- const e = n.get(m);
- return new Observable((t) => {
- const o = e.textSelection$.subscribe(() => {
- e.getDocRanges().some((i) => i.collapsed === false || i.rangeType === Ag.RECT) ? t.next(false) : t.next(true);
- });
- return () => o.unsubscribe();
- });
- };
- function du(n) {
- if (n.length < 2)
- return true;
- const e = n.map((t) => t.tableId);
- return e.every((t) => t === e[0]);
- }
- function ti(n, e, t) {
- var r;
- const o = e.getRectRanges(), s = e.getActiveTextRange();
- if (o && o.length && du(o) && s == null) {
- n.next(false);
- return;
- }
- if (s && (o == null || o.length === 0)) {
- 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;
- if (l && l.length && l.some((d) => {
- const { startIndex: h, endIndex: u } = d;
- return a > h && a < u || c > h && c < u;
- })) {
- n.next(false);
- return;
- }
- }
- n.next(true);
- }
- var tt = (n) => {
- const e = n.get(m), t = n.get(_n);
- return new Observable((o) => {
- const s = e.textSelection$.subscribe(() => {
- ti(o, e, t);
- });
- return ti(o, e, t), () => s.unsubscribe();
- });
- };
- var uu = (n) => ({
- id: Fn.name,
- commandId: Fn.id,
- type: $e.BUTTON,
- icon: "Copy",
- title: "rightClick.copy",
- disabled$: ir(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- });
- var hu = (n) => ({
- id: rr.id,
- type: $e.BUTTON,
- icon: "MenuSingle24",
- title: "doc.menu.paragraphSetting",
- hidden$: Fa(n, Fe.UNIVER_DOC)
- });
- var gu = (n) => ({
- id: qs.id,
- type: $e.BUTTON,
- icon: "Copy",
- title: "rightClick.cut",
- disabled$: ir(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- });
- var fu = (n) => ({
- id: Ks.id,
- type: $e.BUTTON,
- icon: "PasteSpecial",
- title: "rightClick.paste",
- hidden$: Fa(n, Fe.UNIVER_DOC)
- });
- var pu = (n) => ({
- id: So.id,
- type: $e.BUTTON,
- icon: "PasteSpecial",
- title: "rightClick.delete",
- disabled$: ir(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- });
- var xa = "doc.menu.table-insert";
- function mu(n) {
- return {
- id: xa,
- type: $e.SUBITEMS,
- title: "table.insert",
- icon: "Insert",
- hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC), tt(n), (e, t) => e || t)
- };
- }
- function Eu(n) {
- return {
- id: er.id,
- type: $e.BUTTON,
- title: "table.insertRowAbove",
- icon: "InsertRowAbove",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Su(n) {
- return {
- id: tr.id,
- type: $e.BUTTON,
- title: "table.insertRowBelow",
- icon: "InsertRowBelow",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Iu(n) {
- return {
- id: nr.id,
- type: $e.BUTTON,
- title: "table.insertColumnLeft",
- icon: "LeftInsertColumn",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Cu(n) {
- return {
- id: or.id,
- type: $e.BUTTON,
- title: "table.insertColumnRight",
- icon: "RightInsertColumn",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- var Oa = "doc.menu.table-delete";
- function vu(n) {
- return {
- id: Oa,
- type: $e.SUBITEMS,
- title: "table.delete",
- icon: "Reduce",
- hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC), tt(n), (e, t) => e || t)
- };
- }
- function Ru(n) {
- return {
- id: Xs.id,
- type: $e.BUTTON,
- title: "table.deleteRows",
- icon: "DeleteRow",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function bu(n) {
- return {
- id: Js.id,
- type: $e.BUTTON,
- title: "table.deleteColumns",
- icon: "DeleteColumn",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function xu(n) {
- return {
- id: In.id,
- type: $e.BUTTON,
- title: "table.deleteTable",
- icon: "GridSingle",
- disabled$: tt(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Ou(n) {
- const e = n.get(_n), t = n.get(Yx);
- return new Observable((o) => {
- const s = e.focused$.subscribe((a) => {
- if (a == null || e.getUnitType(a) !== Fe.UNIVER_DOC)
- return o.next(true);
- const A = t.getRenderById(a);
- if (A == null)
- return o.next(true);
- A.with(D).getViewModel().editAreaChange$.subscribe((d) => {
- o.next(d === n3.HEADER || d === n3.FOOTER);
- });
- }), r = t.getCurrentTypeOfRenderer(Fe.UNIVER_DOC);
- if (r == null)
- return o.next(true);
- const i = r.with(D).getViewModel();
- return o.next(i.getEditArea() !== n3.BODY), () => s.unsubscribe();
- });
- }
- function Tu(n) {
- const e = n.get(_n), t = n.get(Pt);
- return new Observable((o) => {
- const s = t.onCommandExecuted((c) => {
- if (c.id === M.id) {
- const { unitId: A } = c.params, l = e.getUnit(A);
- if (l == null) {
- o.next(true);
- return;
- }
- const { documentStyle: d } = l.getSnapshot();
- o.next((d == null ? void 0 : d.documentFlavor) !== ku.TRADITIONAL);
- }
- }), r = e.focused$.subscribe((c) => {
- if (c == null)
- return o.next(true);
- const A = e.getUniverDocInstance(c), l = A == null ? void 0 : A.getSnapshot().documentStyle.documentFlavor;
- o.next(l !== ku.TRADITIONAL);
- }), i = e.getCurrentUniverDocInstance();
- if (i == null)
- return o.next(true);
- const a = i == null ? void 0 : i.getSnapshot().documentStyle.documentFlavor;
- return o.next(a !== ku.TRADITIONAL), () => {
- s.dispose(), r.unsubscribe();
- };
- });
- }
- function yu(n) {
- const e = n.get(m), t = n.get(_n);
- return new Observable((o) => {
- const s = e.textSelection$.subscribe((r) => {
- if (r == null) {
- o.next(true);
- return;
- }
- const { textRanges: i } = r;
- if (i.length !== 1) {
- o.next(true);
- return;
- }
- const a = i[0], { collapsed: c, startNodePosition: A, startOffset: l } = a;
- if (!c || l == null) {
- o.next(true);
- return;
- }
- const d = t.getCurrentUniverDocInstance();
- if (d == null) {
- o.next(true);
- return;
- }
- const h = ke2(n, d.getUnitId());
- if (h == null) {
- o.next(true);
- return;
- }
- if (h.getViewModel().getCustomRangeRaw(l)) {
- o.next(true);
- return;
- }
- if (A != null) {
- const { path: f } = A;
- if (f.indexOf("cells") !== -1) {
- o.next(true);
- return;
- }
- }
- o.next(false);
- });
- return () => s.unsubscribe();
- });
- }
- function be(n) {
- const e = n.get(m);
- return new Observable((t) => {
- const o = e.textSelection$.subscribe((s) => {
- if (s == null) {
- t.next(true);
- return;
- }
- const { textRanges: r, rectRanges: i } = s;
- if (r.length === 0 && i.length === 0) {
- t.next(true);
- return;
- }
- t.next(false);
- });
- return () => o.unsubscribe();
- });
- }
- function Bu(n) {
- const e = n.get(Pt);
- return {
- id: Vt.id,
- type: $e.BUTTON,
- icon: "BoldSingle",
- title: "Set bold",
- tooltip: "toolbar.bold",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.bl;
- t.next(c === we.TRUE);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Mu(n) {
- const e = n.get(Pt);
- return {
- id: jt.id,
- type: $e.BUTTON,
- icon: "ItalicSingle",
- title: "Set italic",
- tooltip: "toolbar.italic",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.it;
- t.next(c === we.TRUE);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function _u(n) {
- const e = n.get(Pt);
- return {
- id: Wt2.id,
- type: $e.BUTTON,
- icon: "UnderlineSingle",
- title: "Set underline",
- tooltip: "toolbar.underline",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.ul;
- t.next((c == null ? void 0 : c.s) === we.TRUE);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Pu(n) {
- const e = n.get(Pt);
- return {
- id: zt.id,
- type: $e.BUTTON,
- icon: "StrikethroughSingle",
- title: "Set strike through",
- tooltip: "toolbar.strikethrough",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.st;
- t.next((c == null ? void 0 : c.s) === we.TRUE);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Du(n) {
- const e = n.get(Pt);
- return {
- id: Ct2.id,
- type: $e.BUTTON,
- icon: "SubscriptSingle",
- tooltip: "toolbar.subscript",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.va;
- t.next(c === Bt.SUBSCRIPT);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function wu2(n) {
- const e = n.get(Pt);
- return {
- id: Gt.id,
- type: $e.BUTTON,
- icon: "SuperscriptSingle",
- tooltip: "toolbar.superscript",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === lt.id) {
- const a = dt(n);
- if (a == null) {
- t.next(false);
- return;
- }
- const c = (i = a.ts) == null ? void 0 : i.va;
- t.next(c === Bt.SUPERSCRIPT);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Nu(n) {
- const e = n.get(Pt);
- return {
- id: Dt2.id,
- tooltip: "toolbar.font",
- type: $e.SELECTOR,
- label: oa,
- selections: Pl.map((t) => ({
- label: {
- name: sa,
- hoverable: true
- },
- value: t.value
- })),
- // disabled$: getCurrentSheetDisabled$(accessor),
- value$: new Observable((t) => {
- const o = gt.ff, s = e.onCommandExecuted((r) => {
- var a;
- const i = r.id;
- if (i === j.id || i === Dt2.id) {
- const c = dt(n);
- if (c == null) {
- t.next(o);
- return;
- }
- const A = (a = c.ts) == null ? void 0 : a.ff;
- t.next(A != null ? A : o);
- }
- });
- return t.next(o), s.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Qu(n) {
- const e = n.get(Pt);
- return {
- id: Pt2.id,
- type: $e.SELECTOR,
- tooltip: "toolbar.fontSize",
- label: {
- name: ra,
- props: {
- min: 1,
- max: 400
- // disabled$,
- }
- },
- selections: $l,
- // disabled$,
- value$: new Observable((t) => {
- const o = gt.fs, s = e.onCommandExecuted((r) => {
- var a;
- const i = r.id;
- if (i === j.id || i === Pt2.id) {
- const c = dt(n);
- if (c == null) {
- t.next(o);
- return;
- }
- const A = (a = c.ts) == null ? void 0 : a.fs;
- t.next(A != null ? A : o);
- }
- });
- return t.next(o), s.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Uu(n) {
- const e = n.get(Pt), t = n.get(ml);
- return {
- id: wt.id,
- icon: "FontColor",
- tooltip: "toolbar.textColor.main",
- type: $e.BUTTON_SELECTOR,
- selections: [
- {
- label: {
- name: Ds,
- hoverable: false
- }
- }
- ],
- value$: new Observable((o) => {
- const s = t.getCurrentTheme().textColor, r = e.onCommandExecuted((i) => {
- if (i.id === wt.id) {
- const a = i.params.value;
- o.next(a != null ? a : s);
- }
- });
- return o.next(s), r.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- // disabled$: getCurrentSheetDisabled$(accessor),
- };
- }
- function Lu(n) {
- return {
- id: _s.id,
- type: $e.BUTTON,
- icon: "HeaderFooterSingle",
- tooltip: "toolbar.headerFooter",
- hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC, void 0, Hd), Tu(n), (e, t) => e || t)
- };
- }
- var Fu = "GridSingle";
- var Ta = "doc.menu.table";
- function Hu(n) {
- return {
- id: Ta,
- type: $e.SUBITEMS,
- icon: Fu,
- tooltip: "toolbar.table.main",
- disabled$: yu(n),
- // Do not show header footer menu and insert table at zen mode.
- hidden$: combineLatest(Fa(n, Fe.UNIVER_DOC, void 0, Hd), Ou(n), (e, t) => e || t)
- };
- }
- function ku2(n) {
- return {
- id: sr.id,
- title: "toolbar.table.insert",
- type: $e.BUTTON,
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function Vu(n) {
- const e = n.get(Pt);
- return {
- id: go.id,
- type: $e.BUTTON,
- icon: "LeftJustifyingSingle",
- tooltip: "toolbar.alignLeft",
- disabled$: be(n),
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === et.id) {
- const a = vo(n);
- if (a == null)
- return;
- const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
- t.next(c === Xt.LEFT);
- }
- });
- return t.next(false), o.dispose;
- }),
- hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
- };
- }
- function ju(n) {
- const e = n.get(Pt);
- return {
- id: fo.id,
- type: $e.BUTTON,
- icon: "HorizontallySingle",
- tooltip: "toolbar.alignCenter",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === et.id) {
- const a = vo(n);
- if (a == null)
- return;
- const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
- t.next(c === Xt.CENTER);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
- };
- }
- function Wu(n) {
- const e = n.get(Pt);
- return {
- id: po.id,
- type: $e.BUTTON,
- icon: "RightJustifyingSingle",
- tooltip: "toolbar.alignRight",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === et.id) {
- const a = vo(n);
- if (a == null)
- return;
- const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
- t.next(c === Xt.RIGHT);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
- };
- }
- function zu(n) {
- const e = n.get(Pt);
- return {
- id: mo.id,
- type: $e.BUTTON,
- icon: "AlignTextBothSingle",
- tooltip: "toolbar.alignJustify",
- activated$: new Observable((t) => {
- const o = e.onCommandExecuted((s) => {
- var i;
- const r = s.id;
- if (r === j.id || r === et.id) {
- const a = vo(n);
- if (a == null)
- return;
- const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
- t.next(c === Xt.JUSTIFIED);
- }
- });
- return t.next(false), o.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd)
- };
- }
- var un = (n) => new Observable((e) => {
- const t = n.get(_n), o = n.get(m);
- let s;
- const r = t.focused$.subscribe((i) => {
- if (s == null || s.unsubscribe(), i == null)
- return;
- const a = t.getUniverDocInstance(i);
- a != null && (s = o.textSelection$.subscribe(() => {
- var l, d, h;
- const c = o.getDocRanges(), A = (l = c.find((u) => u.isActive)) != null ? l : c[0];
- if (A) {
- const u = a.getSelfOrHeaderFooterModel(A == null ? void 0 : A.segmentId), g = Qs(A, (h = (d = u.getBody()) == null ? void 0 : d.paragraphs) != null ? h : []);
- let f;
- if (g.every((p) => {
- var m2;
- return f || (f = (m2 = p.bullet) == null ? void 0 : m2.listType), p.bullet && p.bullet.listType === f;
- })) {
- e.next(f);
- return;
- }
- }
- e.next(void 0);
- }));
- });
- return () => {
- r.unsubscribe(), s == null || s.unsubscribe();
- };
- });
- function Gu(n) {
- return {
- id: ho.id,
- type: $e.BUTTON_SELECTOR,
- selections: [
- {
- label: {
- name: aa,
- hoverable: false
- },
- value$: un(n)
- }
- ],
- icon: "OrderSingle",
- tooltip: "toolbar.order",
- hidden$: Fa(n, Fe.UNIVER_DOC),
- disabled$: be(n),
- activated$: un(n).pipe(map((e) => e && e.indexOf("ORDER_LIST") === 0))
- };
- }
- function Yu(n) {
- return {
- id: uo.id,
- type: $e.BUTTON_SELECTOR,
- selections: [
- {
- label: {
- name: ca,
- hoverable: false
- },
- value$: un(n)
- }
- ],
- icon: "UnorderSingle",
- tooltip: "toolbar.unorder",
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC),
- activated$: un(n).pipe(map((e) => e && e.indexOf("BULLET_LIST") === 0))
- };
- }
- function qu(n) {
- return {
- id: ws.id,
- type: $e.BUTTON,
- icon: "TodoList",
- tooltip: "toolbar.checklist",
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC),
- activated$: un(n).pipe(map((e) => e && e.indexOf("CHECK_LIST") === 0))
- };
- }
- function Ku(n) {
- const e = n.get(Pt), t = n.get(_n);
- return {
- id: Co.id,
- type: $e.BUTTON,
- icon: "KeyboardSingle",
- tooltip: "toolbar.documentFlavor",
- hidden$: Fa(n, Fe.UNIVER_DOC, void 0, Hd),
- activated$: new Observable((o) => {
- var i;
- const s = e.onCommandExecuted((a) => {
- var c;
- if (a.id === M.id) {
- const A = t.getCurrentUnitForType(Fe.UNIVER_DOC);
- o.next(((c = A == null ? void 0 : A.getSnapshot()) == null ? void 0 : c.documentStyle.documentFlavor) === ku.MODERN);
- }
- }), r = t.getCurrentUnitForType(Fe.UNIVER_DOC);
- return o.next(((i = r == null ? void 0 : r.getSnapshot()) == null ? void 0 : i.documentStyle.documentFlavor) === ku.MODERN), () => s.dispose();
- })
- };
- }
- function Xu(n) {
- return {
- id: fn.id,
- type: $e.BUTTON,
- title: "toolbar.resetColor",
- icon: "NoColor"
- };
- }
- function Ju(n) {
- const e = n.get(Pt), t = n.get(ml);
- return {
- id: Nt2.id,
- tooltip: "toolbar.fillColor.main",
- type: $e.BUTTON_SELECTOR,
- icon: "PaintBucket",
- selections: [
- {
- label: {
- name: Ds,
- hoverable: false
- }
- }
- ],
- value$: new Observable((o) => {
- const s = t.getCurrentTheme().primaryColor, r = e.onCommandExecuted((i) => {
- if (i.id === Nt2.id) {
- const a = i.params.value;
- o.next(a != null ? a : s);
- }
- });
- return o.next(s), r.dispose;
- }),
- disabled$: be(n),
- hidden$: Fa(n, Fe.UNIVER_DOC)
- };
- }
- function dt(n) {
- var h, u;
- 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 : {};
- if (s == null || i == null)
- return {
- ts: {
- ...a,
- ...c
- }
- };
- const { segmentId: A } = i, l = s.getSelfOrHeaderFooterModel(A).getBody();
- return l == null ? {
- ts: {
- ...a,
- ...c
- }
- } : {
- ts: {
- ...la(l, i, a),
- ...c
- }
- };
- }
- function vo(n) {
- var l, d;
- 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];
- if (o == null || r == null)
- return;
- const { startOffset: i, segmentId: a } = r, c = (d = o.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : d.paragraphs;
- if (c == null)
- return;
- let A = -1;
- for (const h of c) {
- const { startIndex: u } = h;
- if (i > A && i <= u)
- return h;
- A = u;
- }
- return null;
- }
- var Zu = {
- [l1.FORMAT]: {
- [Vt.id]: {
- order: 0,
- menuItemFactory: Bu
- },
- [jt.id]: {
- order: 1,
- menuItemFactory: Mu
- },
- [Wt2.id]: {
- order: 2,
- menuItemFactory: _u
- },
- [zt.id]: {
- order: 3,
- menuItemFactory: Pu
- },
- [Ct2.id]: {
- order: 4,
- menuItemFactory: Du
- },
- [Gt.id]: {
- order: 5,
- menuItemFactory: wu2
- },
- [Pt2.id]: {
- order: 6,
- menuItemFactory: Qu
- },
- [Dt2.id]: {
- order: 7,
- menuItemFactory: Nu
- },
- [wt.id]: {
- order: 8,
- menuItemFactory: Uu
- },
- [Nt2.id]: {
- order: 9,
- menuItemFactory: Ju,
- [fn.id]: {
- order: 0,
- menuItemFactory: Xu
- }
- }
- },
- [l1.LAYOUT]: {
- [Ta]: {
- order: 1,
- menuItemFactory: Hu,
- [sr.id]: {
- order: 0,
- menuItemFactory: ku2
- }
- },
- [go.id]: {
- order: 2,
- menuItemFactory: Vu
- },
- [fo.id]: {
- order: 3,
- menuItemFactory: ju
- },
- [po.id]: {
- order: 4,
- menuItemFactory: Wu
- },
- [mo.id]: {
- order: 5,
- menuItemFactory: zu
- },
- [ho.id]: {
- order: 6,
- menuItemFactory: Gu
- },
- [uo.id]: {
- order: 7,
- menuItemFactory: Yu
- },
- [ws.id]: {
- order: 8,
- menuItemFactory: qu
- },
- [_s.id]: {
- order: 9,
- menuItemFactory: Lu
- },
- [Co.id]: {
- order: 10,
- menuItemFactory: Ku
- }
- },
- [P1.MAIN_AREA]: {
- [He.FORMAT]: {
- [Fn.name]: {
- order: 0,
- menuItemFactory: uu
- },
- [qs.id]: {
- order: 1,
- menuItemFactory: gu
- },
- [Ks.id]: {
- order: 2,
- menuItemFactory: fu
- },
- [So.id]: {
- order: 3,
- menuItemFactory: pu
- }
- },
- [He.LAYOUT]: {
- [rr.id]: {
- order: 0,
- menuItemFactory: hu
- },
- [xa]: {
- order: 1,
- menuItemFactory: mu,
- [er.id]: {
- order: 1,
- menuItemFactory: Eu
- },
- [tr.id]: {
- order: 2,
- menuItemFactory: Su
- },
- [nr.id]: {
- order: 3,
- menuItemFactory: Iu
- },
- [or.id]: {
- order: 4,
- menuItemFactory: Cu
- }
- },
- [Oa]: {
- order: 2,
- menuItemFactory: vu,
- [Xs.id]: {
- order: 1,
- menuItemFactory: Ru
- },
- [Js.id]: {
- order: 2,
- menuItemFactory: bu
- },
- [In.id]: {
- order: 3,
- menuItemFactory: xu
- }
- }
- }
- }
- };
- var $u = Object.defineProperty;
- var eh = Object.getOwnPropertyDescriptor;
- var th = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && $u(e, t, s), s;
- };
- var Ke2 = (n, e) => (t, o) => e(t, o, n);
- var Hn = class extends nt {
- constructor(n, e, t, o, s, r, i, a, c) {
- 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();
- }
- _initCustomComponents() {
- const n = this._componentManager;
- 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));
- }
- // TODO: @zhangwei, why add workbook to docs-ui?
- _initUiParts() {
- var t, o;
- const n = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_SHEET), e = this._configService.getConfig(Us);
- (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)));
- }
- _initMenus() {
- this._menuManagerService.mergeMenu(Zu);
- }
- _initShortCut() {
- [
- Nl,
- Ql2,
- Ul,
- Ll,
- Fl,
- Hl,
- jl2,
- Wl,
- Vl,
- kl,
- zl,
- Gl,
- xl
- ].forEach((n) => {
- this.disposeWithMe(this._shortcutService.registerShortcut(n));
- });
- }
- _init() {
- this._initCustomComponents(), this._initMenus(), this._initFocusHandler(), this._initCommands(), this._initUiParts(), this._initShortCut();
- }
- _initCommands() {
- [
- na,
- _s,
- Ms
- ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
- }
- _initFocusHandler() {
- this.disposeWithMe(
- this._layoutService.registerFocusHandler(Fe.UNIVER_DOC, (n) => {
- this._injector.get(Yx).getRenderById(n).with(Se).focus();
- })
- );
- }
- };
- Hn = th([
- Ke2(0, ot(Ot)),
- Ke2(1, ot(n1)),
- Ke2(2, Pt),
- Ke2(3, _1),
- Ke2(4, m1),
- Ke2(5, f1),
- Ke2(6, _n),
- Ke2(7, it),
- Ke2(8, SE)
- ], Hn);
- var nh = Object.defineProperty;
- var oh = Object.getOwnPropertyDescriptor;
- var sh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? oh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && nh(e, t, s), s;
- };
- var Fo = (n, e) => (t, o) => e(t, o, n);
- var ni = 1.5;
- var kn = class extends J0 {
- constructor(n, e, t, o) {
- super(), this._context = n, this._textSelectionManagerService = e, this._editorService = t, this._docSkeletonManagerService = o, this._init();
- }
- _init() {
- this._textSelectionManagerService.textSelection$.pipe(takeUntil(this.dispose$)).subscribe((n) => {
- if (n == null)
- return;
- const { isEditing: e, unitId: t } = n;
- t !== this._context.unitId || !e || this._context.unitId !== su && this._scrollToSelection();
- });
- }
- scrollToRange(n) {
- const e = this._docSkeletonManagerService.getSkeleton();
- if (!e)
- return;
- const { startOffset: t } = n, o = e.findNodePositionByCharIndex(t);
- o && this.scrollToNode(o);
- }
- scrollToNode(n) {
- var O;
- const { unitId: e, scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton();
- if (o == null || s == null)
- return;
- 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);
- if (f == null)
- return;
- const {
- left: m2,
- top: E,
- right: I,
- bottom: v
- } = f.getBounding().viewBound;
- let R = 0, S = 0;
- const C = p ? (O = p.params.backScrollOffset) != null ? O : 0 : 100;
- 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);
- const T = f.transViewportScroll2ScrollValue(S, R);
- f.scrollByBarDeltaValue(T);
- }
- // Let the selection show on the current screen.
- _scrollToSelection() {
- const n = this._textSelectionManagerService.getActiveTextRange();
- if (n == null)
- return;
- const { collapsed: e, startNodePosition: t } = n;
- e && this.scrollToNode(t);
- }
- };
- kn = sh([
- Fo(1, ot(m)),
- Fo(2, He2),
- Fo(3, ot(D))
- ], kn);
- var rh = Object.defineProperty;
- var ih = Object.getOwnPropertyDescriptor;
- var ah = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? ih(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && rh(e, t, s), s;
- };
- var bt = (n, e) => (t, o) => e(t, o, n);
- var os = class extends J0 {
- constructor(n, e, t, o, s, r, i) {
- 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();
- }
- reRender(n) {
- var r, i;
- const e = (r = this._renderManagerService.getRenderById(n)) == null ? void 0 : r.with(D), t = e == null ? void 0 : e.getSkeleton();
- if (!t || !!t.getViewModel().getDataModel().getSnapshot().disabled)
- return;
- t.calculate();
- const s = this._editorService.getEditor(n);
- if (this._editorService.isEditor(n) && !(s != null && s.params.scrollBar)) {
- (i = this._context.mainComponent) == null || i.makeDirty();
- return;
- }
- this._recalculateSizeBySkeleton(t);
- }
- _addNewRender() {
- const { scene: n, engine: e } = this._context, t = new uT(Xe.VIEW_MAIN, n, {
- left: 0,
- top: 0,
- bottom: 0,
- right: 0,
- isWheelPreventDefaultX: true
- });
- n.attachControl(), n.onMouseWheel$.subscribeEvent((o, s) => {
- const r = this._univerInstanceService.getCurrentUnitForType(Fe.UNIVER_DOC);
- if ((r == null ? void 0 : r.getUnitId()) !== this._context.unitId)
- return;
- const i = o;
- if (i.ctrlKey) {
- const a = Math.abs(i.deltaX);
- let c = a < 40 ? 0.2 : a < 80 ? 0.4 : 0.2;
- 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();
- } else
- t.onMouseWheel(i, s);
- }), new v8(t), n.addLayer(
- new Ex(n, [], Oo),
- new Ex(n, [], aA)
- ), this._addComponent(), e.runRenderLoop(() => {
- n.render();
- }), this._docSelectionRenderService.__attachScrollEvent();
- }
- _addComponent() {
- const { scene: n, unit: e, components: t } = this._context, r = {
- pageMarginLeft: 20,
- pageMarginTop: 20
- }, i = new ke(We.MAIN, void 0, r);
- i.zIndex = xr;
- const a = new b8(We.BACKGROUND, void 0, r);
- 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);
- }
- _initRenderRefresh() {
- this._docSkeletonManagerService.currentSkeletonBefore$.pipe(takeUntil(this.dispose$)).subscribe((n) => {
- this._create(n);
- });
- }
- _create(n) {
- var a;
- if (!n)
- return;
- const { mainComponent: e, components: t } = this._context, o = e, s = t.get(We.BACKGROUND);
- o.changeSkeleton(n), s.changeSkeleton(n);
- const { unitId: r } = this._context, i = this._editorService.getEditor(r);
- if (this._editorService.isEditor(r) && !(i != null && i.params.scrollBar)) {
- (a = this._context.mainComponent) == null || a.makeDirty();
- return;
- }
- this._recalculateSizeBySkeleton(n);
- }
- _initCommandListener() {
- const n = [M.id];
- this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
- if (n.includes(e.id)) {
- const t = e.params, { unitId: o } = t;
- this.reRender(o);
- }
- }));
- }
- _recalculateSizeBySkeleton(n) {
- var u;
- 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;
- if (a == null)
- return;
- let c = 0, A = 0;
- const d = this._context.unit.getSnapshot().documentStyle.documentFlavor;
- for (let g = 0, f = a.length; g < f; g++) {
- const p = a[g];
- let { pageWidth: m2, pageHeight: E } = p;
- if (d === ku.MODERN) {
- const I = ch(p);
- m2 = I.pageWidth, E = I.pageHeight;
- }
- 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));
- }
- r.resize(c, A), i.resize(c, A);
- const h = this._editorService.getEditor(o);
- (!this._editorService.isEditor(o) || h != null && h.params.scrollBar) && t.resize(c, A);
- }
- };
- os = ah([
- bt(1, Pt),
- bt(2, ot(Se)),
- bt(3, ot(D)),
- bt(4, He2),
- bt(5, Yx),
- bt(6, _n)
- ], os);
- function ch(n) {
- let { pageWidth: e, pageHeight: t } = n;
- const { marginLeft: o, marginRight: s, marginTop: r, marginBottom: i, skeDrawings: a, skeTables: c } = n;
- e === Number.POSITIVE_INFINITY && (e = n.width + o + s), t === Number.POSITIVE_INFINITY && (t = n.height + r + i);
- for (const A of a.values())
- e = Math.max(e, A.aLeft + A.width + o + s), t = Math.max(t, A.aTop + A.height + r + i);
- for (const A of c.values())
- e = Math.max(e, A.left + A.width + o + s), t = Math.max(t, A.top + A.height + r + i);
- return { pageWidth: e, pageHeight: t };
- }
- var ya = {
- id: "doc.command.select-all",
- type: ar.COMMAND,
- handler: async (n) => {
- var h;
- 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];
- if (o == null || r == null)
- return false;
- const { segmentId: i } = r, a = o.getUnitId(), c = o.getSelfOrHeaderFooterModel(i).getSnapshot().body;
- if (c == null)
- return false;
- const { tables: A = [] } = c, l = [];
- let d = 0;
- for (const u of A) {
- const { startIndex: g, endIndex: f } = u;
- d !== g && l.push({
- startOffset: d,
- endOffset: g - 1,
- rangeType: Ag.TEXT
- }), l.push({
- startOffset: g + 3,
- // 3 is TABLE_START, ROW_START, CELL_START.
- endOffset: f - 5,
- // 4 is CELL_END, ROW_END, TABLE_END AND \n.
- rangeType: Ag.RECT
- }), d = f;
- }
- return d !== c.dataStream.length - 2 && l.push({
- startOffset: d,
- endOffset: c.dataStream.length - 2,
- rangeType: Ag.TEXT
- }), t.replaceDocRanges(l, {
- unitId: a,
- subUnitId: a
- }, false), true;
- }
- };
- var Ro = class extends J0 {
- constructor(t) {
- super();
- x(this, "_previousActiveRange", null);
- x(this, "_undoMutationParamsCache", []);
- x(this, "_redoMutationParamsCache", []);
- this._context = t;
- }
- clearUndoRedoMutationParamsCache() {
- this._undoMutationParamsCache = [], this._redoMutationParamsCache = [];
- }
- getUndoRedoMutationParamsCache() {
- return {
- undoCache: this._undoMutationParamsCache,
- redoCache: this._redoMutationParamsCache
- };
- }
- setUndoRedoMutationParamsCache({ undoCache: t = [], redoCache: o = [] }) {
- this._undoMutationParamsCache = t, this._redoMutationParamsCache = o;
- }
- getActiveRange() {
- return this._previousActiveRange;
- }
- setActiveRange(t) {
- this._previousActiveRange = t;
- }
- pushUndoRedoMutationParams(t, o) {
- this._undoMutationParamsCache.push(t), this._redoMutationParamsCache.push(o);
- }
- fetchComposedUndoRedoMutationParams() {
- if (this._undoMutationParamsCache.length === 0 || this._previousActiveRange == null || this._redoMutationParamsCache.length === 0)
- return null;
- const { unitId: t } = this._undoMutationParamsCache[0], o = {
- unitId: t,
- actions: this._undoMutationParamsCache.reverse().reduce((r, i) => tn.compose(r, i.actions), null),
- textRanges: []
- // Add empty array, will never use, just fix type error
- };
- return { redoMutationParams: {
- unitId: t,
- actions: this._redoMutationParamsCache.reduce((r, i) => tn.compose(r, i.actions), null),
- textRanges: []
- // Add empty array, will never use, just fix type error
- }, undoMutationParams: o, previousActiveRange: this._previousActiveRange };
- }
- dispose() {
- this._undoMutationParamsCache = [], this._redoMutationParamsCache = [], this._previousActiveRange = null;
- }
- };
- var Ah = BC;
- var Ba = {
- id: "doc.command.ime-input",
- type: ar.COMMAND,
- // eslint-disable-next-line max-lines-per-function
- handler: async (n, e) => {
- var D2, te2, q, V;
- 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);
- if (h == null || d == null)
- return false;
- const u = d.getActiveRange();
- if (u == null)
- return false;
- const { style: g, segmentId: f } = u, p = h.getSelfOrHeaderFooterModel(f).getBody();
- if (p == null)
- return false;
- Object.assign(u, u);
- const { startOffset: E, endOffset: I } = u, v = o.length, R = [
- {
- startOffset: E + v,
- endOffset: E + v,
- collapsed: true,
- style: g
- }
- ], S = {
- id: M.id,
- params: {
- unitId: t,
- actions: [],
- textRanges: R
- }
- }, C = l.getDefaultStyle(), T = l.getStyleCache(), O = Os((te2 = p.customRanges) != null ? te2 : [], E + s, Ah.includes(t)), P = co(
- (q = p.textRuns) != null ? q : [],
- i ? I : E + s,
- C,
- T
- ), b = Ts((V = p.customDecorations) != null ? V : [], E + s), B = new Ke(), M2 = tn.getInstance();
- if (!u.collapsed && i) {
- const Y = st.selection.delete([u], p, 0, null, false);
- B.push(...Y), S.params.textRanges = [{
- startOffset: E + v,
- endOffset: E + v,
- collapsed: true
- }];
- } else
- B.push({
- t: ce.RETAIN,
- len: E
- });
- s > 0 && B.push({
- t: ce.DELETE,
- len: s
- }), B.push({
- t: ce.INSERT,
- body: {
- dataStream: o,
- textRuns: P ? [{
- ...P,
- st: 0,
- ed: o.length
- }] : [],
- customRanges: O ? [{
- ...O,
- startIndex: 0,
- endIndex: o.length - 1
- }] : [],
- customDecorations: b.map((Y) => ({
- ...Y,
- startIndex: 0,
- endIndex: o.length - 1
- }))
- },
- len: o.length
- });
- const H = le(h, f);
- S.params.actions = M2.editOp(B.serialize(), H), S.params.noHistory = !r, S.params.isCompositionEnd = r;
- const F = a.syncExecuteCommand(S.id, S.params);
- return d.pushUndoRedoMutationParams(F, S.params), !!F;
- }
- };
- var ss = {
- type: ar.COMMAND,
- id: "doc.command.set-zoom-ratio",
- handler: async (n, e) => {
- var d, h, u;
- const t = n.get(Pt), o = n.get(cn), s = n.get(_n);
- let r = (d = s.getCurrentUniverDocInstance()) == null ? void 0 : d.getUnitId();
- if (!r)
- return false;
- let i = 1;
- if (e && (r = (h = e.documentId) != null ? h : r, i = (u = e.zoomRatio) != null ? u : i), !s.getUniverDocInstance(r))
- return false;
- const c = {
- zoomRatio: i,
- unitId: r
- }, A = Kl(n, c);
- return t.syncExecuteCommand(Ye.id, c) ? (o.pushUndoRedo({
- unitID: r,
- undoMutations: [{ id: Ye.id, params: A }],
- redoMutations: [{ id: Ye.id, params: c }]
- }), true) : false;
- }
- };
- var Ma = {
- id: "doc.table.tab-in-table",
- type: ar.COMMAND,
- handler: async (n, e) => {
- var g;
- const { shift: t } = e, o = n.get(m), s = o.getDocRanges(), r = n.get(Pt), a = n.get(_n).getCurrentUniverDocInstance();
- if (!a)
- return false;
- 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);
- if (h == null || c == null)
- return false;
- let u = null;
- if (t ? u = Kr(h, c, ts.PREV) : u = Kr(h, c, ts.NEXT), u) {
- const { startOffset: f, endOffset: p } = u, m2 = [{
- startOffset: f,
- endOffset: p
- }];
- return o.replaceDocRanges(m2), true;
- }
- return t === false ? await r.executeCommand(Ia.id, {
- position: Eo.BELLOW
- }) : true;
- }
- };
- var lh = Object.defineProperty;
- var dh = Object.getOwnPropertyDescriptor;
- var uh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? dh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && lh(e, t, s), s;
- };
- var Ho = (n, e) => (t, o) => e(t, o, n);
- var rs = class {
- constructor(n, e, t) {
- x(this, "_docContainer");
- x(this, "getComponent", (n2) => {
- if (this._docContainer = n2, !n2.getContentRef().current)
- throw new Error("container is not ready");
- });
- x(this, "changeLocale", (n2) => {
- this._localeService.setLocale(n2);
- });
- this._localeService = n, this._injector = e, this._configService = t;
- }
- getUIConfig() {
- return {
- injector: this._injector,
- config: this._configService.getConfig(Us),
- changeLocale: this.changeLocale,
- getComponent: this.getComponent
- };
- }
- getContentRef() {
- return this._docContainer.getContentRef();
- }
- UIDidMount(n) {
- if (this._docContainer)
- return n(this._docContainer);
- }
- getDocContainer() {
- return this._docContainer;
- }
- };
- rs = uh([
- Ho(0, ot(Vr)),
- Ho(1, ot(Ot)),
- Ho(2, SE)
- ], rs);
- var hh = Object.defineProperty;
- var gh = Object.getOwnPropertyDescriptor;
- var fh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? gh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && hh(e, t, s), s;
- };
- var ph = (n, e) => (t, o) => e(t, o, n);
- var Vn = class extends J0 {
- constructor(e) {
- super();
- x(this, "_docContainerController");
- this._injector = e, this._docContainerController = this._injector.createInstance(rs);
- }
- };
- Vn = fh([
- ph(0, ot(Ot))
- ], Vn);
- var mh = Object.defineProperty;
- var Eh = Object.getOwnPropertyDescriptor;
- var Sh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && mh(e, t, s), s;
- };
- var oi = (n, e) => (t, o) => e(t, o, n);
- var jn = class extends nt {
- constructor(n, e) {
- super(), this._docAutoFormatService = n, this._renderManagerService = e, this._initListTabAutoFormat(), this._initListSpaceAutoFormat(), this._initDefaultEnterFormat(), this._initExitListAutoFormat();
- }
- _initListTabAutoFormat() {
- this.disposeWithMe(
- this._docAutoFormatService.registerAutoFormat({
- id: _t.id,
- match: (n) => {
- var s;
- const { selection: e, paragraphs: t, unit: o } = n;
- if (t.length === 1 && e.startOffset === t[0].paragraphStart && t[0].bullet) {
- const r = (s = o.getBody()) == null ? void 0 : s.paragraphs, i = r == null ? void 0 : r.filter((a) => {
- var c;
- return ((c = a.bullet) == null ? void 0 : c.listId) === t[0].bullet.listId;
- });
- return (i == null ? void 0 : i.findIndex((a) => a.startIndex === t[0].startIndex)) !== 0;
- } else if (t.length > 1 && t.some((r) => r.bullet))
- return true;
- return false;
- },
- // traverse all paragraphs, set paragraph
- getMutations(n) {
- const e = n.commandParams;
- return [{
- id: es.id,
- params: {
- type: e != null && e.shift ? Pn.decrease : Pn.increase
- }
- }];
- },
- priority: 100
- })
- ), this.disposeWithMe(
- this._docAutoFormatService.registerAutoFormat({
- id: _t.id,
- match: (n) => {
- 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();
- return i == null ? false : !!(o && s && zi(i, o, s) || o && !s && o.path.indexOf("cells") > -1);
- },
- getMutations(n) {
- const e = n.commandParams;
- return [{
- id: Ma.id,
- params: {
- shift: !!(e != null && e.shift)
- }
- }];
- },
- priority: 99
- })
- );
- }
- _initListSpaceAutoFormat() {
- this.disposeWithMe(
- this._docAutoFormatService.registerAutoFormat({
- id: Ao.id,
- match: (n) => {
- var r;
- const { selection: e, paragraphs: t, unit: o } = n;
- if (!e.collapsed || t.length !== 1)
- return false;
- const s = (r = o.getBody()) == null ? void 0 : r.dataStream.slice(t[0].paragraphStart, t[0].paragraphEnd - 1);
- return !!(s && Object.keys(ZC).includes(s));
- },
- getMutations(n) {
- var s;
- const { paragraphs: e, unit: t } = n, o = (s = t.getBody()) == null ? void 0 : s.dataStream.slice(e[0].paragraphStart, e[0].paragraphEnd - 1);
- if (o && Object.keys(ZC).includes(o)) {
- const r = ZC[o];
- return [{
- id: da.id,
- params: {
- listType: r,
- paragraph: e[0]
- }
- }];
- }
- return [];
- }
- })
- );
- }
- _initExitListAutoFormat() {
- this.disposeWithMe(
- this._docAutoFormatService.registerAutoFormat({
- id: ln2.id,
- match: (n) => {
- const { paragraphs: e } = n;
- return !!(e.length === 1 && e[0].bullet && e[0].paragraphStart === e[0].paragraphEnd);
- },
- getMutations: (n) => {
- const e = n.paragraphs[0].bullet;
- return e ? e.nestingLevel > 0 ? [{
- id: es.id,
- params: {
- type: Pn.decrease
- }
- }] : [{
- id: pn.id,
- params: {
- listType: n.paragraphs[0].bullet.listType
- }
- }] : [];
- }
- })
- );
- }
- _initDefaultEnterFormat() {
- this.disposeWithMe(
- this._docAutoFormatService.registerAutoFormat({
- id: ln2.id,
- match: () => true,
- getMutations() {
- return [{
- id: Ra2.id
- }];
- },
- priority: -9999
- })
- );
- }
- };
- jn = Sh([
- oi(0, ot(Et)),
- oi(1, Yx)
- ], jn);
- function Ih(n) {
- return n.rows[0].cells[0].sections[0].columns[0].lines[0];
- }
- function Ch(n) {
- const e = n.rows[n.rows.length - 1], t = e.cells[e.cells.length - 1];
- return Mv(t);
- }
- function vh(n, e) {
- const { ed: t } = n, { skeTables: o } = e;
- let s = null;
- for (const r of o.values())
- if (r.st === t + 1) {
- s = r;
- break;
- }
- return s;
- }
- function si(n) {
- const e = n == null ? void 0 : n.parent;
- let t = null, o = null;
- if (n == null || e == null)
- return {
- lineBeforeTable: t,
- lineAfterTable: o
- };
- const { st: s, ed: r } = n, i = e.type === g1.CELL ? [e] : e.parent.pages;
- return l0(i, (a) => {
- a.st === r + 1 ? o = a : a.ed === s - 1 && (t = a);
- }), {
- lineBeforeTable: t,
- lineAfterTable: o
- };
- }
- function _a(n) {
- return n.sections[0].columns[0].lines.length === 0;
- }
- function Pa(n) {
- var i, a;
- const e = n.parent, t = e == null ? void 0 : e.parent, o = t == null ? void 0 : t.tableId;
- if (e == null || t == null)
- return;
- const s = e.cells.indexOf(n);
- let r = t.rows[t.rows.indexOf(e) + 1];
- if (r == null && o.indexOf("#-#")) {
- 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}`;
- if (l)
- for (const h of l) {
- const { skeTables: u } = h;
- if (u.has(d)) {
- const g = u.get(d);
- if (g != null && g.rows.length) {
- r = g.rows.find((f) => !f.isRepeatRow);
- break;
- }
- }
- }
- }
- if (r != null) {
- const c = r.cells[s];
- return _a(c) ? Pa(c) : c;
- }
- }
- function Da(n) {
- var r, i;
- const e = n.parent, t = e == null ? void 0 : e.parent;
- if (e == null || t == null)
- return;
- let o = t.rows[t.rows.indexOf(e) - 1];
- const s = e.cells.indexOf(n);
- if ((o == null || o.isRepeatRow) && t.tableId.indexOf("#-#")) {
- 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}`;
- if (A)
- for (const d of A) {
- const { skeTables: h } = d;
- if (h.has(l)) {
- const u = h.get(l);
- if (u != null && u.rows.length) {
- o = u.rows[u.rows.length - 1];
- break;
- }
- }
- }
- }
- if (o != null) {
- const a = o.cells[s];
- return _a(a) ? Da(a) : a;
- }
- }
- function Rh(n, e) {
- const { st: t } = n, { skeTables: o } = e;
- let s = null;
- for (const r of o.values())
- if (r.ed === t - 1) {
- s = r;
- break;
- }
- return s;
- }
- function bh(n) {
- return n.sections[0].columns[0].lines[0];
- }
- function xh(n) {
- const e = VS(n);
- return e.lines[e.lines.length - 1];
- }
- var Oh = Object.defineProperty;
- var Th = Object.getOwnPropertyDescriptor;
- var yh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Th(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Oh(e, t, s), s;
- };
- var Rn = (n, e) => (t, o) => e(t, o, n);
- var Wn = class extends nt {
- constructor(e, t, o, s) {
- super();
- x(this, "_onInputSubscription");
- this._univerInstanceService = e, this._renderManagerService = t, this._textSelectionManagerService = o, this._commandService = s, this._commandExecutedListener();
- }
- dispose() {
- var e;
- super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
- }
- _commandExecutedListener() {
- const e = [at.id, ct.id];
- this.disposeWithMe(
- this._commandService.onCommandExecuted((t) => {
- if (!e.includes(t.id))
- return;
- const o = t.params;
- switch (t.id) {
- case at.id:
- return this._handleMoveCursor(o.direction);
- case ct.id:
- return this._handleShiftMoveSelection(o.direction);
- default:
- throw new Error("Unknown command");
- }
- })
- );
- }
- // eslint-disable-next-line max-lines-per-function, complexity
- _handleShiftMoveSelection(e) {
- var I, v, R;
- const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
- if (s == null)
- return;
- const r = (I = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : I.with(D).getSkeleton(), i = this._getDocObject();
- if (t == null || r == null || i == null)
- return;
- const {
- startOffset: a,
- endOffset: c,
- style: A,
- collapsed: l,
- direction: d,
- segmentId: h,
- startNodePosition: u,
- endNodePosition: g,
- segmentPage: f
- } = t;
- if (o.length > 1) {
- let S = Number.POSITIVE_INFINITY, C = Number.NEGATIVE_INFINITY;
- for (const T of o)
- S = Math.min(S, T.startOffset), C = Math.max(C, T.endOffset);
- this._textSelectionManagerService.replaceTextRanges([
- {
- startOffset: e === wu.LEFT || e === wu.UP ? C : S,
- endOffset: e === wu.LEFT || e === wu.UP ? S : C,
- style: A
- }
- ], false);
- return;
- }
- const p = l || d === Sg.FORWARD ? a : c;
- let m2 = l || d === Sg.FORWARD ? c : a;
- const E = (v = s.getSelfOrHeaderFooterModel(h).getBody().dataStream.length) != null ? v : Number.POSITIVE_INFINITY;
- if (e === wu.LEFT || e === wu.RIGHT) {
- const S = r.findNodeByCharIndex(m2 - 1, h, f), C = r.findNodeByCharIndex(m2, h, f);
- 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([
- {
- startOffset: p,
- endOffset: m2,
- style: A
- }
- ], false), this._scrollToFocusNodePosition(s.getUnitId(), m2);
- } else {
- 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);
- if (O == null) {
- const b = e === wu.UP ? 0 : E - 2;
- if (b === m2)
- return;
- this._textSelectionManagerService.replaceTextRanges([
- {
- startOffset: p,
- endOffset: b,
- style: A
- }
- ], false);
- return;
- }
- const P = new it2(C, r).getRangePointData(
- O,
- O
- ).cursorList[0];
- this._textSelectionManagerService.replaceTextRanges([
- {
- startOffset: p,
- endOffset: P.endOffset,
- style: A
- }
- ], false), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
- }
- }
- // eslint-disable-next-line max-lines-per-function, complexity
- _handleMoveCursor(e) {
- var E, I, v, R;
- const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
- if (s == null)
- return false;
- const r = (E = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : E.with(D).getSkeleton(), i = this._getDocObject();
- if (t == null || r == null || i == null || o == null)
- return;
- const { startOffset: a, endOffset: c, style: A, collapsed: l, segmentId: d, startNodePosition: h, endNodePosition: u, segmentPage: g } = t, f = s.getSelfOrHeaderFooterModel(d).getBody();
- if (f == null)
- return;
- const p = (I = f.dataStream.length) != null ? I : Number.POSITIVE_INFINITY, m2 = (v = s.getCustomRanges()) != null ? v : [];
- if (e === wu.LEFT || e === wu.RIGHT) {
- let S;
- if (!t.collapsed || o.length > 1) {
- let O = Number.POSITIVE_INFINITY, P = Number.NEGATIVE_INFINITY;
- for (const b of o)
- O = Math.min(O, b.startOffset), P = Math.max(P, b.endOffset);
- S = e === wu.LEFT ? O : P;
- } else {
- const O = r.findNodeByCharIndex(a - 1, d, g), P = r.findNodeByCharIndex(a, d, g), b = r.findNodeByCharIndex(a + 1, d, g);
- 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));
- }
- const C = [
- ln.TABLE_START,
- ln.TABLE_END,
- ln.TABLE_ROW_START,
- ln.TABLE_ROW_END,
- ln.TABLE_CELL_START,
- ln.TABLE_CELL_END,
- ln.SECTION_BREAK
- ];
- if (e === wu.LEFT)
- for (; C.includes(f.dataStream[S]); )
- S--;
- else
- for (; C.includes(f.dataStream[S]); )
- S++;
- m2.filter((O) => O.wholeEntity && O.startIndex < S && O.endIndex >= S).forEach((O) => {
- e === wu.LEFT ? S = Math.min(O.startIndex, S) : S = Math.max(O.endIndex + 1, S);
- }), this._textSelectionManagerService.replaceTextRanges([
- {
- startOffset: Math.max(0, S),
- endOffset: Math.max(0, S),
- style: A
- }
- ], false), this._scrollToFocusNodePosition(s.getUnitId(), S);
- } else {
- const S = r.findNodeByCharIndex(a, d, g), C = r.findNodeByCharIndex(c, d, g), T = i.document.getOffsetConfig(), O = this._getTopOrBottomPosition(
- r,
- e === wu.UP || l ? S : C,
- e === wu.UP || l ? h : u,
- e === wu.DOWN
- );
- if (O == null) {
- let b;
- l ? b = e === wu.UP ? 0 : p - 2 : b = e === wu.UP ? a : c, this._textSelectionManagerService.replaceTextRanges([
- {
- startOffset: Math.max(0, b),
- endOffset: Math.max(0, b),
- style: A
- }
- ], false);
- return;
- }
- const P = new it2(T, r).getRangePointData(
- O,
- O
- ).cursorList[0];
- this._textSelectionManagerService.replaceTextRanges([
- {
- ...P,
- style: A
- }
- ], false), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
- }
- }
- _getTopOrBottomPosition(e, t, o, s, r = false) {
- if (t == null || o == null)
- return;
- const i = this._getGlyphLeftOffsetInLine(t), a = this._getNextOrPrevLine(t, s, r);
- if (a == null)
- return;
- const c = this._matchPositionByLeftOffset(e, a, i, o);
- if (c != null)
- return { ...c, isBack: true };
- }
- _getGlyphLeftOffsetInLine(e) {
- const t = e.parent;
- if (t == null)
- return Number.NEGATIVE_INFINITY;
- const o = t.left, { left: s } = e;
- return o + s;
- }
- _matchPositionByLeftOffset(e, t, o, s) {
- const r = {
- distance: Number.POSITIVE_INFINITY
- };
- for (const a of t.divides) {
- const c = a.left;
- for (const A of a.glyphGroup) {
- if (A.streamType === ln.SECTION_BREAK)
- continue;
- const { left: l } = A, d = c + l, h = Math.abs(o - d);
- h < r.distance && (r.glyph = A, r.distance = h);
- }
- }
- if (r.glyph == null)
- return;
- const { segmentPage: i } = s;
- return e.findPositionByGlyph(r.glyph, i);
- }
- // eslint-disable-next-line max-lines-per-function, complexity
- _getNextOrPrevLine(e, t, o = false) {
- var f, p, m2, E, I, v, R, S, C, T, O, P;
- 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;
- if (s == null || r == null || i == null || a == null || c == null)
- return;
- const A = i.lines.indexOf(r);
- if (A === -1)
- return;
- let l;
- if (c.type === g1.CELL && o) {
- const b = ri(c, t);
- if (b)
- return b;
- }
- if (t === true) {
- l = i.lines[A + 1];
- const b = vh(r, c);
- if (b) {
- const B = Ih(b);
- B && (l = B);
- }
- } else {
- l = i.lines[A - 1];
- const b = Rh(r, c);
- if (b) {
- const B = Ch(b);
- B && (l = B);
- }
- }
- if (l != null)
- return l;
- const d = a.columns.indexOf(i);
- if (d === -1)
- return;
- if (t === true)
- l = (f = a.columns[d + 1]) == null ? void 0 : f.lines[0];
- else {
- const b = (m2 = (p = a.columns) == null ? void 0 : p[d - 1]) == null ? void 0 : m2.lines;
- l = b == null ? void 0 : b[b.length - 1];
- }
- if (l != null)
- return l;
- const h = c.sections.indexOf(a);
- if (h === -1)
- return;
- if (t === true)
- l = (I = (E = c.sections[h - 1]) == null ? void 0 : E.columns[0]) == null ? void 0 : I.lines[0];
- else {
- 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;
- l = M2 == null ? void 0 : M2[M2.length - 1];
- }
- if (l != null)
- return l;
- if (c.type === g1.CELL)
- return ri(c, t);
- const u = c.parent;
- if (u == null)
- return;
- const g = u.pages.indexOf(c);
- if (g !== -1) {
- if (t === true)
- 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];
- else {
- const b = (O = u.pages[g - 1]) == null ? void 0 : O.sections;
- if (b == null)
- return;
- const B = (P = b[b.length - 1]) == null ? void 0 : P.columns, M2 = B[B.length - 1], H = M2 == null ? void 0 : M2.lines;
- l = H[H.length - 1];
- }
- if (l != null)
- return l;
- }
- }
- _scrollToFocusNodePosition(e, t) {
- var s;
- const o = (s = this._renderManagerService.getRenderById(e)) == null ? void 0 : s.with(kn);
- o != null && o.scrollToRange({
- startOffset: t,
- endOffset: t,
- collapsed: true
- });
- }
- _getDocObject() {
- return cA(this._univerInstanceService, this._renderManagerService);
- }
- };
- Wn = yh([
- Rn(0, _n),
- Rn(1, Yx),
- Rn(2, ot(m)),
- Rn(3, Pt)
- ], Wn);
- function ri(n, e) {
- var o, s;
- let t = null;
- if (e === true) {
- const r = Pa(n);
- if (r)
- t = bh(r);
- else {
- const i = (o = n.parent) == null ? void 0 : o.parent, { lineAfterTable: a } = si(i);
- a && (t = a);
- }
- } else {
- const r = Da(n);
- if (r)
- t = xh(r);
- else {
- const i = (s = n.parent) == null ? void 0 : s.parent, { lineBeforeTable: a } = si(i);
- a && (t = a);
- }
- }
- return t;
- }
- var Bh = "univer-create";
- var Mh = "univer-create-item";
- var _h = "univer-create-label";
- var Ph = "univer-create-input";
- var gt2 = {
- create: Bh,
- createItem: Mh,
- createLabel: _h,
- createInput: Ph
- };
- var Dh = ({
- handleRowColChange: n,
- tableCreateParams: e
- }) => {
- const t = W0(Vr), [o, s] = (0, import_react.useState)(3), [r, i] = (0, import_react.useState)(5);
- function a(c, A) {
- s(c), i(A), n(c, A);
- }
- return (0, import_react.useEffect)(() => {
- s(e.rowCount), i(e.colCount);
- }, [e]), w.jsxs("div", { className: gt2.create, children: [
- w.jsxs("div", { className: gt2.createItem, children: [
- w.jsx("span", { className: gt2.createLabel, children: t.t("toolbar.table.rowCount") }),
- w.jsx(
- BO,
- {
- min: 1,
- max: 20,
- precision: 0,
- value: o,
- onChange: (c) => {
- a(c, r);
- },
- className: gt2.createInput
- }
- )
- ] }),
- w.jsxs("div", { className: gt2.createItem, children: [
- w.jsx("span", { className: gt2.createLabel, children: t.t("toolbar.table.colCount") }),
- w.jsx(
- BO,
- {
- min: 1,
- max: 20,
- precision: 0,
- value: r,
- onChange: (c) => {
- a(o, c);
- },
- className: gt2.createInput
- }
- )
- ] })
- ] });
- };
- var wh = Object.defineProperty;
- var Nh = Object.getOwnPropertyDescriptor;
- var Qh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Nh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && wh(e, t, s), s;
- };
- var ii = (n, e) => (t, o) => e(t, o, n);
- var zn = class extends nt {
- constructor(n, e) {
- super(), this._commandService = n, this._componentManager = e, this._initialize();
- }
- _initialize() {
- this._init(), this._registerCommands(), this._initCustomComponents();
- }
- _registerCommands() {
- [
- sr
- ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
- }
- _initCustomComponents() {
- const n = this._componentManager;
- this.disposeWithMe(n.register(Ca, Dh));
- }
- _init() {
- }
- };
- zn = Qh([
- ii(0, Pt),
- ii(1, ot(n1))
- ], zn);
- var ai = 4;
- var Uh = Object.defineProperty;
- var Lh = Object.getOwnPropertyDescriptor;
- var Fh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Lh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Uh(e, t, s), s;
- };
- var bn = (n, e) => (t, o) => e(t, o, n);
- function wa(n, e) {
- const t = ci(n.left, n.top, e), o = ci(n.right, n.bottom, e);
- return {
- left: t.x,
- top: t.y,
- right: o.x,
- bottom: o.y
- };
- }
- function ci(n, e, t) {
- const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
- if (!r)
- return {
- x: n,
- y: e
- };
- const { viewportScrollX: i, viewportScrollY: a } = r, c = (n - i) * o, A = (e - a) * s;
- return {
- x: c,
- y: A
- };
- }
- function Ai(n, e, t) {
- const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
- if (!r)
- return {
- x: n,
- y: e
- };
- const { viewportScrollX: i, viewportScrollY: a } = r, c = n / o + i, A = e / s + a;
- return {
- x: c,
- y: A
- };
- }
- var ko = (n, e) => {
- 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;
- if (!a || !i)
- return;
- 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);
- return Bs(S).map((O) => wa(O, t)).map((O) => ({
- left: (O.left + l * I) * E + p,
- right: (O.right + l * I) * E + p,
- top: (O.top + d * v) * E + f,
- bottom: (O.bottom + d * v) * E + f
- }));
- };
- var is = class extends nt {
- constructor(n, e, t, o) {
- super(), this._globalPopupManagerService = n, this._renderManagerService = e, this._univerInstanceService = t, this._commandService = o;
- }
- _createObjectPositionObserver(n, e) {
- const t = () => {
- const { scene: a, engine: c } = e, { left: A, top: l, width: d, height: h } = n, u = {
- left: A,
- right: A + d,
- top: l,
- bottom: l + h
- }, 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;
- return {
- left: m2.left * R + I,
- right: m2.right * R + I,
- top: m2.top * R + E,
- bottom: m2.bottom * R + E
- };
- }, o = t(), s = new BehaviorSubject(o), r = new Mi();
- r.add(this._commandService.onCommandExecuted((a) => {
- if (a.id === Ye.id || a.id === M.id) {
- const c = t();
- c && s.next(c);
- }
- }));
- const i = e.scene.getViewport(Xe.VIEW_MAIN);
- return i && r.add(i.onScrollAfter$.subscribeEvent(() => {
- s.next(t());
- })), {
- position: o,
- position$: s,
- disposable: r
- };
- }
- _createRangePositionObserver(n, e) {
- var i;
- const t = (i = ko(n, e)) != null ? i : [], o = new BehaviorSubject(t), s = new Mi();
- s.add(this._commandService.onCommandExecuted((a) => {
- if ((a.id === Ye.id || a.id === M.id) && a.params.unitId === e.unitId) {
- const A = ko(n, e);
- A && o.next(A);
- }
- }));
- const r = e.scene.getViewport(Xe.VIEW_MAIN);
- return r && s.add(r.onScrollAfter$.subscribeEvent(() => {
- const a = ko(n, e);
- a && o.next(a);
- })), {
- positions: t,
- positions$: o,
- disposable: s
- };
- }
- // #region attach to object
- /**
- * attach a popup to canvas object
- * @param targetObject target canvas object
- * @param popup popup item
- * @returns disposable
- */
- attachPopupToObject(n, e, t) {
- const o = this._renderManagerService.getRenderById(t);
- if (!o)
- throw new Error(`Current render not found, unitId: ${t}`);
- const { position: s, position$: r, disposable: i } = this._createObjectPositionObserver(n, o), a = this._globalPopupManagerService.addPopup({
- ...e,
- unitId: t,
- subUnitId: "default",
- anchorRect: s,
- anchorRect$: r,
- canvasElement: o.engine.getCanvasElement()
- });
- return {
- dispose: () => {
- this._globalPopupManagerService.removePopup(a), r.complete(), i.dispose();
- }
- };
- }
- // #endregion
- // #region attach to range
- /**
- * attach a popup to doc range
- * @param range doc range
- * @param popup popup item
- * @param unitId unit id
- * @returns disposable
- */
- attachPopupToRange(n, e, t) {
- if (!this._univerInstanceService.getUnit(t))
- throw new Error(`Document not found, unitId: ${t}`);
- const { direction: s = "top", multipleDirection: r } = e, i = this._renderManagerService.getRenderById(t);
- if (!i)
- throw new Error(`Current render not found, unitId: ${t}`);
- 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({
- ...e,
- unitId: t,
- subUnitId: "default",
- anchorRect: s.includes("top") ? a[0] : a[a.length - 1],
- anchorRect$: l,
- excludeRects: a,
- excludeRects$: c,
- direction: s.includes("top") || s.includes("bottom") ? a.length > 1 ? r : s : "bottom",
- canvasElement: i.engine.getCanvasElement()
- });
- return {
- dispose: () => {
- this._globalPopupManagerService.removePopup(d), c.complete(), A.dispose();
- },
- canDispose: () => this._globalPopupManagerService.activePopupId !== d
- };
- }
- // #endregion
- };
- is = Fh([
- bn(0, ot(c3)),
- bn(1, Yx),
- bn(2, _n),
- bn(3, Pt)
- ], is);
- var Hh = Object.defineProperty;
- var kh = Object.getOwnPropertyDescriptor;
- var Vh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? kh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Hh(e, t, s), s;
- };
- var jh = (n, e) => (t, o) => e(t, o, n);
- var Wh = (n, e, t, o) => {
- var h, u, g, f, p;
- const s = t.findNodePositionByCharIndex(n.startOffset, true, n.segmentId, o), r = t.getSkeletonData();
- let i = n.endOffset;
- if (n.segmentId) {
- 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];
- m2 && (i = Math.min(m2.ed, i));
- }
- const a = t.findNodePositionByCharIndex(i, true, n.segmentId, o);
- if (!a || !s)
- return;
- const c = e.getOffsetConfig(), A = new it2(c, t), { borderBoxPointGroup: l } = A.getRangePointData(s, a);
- return Bs(l).map((m2) => ({
- top: m2.top + c.docsTop - ai,
- bottom: m2.bottom + c.docsTop + ai,
- left: m2.left + c.docsLeft,
- right: m2.right + c.docsLeft
- }));
- };
- var zh = (n, e, t, o = -1) => {
- const s = t.findPositionByGlyph(n, o);
- if (!s)
- return;
- const r = e.getOffsetConfig(), i = { ...s, isBack: true }, a = new it2(r, t), { borderBoxPointGroup: c } = a.getRangePointData(i, i), l = Bs(c)[0];
- return {
- top: l.top + r.docsTop,
- bottom: l.bottom + r.docsTop,
- left: l.left + r.docsLeft,
- right: l.left + r.docsLeft + n.width
- };
- };
- var Gn = class extends nt {
- constructor(e, t) {
- super();
- x(this, "_hoverCustomRanges$", new BehaviorSubject([]));
- 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))));
- x(this, "_clickCustomRanges$", new Subject());
- x(this, "clickCustomRanges$", this._clickCustomRanges$.asObservable());
- x(this, "_hoverBullet$", new Subject());
- 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))));
- x(this, "_clickBullet$", new Subject());
- x(this, "clickBullets$", this._clickBullet$.asObservable());
- x(this, "_customRangeDirty", true);
- x(this, "_bulletDirty", true);
- x(this, "_customRangeBounds", []);
- x(this, "_bulletBounds", []);
- this._context = e, this._docSkeletonManagerService = t, this._initResetDirty(), this._initEvents(), this._initPointer();
- }
- get _skeleton() {
- return this._docSkeletonManagerService.getSkeleton();
- }
- get _documents() {
- return this._context.mainComponent;
- }
- dispose() {
- this._hoverCustomRanges$.complete(), this._clickCustomRanges$.complete(), super.dispose();
- }
- _initPointer() {
- let e = p1.TEXT;
- this.disposeWithMe(this.hoverCustomRanges$.subscribe((t) => {
- t.length ? (e = this._context.scene.getCursor(), this._context.scene.setCursor(p1.POINTER)) : this._context.scene.setCursor(e);
- }));
- }
- _initResetDirty() {
- this.disposeWithMe(this._skeleton.dirty$.subscribe(() => {
- this._customRangeDirty = true, this._bulletDirty = true;
- })), this.disposeWithMe(
- DR(this._context.engine.onTransformChange$).pipe(
- filter((e) => e.type === C1.resize)
- ).subscribe(() => {
- this._customRangeDirty = true, this._bulletDirty = true;
- })
- );
- }
- _initEvents() {
- this.disposeWithMe(DR(this._context.scene.onPointerMove$).pipe(throttleTime(30)).subscribe((o) => {
- this._hoverCustomRanges$.next(
- this._calcActiveRanges(o)
- ), this._hoverBullet$.next(
- this._calcActiveBullet(o)
- );
- })), this.disposeWithMe(this._context.scene.onPointerEnter$.subscribeEvent(() => {
- this._hoverBullet$.next(null), this._hoverCustomRanges$.next([]);
- }));
- const e = DR(this._context.mainComponent.onPointerDown$), t = DR(this._context.scene.onPointerUp$);
- this.disposeWithMe(e.pipe(
- switchMap((o) => t.pipe(take(1), map((s) => ({ down: o, up: s })))),
- filter(({ down: o, up: s }) => o.target === s.target && s.timeStamp - o.timeStamp < 300)
- // filter(({ down, up }) => down.offsetX === up.offsetX && down.offsetY === up.offsetY)
- ).subscribe(({ down: o }) => {
- if (o.button === 2)
- return;
- const s = this._calcActiveRanges(o);
- s.length && this._clickCustomRanges$.next(s.pop());
- const r = this._calcActiveBullet(o);
- r && this._clickBullet$.next(r);
- }));
- }
- _buildCustomRangeBoundsBySegment(e, t = -1) {
- var r, i, a;
- const o = (a = (i = (r = this._context.unit.getSelfOrHeaderFooterModel(e)) == null ? void 0 : r.getBody()) == null ? void 0 : i.customRanges) != null ? a : [], s = [];
- return o.forEach((c) => {
- const A = {
- startOffset: c.startIndex,
- endOffset: c.endIndex + 1,
- collapsed: false,
- segmentId: e
- }, l = Wh(A, this._documents, this._skeleton, t);
- if (!l)
- return null;
- s.push({
- customRange: c,
- rects: l,
- segmentId: e,
- segmentPageIndex: t
- });
- }), s;
- }
- _buildCustomRangeBounds() {
- var t;
- if (!this._customRangeDirty)
- return;
- this._customRangeDirty = false;
- const e = [];
- e.push(...this._buildCustomRangeBoundsBySegment()), (t = this._skeleton.getSkeletonData()) == null || t.pages.forEach((o, s) => {
- o.headerId && e.push(...this._buildCustomRangeBoundsBySegment(o.headerId, s)), o.footerId && e.push(...this._buildCustomRangeBoundsBySegment(o.footerId, s));
- }), this._customRangeBounds = e;
- }
- _calcActiveRanges(e) {
- this._buildCustomRangeBounds();
- const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
- return this._customRangeBounds.filter((a) => a.rects.some((c) => {
- const { left: A, right: l, top: d, bottom: h } = c;
- return s >= A && s <= l && r >= d && r <= h;
- })).map(
- (a) => ({
- segmentId: a.segmentId,
- range: a.customRange,
- segmentPageIndex: a.segmentPageIndex,
- rects: a.rects
- })
- );
- }
- _buildBulletBoundsBySegment(e, t = -1) {
- var c, A, l, d, h;
- 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();
- if (!i)
- return r;
- const a = (u) => {
- var g, f, p;
- for (const m2 of u) {
- const E = [...m2.sections];
- if (m2.skeTables) {
- const I = Array.from(m2.skeTables.values());
- E.push(...I.map((v) => v.rows.map((R) => R.cells.map((S) => S.sections))).flat(4));
- }
- for (const I of E)
- for (const v of I.columns)
- for (const R of v.lines)
- if (R.paragraphStart) {
- const S = s.find((C) => C.startIndex === R.paragraphIndex);
- if (S) {
- 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];
- if (!T)
- continue;
- const O = zh(T, this._documents, this._skeleton, t);
- if (!O)
- continue;
- r.push({
- rect: O,
- segmentId: e,
- segmentPageIndex: t,
- paragraph: S
- });
- }
- }
- }
- return r;
- };
- if (e) {
- 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();
- return u ? a(Array.from(u)) : r;
- }
- return a(i.pages);
- }
- _buildBulletBounds() {
- var e;
- this._bulletDirty && (this._bulletDirty = false, this._bulletBounds = [], this._bulletBounds.push(...this._buildBulletBoundsBySegment()), (e = this._skeleton.getSkeletonData()) == null || e.pages.forEach((t, o) => {
- t.headerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.headerId, o)), t.footerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.footerId, o));
- }));
- }
- _calcActiveBullet(e) {
- this._buildBulletBounds();
- const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
- return this._bulletBounds.find((a) => {
- const { left: c, right: A, top: l, bottom: d } = a.rect;
- return s >= c && s <= A && r >= l && r <= d;
- });
- }
- };
- Gn = Vh([
- jh(1, ot(D))
- ], Gn);
- var Gh = Object.defineProperty;
- var Yh = Object.getOwnPropertyDescriptor;
- var qh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Yh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Gh(e, t, s), s;
- };
- var xn = (n, e) => (t, o) => e(t, o, n);
- var as = class extends nt {
- constructor(n, e, t, o, s) {
- super(), this._context = n, this._docSkeletonManagerService = e, this._commandService = t, this._docEventManagerService = o, this._textSelectionManagerService = s, this._initPointerDownObserver(), this._initHoverCursor();
- }
- _initPointerDownObserver() {
- this._docEventManagerService.clickBullets$.subscribe((n) => {
- const e = this._textSelectionManagerService.getTextRanges();
- this._commandService.executeCommand(Ns.id, {
- index: n.paragraph.startIndex,
- segmentId: n.segmentId,
- textRanges: e
- });
- });
- }
- _initHoverCursor() {
- this.disposeWithMe(
- this._docEventManagerService.hoverBullet$.subscribe((n) => {
- n ? this._context.mainComponent.setCursor(p1.POINTER) : this._context.mainComponent.setCursor(p1.TEXT);
- })
- );
- }
- _getTransformCoordForDocumentOffset(n, e, t, o) {
- const { documentTransform: s } = n.getOffsetConfig(), r = e.transformVector2SceneCoord($.FromArray([t, o]));
- if (r)
- return s.clone().invert().applyPoint(r);
- }
- };
- as = qh([
- xn(1, ot(D)),
- xn(2, Pt),
- xn(3, ot(Gn)),
- xn(4, ot(m))
- ], as);
- var Kh = Object.defineProperty;
- var Xh = Object.getOwnPropertyDescriptor;
- var Jh = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Xh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Kh(e, t, s), s;
- };
- var Zt = (n, e) => (t, o) => e(t, o, n);
- var Yn = class extends J0 {
- constructor(n, e, t, o, s, r) {
- super(), this._context = n, this._commandService = e, this._docClipboardService = t, this._docSelectionRenderService = o, this._contextService = s, this._editorService = r, this._init();
- }
- _init() {
- this._initLegacyPasteCommand();
- }
- _initLegacyPasteCommand() {
- var n;
- (n = this._docSelectionRenderService) == null || n.onPaste$.pipe(takeUntil(this.dispose$)).subscribe((e) => {
- var c, A, l;
- if (!Io(this._contextService))
- return;
- e.event.preventDefault();
- const t = e.event;
- let o = (c = t.clipboardData) == null ? void 0 : c.getData(mr);
- const s = (A = t.clipboardData) == null ? void 0 : A.getData(vr), r = [
- Xl,
- ql,
- Ql,
- Yl
- ], i = [...((l = t.clipboardData) == null ? void 0 : l.items) || []].filter((d) => r.includes(d.type)).map((d) => d.getAsFile()).filter((d) => !!d);
- this._editorService.getEditor(this._context.unitId) && (o != null ? o : "").indexOf("</table>") > -1 && (o = ""), this._docClipboardService.legacyPaste({ html: o, text: s, files: i });
- });
- }
- };
- Yn = Jh([
- Zt(1, Pt),
- Zt(2, Sn),
- Zt(3, ot(Se)),
- Zt(4, fs),
- Zt(5, He2)
- ], Yn);
- var Zh = Object.defineProperty;
- var $h = Object.getOwnPropertyDescriptor;
- var eg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? $h(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Zh(e, t, s), s;
- };
- var li = (n, e) => (t, o) => e(t, o, n);
- var tg = [
- Wd,
- iu,
- su,
- Hd
- ];
- var cs = class extends nt {
- constructor(n, e, t) {
- super(), this._context = n, this._contextMenuService = e, this._commandService = t, tg.includes(this._context.unitId) || (this._initPointerDown(), this._initEditChange());
- }
- _initPointerDown() {
- var t, o;
- const e = ((o = (t = this._context) == null ? void 0 : t.mainComponent) == null ? void 0 : o.onPointerDown$).subscribeEvent((s) => {
- s.button === 2 && this._contextMenuService.triggerContextMenu(s, P1.MAIN_AREA);
- });
- this.disposeWithMe(e);
- }
- _initEditChange() {
- this.disposeWithMe(
- this._commandService.onCommandExecuted((n) => {
- n.id === M.id && this._contextMenuService.visible && this._contextMenuService.hideContextMenu();
- })
- );
- }
- };
- cs = eg([
- li(1, Wt),
- li(2, Pt)
- ], cs);
- var ng = Object.defineProperty;
- var og = Object.getOwnPropertyDescriptor;
- var sg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? og(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && ng(e, t, s), s;
- };
- var xt = (n, e) => (t, o) => e(t, o, n);
- var qn = class extends nt {
- constructor(e, t, o, s, r, i, a) {
- super();
- x(this, "_initialEditors", /* @__PURE__ */ new Set());
- this._context = e, this._univerInstanceService = t, this._editorService = o, this._commandService = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._renderManagerService = a, this._initialize();
- }
- _initialize() {
- this._editorService.getAllEditor().forEach((e) => {
- const t = e.getEditorId();
- t === this._context.unitId && (this._initialEditors.has(t) || (this._initialEditors.add(t), this._resize(t)));
- }), this._commandExecutedListener(), this._initialBlur(), this._initialFocus();
- }
- _resize(e) {
- if (e == null)
- return;
- const t = this._editorService.getEditor(e);
- if ((t == null ? void 0 : t.cancelDefaultResizeListener) === true)
- return;
- const o = this._univerInstanceService.getUniverDocInstance(e);
- if (!o)
- return;
- const s = this._docSkeletonManagerService.getSkeleton();
- if (t == null || t.render == null || s == null || o == null)
- return;
- s.calculate();
- const { marginTop: r = 0, marginBottom: i = 0, marginLeft: a = 0, marginRight: c = 0 } = o.getSnapshot().documentStyle, { scene: A, mainComponent: l } = t.render;
- let { actualHeight: d, actualWidth: h } = s.getActualSize();
- d += r + i, h += a + c;
- const { width: u, height: g } = t.getBoundingClientRect(), f = Math.max(h, u), p = Math.max(d, g);
- A.transformByState({
- width: f,
- height: p
- }), l == null || l.resize(f, p);
- }
- _initialBlur() {
- this.disposeWithMe(
- this._editorService.blur$.subscribe(() => {
- this._docSelectionRenderService.blur();
- })
- ), this.disposeWithMe(
- this._docSelectionRenderService.onBlur$.subscribe(() => {
- const { unitId: e } = this._context, t = this._editorService.getEditor(e), o = this._editorService.getFocusEditor();
- t == null || t.isSheetEditor() || o && o.getEditorId() === e || e.includes("range_selector") || e.includes("embedding_formula_editor") || this._editorService.blur();
- })
- );
- }
- _initialFocus() {
- const e = [
- "univer-formula-search",
- "univer-formula-help",
- "formula-help-decorator",
- "univer-formula-help-param"
- ];
- this.disposeWithMe(
- fromEvent(window, "mousedown").subscribe((o) => {
- const r = o.target.classList[0] || "";
- NC(r, e) && o.stopPropagation();
- })
- ), this._univerInstanceService.getAllUnitsForType(Fe.UNIVER_SHEET).forEach((o) => {
- const s = o.getUnitId(), r = this._renderManagerService.getRenderById(s), i = r == null ? void 0 : r.engine.getCanvas().getCanvasEle();
- i != null && fromEvent(i, "mousedown").subscribe((a) => {
- a.stopPropagation();
- });
- });
- }
- /**
- * Listen to document edits to refresh the size of the formula editor.
- */
- _commandExecutedListener() {
- const e = [M.id];
- this.disposeWithMe(
- this._commandService.onCommandExecuted((t) => {
- if (e.includes(t.id)) {
- const o = t.params, { unitId: s } = o;
- if (this._editorService.isSheetEditor(s) || s !== this._context.unitId)
- return;
- const r = this._editorService.getEditor(s);
- r && !r.params.scrollBar && this._resize(s);
- }
- })
- );
- }
- };
- qn = sg([
- xt(1, _n),
- xt(2, He2),
- xt(3, Pt),
- xt(4, ot(Se)),
- xt(5, ot(D)),
- xt(6, Yx)
- ], qn);
- var rg = Object.defineProperty;
- var ig = Object.getOwnPropertyDescriptor;
- var ag = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? ig(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && rg(e, t, s), s;
- };
- var On = (n, e) => (t, o) => e(t, o, n);
- var As = class extends nt {
- constructor(e, t, o, s, r) {
- super();
- x(this, "_previousIMEContent", "");
- x(this, "_isCompositionStart", true);
- x(this, "_onStartSubscription");
- x(this, "_onUpdateSubscription");
- x(this, "_onEndSubscription");
- this._context = e, this._docSelectionRenderService = t, this._docImeInputManagerService = o, this._docSkeletonManagerService = s, this._commandService = r, this._initialize();
- }
- dispose() {
- var e, t, o;
- (e = this._onStartSubscription) == null || e.unsubscribe(), (t = this._onUpdateSubscription) == null || t.unsubscribe(), (o = this._onEndSubscription) == null || o.unsubscribe();
- }
- _initialize() {
- this._initialOnCompositionstart(), this._initialOnCompositionUpdate(), this._initialOnCompositionend();
- }
- _initialOnCompositionstart() {
- this._onStartSubscription = this._docSelectionRenderService.onCompositionstart$.subscribe((e) => {
- if (e == null)
- return;
- this._resetIME();
- const { activeRange: t } = e;
- t != null && this._docImeInputManagerService.setActiveRange(re.deepClone(t));
- });
- }
- _initialOnCompositionUpdate() {
- this._onUpdateSubscription = this._docSelectionRenderService.onCompositionupdate$.subscribe((e) => {
- this._updateContent(e, true);
- });
- }
- _initialOnCompositionend() {
- this._onEndSubscription = this._docSelectionRenderService.onCompositionend$.subscribe((e) => {
- this._updateContent(e, false);
- });
- }
- async _updateContent(e, t) {
- if (e == null)
- return;
- const o = this._context.unitId, s = this._docSkeletonManagerService.getSkeleton(), { event: r, activeRange: i } = e;
- if (s == null || i == null)
- return;
- const c = r.data;
- c === this._previousIMEContent && t || (await this._commandService.executeCommand(Ba.id, {
- unitId: o,
- newText: c,
- oldTextLen: this._previousIMEContent.length,
- isCompositionStart: this._isCompositionStart,
- isCompositionEnd: !t
- }), t ? (this._isCompositionStart && (this._isCompositionStart = false), this._previousIMEContent = c) : this._resetIME());
- }
- _resetIME() {
- this._previousIMEContent = "", this._isCompositionStart = true, this._docImeInputManagerService.clearUndoRedoMutationParamsCache(), this._docImeInputManagerService.setActiveRange(null);
- }
- };
- As = ag([
- On(1, ot(Se)),
- On(2, ot(Ro)),
- On(3, ot(D)),
- On(4, Pt)
- ], As);
- var cg = Object.defineProperty;
- var Ag2 = Object.getOwnPropertyDescriptor;
- var lg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Ag2(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && cg(e, t, s), s;
- };
- var Tn = (n, e) => (t, o) => e(t, o, n);
- var ls = class extends nt {
- constructor(e, t, o, s, r) {
- super();
- x(this, "_onInputSubscription");
- this._context = e, this._docSelectionRenderService = t, this._docSkeletonManagerService = o, this._commandService = s, this._docMenuStyleService = r, this._init();
- }
- dispose() {
- var e;
- super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
- }
- _init() {
- this._initialNormalInput();
- }
- _initialNormalInput() {
- this._onInputSubscription = this._docSelectionRenderService.onInput$.subscribe(async (e) => {
- var p, m2, E;
- if (e == null)
- return;
- const { unitId: t } = this._context, { event: o, content: s = "", activeRange: r } = e, i = o, a = this._docSkeletonManagerService.getSkeleton();
- if (i.data == null || a == null || r == null)
- return;
- 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);
- await this._commandService.executeCommand(Vs.id, {
- unitId: t,
- body: {
- dataStream: s,
- textRuns: g ? [
- {
- ...g,
- st: 0,
- ed: s.length
- }
- ] : [],
- customRanges: u ? [{
- ...u,
- startIndex: 0,
- endIndex: s.length - 1
- }] : [],
- customDecorations: f.map((I) => ({
- ...I,
- startIndex: 0,
- endIndex: s.length - 1
- }))
- },
- range: r,
- segmentId: c
- }), s === " " && await this._commandService.executeCommand(Ao.id);
- });
- }
- };
- ls = lg([
- Tn(1, ot(Se)),
- Tn(2, ot(D)),
- Tn(3, Pt),
- Tn(4, ot(Je))
- ], ls);
- var ar2 = class extends nt {
- constructor(e) {
- super(), this._context = e;
- }
- calculatePagePosition() {
- var v, R;
- 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;
- if (a == null || c === Number.POSITIVE_INFINITY || A === Number.POSITIVE_INFINITY)
- return;
- const { width: h, height: u } = a;
- let g = 0, f = d, p = 0, m2 = 0, E = Number.POSITIVE_INFINITY;
- 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);
- const I = r.getViewport(Xe.VIEW_MAIN);
- return E !== Number.POSITIVE_INFINITY && I != null && I.scrollToViewportPos({
- viewportScrollX: E
- }), this;
- }
- };
- var dg = Object.defineProperty;
- var ug = Object.getOwnPropertyDescriptor;
- var hg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? ug(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && dg(e, t, s), s;
- };
- var di = (n, e) => (t, o) => e(t, o, n);
- var ds = class extends nt {
- constructor(n, e, t) {
- super(), this._context = n, this._docPageLayoutService = e, this._textSelectionManagerService = t;
- const o = this._context.unitId;
- if (zd(o) && o !== Hd)
- return this;
- this._initResize();
- }
- _initResize() {
- this.disposeWithMe(
- DR(this._context.engine.onTransformChange$).pipe(
- filter((n) => n.type === C1.resize),
- throttleTime(0, animationFrameScheduler)
- ).subscribe(() => {
- this._docPageLayoutService.calculatePagePosition(), this._textSelectionManagerService.refreshSelection();
- })
- );
- }
- };
- ds = hg([
- di(1, ot(ar2)),
- di(2, ot(m))
- ], ds);
- var gg = Object.defineProperty;
- var fg = Object.getOwnPropertyDescriptor;
- var pg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? fg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && gg(e, t, s), s;
- };
- var Ot2 = (n, e) => (t, o) => e(t, o, n);
- var us = class extends nt {
- constructor(e, t, o, s, r, i, a) {
- super();
- x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
- this._context = e, this._commandService = t, this._editorService = o, this._instanceSrv = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._docSelectionManagerService = a, this._initialize();
- }
- _initialize() {
- this._init(), this._skeletonListener(), this._commandExecutedListener(), this._refreshListener(), this._syncSelection();
- }
- _init() {
- const { unitId: e } = this._context, t = rt2(this._context);
- t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
- }
- _refreshListener() {
- this.disposeWithMe(
- this._docSelectionManagerService.refreshSelection$.subscribe((e) => {
- if (e == null)
- return;
- const { unitId: t, docRanges: o, isEditing: s, options: r } = e;
- t === this._context.unitId && (this._docSelectionRenderService.removeAllRanges(), this._docSelectionRenderService.addDocRanges(o, s, r));
- })
- );
- }
- _syncSelection() {
- this.disposeWithMe(
- this._docSelectionRenderService.textSelectionInner$.subscribe((e) => {
- e != null && this._docSelectionManagerService.__replaceTextRangesWithNoRefresh(e, {
- unitId: this._context.unitId,
- subUnitId: this._context.unitId
- });
- })
- );
- }
- // eslint-disable-next-line max-lines-per-function
- _initialMain(e) {
- const t = rt2(this._context), { document: o, scene: s } = t;
- this.disposeWithMe(o.onPointerEnter$.subscribeEvent(() => {
- this._isEditorReadOnly(e) || (o.cursor = p1.TEXT);
- })), this.disposeWithMe(o.onPointerLeave$.subscribeEvent(() => {
- o.cursor = p1.DEFAULT, s.resetCursor();
- })), this.disposeWithMe(o.onPointerDown$.subscribeEvent((r, i) => {
- if (this._isEditorReadOnly(e))
- return;
- const a = this._instanceSrv.getCurrentUnitForType(Fe.UNIVER_DOC);
- (a == null ? void 0 : a.getUnitId()) !== e && this._instanceSrv.setCurrentUnitForType(e);
- const c = this._docSkeletonManagerService.getSkeleton(), { offsetX: A, offsetY: l } = r, d = this._getTransformCoordForDocumentOffset(A, l);
- if (d != null) {
- const {
- pageLayoutType: h = Y2.VERTICAL,
- pageMarginLeft: u,
- pageMarginTop: g
- } = o.getOffsetConfig(), { editArea: f } = c.findEditAreaByCoord(
- d,
- h,
- u,
- g
- ), p = this._docSkeletonManagerService.getViewModel(), m2 = p.getEditArea();
- m2 !== n3.BODY && f !== n3.BODY && f !== m2 && p.setEditArea(f);
- }
- if (this._docSelectionRenderService.__onPointDown(r), this._editorService.getEditor(e)) {
- this._setEditorFocus(e);
- const { offsetX: h, offsetY: u } = r;
- setTimeout(() => {
- e !== this._editorService.getFocusId() && (this._setEditorFocus(e), this._docSelectionRenderService.setCursorManually(h, u));
- }, 0);
- }
- r.button !== 2 && i.stopPropagation();
- })), this.disposeWithMe(o.onDblclick$.subscribeEvent((r) => {
- this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleDblClick(r);
- })), this.disposeWithMe(o.onTripleClick$.subscribeEvent((r) => {
- this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleTripleClick(r);
- }));
- }
- _getTransformCoordForDocumentOffset(e, t) {
- const o = rt2(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
- if (a == null)
- return;
- const c = a.transformVector2SceneCoord($.FromArray([e, t]));
- return i.clone().invert().applyPoint(c);
- }
- _isEditorReadOnly(e) {
- const t = this._editorService.getEditor(e);
- return t ? t.isReadOnly() : false;
- }
- _setEditorFocus(e) {
- this._editorService.focus(e);
- }
- _commandExecutedListener() {
- const e = [Ye.id];
- this.disposeWithMe(
- this._commandService.onCommandExecuted((t) => {
- var o;
- if (e.includes(t.id)) {
- const s = t.params, { unitId: r } = s, i = (o = this._docSelectionManagerService.__getCurrentSelection()) == null ? void 0 : o.unitId;
- if (r !== i)
- return;
- this._docSelectionManagerService.refreshSelection();
- }
- })
- );
- }
- _skeletonListener() {
- this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((e) => {
- if (!e)
- return;
- const { unitId: t } = this._context;
- if (!zd(t)) {
- this._docSelectionRenderService.focus();
- const r = this._context.unit.getSnapshot(), i = ea(r);
- this._docSelectionManagerService.replaceDocRanges([
- {
- startOffset: i,
- endOffset: i
- }
- ], {
- unitId: t,
- subUnitId: t
- }, false);
- }
- }));
- }
- };
- us = pg([
- Ot2(1, Pt),
- Ot2(2, He2),
- Ot2(3, _n),
- Ot2(4, ot(Se)),
- Ot2(5, ot(D)),
- Ot2(6, ot(m))
- ], us);
- var mg = Object.defineProperty;
- var Eg = Object.getOwnPropertyDescriptor;
- var Sg2 = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Eg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && mg(e, t, s), s;
- };
- var ft = (n, e) => (t, o) => e(t, o, n);
- var hs = class extends nt {
- constructor(n, e, t, o, s, r, i, a) {
- 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);
- }
- _initRenderRefresher() {
- this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
- if (n == null)
- return;
- const { unitId: e, scene: t } = this._context;
- this._editorService.isEditor(e) || this.disposeWithMe(t.onMouseWheel$.subscribeEvent((o) => {
- if (!o.ctrlKey || !this._contextService.getContextValue(Nr))
- return;
- const s = this._univerInstanceService.getCurrentUniverDocInstance();
- if (!s)
- return;
- const { documentFlavor: r } = s.getSnapshot().documentStyle;
- if (r === ku.MODERN)
- return;
- const i = Math.abs(o.deltaX);
- let a = i < 40 ? 0.2 : i < 80 ? 0.4 : 0.2;
- a *= o.deltaY > 0 ? -1 : 1, t.scaleX < 1 && (a /= 2);
- const c = s.zoomRatio;
- let A = +Number.parseFloat(`${c + a}`).toFixed(1);
- A = A >= 4 ? 4 : A <= 0.1 ? 0.1 : A, this._commandService.executeCommand(ss.id, {
- zoomRatio: A,
- unitId: s.getUnitId()
- }), o.preventDefault();
- }));
- });
- }
- _initSkeletonListener() {
- this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
- if (n == null)
- return;
- const e = this._univerInstanceService.getCurrentUniverDocInstance();
- if (!e)
- return;
- const t = e.zoomRatio || 1;
- this.updateViewZoom(t, false);
- }));
- }
- _initCommandExecutedListener() {
- const n = [Ye.id];
- this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
- if (n.includes(e.id) && e.params.unitId === this._context.unitId) {
- const o = this._context.unit.zoomRatio || 1;
- this.updateViewZoom(o);
- }
- })), this.disposeWithMe(
- this._commandService.beforeCommandExecuted((e) => {
- e.id === Co.id && this._commandService.executeCommand(ss.id, {
- zoomRatio: 1,
- unitId: this._context.unitId
- });
- })
- );
- }
- updateViewZoom(n, e = true) {
- var o;
- const t = rt2(this._context);
- 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();
- }
- };
- hs = Sg2([
- ft(1, fs),
- ft(2, ot(D)),
- ft(3, _n),
- ft(4, Pt),
- ft(5, ot(m)),
- ft(6, He2),
- ft(7, ot(ar2))
- ], hs);
- var Ig = Object.defineProperty;
- var Cg = Object.getOwnPropertyDescriptor;
- var vg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Cg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Ig(e, t, s), s;
- };
- var $t = (n, e) => (t, o) => e(t, o, n);
- var ui = 300;
- var Kn = class extends J0 {
- constructor(e, t, o, s, r) {
- super();
- x(this, "_docStateChange$", new BehaviorSubject(null));
- x(this, "docStateChange$", this._docStateChange$.asObservable());
- x(this, "_historyStateCache", /* @__PURE__ */ new Map());
- x(this, "_changeStateCache", /* @__PURE__ */ new Map());
- x(this, "_historyTimer", null);
- x(this, "_changeStateCacheTimer", null);
- this._undoRedoService = e, this._commandService = t, this._univerInstanceService = o, this._docStateEmitService = s, this._renderManagerService = r, this._initialize(), this._listenDocStateChange();
- }
- getStateCache(e) {
- var t, o;
- return {
- history: (t = this._historyStateCache.get(e)) != null ? t : [],
- collaboration: (o = this._changeStateCache.get(e)) != null ? o : []
- };
- }
- setStateCache(e, t) {
- this._historyStateCache.set(e, t.history), this._changeStateCache.set(e, t.collaboration);
- }
- _setChangeState(e) {
- this._cacheChangeState(e, "history"), this._cacheChangeState(e, "collaboration");
- }
- _initialize() {
- this.disposeWithMe(
- this._commandService.beforeCommandExecuted((e) => {
- if (e.id === IE || e.id === RE) {
- const t = this._univerInstanceService.getCurrentUniverDocInstance();
- if (t == null)
- return;
- const o = t.getUnitId();
- this._pushHistory(o), this._emitChangeState(o);
- }
- })
- );
- }
- _listenDocStateChange() {
- this._docStateEmitService.docStateChangeParams$.pipe(takeUntil(this.dispose$)).subscribe((e) => {
- var a;
- if (e == null)
- return;
- const { isCompositionEnd: t, isSync: o, syncer: s, ...r } = e, i = (a = this._renderManagerService.getRenderById(o ? s : e.unitId)) == null ? void 0 : a.with(Ro);
- if (i != null) {
- if (t) {
- const c = i.fetchComposedUndoRedoMutationParams();
- if (c == null)
- throw new Error("historyParams is null in RichTextEditingMutation");
- const { undoMutationParams: A, redoMutationParams: l, previousActiveRange: d } = c;
- r.redoState.actions = l.actions, r.undoState.actions = A.actions, r.undoState.textRanges = [d];
- }
- this._setChangeState(r);
- }
- });
- }
- _cacheChangeState(e, t = "history") {
- const { trigger: o, unitId: s, noHistory: r, debounce: i = false } = e;
- if (r || o == null || t === "history" && (o === RE || o === IE))
- return;
- const a = t === "history" ? this._historyStateCache : this._changeStateCache, c = t === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
- if (a.has(s)) {
- const A = a.get(s);
- A == null || A.push(e);
- } else
- a.set(s, [e]);
- i ? t === "history" ? (this._historyTimer && clearTimeout(this._historyTimer), this._historyTimer = setTimeout(() => {
- c(s);
- }, ui)) : (this._changeStateCacheTimer && clearTimeout(this._changeStateCacheTimer), this._changeStateCacheTimer = setTimeout(() => {
- c(s);
- }, ui)) : c(s);
- }
- _pushHistory(e) {
- const t = this._undoRedoService, o = this._historyStateCache.get(e);
- if (!Array.isArray(o) || o.length === 0)
- return;
- const s = o.length, r = o[0].commandId, i = o[0], a = o[s - 1], c = {
- unitId: e,
- actions: o.reduce((l, d) => tn.compose(l, d.redoState.actions), null),
- textRanges: a.redoState.textRanges
- }, A = {
- unitId: e,
- // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
- actions: o.reverse().reduce((l, d) => tn.compose(l, d.undoState.actions), null),
- textRanges: i.undoState.textRanges
- };
- t.pushUndoRedo({
- unitID: e,
- undoMutations: [{ id: r, params: A }],
- redoMutations: [{ id: r, params: c }]
- }), o.length = 0;
- }
- _emitChangeState(e) {
- const t = this._changeStateCache.get(e);
- if (!Array.isArray(t) || t.length === 0)
- return;
- const o = t.length, { commandId: s, trigger: r, segmentId: i, noHistory: a, debounce: c } = t[0], A = t[0], l = t[o - 1], d = {
- unitId: e,
- actions: t.reduce((g, f) => tn.compose(g, f.redoState.actions), null),
- textRanges: l.redoState.textRanges
- }, h = {
- unitId: e,
- // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
- actions: t.reverse().reduce((g, f) => tn.compose(g, f.undoState.actions), null),
- textRanges: A.undoState.textRanges
- }, u = {
- commandId: s,
- unitId: e,
- trigger: r,
- redoState: d,
- undoState: h,
- segmentId: i,
- noHistory: a,
- debounce: c
- };
- t.length = 0, this._docStateChange$.next(u);
- }
- };
- Kn = vg([
- $t(0, ot(cn)),
- $t(1, Pt),
- $t(2, _n),
- $t(3, ot(te)),
- $t(4, Yx)
- ], Kn);
- var Rg = Object.defineProperty;
- var bg = Object.getOwnPropertyDescriptor;
- var xg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? bg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Rg(e, t, s), s;
- };
- var hi = (n, e) => (t, o) => e(t, o, n);
- var gi = "univer-doc-main-canvas";
- var Xn = class extends J0 {
- constructor(n, e) {
- super(), this._instanceSrv = n, this._renderManagerService = e, this._init();
- }
- _init() {
- 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));
- }
- _createRenderer(n) {
- var o;
- const e = n.getUnitId(), t = (o = this._instanceSrv.getCurrentUnitForType(Fe.UNIVER_DOC)) == null ? void 0 : o.getUnitId();
- this._renderManagerService.created$.subscribe((s) => {
- s.unitId === t && (s.engine.getCanvas().setId(gi), s.engine.getCanvas().getContext().setId(gi));
- }), this._renderManagerService.has(e) || (this._createRenderWithId(e), this._renderManagerService.setCurrent(e));
- }
- _createRenderWithId(n) {
- this._renderManagerService.createRender(n);
- }
- _disposeRenderer(n) {
- const e = n.getUnitId();
- this._renderManagerService.removeRender(e);
- }
- };
- Xn = xg([
- hi(0, _n),
- hi(1, Yx)
- ], Xn);
- var Og = class extends nt {
- constructor() {
- super(...arguments);
- x(this, "_currentSelectorId");
- x(this, "_selectionChange$", new Subject());
- x(this, "selectionChange$", this._selectionChange$.asObservable());
- x(this, "_openSelector$", new Subject());
- x(this, "openSelector$", this._openSelector$.asObservable());
- x(this, "_selectorModalVisible$", new BehaviorSubject(false));
- x(this, "selectorModalVisible$", this._selectorModalVisible$.asObservable());
- }
- get selectorModalVisible() {
- return this._selectorModalVisible$.getValue();
- }
- setCurrentSelectorId(t) {
- this._currentSelectorId = t;
- }
- getCurrentSelectorId() {
- return this._currentSelectorId;
- }
- selectionChange(t) {
- this._currentSelectorId && this._selectionChange$.next(t);
- }
- openSelector() {
- this._openSelector$.next(null);
- }
- triggerModalVisibleChange(t) {
- this._selectorModalVisible$.next(t);
- }
- };
- var Tg = Ct(
- "univer.range-selector.service"
- );
- var yg = {
- id: ln2.id,
- preconditions: bl,
- binding: I1.ENTER
- };
- var Bg = {
- id: So.id,
- preconditions: de,
- binding: I1.BACKSPACE
- };
- var Mg = {
- id: ma.id,
- preconditions: de,
- binding: I1.DELETE
- };
- var _g = {
- id: at.id,
- binding: I1.ARROW_UP,
- preconditions: de,
- staticParameters: {
- direction: wu.UP
- }
- };
- var Pg = {
- id: at.id,
- binding: I1.ARROW_DOWN,
- preconditions: de,
- staticParameters: {
- direction: wu.DOWN
- }
- };
- var Dg = {
- id: at.id,
- binding: I1.ARROW_LEFT,
- preconditions: de,
- staticParameters: {
- direction: wu.LEFT
- }
- };
- var wg = {
- id: at.id,
- binding: I1.ARROW_RIGHT,
- preconditions: de,
- staticParameters: {
- direction: wu.RIGHT
- }
- };
- var Ng = {
- id: ct.id,
- binding: I1.ARROW_UP | Ae.SHIFT,
- preconditions: de,
- staticParameters: {
- direction: wu.UP
- }
- };
- var Qg = {
- id: ct.id,
- binding: I1.ARROW_DOWN | Ae.SHIFT,
- preconditions: de,
- staticParameters: {
- direction: wu.DOWN
- }
- };
- var Ug = {
- id: ct.id,
- binding: I1.ARROW_LEFT | Ae.SHIFT,
- preconditions: de,
- staticParameters: {
- direction: wu.LEFT
- }
- };
- var Lg = {
- id: ct.id,
- binding: I1.ARROW_RIGHT | Ae.SHIFT,
- preconditions: de,
- staticParameters: {
- direction: wu.RIGHT
- }
- };
- var Fg = {
- id: ya.id,
- binding: I1.A | Ae.CTRL_COMMAND,
- preconditions: (n) => n.getContextValue(CR) && (n.getContextValue(Nr) || n.getContextValue(oE))
- };
- var Na = Object.defineProperty;
- var Hg = Object.getOwnPropertyDescriptor;
- var kg = (n, e, t) => e in n ? Na(n, e, { enumerable: true, configurable: true, writable: true, value: t }) : n[e] = t;
- var Vg = (n, e, t, o) => {
- for (var s = o > 1 ? void 0 : o ? Hg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
- (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
- return o && s && Na(e, t, s), s;
- };
- var en2 = (n, e) => (t, o) => e(t, o, n);
- var jg = (n, e, t) => kg(n, e + "", t);
- var gs = class extends Ra {
- // static override type = UniverInstanceType.UNIVER_DOC;
- constructor(n = qr, e, t, o, s, r) {
- super(), this._config = n, this._injector = e, this._renderManagerSrv = t, this._commandService = o, this._logService = s, this._configService = r;
- const { menu: i, ...a } = nu(
- {},
- qr,
- this._config
- );
- i && this._configService.setConfig("menu", i, { merge: true }), this._configService.setConfig(Us, a), this._initDependencies(e), this._initializeShortcut(), this._initCommand();
- }
- onReady() {
- this._initRenderBasics(), this._markDocAsFocused(), Mf(this._injector, [
- [Kn],
- [Xn]
- ]);
- }
- onRendered() {
- this._initUI(), this._initRenderModules(), Mf(this._injector, [
- [jn],
- [Wn],
- [Lt],
- [zn],
- // FIXME: LifecycleStages.Rendered must be used, otherwise the menu cannot be added to the DOM, but the sheet ui
- // plugin can be added in LifecycleStages.Ready
- [Hn]
- ]);
- }
- _initCommand() {
- [
- So,
- ma,
- Vt,
- jt,
- Wt2,
- zt,
- Ct2,
- Gt,
- Pt2,
- Dt2,
- wt,
- fn,
- Nt2,
- lt,
- Ra2,
- Vs,
- dn,
- js,
- pa,
- Ws,
- Ye,
- ho,
- uo,
- pn,
- go,
- fo,
- po,
- et,
- mo,
- ba,
- Ia,
- er,
- tr,
- Fd,
- nr,
- or,
- Xs,
- Js,
- In,
- Ps,
- Ma,
- _t,
- Ao,
- ln2,
- es,
- lo,
- ws,
- Ns,
- da,
- Ba,
- Co,
- qe,
- fa,
- Qt,
- gA,
- Vi,
- fA,
- ss,
- ya,
- rr,
- at,
- ct,
- mA
- ].forEach((n) => {
- this._commandService.registerCommand(n);
- }), [Fn, qs, Ks].forEach((n) => this.disposeWithMe(this._commandService.registerMultipleCommand(n)));
- }
- _initializeShortcut() {
- [
- _g,
- Pg,
- wg,
- Dg,
- Ng,
- Qg,
- Ug,
- Lg,
- Fg,
- Bg,
- Mg,
- yg,
- Ol
- ].forEach((n) => {
- this._injector.get(it).registerShortcut(n);
- });
- }
- _initDependencies(n) {
- kE([
- [Yn],
- [qn],
- [Hn],
- [jn],
- [zn],
- [Wn],
- [Vn],
- [Lt],
- [He2, { useClass: Jo }],
- [Tg, { useClass: Og }],
- [Sn, { useClass: ns }],
- [is],
- [Xn],
- [Kn],
- [Et],
- [Je]
- ], this._config.override).forEach((t) => n.add(t));
- }
- _markDocAsFocused() {
- const n = this._injector.get(_n), e = this._injector.get(He2);
- try {
- const t = n.getCurrentUnitForType(Fe.UNIVER_DOC);
- if (!t)
- return;
- const o = t.getUnitId();
- e.isEditor(o) || n.focusUnit(t.getUnitId());
- } catch (t) {
- this._logService.warn(t);
- }
- }
- _initUI() {
- this._injector.get(Vn);
- }
- _initRenderBasics() {
- [
- [D],
- [Se],
- [J],
- [ar2],
- [Ro],
- [os],
- [hs]
- ].forEach((n) => {
- this._renderManagerSrv.registerRenderModule(Fe.UNIVER_DOC, n);
- });
- }
- _initRenderModules() {
- [
- [Gn],
- [kn],
- [us],
- [Zo],
- [ds],
- [cs],
- [as],
- [Yn],
- [ls],
- [As],
- [qn]
- ].forEach((n) => {
- this._renderManagerSrv.registerRenderModule(Fe.UNIVER_DOC, n);
- });
- }
- };
- jg(gs, "pluginName", rA);
- gs = Vg([
- OR(s7),
- en2(1, ot(Ot)),
- en2(2, Yx),
- en2(3, Pt),
- en2(4, Mt),
- en2(5, SE)
- ], gs);
- export {
- Et,
- oA,
- sA,
- rA,
- We,
- Xe,
- iA,
- Oo,
- aA,
- xr,
- ef,
- rt2 as rt,
- cA,
- tf,
- AA,
- nf,
- of,
- sf,
- rf,
- af,
- lA,
- dA,
- ke2 as ke,
- le,
- Vi,
- gA,
- fA,
- mA,
- yr,
- it2 as it,
- SA,
- Wi,
- Gi,
- qo,
- Mn,
- Bs,
- Mt2 as Mt,
- Mo,
- Yi,
- yA,
- Se,
- DA,
- Jo,
- He2 as He,
- at,
- ct,
- cf,
- _t,
- Ao,
- ln2 as ln,
- de,
- Vt,
- jt,
- Wt2 as Wt,
- zt,
- Ct2 as Ct,
- Gt,
- Pt2 as Pt,
- Dt2 as Dt,
- wt,
- Nt2 as Nt,
- fn,
- lt,
- pn,
- lo,
- Pn,
- es,
- uo,
- ws,
- Ns,
- ho,
- da,
- Qs,
- mn2 as mn,
- et,
- go,
- fo,
- po,
- mo,
- Ye,
- Fs,
- Hs,
- ks,
- ua,
- dd,
- fa,
- md,
- Qt,
- Ed,
- Vs,
- dn,
- pa,
- js,
- Ws,
- zs,
- So,
- ma,
- xd,
- Od,
- Td,
- Sn,
- Fn,
- qs,
- Ks,
- Xs,
- Js,
- In,
- er,
- tr,
- nr,
- or,
- Ia,
- Fd,
- va,
- Ra2 as Ra,
- ba,
- sr,
- Zu,
- Hn,
- kn,
- os,
- ya,
- Ro,
- Ba,
- ss,
- Ma,
- ai,
- ko,
- is,
- Gn,
- Kn,
- Xn,
- Og,
- Tg,
- gs
- };
- /*! Bundled license information:
- @univerjs/docs-ui/lib/es/index.js:
- (**
- * @license React
- * react-jsx-runtime.production.min.js
- *
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- *)
- */
- //# sourceMappingURL=chunk-MIOQ566M.js.map
|