index.js 454 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165
  1. var Fa = Object.defineProperty;
  2. var Ha = (n, e, t) => e in n ? Fa(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
  3. var x = (n, e, t) => Ha(n, typeof e != "symbol" ? e + "" : e, t);
  4. import { Inject as z, Disposable as ue, toDisposable as Zn, UniverInstanceType as _, BuildTextUtils as Ce, IUniverInstanceService as Q, JSONX as k, ObjectRelativeFromH as $n, ObjectRelativeFromV as ot, useDependency as $, ICommandService as y, generateRandomId as pt, DisposableCollection as Dn, CommandType as N, debounce as fi, Tools as X, IUndoRedoService as eo, TextX as me, TextXActionType as W, DOC_RANGE_TYPE as Ge, RANGE_DIRECTION as xe, COLORS as tn, BooleanNumber as L, Rectangle as ka, RxDisposable as At, DataStreamTreeTokenType as U, ILogService as fs, isInternalEditorID as to, createIdentifier as ps, EDITOR_ACTIVATED as wn, FOCUSING_EDITOR_STANDALONE as lr, DEFAULT_EMPTY_DOCUMENT_VALUE as pi, VerticalAlign as Va, HorizontalAlign as _e, IContextService as ms, Direction as se, createInternalEditorID as ja, useObservable as Nn, LocaleService as Ze, DocumentFlavor as ye, PresetListType as Oe, sequenceExecuteAsync as Es, FOCUSING_DOC as hn, FOCUSING_UNIVER_EDITOR as Ss, FOCUSING_COMMON_DRAWINGS as mi, MemoryCursor as St, BaselineOffset as Ne, getBodySlice as Ei, PRESET_LIST_TYPE as Wa, GridType as za, sortRulesFactory as Ga, UpdateDocsAttributeType as no, TableRowHeightRule as Ya, TableSizeType as Si, TableAlignmentType as qa, TableTextWrapType as Ka, SHEET_EDITOR_UNITS as Is, PositionedObjectLayoutType as oo, LRUMap as Xa, ColorKit as dr, DrawingTypeEnum as Cs, skipParseTagNames as Ja, CustomRangeType as Ii, DataStreamTreeNodeType as qt, SliceBodyType as ur, DOCS_NORMAL_EDITOR_UNIT_ID_KEY as vs, normalizeBody as Za, SpacingRule as Bt, DEFAULT_STYLES as Ci, ThemeService as vi, DOCS_ZEN_EDITOR_UNIT_ID_KEY as $e, Injector as so, connectInjector as $a, IConfigService as Rs, QuickListTypeMap as bo, fromEventSubject as nn, DOCS_FORMULA_BAR_EDITOR_UNIT_ID_KEY as ec, checkForSubstrings as tc, UndoCommandId as hr, RedoCommandId as gr, DependentOn as nc, Plugin as oc, merge as sc, touchDependencies as fr, mergeOverrideWithDependencies as rc } from "@univerjs/core";
  5. import { DocSelectionManagerService as G, RichTextEditingMutation as J, DocSkeletonManagerService as ie, SetTextSelectionsOperation as De, DocStateEmitService as ic, DocInterceptorService as ac } from "@univerjs/docs";
  6. import { DeviceInputEventType as Ri, ScrollBar as Vo, IRenderManagerService as fe, Liquid as bi, GlyphType as xi, DocumentSkeletonPageType as Ie, getPageFromPath as jo, getTableIdAndSliceIndex as pr, NORMAL_TEXT_SELECTION_PLUGIN_STYLE as sn, getColor as on, RegularPolygon as Oi, Rect as yn, getOffsetRectForDom as cc, ScrollTimer as Ac, CURSOR_TYPE as mt, getSystemHighlightColor as lc, Vector2 as rn, PageLayoutType as an, DocumentEditArea as ge, Shape as dc, Path as mr, getCharSpaceApply as uc, getNumberUnitValue as ze, hasListGlyph as hc, isIndentByGlyph as gc, isFirstGlyph as fc, getParagraphByGlyph as pc, pixelToPt as mc, ptToPixel as Er, parseDataStreamToTree as Ec, Viewport as Sc, Layer as Sr, Documents as Ic, DocBackground as Cc, lineIterator as vc, getLastColumn as Rc, getLastLine as bc, pxToNum as Ti, TRANSFORM_CHANGE_OBSERVABLE_TYPE as yi, UniverRenderEnginePlugin as xc } from "@univerjs/engine-render";
  7. import { IShortcutService as ro, KeyCode as j, ILayoutService as bs, MetaKeys as K, useEvent as xo, ComponentManager as io, ISidebarService as Bi, IClipboardInterfaceService as Mi, FILE_PNG_CLIPBOARD_MIME_TYPE as _i, FILE__WEBP_CLIPBOARD_MIME_TYPE as Pi, FILE__JPEG_CLIPBOARD_MIME_TYPE as Di, FILE__BMP_CLIPBOARD_MIME_TYPE as wi, HTML_CLIPBOARD_MIME_TYPE as Ni, PLAIN_TEXT_CLIPBOARD_MIME_TYPE as Qi, CopyCommand as Oc, CutCommand as Tc, PasteCommand as yc, IConfirmService as Bc, MenuItemType as Z, getMenuHiddenObservable as ee, FONT_FAMILY_LIST as Mc, FONT_SIZE_LIST as _c, RibbonStartGroup as Ir, ContextMenuPosition as Ui, ContextMenuGroup as Cr, FontFamily as Pc, FontFamilyItem as Dc, FontSize as wc, BuiltInUIPart as Nc, IMenuManagerService as Qc, IUIPartsService as Uc, ICanvasPopupService as Lc, IContextMenuService as Fc } from "@univerjs/ui";
  8. import * as Hc from "react";
  9. import Wo, { useMemo as Fe, useEffect as Re, useCallback as Li, useState as ve, useLayoutEffect as kc, useRef as cn, forwardRef as It, useImperativeHandle as Vc, createElement as Ft } from "react";
  10. import { Subject as Ee, BehaviorSubject as Le, merge as Fi, filter as Qn, takeUntil as st, fromEvent as Ue, combineLatest as ao, Observable as pe, map as gn, distinctUntilChanged as vr, throttleTime as Hi, switchMap as jc, take as Wc, animationFrameScheduler as zc } from "rxjs";
  11. import { filter as zo, bufferTime as Gc, map as Yc } from "rxjs/operators";
  12. import { Checkbox as Rr, InputNumber as An, Button as qc, Slider as Kc, Tooltip as Xc, Select as Jc, ColorPicker as Zc } from "@univerjs/design";
  13. import { ImageSourceType as xs } from "@univerjs/drawing";
  14. var $c = Object.defineProperty, eA = Object.getOwnPropertyDescriptor, tA = (n, e, t, o) => {
  15. for (var s = o > 1 ? void 0 : o ? eA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  16. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  17. return o && s && $c(e, t, s), s;
  18. }, br = (n, e) => (t, o) => e(t, o, n);
  19. function nA(n, e) {
  20. var i, a;
  21. const { startOffset: t, endOffset: o } = n, s = [];
  22. let r = -1;
  23. for (let c = 0; c < e.length; c++) {
  24. const A = e[c], l = e[c - 1], { startIndex: d } = A;
  25. t > r && t <= d || o > r && o <= d ? s.push({
  26. ...A,
  27. paragraphStart: ((i = l == null ? void 0 : l.startIndex) != null ? i : -1) + 1,
  28. paragraphEnd: A.startIndex
  29. }) : d >= t && d <= o && s.push({
  30. ...A,
  31. paragraphStart: ((a = l == null ? void 0 : l.startIndex) != null ? a : -1) + 1,
  32. paragraphEnd: A.startIndex
  33. }), r = d;
  34. }
  35. return s;
  36. }
  37. let Et = class extends ue {
  38. constructor(e, t) {
  39. super();
  40. x(this, "_matches", /* @__PURE__ */ new Map());
  41. this._univerInstanceService = e, this._textSelectionManagerService = t;
  42. }
  43. registerAutoFormat(e) {
  44. const t = this._matches.get(e.id);
  45. return t ? (t.push(e), t.sort((o, s) => {
  46. var r, i;
  47. return ((r = s.priority) != null ? r : 0) - ((i = o.priority) != null ? i : 0);
  48. })) : this._matches.set(e.id, [e]), Zn(() => {
  49. const o = this._matches.get(e.id);
  50. if (o) {
  51. const s = o.findIndex((r) => r === e);
  52. s >= 0 && o.splice(s, 1);
  53. }
  54. });
  55. }
  56. onAutoFormat(e, t) {
  57. var a, c, A, l, d, h, u;
  58. const o = (a = this._matches.get(e)) != null ? a : [], s = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC), r = this._textSelectionManagerService.getDocRanges(), i = (c = r.find((g) => g.isActive)) != null ? c : r[0];
  59. if (s && i) {
  60. const g = s.getSelfOrHeaderFooterModel(i.segmentId), f = {
  61. unit: g,
  62. selection: i,
  63. isBody: !i.segmentId,
  64. paragraphs: nA(i, (l = (A = g.getBody()) == null ? void 0 : A.paragraphs) != null ? l : []),
  65. customRanges: Ce.customRange.getCustomRangesInterestsWithSelection(i, (h = (d = g.getBody()) == null ? void 0 : d.customRanges) != null ? h : []),
  66. commandId: e,
  67. commandParams: t
  68. }, p = o.find((m) => m.match(f));
  69. return (u = p == null ? void 0 : p.getMutations(f)) != null ? u : [];
  70. }
  71. return [];
  72. }
  73. };
  74. Et = tA([
  75. br(0, Q),
  76. br(1, z(G))
  77. ], Et);
  78. const oA = {
  79. undo: !0,
  80. redo: !0,
  81. // Undo redo
  82. font: !0,
  83. // 'font'
  84. fontSize: !0,
  85. // 'Font size'
  86. bold: !0,
  87. // 'Bold (Ctrl+B)'
  88. italic: !0,
  89. // 'Italic (Ctrl+I)'
  90. strikethrough: !0,
  91. // 'Strikethrough (Alt+Shift+5)'
  92. underline: !0,
  93. // 'Underline (Alt+Shift+6)'
  94. textColor: !0,
  95. // 'Text color'
  96. fillColor: !0,
  97. // 'Cell color'
  98. horizontalAlignMode: !0,
  99. // 'Horizontal alignment'
  100. verticalAlignMode: !0,
  101. // 'Vertical alignment'
  102. textWrapMode: !0,
  103. // 'Wrap mode'
  104. textRotateMode: !0
  105. // 'Text Rotation Mode'
  106. }, sA = {
  107. outerLeft: !1,
  108. outerRight: !1,
  109. header: !0,
  110. footer: !0,
  111. innerLeft: !1,
  112. innerRight: !1,
  113. frozenHeaderLT: !1,
  114. frozenHeaderRT: !1,
  115. frozenHeaderLM: !1,
  116. frozenContent: !1,
  117. infoBar: !0,
  118. toolbar: !0
  119. }, rA = "DOC_UI_PLUGIN";
  120. var We = /* @__PURE__ */ ((n) => (n.MAIN = "__Document_Render_Main__", n.BACKGROUND = "__Document_Render_Background__", n))(We || {}), Xe = /* @__PURE__ */ ((n) => (n.VIEW_MAIN = "viewMain", n.VIEW_TOP = "viewTop", n.VIEW_LEFT = "viewLeft", n.VIEW_LEFT_TOP = "viewLeftTop", n))(Xe || {});
  121. const iA = 0, Oo = 2, aA = 4, xr = 10, ef = "normalTextSelectionPluginName";
  122. function rt(n) {
  123. const { mainComponent: e, scene: t, engine: o, components: s } = n, r = e, i = s.get(We.BACKGROUND);
  124. return {
  125. document: r,
  126. docBackground: i,
  127. scene: t,
  128. engine: o
  129. };
  130. }
  131. function cA(n, e) {
  132. const t = n.getCurrentUnitForType(_.UNIVER_DOC);
  133. if (!t)
  134. return null;
  135. const o = t.getUnitId(), s = e.getRenderById(o);
  136. if (s == null)
  137. return;
  138. const { mainComponent: r, scene: i, engine: a, components: c } = s, A = r, l = c.get(We.BACKGROUND);
  139. return {
  140. document: A,
  141. docBackground: l,
  142. scene: i,
  143. engine: a
  144. };
  145. }
  146. function tf(n, e) {
  147. const t = e.getRenderById(n);
  148. if (t == null)
  149. return;
  150. const { mainComponent: o, scene: s, engine: r, components: i } = t, a = o, c = i.get(We.BACKGROUND);
  151. return {
  152. document: a,
  153. docBackground: c,
  154. scene: s,
  155. engine: r
  156. };
  157. }
  158. function AA(n) {
  159. const { unitId: e, ranges: t, id: o, type: s, segmentId: r } = n, i = {
  160. id: J.id,
  161. params: {
  162. unitId: e,
  163. actions: [],
  164. textRanges: void 0,
  165. // noHistory: true,
  166. segmentId: r
  167. }
  168. }, a = k.getInstance(), c = Ce.customDecoration.add({ ranges: t, id: o, type: s });
  169. return i.params.actions = a.editOp(c.serialize()), i;
  170. }
  171. function nf(n, e) {
  172. const { segmentId: t, id: o, type: s, unitId: r } = e, i = n.get(G), a = n.get(Q), c = r ? a.getUnit(r, _.UNIVER_DOC) : a.getCurrentUnitForType(_.UNIVER_DOC);
  173. if (!c)
  174. return !1;
  175. const A = c.getUnitId(), l = i.getTextRanges({ unitId: A, subUnitId: A });
  176. return !l || !c.getBody() ? !1 : AA(
  177. {
  178. unitId: A,
  179. ranges: l,
  180. id: o,
  181. type: s,
  182. segmentId: t
  183. }
  184. );
  185. }
  186. function of(n, e) {
  187. const { unitId: t, id: o, segmentId: s } = e, i = n.get(Q).getUnit(t);
  188. if (!i)
  189. return !1;
  190. const a = {
  191. id: J.id,
  192. params: {
  193. unitId: t,
  194. actions: [],
  195. textRanges: void 0,
  196. // noHistory: true,
  197. segmentId: s
  198. }
  199. }, c = Ce.customDecoration.delete({ id: o, segmentId: s, documentDataModel: i });
  200. if (!c)
  201. return !1;
  202. const A = k.getInstance();
  203. return a.params.actions = A.editOp(c.serialize()), a;
  204. }
  205. function sf(n, e) {
  206. return e.some((t) => n.startIndex > t.startIndex && n.startIndex < t.endIndex);
  207. }
  208. function co(n, e, t, o) {
  209. const s = {
  210. st: 0,
  211. ed: 0,
  212. ts: t
  213. };
  214. for (let r = n.length - 1; r >= 0; r--) {
  215. const i = n[r], { st: a, ed: c } = i;
  216. e > a && e <= c && (s.st = a, s.ed = c, s.ts = {
  217. ...s.ts,
  218. ...i.ts
  219. });
  220. }
  221. if (e === 0) {
  222. const r = n == null ? void 0 : n[0];
  223. r && r.st === 0 && (s.ts = {
  224. ...s.ts,
  225. ...r.ts
  226. });
  227. }
  228. return o && (s.ts = {
  229. ...s.ts,
  230. ...o
  231. }), s;
  232. }
  233. function Os(n, e, t) {
  234. if (t) {
  235. const s = n.find((r) => e >= r.startIndex && e <= r.endIndex + 1);
  236. return s != null && s.wholeEntity ? null : s;
  237. }
  238. const o = n.find((s) => e > s.startIndex && e <= s.endIndex);
  239. return o != null && o.wholeEntity ? null : o;
  240. }
  241. function Ts(n, e) {
  242. return n.filter((t) => e > t.startIndex && e <= t.endIndex);
  243. }
  244. function rf(n) {
  245. return {
  246. left: n.positionH.posOffset,
  247. top: n.positionV.posOffset,
  248. width: n.size.width,
  249. height: n.size.height
  250. };
  251. }
  252. function af(n, e = 0, t = 0) {
  253. return {
  254. size: {
  255. width: n.width,
  256. height: n.height
  257. },
  258. positionH: {
  259. relativeFrom: $n.MARGIN,
  260. posOffset: (n.left || 0) - e
  261. },
  262. positionV: {
  263. relativeFrom: ot.PAGE,
  264. posOffset: (n.top || 0) - t
  265. },
  266. angle: n.angle || 0
  267. };
  268. }
  269. function lA(n, e, t) {
  270. const o = $(y), s = $(ro), r = Fe(() => pt(4), []);
  271. Re(() => {
  272. if (!t || !n || !e)
  273. return;
  274. const a = `sheet.operation.editor-${t.getEditorId()}-keyboard-${r}`, c = new Dn();
  275. return c.add(o.registerCommand({
  276. id: a,
  277. type: N.OPERATION,
  278. handler(A, l) {
  279. const { keyCode: d, metaKey: h } = l;
  280. e.handler(d, h);
  281. }
  282. })), e.keyCodes.map((A) => ({
  283. id: a,
  284. binding: A.metaKey ? A.keyCode | A.metaKey : A.keyCode,
  285. preconditions: () => !0,
  286. priority: 901,
  287. staticParameters: {
  288. eventType: Ri.Keyboard,
  289. keyCode: A.keyCode,
  290. metaKey: A.metaKey
  291. }
  292. })).forEach((A) => {
  293. c.add(s.registerShortcut(A));
  294. }), () => {
  295. c.dispose();
  296. };
  297. }, [o, e, t, n, r, s]);
  298. }
  299. const dA = (n, e = !0, t, o) => {
  300. const s = Li(() => {
  301. if (n) {
  302. const { scene: i, mainComponent: a } = n.render, c = n.render.with(ie), { width: A, height: l } = n.getBoundingClientRect();
  303. c.getViewModel().getDataModel().updateDocumentDataPageSize(e ? 1 / 0 : A, 1 / 0), i.transformByState({
  304. width: A,
  305. height: l
  306. }), a == null || a.resize(A, l);
  307. }
  308. }, [n, e]), r = Fe(() => fi(() => {
  309. var E, I;
  310. if (!t || !n || !t)
  311. return;
  312. const a = n.render.with(ie).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();
  313. let f = l == null ? void 0 : l.getScrollBar();
  314. const p = Math.max(d, u), m = Math.max(h, g);
  315. c.transformByState({
  316. width: p,
  317. height: m
  318. }), A == null || A.resize(p, m), e ? d > u ? (f == null ? l && new Vo(l, {
  319. barSize: 8,
  320. enableVertical: !1,
  321. enableHorizontal: !0,
  322. minThumbSizeV: 8
  323. }) : 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 Vo(l, {
  324. enableHorizontal: !1,
  325. enableVertical: !0,
  326. barSize: 8,
  327. minThumbSizeV: 8
  328. })) : 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());
  329. }, 30), [n, t, e, o]);
  330. return Re(() => {
  331. if (t && n) {
  332. const i = setTimeout(() => {
  333. s(), r();
  334. }, 500);
  335. return () => {
  336. clearTimeout(i);
  337. };
  338. }
  339. }, [n, t, s, r]), Re(() => {
  340. if (t && n) {
  341. const i = n.input$.subscribe(() => {
  342. r();
  343. });
  344. return () => {
  345. i.unsubscribe();
  346. };
  347. }
  348. }, [n, t, r]), { resize: s, checkScrollBar: r };
  349. };
  350. var To = { exports: {} }, Kt = {};
  351. /**
  352. * @license React
  353. * react-jsx-runtime.production.min.js
  354. *
  355. * Copyright (c) Facebook, Inc. and its affiliates.
  356. *
  357. * This source code is licensed under the MIT license found in the
  358. * LICENSE file in the root directory of this source tree.
  359. */
  360. var Or;
  361. function uA() {
  362. if (Or) return Kt;
  363. Or = 1;
  364. var n = Wo, 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: !0, ref: !0, __self: !0, __source: !0 };
  365. function i(a, c, A) {
  366. var l, d = {}, h = null, u = null;
  367. A !== void 0 && (h = "" + A), c.key !== void 0 && (h = "" + c.key), c.ref !== void 0 && (u = c.ref);
  368. for (l in c) o.call(c, l) && !r.hasOwnProperty(l) && (d[l] = c[l]);
  369. if (a && a.defaultProps) for (l in c = a.defaultProps, c) d[l] === void 0 && (d[l] = c[l]);
  370. return { $$typeof: e, type: a, key: h, ref: u, props: d, _owner: s.current };
  371. }
  372. return Kt.Fragment = t, Kt.jsx = i, Kt.jsxs = i, Kt;
  373. }
  374. var Tr;
  375. function hA() {
  376. return Tr || (Tr = 1, To.exports = uA()), To.exports;
  377. }
  378. var w = hA();
  379. function ki(n) {
  380. var e, t, o = "";
  381. if (typeof n == "string" || typeof n == "number") o += n;
  382. else if (typeof n == "object") if (Array.isArray(n)) {
  383. var s = n.length;
  384. for (e = 0; e < s; e++) n[e] && (t = ki(n[e])) && (o && (o += " "), o += t);
  385. } else for (t in n) n[t] && (o && (o += " "), o += t);
  386. return o;
  387. }
  388. function Un() {
  389. for (var n, e, t = 0, o = "", s = arguments.length; t < s; t++) (n = arguments[t]) && (e = ki(n)) && (o && (o += " "), o += e);
  390. return o;
  391. }
  392. function ke(n, e) {
  393. var o;
  394. return (o = n.get(fe).getRenderById(e)) == null ? void 0 : o.with(ie);
  395. }
  396. function le(n, e = "") {
  397. if (!e)
  398. return ["body"];
  399. const { headers: t, footers: o } = n.getSnapshot();
  400. if (t == null && o == null)
  401. throw new Error("Document data model must have headers or footers when update by segment id");
  402. if ((t == null ? void 0 : t[e]) != null)
  403. return ["headers", e, "body"];
  404. if ((o == null ? void 0 : o[e]) != null)
  405. return ["footers", e, "body"];
  406. throw new Error("Segment id not found in headers or footers");
  407. }
  408. const Vi = {
  409. id: "doc.command-replace-snapshot",
  410. type: N.COMMAND,
  411. // eslint-disable-next-line max-lines-per-function, complexity
  412. handler: (n, e) => {
  413. const { unitId: t, snapshot: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(Q), c = n.get(y), A = n.get(G), l = a.getUnit(t, _.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(r).getSnapshot();
  414. if (l == null || d == null)
  415. return !1;
  416. const { body: h, tableSource: u, footers: g, headers: f, lists: p, drawings: m, drawingsOrder: E, documentStyle: I } = X.deepClone(o), {
  417. body: v,
  418. tableSource: R,
  419. footers: S,
  420. headers: C,
  421. lists: T,
  422. drawings: O,
  423. drawingsOrder: P,
  424. documentStyle: b
  425. } = d;
  426. if (h == null || v == null)
  427. return !1;
  428. if (X.diffValue(h, v) && s)
  429. return A.replaceDocRanges(s, {
  430. unitId: t,
  431. subUnitId: t
  432. }, !1), !0;
  433. const B = {
  434. id: J.id,
  435. params: {
  436. unitId: t,
  437. actions: [],
  438. textRanges: s
  439. }
  440. };
  441. i && (B.params.options = i);
  442. const M = [], H = k.getInstance();
  443. if (!X.diffValue(b, I)) {
  444. const D = H.replaceOp(["documentStyle"], b, I);
  445. D != null && M.push(D);
  446. }
  447. if (!X.diffValue(h, v)) {
  448. const D = H.replaceOp(["body"], v, h);
  449. D != null && M.push(D);
  450. }
  451. if (!X.diffValue(u, R)) {
  452. const D = H.replaceOp(["tableSource"], R, u);
  453. D != null && M.push(D);
  454. }
  455. if (!X.diffValue(g, S)) {
  456. const D = H.replaceOp(["footers"], S, g);
  457. D != null && M.push(D);
  458. }
  459. if (!X.diffValue(f, C)) {
  460. const D = H.replaceOp(["headers"], C, f);
  461. D != null && M.push(D);
  462. }
  463. if (!X.diffValue(p, T)) {
  464. const D = H.replaceOp(["lists"], T, p);
  465. D != null && M.push(D);
  466. }
  467. if (!X.diffValue(m, O)) {
  468. const D = H.replaceOp(["drawings"], O, m);
  469. D != null && M.push(D);
  470. }
  471. if (!X.diffValue(E, P)) {
  472. const D = H.replaceOp(["drawingsOrder"], P, E);
  473. D != null && M.push(D);
  474. }
  475. return B.params.actions = M.reduce((D, te) => k.compose(D, te), null), !!c.syncExecuteCommand(B.id, B.params);
  476. }
  477. }, gA = {
  478. id: "doc.command-replace-content",
  479. type: N.COMMAND,
  480. handler: async (n, e) => {
  481. const { unitId: t, body: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(Q), c = n.get(y), A = n.get(G), l = a.getUnit(t, _.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(r).getSnapshot().body;
  482. if (l == null || d == null)
  483. return !1;
  484. const h = ji(t, r, l, d, o);
  485. return h.params.textRanges = s, i && (h.params.options = i), h.params.actions == null && s ? (A.replaceDocRanges(s, {
  486. unitId: t,
  487. subUnitId: t
  488. }, !1), !0) : !!c.syncExecuteCommand(h.id, h.params);
  489. }
  490. }, fA = {
  491. id: "doc.command-cover-content",
  492. type: N.COMMAND,
  493. handler: async (n, e) => {
  494. const { unitId: t, body: o, segmentId: s = "" } = e, r = n.get(Q), i = n.get(y), a = n.get(eo), c = r.getUniverDocInstance(t), A = c == null ? void 0 : c.getSnapshot().body;
  495. if (c == null || A == null)
  496. return !1;
  497. const l = ji(t, s, c, A, o);
  498. return l.params.noNeedSetTextRange = !0, l.params.noHistory = !0, i.syncExecuteCommand(
  499. l.id,
  500. l.params
  501. ), a.clearUndoRedo(t), !0;
  502. }
  503. };
  504. function pA(n, e, t, o) {
  505. const s = new me(), r = k.getInstance(), i = (t == null ? void 0 : t.dataStream.length) - 2;
  506. i > 0 && s.push({
  507. t: W.DELETE,
  508. len: i
  509. }), o.dataStream.length > 0 && s.push({
  510. t: W.INSERT,
  511. body: o,
  512. len: o.dataStream.length
  513. });
  514. const a = le(e, n);
  515. return r.editOp(s.serialize(), a);
  516. }
  517. function ji(n, e, t, o, s) {
  518. const r = {
  519. id: J.id,
  520. params: {
  521. unitId: n,
  522. actions: [],
  523. textRanges: []
  524. }
  525. }, i = pA(e, t, o, s);
  526. return r.params.actions = i, r;
  527. }
  528. N.COMMAND;
  529. const mA = {
  530. id: "doc.command.replace-text-runs",
  531. type: N.COMMAND,
  532. handler: (n, e) => {
  533. const { unitId: t, body: o, textRanges: s, segmentId: r = "", options: i } = e, a = n.get(Q), c = n.get(y), A = a.getUnit(t, _.UNIVER_DOC), l = A == null ? void 0 : A.getSelfOrHeaderFooterModel(r).getSnapshot().body;
  534. if (A == null || l == null)
  535. return !1;
  536. const d = Ce.selection.replaceTextRuns({
  537. doc: A,
  538. body: o,
  539. selection: {
  540. startOffset: 0,
  541. endOffset: l.dataStream.length - 2,
  542. collapsed: !1
  543. }
  544. });
  545. if (!d)
  546. return !1;
  547. const h = {
  548. id: J.id,
  549. params: {
  550. unitId: t,
  551. actions: [],
  552. textRanges: s,
  553. noHistory: !0
  554. }
  555. }, u = k.getInstance(), g = le(A, r);
  556. return h.params.actions = u.editOp(d.serialize(), g), h.params.textRanges = s, i && (h.params.options = i), !!c.syncExecuteCommand(h.id, h.params);
  557. }
  558. };
  559. var Bn = /* @__PURE__ */ ((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 || {});
  560. const Tt = {
  561. page: 0,
  562. section: 1,
  563. column: 2,
  564. line: 3,
  565. divide: 4,
  566. glyph: 5
  567. };
  568. function ys(n, e) {
  569. return n.page > e.page ? !1 : n.page < e.page ? !0 : n.section > e.section ? !1 : n.section < e.section ? !0 : n.column > e.column ? !1 : n.column < e.column ? !0 : n.line > e.line ? !1 : n.line < e.line ? !0 : n.divide > e.divide ? !1 : n.divide < e.divide ? !0 : n.glyph > e.glyph ? !1 : (n.glyph < e.glyph, !0);
  570. }
  571. function Go(n, e) {
  572. return ys(n, e) ? {
  573. start: n,
  574. end: e
  575. } : {
  576. start: e,
  577. end: n
  578. };
  579. }
  580. function yr(n) {
  581. const e = n.length;
  582. if (e === 0)
  583. return;
  584. const t = n[0], o = n[e - 1], s = n.length === 1 && t.collapsed;
  585. return {
  586. startOffset: t.startOffset,
  587. endOffset: o.endOffset,
  588. collapsed: s
  589. };
  590. }
  591. function EA(n, e, t, o) {
  592. let s = o, r = o;
  593. for (let i = 0; i < n.length; i++) {
  594. const c = n[i].count;
  595. i < e && (s += c), i < t && (r += c);
  596. }
  597. return {
  598. startOffset: s,
  599. endOffset: r
  600. };
  601. }
  602. function Yo(n) {
  603. const { startX: e, startY: t, endX: o, endY: s } = n, r = [];
  604. return r.push({
  605. x: e,
  606. y: t
  607. }), r.push({
  608. x: o,
  609. y: t
  610. }), r.push({
  611. x: o,
  612. y: s
  613. }), r.push({
  614. x: e,
  615. y: s
  616. }), r.push({
  617. x: e,
  618. y: t
  619. }), r;
  620. }
  621. class it {
  622. constructor(e, t) {
  623. x(this, "_liquid", new bi());
  624. x(this, "_currentStartState", {
  625. page: 0,
  626. section: 0,
  627. column: 0,
  628. line: 0,
  629. divide: 0,
  630. glyph: 0
  631. /* NORMAL */
  632. });
  633. x(this, "_currentEndState", {
  634. page: 0,
  635. section: 0,
  636. column: 0,
  637. line: 0,
  638. divide: 0,
  639. glyph: 0
  640. /* NORMAL */
  641. });
  642. this._documentOffsetConfig = e, this._docSkeleton = t;
  643. }
  644. // eslint-disable-next-line max-lines-per-function
  645. getRangePointData(e, t) {
  646. const o = [], s = [], r = [];
  647. if (e == null || t == null)
  648. return {
  649. borderBoxPointGroup: o,
  650. contentBoxPointGroup: s,
  651. cursorList: r
  652. };
  653. if (!this._isValidPosition(e, t))
  654. throw new Error(
  655. `
  656. Invalid positions in NodePositionConvertToCursor,
  657. they are not in the same segment page when in header or footer.`
  658. );
  659. const { start: a, end: c } = Go(e, t);
  660. return this._selectionIterator(a, c, (A, l, d, h, u, g) => {
  661. const { lineHeight: f, asc: p, paddingTop: m, marginTop: E, marginBottom: I } = g, { glyphGroup: v, st: R } = u;
  662. if (v.length === 0)
  663. return;
  664. const { x: S, y: C } = this._liquid;
  665. let T, O;
  666. const P = v[A], b = v[l], B = v[A - 1], M = (P == null ? void 0 : P.left) || 0, H = (P == null ? void 0 : P.width) || 0, F = (b == null ? void 0 : b.left) || 0, D = (b == null ? void 0 : b.width) || 0, te = (P == null ? void 0 : P.glyphType) === xi.LIST, { startOffset: q, endOffset: V } = EA(v, A, l, R), Y = a.glyph === A && d ? a.isBack : !0, oe = c.glyph === l && h ? c.isBack : !1, ce = a === c, he = Y && B != null ? B : P;
  667. if (A === 0 && l === v.length - 1)
  668. T = {
  669. startX: S + M + (te ? H : 0),
  670. startY: C,
  671. endX: S + F + (oe ? 0 : D),
  672. endY: C + f - E - I
  673. }, O = {
  674. startX: S + M + (te ? H : 0),
  675. startY: C + m + p - he.bBox.ba,
  676. endX: S + F + (oe ? 0 : D),
  677. endY: C + m + p + he.bBox.bd
  678. };
  679. else {
  680. const Ae = Y && !te;
  681. T = {
  682. startX: S + M + (Ae ? 0 : H),
  683. startY: C,
  684. endX: S + F + (oe ? 0 : D),
  685. endY: C + f - E - I
  686. }, O = {
  687. startX: S + M + (Ae ? 0 : H),
  688. startY: C + m + p - he.bBox.ba,
  689. endX: S + F + (oe ? 0 : D),
  690. endY: C + m + p + he.bBox.bd
  691. };
  692. }
  693. o.push(Yo(T)), s.push(Yo(O)), r.push({
  694. startOffset: Y ? q : q + P.count,
  695. endOffset: oe ? V : V + b.count,
  696. collapsed: ce
  697. });
  698. }), {
  699. borderBoxPointGroup: o,
  700. contentBoxPointGroup: s,
  701. cursorList: r
  702. };
  703. }
  704. _isValidPosition(e, t) {
  705. const { segmentPage: o, pageType: s } = e, { segmentPage: r, pageType: i } = t;
  706. return s !== i ? !1 : s === Ie.HEADER || s === Ie.FOOTER ? o === r : !0;
  707. }
  708. _resetCurrentNodePositionState() {
  709. this._currentStartState = {
  710. page: 0,
  711. section: 0,
  712. column: 0,
  713. line: 0,
  714. divide: 0,
  715. glyph: 0
  716. /* NORMAL */
  717. }, this._currentEndState = {
  718. page: 0,
  719. section: 0,
  720. column: 0,
  721. line: 0,
  722. divide: 0,
  723. glyph: 0
  724. /* NORMAL */
  725. };
  726. }
  727. _setNodePositionState(e = 0, t, o, s) {
  728. s === t ? this._currentStartState[e] = 1 : this._currentStartState[e] = 0, s === o ? this._currentEndState[e] = 2 : this._currentEndState[e] = 0;
  729. }
  730. _checkPreviousNodePositionState(e, t = !0) {
  731. let o = e, s;
  732. for (; o >= 0; ) {
  733. const r = Bn[o];
  734. let i;
  735. if (t ? i = this._currentStartState[r] : i = this._currentEndState[r], i === void 0)
  736. return;
  737. if (s === void 0 && (s = i), i !== s)
  738. return 0;
  739. o--;
  740. }
  741. return s;
  742. }
  743. _getSelectionRuler(e, t, o, s, r) {
  744. let i = 0, a = s;
  745. const c = Bn[e], A = Bn[e + 1];
  746. if (A === null || c === null)
  747. return {
  748. start_next: i,
  749. end_next: a
  750. };
  751. const l = t[c], d = o[c];
  752. this._setNodePositionState(c, l, d, r);
  753. const h = this._checkPreviousNodePositionState(e), u = this._checkPreviousNodePositionState(e, !1);
  754. return h === 1 && (i = t[A]), u === 2 && (a = o[A]), {
  755. start_next: i,
  756. end_next: a
  757. };
  758. }
  759. // eslint-disable-next-line max-lines-per-function, complexity
  760. _selectionIterator(e, t, o) {
  761. var v, R;
  762. const s = this._docSkeleton;
  763. if (!s)
  764. return [];
  765. const { pageType: r, path: i } = e;
  766. this._liquid.reset();
  767. const a = s.getSkeletonData();
  768. if (a == null)
  769. return [];
  770. const { pages: c, skeHeaders: A, skeFooters: l } = a, { page: d, segmentPage: h } = e, { page: u, segmentPage: g } = t;
  771. if (this._resetCurrentNodePositionState(), this._documentOffsetConfig == null)
  772. return [];
  773. const { pageLayoutType: f, pageMarginLeft: p, pageMarginTop: m } = this._documentOffsetConfig, E = r === Ie.BODY || r === Ie.CELL ? d : h;
  774. for (let S = 0; S < E; S++) {
  775. const C = c[S];
  776. this._liquid.translatePage(C, f, p, m);
  777. }
  778. const I = r === Ie.BODY || r === Ie.CELL ? u : g;
  779. for (let S = E; S <= I; S++) {
  780. const C = c[S], { headerId: T, footerId: O, pageWidth: P } = C;
  781. let b = C;
  782. if (r === Ie.HEADER ? b = (v = A.get(T)) == null ? void 0 : v.get(P) : r === Ie.FOOTER ? b = (R = l.get(O)) == null ? void 0 : R.get(P) : r === Ie.CELL && (b = jo(a, i)), b == null) {
  783. this._liquid.translatePage(C, f, p, m);
  784. continue;
  785. }
  786. const B = b.sections, { start_next: M, end_next: H } = this._getSelectionRuler(
  787. Tt.page,
  788. e,
  789. t,
  790. B.length - 1,
  791. r === Ie.BODY || r === Ie.CELL ? S : 0
  792. );
  793. switch (this._liquid.translateSave(), r) {
  794. case Ie.HEADER:
  795. this._liquid.translatePagePadding({
  796. ...b,
  797. marginLeft: C.marginLeft
  798. // Because header or footer margin Left is 0.
  799. });
  800. break;
  801. case Ie.FOOTER: {
  802. const F = C.pageHeight - b.height - b.marginBottom;
  803. this._liquid.translate(C.marginLeft, F);
  804. break;
  805. }
  806. case Ie.CELL: {
  807. this._liquid.translatePagePadding(C);
  808. const F = b.parent, D = F.parent, { left: te } = b, { top: q, left: V } = D, { top: Y } = F;
  809. this._liquid.translate(V + te, q + Y), this._liquid.translatePagePadding(b);
  810. break;
  811. }
  812. default:
  813. this._liquid.translatePagePadding(C);
  814. break;
  815. }
  816. for (let F = M; F <= H; F++) {
  817. const D = B[F], te = D.columns, { start_next: q, end_next: V } = this._getSelectionRuler(
  818. Tt.section,
  819. e,
  820. t,
  821. te.length - 1,
  822. F
  823. );
  824. this._liquid.translateSection(D);
  825. for (let Y = q; Y <= V; Y++) {
  826. const oe = te[Y], ce = oe.lines, { start_next: he, end_next: Ae } = this._getSelectionRuler(
  827. Tt.column,
  828. e,
  829. t,
  830. ce.length - 1,
  831. Y
  832. );
  833. this._liquid.translateColumn(oe);
  834. for (let ne = he; ne <= Ae; ne++) {
  835. const ae = ce[ne], { divides: Te } = ae, { start_next: je, end_next: ut } = this._getSelectionRuler(
  836. Tt.line,
  837. e,
  838. t,
  839. Te.length - 1,
  840. ne
  841. );
  842. this._liquid.translateSave(), this._liquid.translateLine(ae, !0, !1);
  843. for (let we = je; we <= ut; we++) {
  844. const Yt = Te[we];
  845. this._liquid.translateSave(), this._liquid.translateDivide(Yt);
  846. const { glyphGroup: Qa } = Yt, { start_next: Ua, end_next: La } = this._getSelectionRuler(
  847. Tt.divide,
  848. e,
  849. t,
  850. Qa.length - 1,
  851. we
  852. );
  853. let cr = !1, Ar = !1;
  854. S === E && F === M && Y === q && ne === he && we === je && (cr = !0), S === I && F === H && Y === V && ne === Ae && we === ut && (Ar = !0), o && o(Ua, La, cr, Ar, Yt, ae, oe, D, b), this._liquid.translateRestore();
  855. }
  856. this._liquid.translateRestore();
  857. }
  858. }
  859. }
  860. this._liquid.translateRestore(), this._liquid.translatePage(C, f, p, m);
  861. }
  862. }
  863. }
  864. function SA(n, e) {
  865. const { path: t } = n, { path: o } = e;
  866. if (t.length !== o.length || t.indexOf("cells") === -1)
  867. return !1;
  868. const s = t.indexOf("skeTables") + 1, r = t.indexOf("rows") + 1, i = t.indexOf("cells") + 1, { tableId: a, sliceIndex: c } = pr(t[s]), { tableId: A, sliceIndex: l } = pr(o[s]);
  869. if (a !== A)
  870. return !1;
  871. const d = t[r], h = o[r], u = t[i], g = o[i];
  872. return !(d === h && u === g && c === l);
  873. }
  874. function Wi(n, e) {
  875. const { path: t } = n, { path: o } = e;
  876. return t.indexOf("cells") === -1 || o.indexOf("cells") === -1 || t.length !== o.length ? !1 : X.diffValue(t, o);
  877. }
  878. function zi(n, e, t) {
  879. var u, g, f, p, m, E, I, v;
  880. const { path: o } = e, { path: s } = t;
  881. if (o.indexOf("cells") === -1 || s.indexOf("cells") === -1)
  882. return !1;
  883. 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 = (m = i == null ? void 0 : i.parent) == null ? void 0 : m.parent) == null ? void 0 : E.parent) == null ? void 0 : I.parent) == null ? void 0 : v.parent;
  884. if (a == null || c == null)
  885. return !1;
  886. const A = a.parent, l = c.parent, d = A.cells.indexOf(a), h = l.cells.indexOf(c);
  887. return d === h && A.index === l.index;
  888. }
  889. function yo(n, e) {
  890. if (Wi(n, e))
  891. return ys(n, e);
  892. const { path: t } = n, { path: o } = e, s = t[t.length - 5], r = o[o.length - 5];
  893. if (s !== r && typeof s == "string" && typeof r == "string") {
  894. const l = s.split("#-#")[1], d = r.split("#-#")[1];
  895. return +l < +d;
  896. }
  897. const i = t[t.length - 3], a = o[o.length - 3], c = t[t.length - 1], A = o[o.length - 1];
  898. return i < a ? !0 : i > a ? !1 : c <= A;
  899. }
  900. function vt(n) {
  901. return n.sections[0].columns[0].lines.length === 0;
  902. }
  903. function IA(n, e, t) {
  904. let o = e, s = t, r = n[o], i = n[s];
  905. for (; o < s && (vt(r) || vt(i)); )
  906. vt(r) ? (o++, r = n[o]) : vt(i) && (s--, i = n[s]);
  907. if (!vt(r) && !vt(i))
  908. return [r, i];
  909. }
  910. class Gi {
  911. constructor(e, t) {
  912. x(this, "_liquid", new bi());
  913. this._documentOffsetConfig = e, this._docSkeleton = t;
  914. }
  915. // eslint-disable-next-line max-lines-per-function
  916. getRangePointData(e, t) {
  917. const o = [], r = this._docSkeleton.getSkeletonData();
  918. if (r == null)
  919. return;
  920. const { pages: i } = r, { segmentPage: a, page: c, pageType: A } = e, l = this._getTableRectRangeInfo(e, t);
  921. if (l == null)
  922. return;
  923. const {
  924. tableId: d,
  925. startRowIndex: h,
  926. startColumnIndex: u,
  927. endRowIndex: g,
  928. endColumnIndex: f
  929. } = l;
  930. this._liquid.reset();
  931. const { pageLayoutType: p, pageMarginLeft: m, pageMarginTop: E } = this._documentOffsetConfig, I = A === Ie.BODY || A === Ie.CELL ? c : a;
  932. for (let v = 0; v < I; v++) {
  933. const R = i[v];
  934. this._liquid.translatePage(R, p, m, E);
  935. }
  936. for (let v = I; v < i.length; v++) {
  937. const R = i[v];
  938. this._liquid.translatePagePadding(R);
  939. const { skeTables: S } = R;
  940. let C = null;
  941. for (const [b, B] of S.entries())
  942. b.startsWith(d) && (C = B);
  943. if (C == null) {
  944. this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m, E);
  945. continue;
  946. }
  947. this._liquid.translateSave(), this._liquid.translate(0, C.top);
  948. const { x: T, y: O } = this._liquid, { left: P } = C;
  949. for (const b of C.rows)
  950. if (b.index >= h && b.index <= g) {
  951. const B = IA(b.cells, u, f);
  952. if (B == null)
  953. continue;
  954. const [M, H] = B, F = {
  955. startX: T + M.left + P,
  956. startY: O + b.top,
  957. endX: T + H.left + H.pageWidth + P,
  958. endY: O + b.top + b.height
  959. };
  960. o.push(Yo(F));
  961. }
  962. this._liquid.translateRestore(), this._liquid.restorePagePadding(R), this._liquid.translatePage(R, p, m, E);
  963. }
  964. return {
  965. pointGroup: o,
  966. startRow: h,
  967. startColumn: u,
  968. endRow: g,
  969. endColumn: f,
  970. tableId: d
  971. };
  972. }
  973. getNodePositionGroup(e, t) {
  974. const o = [], s = this._docSkeleton.findCharIndexByPosition(e), r = this._docSkeleton.findCharIndexByPosition(t);
  975. if (s == null || r == null)
  976. return;
  977. const i = s < r, a = this._getTableRectRangeInfo(e, t);
  978. if (a == null)
  979. return;
  980. const { tableId: c, startRowIndex: A, startColumnIndex: l, endRowIndex: d, endColumnIndex: h } = a, u = this._docSkeleton.getViewModel().findTableNodeById(c);
  981. if (u == null)
  982. return;
  983. const g = u.children[0].children.length;
  984. if (l === 0 && h === g - 1) {
  985. const p = u.children[A].children[l], m = this._docSkeleton.findNodePositionByCharIndex(p.startIndex + 1), E = u.children[d].children[h], I = this._docSkeleton.findNodePositionByCharIndex(E.endIndex - 2);
  986. if (m == null || I == null)
  987. return;
  988. o.push({
  989. anchor: i ? m : I,
  990. focus: i ? I : m
  991. });
  992. } else
  993. for (let p = A; p <= d; p++) {
  994. const m = u.children[p], E = m.children[l], I = m.children[h], v = this._docSkeleton.findNodePositionByCharIndex(E.startIndex + 1), R = this._docSkeleton.findNodePositionByCharIndex(I.endIndex - 2);
  995. if (v == null || R == null)
  996. return;
  997. o.push({
  998. anchor: i ? v : R,
  999. focus: i ? R : v
  1000. });
  1001. }
  1002. return o;
  1003. }
  1004. _getTableRectRangeInfo(e, t) {
  1005. const s = this._docSkeleton.getSkeletonData();
  1006. if (s == null)
  1007. return;
  1008. const { pages: r } = s, { path: i } = e, { path: a } = t, c = jo(s, i), A = jo(s, a);
  1009. if (c == null || A == null)
  1010. return;
  1011. 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), m = Math.min(h, g), E = Math.max(h, g);
  1012. return {
  1013. pages: r,
  1014. tableId: l,
  1015. startRowIndex: f,
  1016. startColumnIndex: m,
  1017. endRowIndex: p,
  1018. endColumnIndex: E
  1019. };
  1020. }
  1021. }
  1022. const CA = "__TestSelectionRange__", vA = "__TestSelectionAnchor__", Br = 6, Bo = 500, RA = 500, qo = 3;
  1023. function Mn(n) {
  1024. const e = n[0], t = e[0], o = e[2], { x: s, y: r } = t, { x: i, y: a } = o;
  1025. return {
  1026. left: s,
  1027. top: r,
  1028. width: i - s,
  1029. height: a - r
  1030. };
  1031. }
  1032. function Bs(n) {
  1033. return n.map((e) => {
  1034. let t = 1 / 0, o = -1 / 0, s = 1 / 0, r = -1 / 0;
  1035. return e.forEach((i) => {
  1036. t = Math.min(i.x, t), o = Math.max(i.x, o), r = Math.max(i.y, r), s = Math.min(i.y, s);
  1037. }), {
  1038. left: t,
  1039. right: o,
  1040. top: s,
  1041. bottom: r
  1042. };
  1043. });
  1044. }
  1045. class Mt {
  1046. constructor(e, t, o, s, r, i = sn, a = "", c = -1) {
  1047. x(this, "rangeType", Ge.TEXT);
  1048. // Identifies whether the range is the current one, most of which is the last range.
  1049. x(this, "_current", !1);
  1050. // The rendered range graphic when collapsed is false
  1051. x(this, "_rangeShape");
  1052. // The rendered range graphic when collapsed is true
  1053. x(this, "_anchorShape");
  1054. x(this, "_cursorList", []);
  1055. x(this, "_anchorBlinkTimer", null);
  1056. 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();
  1057. }
  1058. _anchorBlink() {
  1059. setTimeout(() => {
  1060. this._anchorShape && this._anchorShape.visible && this.deactivateStatic();
  1061. }, Bo), this._anchorBlinkTimer = setInterval(() => {
  1062. this._anchorShape && this._anchorShape.visible && (this.activeStatic(), setTimeout(() => {
  1063. this.deactivateStatic();
  1064. }, Bo));
  1065. }, RA + Bo);
  1066. }
  1067. // The start position of the range
  1068. get startOffset() {
  1069. var s;
  1070. const { startOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
  1071. if (e == null || t == null)
  1072. return e;
  1073. const o = t.dataStream.length - 2;
  1074. return Math.min(o, e);
  1075. }
  1076. // The end position of the range
  1077. get endOffset() {
  1078. var s;
  1079. const { endOffset: e } = (s = yr(this._cursorList)) != null ? s : {}, t = this._docSkeleton.getViewModel().getDataModel().getSelfOrHeaderFooterModel(this._segmentId).getBody();
  1080. if (e == null || t == null)
  1081. return e;
  1082. const o = t.dataStream.length - 2;
  1083. return Math.min(e, o);
  1084. }
  1085. get collapsed() {
  1086. const { startOffset: e, endOffset: t } = this;
  1087. return e != null && e === t;
  1088. }
  1089. get startNodePosition() {
  1090. if (this.anchorNodePosition == null)
  1091. return null;
  1092. if (this.focusNodePosition == null)
  1093. return this.anchorNodePosition;
  1094. const { start: e } = Go(this.anchorNodePosition, this.focusNodePosition);
  1095. return e;
  1096. }
  1097. get endNodePosition() {
  1098. if (this.anchorNodePosition == null)
  1099. return this.focusNodePosition;
  1100. if (this.focusNodePosition == null)
  1101. return null;
  1102. const { end: e } = Go(this.anchorNodePosition, this.focusNodePosition);
  1103. return e;
  1104. }
  1105. get direction() {
  1106. const { collapsed: e, anchorNodePosition: t, focusNodePosition: o } = this;
  1107. return e || t == null || o == null ? xe.NONE : ys(t, o) ? xe.FORWARD : xe.BACKWARD;
  1108. }
  1109. get segmentId() {
  1110. return this._segmentId;
  1111. }
  1112. get segmentPage() {
  1113. return this._segmentPage;
  1114. }
  1115. getAbsolutePosition() {
  1116. const e = this.anchorNodePosition, t = this.focusNodePosition;
  1117. if (this._isEmpty())
  1118. return;
  1119. const o = this._document.getOffsetConfig(), { docsLeft: s, docsTop: r } = o, i = new it(o, this._docSkeleton);
  1120. if (this._isCollapsed()) {
  1121. const { contentBoxPointGroup: l, cursorList: d } = i.getRangePointData(e, e);
  1122. if (this._setCursorList(d), l.length === 0)
  1123. return;
  1124. const h = Mn(l);
  1125. return {
  1126. ...h,
  1127. left: h.left + s,
  1128. top: h.top + r
  1129. };
  1130. }
  1131. const { borderBoxPointGroup: a, cursorList: c } = i.getRangePointData(e, t);
  1132. if (this._setCursorList(c), a.length === 0)
  1133. return;
  1134. const A = Mn(a);
  1135. return {
  1136. ...A,
  1137. left: A.left + s,
  1138. top: A.top + r
  1139. };
  1140. }
  1141. getAnchor() {
  1142. return this._anchorShape;
  1143. }
  1144. activeStatic() {
  1145. var e, t;
  1146. (t = this._anchorShape) == null || t.setProps({
  1147. stroke: ((e = this.style) == null ? void 0 : e.strokeActive) || on(tn.black, 1)
  1148. });
  1149. }
  1150. deactivateStatic() {
  1151. var e, t;
  1152. (t = this._anchorShape) == null || t.setProps({
  1153. stroke: ((e = this.style) == null ? void 0 : e.stroke) || on(tn.black, 0)
  1154. });
  1155. }
  1156. isActive() {
  1157. return this._current === !0;
  1158. }
  1159. activate() {
  1160. this._current = !0;
  1161. }
  1162. deactivate() {
  1163. this._current = !1;
  1164. }
  1165. dispose() {
  1166. var e, t;
  1167. (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);
  1168. }
  1169. isIntersection(e) {
  1170. const { startOffset: t, endOffset: o } = this, { startOffset: s, endOffset: r } = e;
  1171. return t == null || o == null || s == null || r == null ? !1 : t <= r && o >= s;
  1172. }
  1173. // render cursor and selection.
  1174. refresh() {
  1175. var d, h;
  1176. const { _document: e, _docSkeleton: t } = this, o = this.anchorNodePosition, s = this.focusNodePosition;
  1177. if ((d = this._anchorShape) == null || d.hide(), (h = this._rangeShape) == null || h.hide(), this._isEmpty())
  1178. return;
  1179. const r = e.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, c = new it(r, t);
  1180. if (this._isCollapsed()) {
  1181. const { contentBoxPointGroup: u, cursorList: g } = c.getRangePointData(o, o);
  1182. if (this._setCursorList(g), u.length > 0) {
  1183. const f = t.findGlyphByPosition(o);
  1184. this._createOrUpdateAnchor(u, i, a, f);
  1185. }
  1186. return;
  1187. }
  1188. const { borderBoxPointGroup: A, cursorList: l } = c.getRangePointData(o, s);
  1189. this._setCursorList(l), A.length > 0 && this._createOrUpdateRange(A, i, a);
  1190. }
  1191. _isEmpty() {
  1192. return this.anchorNodePosition == null && this.focusNodePosition == null;
  1193. }
  1194. _isCollapsed() {
  1195. const e = this.anchorNodePosition, t = this.focusNodePosition;
  1196. if (e != null && t == null)
  1197. return !0;
  1198. if (e == null || t == null)
  1199. return !1;
  1200. const o = Object.keys(Tt);
  1201. for (const s of o) {
  1202. const r = e[s], i = t[s];
  1203. if (r !== i)
  1204. return !1;
  1205. }
  1206. return e.isBack === t.isBack;
  1207. }
  1208. _createOrUpdateRange(e, t, o) {
  1209. var i;
  1210. if (this._rangeShape) {
  1211. this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
  1212. return;
  1213. }
  1214. const s = 0.3, r = new Oi(CA + X.generateRandomId(Br), {
  1215. pointsGroup: e,
  1216. fill: ((i = this.style) == null ? void 0 : i.fill) || on(tn.black, s),
  1217. left: t,
  1218. top: o,
  1219. evented: !1,
  1220. debounceParentDirty: !1
  1221. });
  1222. this._rangeShape = r, this._scene.addObject(r, qo);
  1223. }
  1224. _createOrUpdateAnchor(e, t, o, s) {
  1225. var f, p, m;
  1226. const r = Mn(e), { left: i } = r;
  1227. let { top: a, height: c } = r;
  1228. const A = 14;
  1229. c < A && (a -= A - c, c = A);
  1230. const l = 12;
  1231. let d = i + t;
  1232. const h = a + o, u = ((f = s == null ? void 0 : s.ts) == null ? void 0 : f.it) === L.TRUE;
  1233. if (u && (d += c * Math.tan(l * Math.PI / 180) / 2), this._anchorShape) {
  1234. this._anchorShape.transformByState({ left: d, top: h, height: c }), this._anchorShape.show(), u ? this._anchorShape.skew(-12, 0) : this._anchorShape.skew(0, 0);
  1235. return;
  1236. }
  1237. const g = new yn(vA + X.generateRandomId(Br), {
  1238. left: d,
  1239. top: h,
  1240. height: c,
  1241. strokeWidth: ((p = this.style) == null ? void 0 : p.strokeWidth) || 1.5,
  1242. stroke: ((m = this.style) == null ? void 0 : m.strokeActive) || on(tn.black, 1),
  1243. evented: !1
  1244. });
  1245. u && g.skew(-12, 0), this._anchorShape = g, this._scene.addObject(g, qo), this.activeStatic();
  1246. }
  1247. _setCursorList(e) {
  1248. e.length !== 0 && (this._cursorList = e);
  1249. }
  1250. }
  1251. const bA = "__DocTableRectRange__", xA = 6;
  1252. function Mo(n, e, t, o, s, r = sn, i = "", a = -1) {
  1253. const c = e.getOffsetConfig(), l = new Gi(c, t).getNodePositionGroup(o, s);
  1254. return (l != null ? l : []).map((d) => new Yi(
  1255. n,
  1256. e,
  1257. t,
  1258. d.anchor,
  1259. d.focus,
  1260. r,
  1261. i,
  1262. a
  1263. ));
  1264. }
  1265. class Yi {
  1266. constructor(e, t, o, s, r, i = sn, a = "", c = -1) {
  1267. x(this, "rangeType", Ge.RECT);
  1268. // The rendered rect range
  1269. x(this, "_rangeShape");
  1270. // Identifies whether the range is the current one, most of which is the last range.
  1271. x(this, "_current", !1);
  1272. // Rect Range start row.
  1273. x(this, "_startRow");
  1274. // Rect Range start column.
  1275. x(this, "_startCol");
  1276. // Rect Range end row.
  1277. x(this, "_endRow");
  1278. // Rect Range end column.
  1279. x(this, "_endCol");
  1280. // table id in view model.
  1281. x(this, "_tableId");
  1282. 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();
  1283. }
  1284. get startOffset() {
  1285. const { startNodePosition: e } = this;
  1286. return this._docSkeleton.findCharIndexByPosition(e);
  1287. }
  1288. get endOffset() {
  1289. const { endNodePosition: e } = this;
  1290. return this._docSkeleton.findCharIndexByPosition(e);
  1291. }
  1292. get collapsed() {
  1293. return !1;
  1294. }
  1295. get startRow() {
  1296. return this._startRow;
  1297. }
  1298. get startColumn() {
  1299. return this._startCol;
  1300. }
  1301. get endRow() {
  1302. return this._endRow;
  1303. }
  1304. get endColumn() {
  1305. return this._endCol;
  1306. }
  1307. get tableId() {
  1308. return this._tableId;
  1309. }
  1310. get segmentId() {
  1311. return this._segmentId;
  1312. }
  1313. get segmentPage() {
  1314. return this._segmentPage;
  1315. }
  1316. get spanEntireRow() {
  1317. var i;
  1318. const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startCol: o, _endCol: s } = this;
  1319. if (t == null)
  1320. throw new Error("Table is not found.");
  1321. const { tableColumns: r } = t;
  1322. return o === 0 && s === r.length - 1;
  1323. }
  1324. get spanEntireColumn() {
  1325. var i;
  1326. const t = (i = this._docSkeleton.getViewModel().getSnapshot().tableSource) == null ? void 0 : i[this._tableId], { _startRow: o, _endRow: s } = this;
  1327. if (t == null)
  1328. throw new Error("Table is not found.");
  1329. const { tableRows: r } = t;
  1330. return o === 0 && s === r.length - 1;
  1331. }
  1332. get spanEntireTable() {
  1333. return this.spanEntireRow && this.spanEntireColumn;
  1334. }
  1335. get startNodePosition() {
  1336. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1337. return yo(e, t) ? e : t;
  1338. }
  1339. get endNodePosition() {
  1340. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1341. return yo(e, t) ? t : e;
  1342. }
  1343. get direction() {
  1344. const { anchorNodePosition: e, focusNodePosition: t } = this;
  1345. return yo(e, t) ? xe.FORWARD : xe.BACKWARD;
  1346. }
  1347. isActive() {
  1348. return this._current === !0;
  1349. }
  1350. activate() {
  1351. this._current = !0;
  1352. }
  1353. deactivate() {
  1354. this._current = !1;
  1355. }
  1356. dispose() {
  1357. var e;
  1358. (e = this._rangeShape) == null || e.dispose(), this._rangeShape = null;
  1359. }
  1360. isIntersection(e) {
  1361. const { startRow: t, startColumn: o, endRow: s, endColumn: r } = this, { startRow: i, startColumn: a, endRow: c, endColumn: A } = e, l = {
  1362. left: o,
  1363. top: t,
  1364. right: r,
  1365. bottom: s
  1366. }, d = {
  1367. left: a,
  1368. top: i,
  1369. right: A,
  1370. bottom: c
  1371. };
  1372. return ka.hasIntersectionBetweenTwoRect(l, d);
  1373. }
  1374. refresh() {
  1375. var p;
  1376. (p = this._rangeShape) == null || p.hide();
  1377. 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);
  1378. if (A == null)
  1379. return;
  1380. const { pointGroup: l = [], startRow: d, endRow: h, startColumn: u, endColumn: g, tableId: f } = A;
  1381. (l == null ? void 0 : l.length) > 0 && this._createOrUpdateRange(l, i, a), this._updateTableInfo(d, h, u, g, f);
  1382. }
  1383. _updateTableInfo(e, t, o, s, r) {
  1384. this._startRow = e, this._endRow = t, this._startCol = o, this._endCol = s, this._tableId = r;
  1385. }
  1386. _createOrUpdateRange(e, t, o) {
  1387. var i;
  1388. if (this._rangeShape) {
  1389. this._rangeShape.translate(t, o), this._rangeShape.updatePointGroup(e), this._rangeShape.show();
  1390. return;
  1391. }
  1392. const s = 0.3, r = new Oi(bA + X.generateRandomId(xA), {
  1393. pointsGroup: e,
  1394. fill: ((i = this.style) == null ? void 0 : i.fill) || on(tn.black, s),
  1395. left: t,
  1396. top: o,
  1397. evented: !1,
  1398. debounceParentDirty: !1
  1399. });
  1400. this._rangeShape = r, this._scene.addObject(r, qo);
  1401. }
  1402. }
  1403. function Mr(n, e, t, o, s, r, i, a, c = !0, A = !0) {
  1404. const l = s.findNodePositionByCharIndex(n, c, i, a), d = s.findNodePositionByCharIndex(e, A, i, a);
  1405. if (!(l == null || d == null))
  1406. return new Mt(t, o, s, l, d, r, i, a);
  1407. }
  1408. function OA(n, e, t, o, s, r, i, a) {
  1409. const c = s.findNodePositionByCharIndex(n, !0, i, a), A = s.findNodePositionByCharIndex(e, !0, i, a);
  1410. if (!(c == null || A == null))
  1411. return new Yi(t, o, s, c, A, r, i, a);
  1412. }
  1413. function TA(n, e, t, o, s, r, i, a) {
  1414. const c = s.findNodePositionByCharIndex(n, !0, i, a), A = s.findNodePositionByCharIndex(e, !0, i, a);
  1415. if (!(c == null || A == null))
  1416. return Ko(
  1417. c,
  1418. A,
  1419. t,
  1420. o,
  1421. s,
  1422. r,
  1423. i,
  1424. a
  1425. );
  1426. }
  1427. function Ko(n, e, t, o, s, r, i, a) {
  1428. const c = [], A = [], l = [t, o, s, n, e, r, i, a];
  1429. if (zi(s, n, e)) {
  1430. if (Wi(n, e))
  1431. return c.push(new Mt(...l)), {
  1432. textRanges: c,
  1433. rectRanges: A
  1434. };
  1435. {
  1436. const I = Mo(
  1437. ...l
  1438. );
  1439. return A.push(...I), {
  1440. textRanges: c,
  1441. rectRanges: A
  1442. };
  1443. }
  1444. }
  1445. if (SA(n, e)) {
  1446. const I = Mo(
  1447. ...l
  1448. );
  1449. return A.push(...I), {
  1450. textRanges: c,
  1451. rectRanges: A
  1452. };
  1453. }
  1454. const d = s.getViewModel().getSelfOrHeaderFooterViewModel(i), h = s.findCharIndexByPosition(n), u = s.findCharIndexByPosition(e);
  1455. if (h == null || u == null)
  1456. return;
  1457. const g = h <= u ? xe.FORWARD : xe.BACKWARD, f = Math.min(h, u), p = Math.max(h, u);
  1458. let m = f, E = p;
  1459. for (const I of d.getChildren())
  1460. for (const v of I.children) {
  1461. const { startIndex: R, endIndex: S, children: C } = v, T = I.children.indexOf(v), O = I.children[T + 1], P = C[0];
  1462. let b = !1;
  1463. if (P) {
  1464. const { startIndex: B, endIndex: M, children: H } = P;
  1465. let F = null, D = null;
  1466. const te = H.find((V) => V.startIndex <= f && V.endIndex >= f), q = H.find((V) => V.startIndex <= p && V.endIndex >= p);
  1467. if (f > B && f < M)
  1468. F = s.findNodePositionByCharIndex(te.startIndex + 2, !0, i, a), D = s.findNodePositionByCharIndex(M - 4, !0, i, a), m = M + 1;
  1469. else if (p > B && p < M)
  1470. F = s.findNodePositionByCharIndex(B + 3, !0, i, a), D = s.findNodePositionByCharIndex(q.endIndex - 3, !0, i, a), E = B - 1, b = !0;
  1471. else if (B > f && M < p) {
  1472. if (F = s.findNodePositionByCharIndex(B + 3, !0, i, a), D = s.findNodePositionByCharIndex(M - 4, !0, i, a), m <= B - 1) {
  1473. const V = s.findNodePositionByCharIndex(m, !0, i, a), Y = s.findNodePositionByCharIndex(B - 1, !1, i, a), oe = g === xe.FORWARD ? V : Y, ce = g === xe.FORWARD ? Y : V;
  1474. c.push(new Mt(t, o, s, oe, ce, r, i, a));
  1475. }
  1476. m = M + 1;
  1477. }
  1478. if (F && D) {
  1479. const V = g === xe.FORWARD ? F : D, Y = g === xe.FORWARD ? D : F;
  1480. A.push(...Mo(
  1481. t,
  1482. o,
  1483. s,
  1484. V,
  1485. Y,
  1486. r,
  1487. i,
  1488. a
  1489. ));
  1490. }
  1491. }
  1492. if (E === S + 1 && !b && O && O.children.length && (E = S, b = !0), E >= R && E <= S || b) {
  1493. const B = s.findNodePositionByCharIndex(m, !0, i, a), M = s.findNodePositionByCharIndex(E, !b, i, a), H = g === xe.FORWARD ? B : M, F = g === xe.FORWARD ? M : B;
  1494. if (A.length && X.diffValue(H, F))
  1495. continue;
  1496. c.push(new Mt(t, o, s, H, F, r, i, a));
  1497. }
  1498. }
  1499. return {
  1500. textRanges: c,
  1501. rectRanges: A
  1502. };
  1503. }
  1504. function yA(n) {
  1505. const e = n == null ? void 0 : n.getCanvasElement();
  1506. if (!e)
  1507. return {
  1508. left: 0,
  1509. top: 0
  1510. };
  1511. const { top: t, left: o } = cc(e);
  1512. return {
  1513. left: o,
  1514. top: t
  1515. };
  1516. }
  1517. function _r(n) {
  1518. var c;
  1519. const e = (c = n.parent) == null ? void 0 : c.parent, t = e == null ? void 0 : e.parent;
  1520. if (e == null || t == null)
  1521. return;
  1522. const { paragraphIndex: o } = e, s = t.lines.filter((A) => A.paragraphIndex === o);
  1523. let r = -1, i = "", a = !1;
  1524. for (const A of s)
  1525. for (const l of A.divides)
  1526. for (const d of l.glyphGroup)
  1527. a || (r += d.count), d === n && (a = !0), i += d.count > 0 ? d.content : "";
  1528. return {
  1529. st: s[0].st,
  1530. ed: o,
  1531. content: i,
  1532. nodeIndex: r
  1533. };
  1534. }
  1535. function Xo(n) {
  1536. const { startOffset: e, endOffset: t, collapsed: o, rangeType: s, startNodePosition: r, endNodePosition: i, direction: a, segmentId: c, segmentPage: A } = n;
  1537. return {
  1538. startOffset: e,
  1539. endOffset: t,
  1540. collapsed: o,
  1541. rangeType: s,
  1542. startNodePosition: r,
  1543. endNodePosition: i,
  1544. direction: a,
  1545. segmentId: c,
  1546. segmentPage: A,
  1547. isActive: n.isActive()
  1548. };
  1549. }
  1550. function BA(n) {
  1551. const e = Xo(n), {
  1552. startRow: t,
  1553. startColumn: o,
  1554. endRow: s,
  1555. endColumn: r,
  1556. tableId: i,
  1557. spanEntireRow: a,
  1558. spanEntireColumn: c,
  1559. spanEntireTable: A
  1560. } = n;
  1561. return {
  1562. ...e,
  1563. startRow: t,
  1564. startColumn: o,
  1565. endRow: s,
  1566. endColumn: r,
  1567. tableId: i,
  1568. spanEntireRow: a,
  1569. spanEntireColumn: c,
  1570. spanEntireTable: A
  1571. };
  1572. }
  1573. var MA = Object.defineProperty, _A = Object.getOwnPropertyDescriptor, PA = (n, e, t, o) => {
  1574. for (var s = o > 1 ? void 0 : o ? _A(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  1575. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  1576. return o && s && MA(e, t, s), s;
  1577. }, Cn = (n, e) => (t, o) => e(t, o, n);
  1578. let Se = class extends At {
  1579. constructor(e, t, o, s, r) {
  1580. super();
  1581. x(this, "_onInputBefore$", new Ee());
  1582. x(this, "onInputBefore$", this._onInputBefore$.asObservable());
  1583. x(this, "_onKeydown$", new Ee());
  1584. x(this, "onKeydown$", this._onKeydown$.asObservable());
  1585. x(this, "_onInput$", new Ee());
  1586. x(this, "onInput$", this._onInput$.asObservable());
  1587. x(this, "_onCompositionstart$", new Le(null));
  1588. x(this, "onCompositionstart$", this._onCompositionstart$.asObservable());
  1589. x(this, "_onCompositionupdate$", new Le(null));
  1590. x(this, "onCompositionupdate$", this._onCompositionupdate$.asObservable());
  1591. x(this, "_onCompositionend$", new Le(null));
  1592. x(this, "onCompositionend$", this._onCompositionend$.asObservable());
  1593. x(this, "_onSelectionStart$", new Le(null));
  1594. x(this, "onSelectionStart$", this._onSelectionStart$.asObservable());
  1595. x(this, "onChangeByEvent$", Fi(
  1596. this._onInput$,
  1597. this._onKeydown$.pipe(Qn((e) => e.event.keyCode === j.BACKSPACE)),
  1598. this._onCompositionend$
  1599. ));
  1600. x(this, "_onPaste$", new Ee());
  1601. x(this, "onPaste$", this._onPaste$.asObservable());
  1602. x(this, "_textSelectionInner$", new Le(null));
  1603. x(this, "textSelectionInner$", this._textSelectionInner$.asObservable());
  1604. x(this, "_onFocus$", new Ee());
  1605. x(this, "onFocus$", this._onFocus$.asObservable());
  1606. x(this, "_onBlur$", new Ee());
  1607. x(this, "onBlur$", this._onBlur$.asObservable());
  1608. x(this, "_onPointerDown$", new Ee());
  1609. x(this, "onPointerDown$", this._onPointerDown$.asObservable());
  1610. x(this, "_container");
  1611. x(this, "_inputParent");
  1612. x(this, "_input");
  1613. x(this, "_scrollTimers", []);
  1614. x(this, "_rangeList", []);
  1615. // Use to cache range list in moving.
  1616. x(this, "_rangeListCache", []);
  1617. // Rect range list.
  1618. x(this, "_rectRangeList", []);
  1619. // Use to cache rect range list in moving.
  1620. x(this, "_rectRangeListCache", []);
  1621. x(this, "_anchorNodePosition", null);
  1622. x(this, "_focusNodePosition", null);
  1623. x(this, "_currentSegmentId", "");
  1624. x(this, "_currentSegmentPage", -1);
  1625. x(this, "_selectionStyle", sn);
  1626. x(this, "_onPointerEvent", !1);
  1627. x(this, "_viewPortObserverMap", /* @__PURE__ */ new Map());
  1628. x(this, "_isIMEInputApply", !1);
  1629. x(this, "_scenePointerMoveSubs", []);
  1630. x(this, "_scenePointerUpSubs", []);
  1631. // When the user switches editors, whether to clear the doc ranges.
  1632. x(this, "_reserveRanges", !1);
  1633. this._context = e, this._layoutService = t, this._logService = o, this._univerInstanceService = s, this._docSkeletonManagerService = r, this._initDOM(), this._registerContainer(), this._setSystemHighlightColorToStyle(), this._listenCurrentUnitChange();
  1634. }
  1635. get isOnPointerEvent() {
  1636. return this._onPointerEvent;
  1637. }
  1638. get isFocusing() {
  1639. return this._input === document.activeElement;
  1640. }
  1641. get canFocusing() {
  1642. return this.isFocusing || document.activeElement === document.body || document.activeElement === null;
  1643. }
  1644. _listenCurrentUnitChange() {
  1645. this._univerInstanceService.getCurrentTypeOfUnit$(_.UNIVER_DOC).pipe(st(this.dispose$)).subscribe((e) => {
  1646. if (e == null)
  1647. return;
  1648. e.getUnitId() !== this._context.unitId && !this._reserveRanges && this.removeAllRanges();
  1649. });
  1650. }
  1651. get activeViewPort() {
  1652. return this._context.scene.getViewports()[0];
  1653. }
  1654. setSegment(e) {
  1655. this._currentSegmentId = e;
  1656. }
  1657. getSegment() {
  1658. return this._currentSegmentId;
  1659. }
  1660. setSegmentPage(e) {
  1661. this._currentSegmentPage = e;
  1662. }
  1663. getSegmentPage() {
  1664. return this._currentSegmentPage;
  1665. }
  1666. setReserveRangesStatus(e) {
  1667. this._reserveRanges = e;
  1668. }
  1669. _setRangeStyle(e = sn) {
  1670. this._selectionStyle = e;
  1671. }
  1672. // eslint-disable-next-line max-lines-per-function
  1673. addDocRanges(e, t = !0, o) {
  1674. const {
  1675. _currentSegmentId: s,
  1676. _currentSegmentPage: r,
  1677. _selectionStyle: i
  1678. } = this, { scene: a, mainComponent: c } = this._context, A = c, l = this._docSkeletonManagerService.getSkeleton(), d = (h, u) => {
  1679. const g = TA(
  1680. h,
  1681. u,
  1682. a,
  1683. A,
  1684. l,
  1685. i,
  1686. s,
  1687. r
  1688. );
  1689. if (g == null)
  1690. return;
  1691. const { textRanges: f, rectRanges: p } = g;
  1692. for (const m of f)
  1693. this._addTextRange(m);
  1694. this._addRectRanges(p);
  1695. };
  1696. for (const h of e) {
  1697. const { startOffset: u, endOffset: g, rangeType: f, startNodePosition: p, endNodePosition: m } = h;
  1698. if (f === Ge.RECT) {
  1699. const E = OA(
  1700. u,
  1701. g,
  1702. a,
  1703. A,
  1704. l,
  1705. i,
  1706. s,
  1707. r
  1708. );
  1709. E && this._addRectRanges([E]);
  1710. } else if (f === Ge.TEXT)
  1711. try {
  1712. let E = null;
  1713. p && m ? E = Mr(
  1714. p.isBack ? u : u - 1,
  1715. m.isBack ? g : g - 1,
  1716. a,
  1717. A,
  1718. l,
  1719. i,
  1720. s,
  1721. r,
  1722. p.isBack,
  1723. m.isBack
  1724. ) : E = Mr(
  1725. u,
  1726. g,
  1727. a,
  1728. A,
  1729. l,
  1730. i,
  1731. s,
  1732. r
  1733. ), E && this._addTextRange(E);
  1734. } catch {
  1735. d(u, g);
  1736. }
  1737. else
  1738. d(u, g);
  1739. }
  1740. this._textSelectionInner$.next({
  1741. textRanges: this._getAllTextRanges(),
  1742. rectRanges: this._getAllRectRanges(),
  1743. segmentId: s,
  1744. segmentPage: r,
  1745. style: i,
  1746. isEditing: t,
  1747. options: o
  1748. }), this._updateInputPosition(o == null ? void 0 : o.forceFocus);
  1749. }
  1750. setCursorManually(e, t) {
  1751. const o = this._findNodeByCoord(e, t, {
  1752. strict: !0,
  1753. segmentId: this._currentSegmentId,
  1754. segmentPage: this._currentSegmentPage
  1755. }), s = this._getNodePosition(o);
  1756. if (s == null) {
  1757. this._removeAllRanges();
  1758. return;
  1759. }
  1760. (o == null ? void 0 : o.node.streamType) === U.PARAGRAPH && (s.isBack = !0), this._createTextRangeByAnchorPosition(s), this._textSelectionInner$.next({
  1761. textRanges: this._getAllTextRanges(),
  1762. rectRanges: this._getAllRectRanges(),
  1763. segmentId: this._currentSegmentId,
  1764. segmentPage: this._currentSegmentPage,
  1765. style: this._selectionStyle,
  1766. isEditing: !1
  1767. });
  1768. }
  1769. // Sync canvas selection to dom selection.
  1770. sync() {
  1771. this._updateInputPosition();
  1772. }
  1773. /**
  1774. * @deprecated
  1775. */
  1776. activate(e, t, o = !1) {
  1777. this._container.style.left = `${e}px`, this._container.style.top = `${t}px`, this._container.style.zIndex = "1000", (this.canFocusing || o) && this.focus();
  1778. }
  1779. hasFocus() {
  1780. return document.activeElement === this._input;
  1781. }
  1782. focus() {
  1783. this._input.focus();
  1784. }
  1785. blur() {
  1786. this._input.blur();
  1787. }
  1788. // FIXME: for editor cell editor we don't need to blur the input element
  1789. /**
  1790. * @deprecated
  1791. */
  1792. deactivate() {
  1793. this._container.style.left = "0px", this._container.style.top = "0px";
  1794. }
  1795. // Handler double click.
  1796. __handleDblClick(e) {
  1797. const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
  1798. strict: !1,
  1799. segmentId: this._currentSegmentId,
  1800. segmentPage: this._currentSegmentPage
  1801. });
  1802. if (s == null || s.node == null)
  1803. return;
  1804. const r = _r(s.node);
  1805. if (r == null)
  1806. return;
  1807. const { content: i, st: a, nodeIndex: c } = r;
  1808. if (c === -1 || Intl.Segmenter == null)
  1809. return;
  1810. const l = new Intl.Segmenter(void 0, { granularity: "word" }).segment(i);
  1811. let d = Number.NEGATIVE_INFINITY, h = Number.NEGATIVE_INFINITY;
  1812. for (const { segment: u, index: g, isWordLike: f } of l)
  1813. if (g <= c && c < g + u.length && f) {
  1814. d = g + a, h = g + a + u.length;
  1815. break;
  1816. }
  1817. if (Number.isFinite(d) && Number.isFinite(h)) {
  1818. this.removeAllRanges();
  1819. const u = [
  1820. {
  1821. startOffset: d,
  1822. endOffset: h
  1823. }
  1824. ];
  1825. this.addDocRanges(u, !1, { forceFocus: !0 });
  1826. }
  1827. }
  1828. __handleTripleClick(e) {
  1829. const { offsetX: t, offsetY: o } = e, s = this._findNodeByCoord(t, o, {
  1830. strict: !1,
  1831. segmentId: this._currentSegmentId,
  1832. segmentPage: this._currentSegmentPage
  1833. });
  1834. if (s == null || s.node == null)
  1835. return;
  1836. const r = _r(s.node);
  1837. if (r == null)
  1838. return;
  1839. this.removeAllRanges();
  1840. const { st: i, ed: a } = r, c = [
  1841. {
  1842. startOffset: i,
  1843. endOffset: a
  1844. }
  1845. ];
  1846. this.addDocRanges(c, !1, { forceFocus: !0 });
  1847. }
  1848. // Handle pointer down.
  1849. // eslint-disable-next-line max-lines-per-function, complexity
  1850. __onPointDown(e) {
  1851. var f, p;
  1852. const { scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton(), { offsetX: r, offsetY: i } = e, a = this._findNodeByCoord(r, i, {
  1853. strict: !1,
  1854. segmentId: this._currentSegmentId,
  1855. segmentPage: this._currentSegmentPage
  1856. }), c = this._getNodePosition(a);
  1857. if (c == null || a == null) {
  1858. this._removeAllRanges();
  1859. return;
  1860. }
  1861. (a == null ? void 0 : a.node.streamType) === U.PARAGRAPH && (c.isBack = !0);
  1862. const A = this._textSelectionInner$.value;
  1863. if (a && e.button === 2 && A) {
  1864. const m = s.findCharIndexByPosition(c);
  1865. if (typeof m == "number" && A.textRanges.some((E) => E.startOffset <= m && E.endOffset > m) || typeof m == "number" && A.rectRanges.some((E) => E.startOffset <= m && E.endOffset >= m))
  1866. return;
  1867. }
  1868. const { segmentId: l, segmentPage: d } = a;
  1869. 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();
  1870. const h = Ac.create(t);
  1871. 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();
  1872. let u = r, g = i;
  1873. this._onPointerEvent = !0, this._scenePointerMoveSubs.push(t.onPointerMove$.subscribeEvent((m) => {
  1874. const { offsetX: E, offsetY: I } = m;
  1875. t.setCursor(mt.TEXT), !(Math.sqrt((E - u) ** 2 + (I - g) ** 2) < 3) && (this._moving(E, I), h.scrolling(E, I, () => {
  1876. this._moving(E, I);
  1877. }), u = E, g = I);
  1878. })), this._scenePointerUpSubs.push(t.onPointerUp$.subscribeEvent(() => {
  1879. if ([...this._scenePointerMoveSubs, ...this._scenePointerUpSubs].forEach((E) => {
  1880. E.unsubscribe();
  1881. }), this._onPointerEvent = !1, t.enableObjectsEvent(), this._anchorNodePosition && !this._focusNodePosition) {
  1882. if (e.ctrlKey) {
  1883. this._disposeScrollTimers();
  1884. return;
  1885. }
  1886. const E = new Mt(t, o, s, this._anchorNodePosition, void 0, this._selectionStyle, this._currentSegmentId, this._currentSegmentPage);
  1887. this._addTextRange(E);
  1888. } else if (this._anchorNodePosition && this._focusNodePosition) {
  1889. for (const E of this._rangeListCache)
  1890. e.ctrlKey ? E.collapsed ? E.dispose() : this._addTextRange(E) : this._addTextRange(E);
  1891. this._addRectRanges(this._rectRangeListCache), this._rangeListCache = [], this._rectRangeListCache = [];
  1892. }
  1893. this._anchorNodePosition = null, this._focusNodePosition = null;
  1894. const m = {
  1895. textRanges: this._getAllTextRanges(),
  1896. rectRanges: this._getAllRectRanges(),
  1897. segmentId: this._currentSegmentId,
  1898. segmentPage: this._currentSegmentPage,
  1899. style: this._selectionStyle,
  1900. isEditing: !1
  1901. };
  1902. this._textSelectionInner$.next(m), this._disposeScrollTimers(), this._updateInputPosition(!0);
  1903. }));
  1904. }
  1905. removeAllRanges() {
  1906. this._removeAllRanges(), this.deactivate();
  1907. }
  1908. getActiveTextRange() {
  1909. return this._getActiveRangeInstance();
  1910. }
  1911. _disposeScrollTimers() {
  1912. this._scrollTimers.forEach((e) => {
  1913. e == null || e.dispose();
  1914. }), this._scrollTimers = [];
  1915. }
  1916. _setSystemHighlightColorToStyle() {
  1917. const { r: e, g: t, b: o, a: s } = lc(), r = {
  1918. strokeWidth: 1.5,
  1919. stroke: "rgba(0, 0, 0, 0)",
  1920. strokeActive: "rgba(0, 0, 0, 1)",
  1921. fill: `rgba(${e}, ${t}, ${o}, ${s != null ? s : 0.3})`
  1922. };
  1923. this._setRangeStyle(r);
  1924. }
  1925. _getAllTextRanges() {
  1926. return this._rangeList.map(Xo);
  1927. }
  1928. _getAllRectRanges() {
  1929. return this._rectRangeList.map(BA);
  1930. }
  1931. getAllTextRanges() {
  1932. return this._getAllTextRanges();
  1933. }
  1934. getAllRectRanges() {
  1935. return this._getAllRectRanges();
  1936. }
  1937. _getActiveRange() {
  1938. const e = this._rangeList.find((s) => s.isActive());
  1939. if (e == null)
  1940. return null;
  1941. const { startOffset: t, endOffset: o } = e;
  1942. return t == null || o == null ? null : Xo(e);
  1943. }
  1944. _getActiveRangeInstance() {
  1945. return this._rangeList.find((e) => e.isActive());
  1946. }
  1947. dispose() {
  1948. super.dispose(), this._detachEvent(), this._removeAllRanges(), this._container.remove();
  1949. }
  1950. _initDOM() {
  1951. const { unitId: e } = this._context, t = document.createElement("div");
  1952. t.style.position = "fixed", t.style.left = "0px", t.style.top = "0px", t.id = `univer-doc-selection-container-${e}`;
  1953. const o = document.createElement("div"), s = document.createElement("div");
  1954. o.appendChild(s), t.appendChild(o), this._container = t, this._inputParent = o, this._input = s, this._initInput(), this._initInputEvents(), document.body.appendChild(t);
  1955. }
  1956. _registerContainer() {
  1957. this.disposeWithMe(
  1958. // the content editable div should be regarded as part of the applications container
  1959. this._layoutService.registerContainerElement(this._container)
  1960. );
  1961. }
  1962. _initInput() {
  1963. this._inputParent.style.cssText = `
  1964. position:absolute;
  1965. height:1px;
  1966. width:1px;
  1967. overflow: hidden;
  1968. `, this._input.contentEditable = "true", this._input.classList.add("univer-editor"), this._input.id = `__editor_${this._context.unitId}`, this._input.style.cssText = `
  1969. position: absolute;
  1970. overflow: hidden;
  1971. opacity: 1;
  1972. background: #000;
  1973. color: transparent;
  1974. outline: none;
  1975. z-index: -2;
  1976. caret-color: transparent;
  1977. white-space: pre-wrap;
  1978. user-select: text;
  1979. `;
  1980. }
  1981. _getNodePosition(e) {
  1982. if (e == null)
  1983. return;
  1984. const { node: t, ratioX: o, segmentPage: s } = e, i = this._docSkeletonManagerService.getSkeleton().findPositionByGlyph(t, s);
  1985. if (i == null)
  1986. return;
  1987. let c = o < 0.5;
  1988. return t.glyphType === xi.LIST && (c = !0), {
  1989. ...i,
  1990. isBack: c
  1991. };
  1992. }
  1993. _interactTextRanges(e) {
  1994. const t = [];
  1995. for (const o of this._rangeList) {
  1996. if (e.some((s) => s.isIntersection(o))) {
  1997. o.dispose();
  1998. continue;
  1999. }
  2000. t.push(o);
  2001. }
  2002. this._rangeList = t;
  2003. }
  2004. _interactRectRanges(e) {
  2005. const t = [];
  2006. for (const o of this._rectRangeList) {
  2007. if (e.some((s) => s.isIntersection(o))) {
  2008. o.dispose();
  2009. continue;
  2010. }
  2011. t.push(o);
  2012. }
  2013. this._rectRangeList = t;
  2014. }
  2015. _removeAllRanges() {
  2016. this._removeAllTextRanges(), this._removeAllRectRanges();
  2017. }
  2018. _removeAllCacheRanges() {
  2019. this._rangeListCache.forEach((e) => {
  2020. e.dispose();
  2021. }), this._rectRangeListCache.forEach((e) => {
  2022. e.dispose();
  2023. }), this._rangeListCache = [], this._rectRangeListCache = [];
  2024. }
  2025. _removeAllTextRanges() {
  2026. this._rangeList.forEach((e) => {
  2027. e.dispose();
  2028. }), this._rangeList = [];
  2029. }
  2030. _removeAllRectRanges() {
  2031. this._rectRangeList.forEach((e) => {
  2032. e.dispose();
  2033. }), this._rectRangeList = [];
  2034. }
  2035. _removeAllCollapsedTextRanges() {
  2036. for (const e of this._rangeList)
  2037. e.collapsed && e.dispose();
  2038. }
  2039. _deactivateAllTextRanges() {
  2040. this._rangeList.forEach((e) => {
  2041. e.deactivate();
  2042. });
  2043. }
  2044. _deactivateAllRectRanges() {
  2045. this._rectRangeList.forEach((e) => {
  2046. e.deactivate();
  2047. });
  2048. }
  2049. _addTextRangesToCache(e) {
  2050. this._rangeListCache.push(...e);
  2051. }
  2052. _addTextRange(e) {
  2053. this._deactivateAllTextRanges(), e.activate(), this._rangeList.push(e);
  2054. }
  2055. _addRectRangesToCache(e) {
  2056. this._rectRangeListCache.push(...e);
  2057. }
  2058. _addRectRanges(e) {
  2059. e.length !== 0 && (this._deactivateAllRectRanges(), e[e.length - 1].activate(), this._rectRangeList.push(...e));
  2060. }
  2061. _createTextRangeByAnchorPosition(e) {
  2062. this._removeAllRanges();
  2063. const { scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton(), r = new Mt(t, o, s, e, void 0, this._selectionStyle, this._currentSegmentId, this._currentSegmentPage);
  2064. this._addTextRange(r);
  2065. }
  2066. _updateActiveRangePosition(e) {
  2067. const t = this._getActiveRangeInstance();
  2068. if (t == null || t.anchorNodePosition == null) {
  2069. this._logService.error(
  2070. "[DocSelectionRenderService] _updateActiveRangeFocusPosition: active range has no anchor"
  2071. );
  2072. return;
  2073. }
  2074. this._removeAllRanges(), this._anchorNodePosition = t.anchorNodePosition, this._focusNodePosition = e;
  2075. const { scene: o, mainComponent: s } = this._context, r = this._docSkeletonManagerService.getSkeleton(), { _anchorNodePosition: i, _focusNodePosition: a, _selectionStyle: c, _currentSegmentId: A, _currentSegmentPage: l } = this;
  2076. if (i == null || a == null || s == null)
  2077. return;
  2078. const d = Ko(
  2079. i,
  2080. a,
  2081. o,
  2082. s,
  2083. r,
  2084. c,
  2085. A,
  2086. l
  2087. );
  2088. if (d == null)
  2089. return;
  2090. const { textRanges: h, rectRanges: u } = d;
  2091. this._addTextRangesToCache(h), this._addRectRangesToCache(u), this.deactivate();
  2092. }
  2093. _isEmpty() {
  2094. return this._rangeList.length === 0 && this._rectRangeList.length === 0;
  2095. }
  2096. _getCanvasOffset() {
  2097. var t;
  2098. const e = (t = this._context.scene) == null ? void 0 : t.getEngine();
  2099. return yA(e);
  2100. }
  2101. _updateInputPosition(e = !1) {
  2102. const t = this._getActiveRangeInstance(), o = t == null ? void 0 : t.getAnchor();
  2103. if (!o || o && !o.visible || this.activeViewPort == null) {
  2104. this.focus();
  2105. return;
  2106. }
  2107. const { left: s, top: r } = o, i = this.activeViewPort.getAbsoluteVector(rn.FromArray([s, r])), { x: a, y: c } = i;
  2108. let { left: A, top: l } = this._getCanvasOffset();
  2109. A += a, l += c, this.activate(A, l, e);
  2110. }
  2111. _moving(e, t) {
  2112. var m, E;
  2113. const { _currentSegmentId: o, _currentSegmentPage: s } = this, r = this._findNodeByCoord(e, t, {
  2114. strict: !0,
  2115. segmentId: o,
  2116. segmentPage: s
  2117. }), i = this._getNodePosition(r);
  2118. if (i == null || r == null)
  2119. return;
  2120. const a = r == null ? void 0 : r.node.parent, c = a == null ? void 0 : a.glyphGroup[a.glyphGroup.indexOf(r.node) + 1];
  2121. (r == null ? void 0 : r.node.streamType) === U.PARAGRAPH && (c == null ? void 0 : c.streamType) === U.SECTION_BREAK && (i.isBack = !0), this._focusNodePosition = i, this._removeAllCacheRanges();
  2122. const { _anchorNodePosition: A, _selectionStyle: l } = this, { scene: d, mainComponent: h } = this._context, u = this._docSkeletonManagerService.getSkeleton();
  2123. if (A == null || h == null)
  2124. return;
  2125. const g = Ko(
  2126. A,
  2127. i,
  2128. d,
  2129. h,
  2130. u,
  2131. l,
  2132. o,
  2133. s
  2134. );
  2135. if (g == null)
  2136. return;
  2137. const { textRanges: f, rectRanges: p } = g;
  2138. 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 = (m = this._context.scene) == null ? void 0 : m.getEngine()) == null || E.setCapture();
  2139. }
  2140. __attachScrollEvent() {
  2141. const e = this.activeViewPort;
  2142. if (!e)
  2143. return;
  2144. const { unitId: t } = this._context;
  2145. if (this._viewPortObserverMap.has(t))
  2146. return;
  2147. const o = e.onScrollAfter$.subscribeEvent((r) => {
  2148. if (!r.viewport)
  2149. return;
  2150. const a = this._getActiveRangeInstance();
  2151. a == null || a.activeStatic();
  2152. }), s = e.onScrollEnd$.subscribeEvent((r) => {
  2153. const i = r.viewport;
  2154. if (!i)
  2155. return;
  2156. const a = i.getBounding(), c = this._getActiveRangeInstance(), A = c == null ? void 0 : c.getAnchor();
  2157. if (!(!A || A && !A.visible)) {
  2158. if (a) {
  2159. const { left: l, top: d, right: h, bottom: u } = a.viewBound;
  2160. if (A.left < l || A.left > h || A.top < d || A.top > u) {
  2161. c == null || c.deactivateStatic();
  2162. return;
  2163. }
  2164. }
  2165. this._updateInputPosition();
  2166. }
  2167. });
  2168. this._viewPortObserverMap.set(t, {
  2169. scrollBefore: o,
  2170. scrollStop: s
  2171. });
  2172. }
  2173. // FIXME: listeners here are not correctly disposed
  2174. // eslint-disable-next-line max-lines-per-function
  2175. _initInputEvents() {
  2176. this.disposeWithMe(
  2177. Ue(this._input, "keydown").subscribe((e) => {
  2178. this._isIMEInputApply || this._eventHandle(e, (t) => {
  2179. this._onKeydown$.next(t);
  2180. });
  2181. })
  2182. ), this.disposeWithMe(
  2183. Ue(this._input, "input").subscribe((e) => {
  2184. if (!(e.inputType === "historyUndo" || e.inputType === "historyRedo")) {
  2185. if (this._rectRangeList.length > 0)
  2186. return e.stopPropagation(), e.preventDefault();
  2187. this._isIMEInputApply || this._eventHandle(e, (t) => {
  2188. this._onInputBefore$.next(t), this._onInput$.next(t);
  2189. });
  2190. }
  2191. })
  2192. ), this.disposeWithMe(
  2193. Ue(this._input, "compositionstart").subscribe((e) => {
  2194. if (this._rectRangeList.length > 0)
  2195. return e.stopPropagation(), e.preventDefault();
  2196. this._isIMEInputApply = !0, this._eventHandle(e, (t) => {
  2197. this._onCompositionstart$.next(t);
  2198. });
  2199. })
  2200. ), this.disposeWithMe(
  2201. Ue(this._input, "compositionend").subscribe((e) => {
  2202. this._isIMEInputApply = !1, this._eventHandle(e, (t) => {
  2203. this._onCompositionend$.next(t);
  2204. });
  2205. })
  2206. ), this.disposeWithMe(
  2207. Ue(this._input, "compositionupdate").subscribe((e) => {
  2208. this._eventHandle(e, (t) => {
  2209. this._onInputBefore$.next(t), this._onCompositionupdate$.next(t);
  2210. });
  2211. })
  2212. ), this.disposeWithMe(
  2213. Ue(this._input, "paste").subscribe((e) => {
  2214. this._eventHandle(e, (t) => {
  2215. this._onPaste$.next(t);
  2216. });
  2217. })
  2218. ), this.disposeWithMe(
  2219. Ue(this._input, "focus").subscribe((e) => {
  2220. this._eventHandle(e, (t) => {
  2221. this._onFocus$.next(t);
  2222. });
  2223. })
  2224. ), this.disposeWithMe(
  2225. Ue(this._input, "blur").subscribe((e) => {
  2226. this._eventHandle(e, (t) => {
  2227. this._onBlur$.next(t);
  2228. });
  2229. })
  2230. );
  2231. }
  2232. _eventHandle(e, t) {
  2233. const o = this._input.textContent || "";
  2234. this._input.innerHTML = "";
  2235. const s = this._getActiveRange(), r = this._getAllTextRanges();
  2236. t({
  2237. event: e,
  2238. content: o,
  2239. activeRange: s,
  2240. rangeList: r
  2241. });
  2242. }
  2243. _getTransformCoordForDocumentOffset(e, t) {
  2244. const o = this._context.mainComponent, { documentTransform: s } = o.getOffsetConfig();
  2245. if (this.activeViewPort == null || s == null)
  2246. return;
  2247. const r = this.activeViewPort.transformVector2SceneCoord(rn.FromArray([e, t]));
  2248. if (r)
  2249. return s.clone().invert().applyPoint(r);
  2250. }
  2251. _findNodeByCoord(e, t, o) {
  2252. const s = this._getTransformCoordForDocumentOffset(e, t);
  2253. if (s == null)
  2254. return;
  2255. const r = this._context.mainComponent, i = this._docSkeletonManagerService.getSkeleton(), {
  2256. pageLayoutType: a = an.VERTICAL,
  2257. pageMarginLeft: c,
  2258. pageMarginTop: A
  2259. } = r.getOffsetConfig();
  2260. return i.findNodeByCoord(
  2261. s,
  2262. a,
  2263. c,
  2264. A,
  2265. o
  2266. );
  2267. }
  2268. _detachEvent() {
  2269. 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();
  2270. }
  2271. };
  2272. Se = PA([
  2273. Cn(1, bs),
  2274. Cn(2, fs),
  2275. Cn(3, Q),
  2276. Cn(4, z(ie))
  2277. ], Se);
  2278. class DA extends ue {
  2279. constructor(t, o, s, r, i) {
  2280. super();
  2281. // Emit change event when editor lose focus.
  2282. x(this, "_change$", new Ee());
  2283. x(this, "change$", this._change$.asObservable());
  2284. // The input event fires when the value of a editor has been changed as a direct result of a user action.
  2285. x(this, "_input$", new Ee());
  2286. x(this, "input$", this._input$.asObservable());
  2287. // paste event.
  2288. x(this, "_paste$", new Ee());
  2289. x(this, "paste$", this._paste$.asObservable());
  2290. // Editor get focus.
  2291. x(this, "_focus$", new Ee());
  2292. x(this, "focus$", this._focus$.asObservable());
  2293. // Editor lose focus.
  2294. x(this, "_blur$", new Ee());
  2295. x(this, "blur$", this._blur$.asObservable());
  2296. // Emit when doc selection changed.
  2297. x(this, "_selectionChange$", new Ee());
  2298. x(this, "selectionChange$", this._selectionChange$.asObservable());
  2299. this._param = t, this._univerInstanceService = o, this._docSelectionManagerService = s, this._commandService = r, this._undoRedoService = i, this._listenSelection();
  2300. }
  2301. get docSelectionRenderService() {
  2302. return this._param.render.with(Se);
  2303. }
  2304. _listenSelection() {
  2305. const t = this._param.render.with(Se);
  2306. this.disposeWithMe(
  2307. t.onBlur$.subscribe((o) => {
  2308. this._blur$.next(o);
  2309. const s = this.getDocumentData();
  2310. this._change$.next({
  2311. target: this,
  2312. data: s
  2313. });
  2314. })
  2315. ), this.disposeWithMe(
  2316. t.onFocus$.subscribe((o) => {
  2317. this._focus$.next(o);
  2318. })
  2319. ), this.disposeWithMe(
  2320. t.onPaste$.subscribe((o) => {
  2321. this._paste$.next(o);
  2322. })
  2323. ), this.disposeWithMe(
  2324. Fi(
  2325. t.onInput$,
  2326. t.onKeydown$.pipe(zo((o) => {
  2327. const s = o.event;
  2328. return s.ctrlKey || s.metaKey ? [j.X, j.V].includes(s.keyCode) : [j.BACKSPACE].includes(s.keyCode);
  2329. })),
  2330. t.onCompositionupdate$,
  2331. t.onCompositionend$,
  2332. t.onPaste$
  2333. ).subscribe((o) => {
  2334. if (o == null)
  2335. return;
  2336. const { content: s = "" } = o, r = this.getDocumentData();
  2337. this._input$.next({
  2338. target: this,
  2339. content: s,
  2340. data: r,
  2341. isComposing: o.event.type === "compositionupdate"
  2342. });
  2343. })
  2344. ), this.disposeWithMe(
  2345. this._docSelectionManagerService.textSelection$.subscribe((o) => {
  2346. if (o == null)
  2347. return;
  2348. const { unitId: s, subUnitId: r, ...i } = o, a = this.getEditorId();
  2349. s === a && this._selectionChange$.next(i);
  2350. })
  2351. );
  2352. }
  2353. isFocus() {
  2354. const t = this._param.render.with(Se);
  2355. return t.isFocusing && !!t.getActiveTextRange();
  2356. }
  2357. /**
  2358. * @deprecated use `IEditorService.focus` as instead. this is for internal usage.
  2359. */
  2360. focus() {
  2361. const t = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC), o = this.getEditorId();
  2362. (t == null || t.getUnitId() !== o) && this._univerInstanceService.setCurrentUnitForType(o), this._param.render.with(Se).focus();
  2363. }
  2364. /**
  2365. * @deprecated use `IEditorService.blur` as instead. this is for internal usage.
  2366. */
  2367. blur() {
  2368. this._param.render.with(Se).blur();
  2369. }
  2370. // Selects the entire content of the editor.
  2371. // Calling editor.select() will not necessarily focus the editor, so it is often used with Editor.focus
  2372. select() {
  2373. const t = this.getDocumentData();
  2374. return this.setSelectionRanges([{
  2375. startOffset: 0,
  2376. endOffset: t.body ? t.body.dataStream.length - 2 : 0
  2377. }]);
  2378. }
  2379. // Selects the specified range of characters within editor.
  2380. setSelectionRanges(t) {
  2381. const o = this.getEditorId(), s = {
  2382. unitId: o,
  2383. subUnitId: o
  2384. };
  2385. return this._docSelectionManagerService.replaceDocRanges(t, s, !1);
  2386. }
  2387. // Get current doc ranges. include text range and rect range.
  2388. getSelectionRanges() {
  2389. const t = this.getEditorId(), o = {
  2390. unitId: t,
  2391. subUnitId: t
  2392. };
  2393. return this._docSelectionManagerService.getDocRanges(o);
  2394. }
  2395. getCursorPosition() {
  2396. var o, s;
  2397. return (s = (o = this.getSelectionRanges().find((r) => r.collapsed)) == null ? void 0 : o.startOffset) != null ? s : -1;
  2398. }
  2399. // get editor id.
  2400. getEditorId() {
  2401. return this._getEditorId();
  2402. }
  2403. // get document data.
  2404. getDocumentData() {
  2405. return this._getDocDataModel().getSnapshot();
  2406. }
  2407. getDocumentDataModel() {
  2408. return this._getDocDataModel();
  2409. }
  2410. // Set the new document data.
  2411. setDocumentData(t, o) {
  2412. const { id: s } = t;
  2413. this._commandService.syncExecuteCommand(Vi.id, {
  2414. unitId: s,
  2415. snapshot: t,
  2416. textRanges: o
  2417. });
  2418. }
  2419. replaceText(t, o = !0) {
  2420. const s = this.getDocumentData();
  2421. this.setDocumentData(
  2422. {
  2423. ...s,
  2424. body: {
  2425. dataStream: `${t}\r
  2426. `,
  2427. paragraphs: [{
  2428. startIndex: 0
  2429. }],
  2430. customRanges: [],
  2431. sectionBreaks: [],
  2432. tables: [],
  2433. textRuns: []
  2434. }
  2435. },
  2436. o ? [{
  2437. startOffset: t.length,
  2438. endOffset: t.length,
  2439. collapsed: !0
  2440. }] : null
  2441. );
  2442. }
  2443. // Clear the undo redo history of this editor.
  2444. clearUndoRedoHistory() {
  2445. const t = this.getEditorId();
  2446. return this._undoRedoService.clearUndoRedo(t);
  2447. }
  2448. dispose() {
  2449. this._getDocDataModel().dispose();
  2450. }
  2451. /**
  2452. * @deprecated use getEditorId.
  2453. */
  2454. get editorUnitId() {
  2455. return this._param.editorUnitId;
  2456. }
  2457. /**
  2458. * @deprecated @TODO: @JOCS remove this in the future.
  2459. */
  2460. get params() {
  2461. return this._param;
  2462. }
  2463. get cancelDefaultResizeListener() {
  2464. return this._param.cancelDefaultResizeListener;
  2465. }
  2466. get render() {
  2467. return this._param.render;
  2468. }
  2469. isReadOnly() {
  2470. return this._param.readonly === !0;
  2471. }
  2472. getBoundingClientRect() {
  2473. return this._param.editorDom.getBoundingClientRect();
  2474. }
  2475. get editorDOM() {
  2476. return this._param.editorDom;
  2477. }
  2478. isVisible() {
  2479. return this._param.visible;
  2480. }
  2481. isSheetEditor() {
  2482. return to(this._getEditorId());
  2483. }
  2484. /**
  2485. * @deprecated use getDocumentData.
  2486. */
  2487. getValue() {
  2488. var s;
  2489. return (((s = this._getDocDataModel().getBody()) == null ? void 0 : s.dataStream) || "").replace(/\r\n/g, "").replace(/\n/g, "").replace(/\n/g, "");
  2490. }
  2491. /**
  2492. * @deprecated use getDocumentData.
  2493. */
  2494. getBody() {
  2495. return this._getDocDataModel().getBody();
  2496. }
  2497. /**
  2498. * @deprecated.
  2499. */
  2500. update(t) {
  2501. this._param = {
  2502. ...this._param,
  2503. ...t
  2504. };
  2505. }
  2506. /**
  2507. * @deprecated.
  2508. */
  2509. updateCanvasStyle() {
  2510. var s;
  2511. const t = this._getDocDataModel();
  2512. if (t == null)
  2513. return;
  2514. const o = {};
  2515. (s = this._param.canvasStyle) != null && s.fontSize && (o.textStyle == null && (o.textStyle = {}), o.textStyle.fs = this._param.canvasStyle.fontSize), t.updateDocumentStyle(o);
  2516. }
  2517. _getDocDataModel() {
  2518. const t = this._getEditorId();
  2519. return this._univerInstanceService.getUnit(t, _.UNIVER_DOC);
  2520. }
  2521. _getEditorId() {
  2522. var t;
  2523. return ((t = this._param.initialSnapshot) == null ? void 0 : t.id) || this._param.editorUnitId || "";
  2524. }
  2525. }
  2526. var wA = Object.defineProperty, NA = Object.getOwnPropertyDescriptor, QA = (n, e, t, o) => {
  2527. for (var s = o > 1 ? void 0 : o ? NA(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  2528. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  2529. return o && s && wA(e, t, s), s;
  2530. }, Rt = (n, e) => (t, o) => e(t, o, n);
  2531. const UA = [
  2532. "univer-editor",
  2533. "univer-range-selector",
  2534. "univer-range-selector-editor",
  2535. "univer-render-canvas",
  2536. "univer-text-editor-container-placeholder"
  2537. ];
  2538. let Jo = class extends ue {
  2539. constructor(e, t, o, s, r, i) {
  2540. super();
  2541. x(this, "_editors", /* @__PURE__ */ new Map());
  2542. x(this, "_focusEditorUnitId");
  2543. x(this, "_blur$", new Ee());
  2544. x(this, "blur$", this._blur$.asObservable());
  2545. x(this, "_focus$", new Ee());
  2546. x(this, "focus$", this._focus$.asObservable());
  2547. this._univerInstanceService = e, this._renderManagerService = t, this._docSelectionManagerService = o, this._contextService = s, this._commandService = r, this._undoRedoService = i, this._initUniverFocusListener();
  2548. }
  2549. // REFACTOR: @Gggpound The specific business processing should not be placed here,
  2550. // I moved from the layout service. https://github.com/dream-num/univer-pro/issues/1708
  2551. _initUniverFocusListener() {
  2552. this.disposeWithMe(
  2553. Ue(window, "focusin").subscribe((e) => {
  2554. const t = e.target;
  2555. this._blurSheetEditor(t);
  2556. })
  2557. );
  2558. }
  2559. _blurSheetEditor(e) {
  2560. if (UA.some((o) => e.classList.contains(o)))
  2561. return;
  2562. const t = this.getFocusEditor();
  2563. t && t.isSheetEditor() !== !0 && this.blur();
  2564. }
  2565. _setFocusId(e) {
  2566. this._focusEditorUnitId = e;
  2567. }
  2568. getFocusId() {
  2569. return this._focusEditorUnitId;
  2570. }
  2571. getFocusEditor() {
  2572. if (this._focusEditorUnitId)
  2573. return this.getEditor(this._focusEditorUnitId);
  2574. }
  2575. isEditor(e) {
  2576. return this._editors.has(e);
  2577. }
  2578. isSheetEditor(e) {
  2579. const t = this._editors.get(e);
  2580. return !!(t && t.isSheetEditor());
  2581. }
  2582. blur() {
  2583. this._setFocusId(null), this._contextService.setContextValue(wn, !1), this._contextService.setContextValue(lr, !1);
  2584. const e = this.getFocusEditor();
  2585. e == null || e.blur(), this._blur$.next(null);
  2586. }
  2587. focus(e) {
  2588. if (this._focusEditorUnitId && this.blur(), e == null)
  2589. return;
  2590. const t = this.getEditor(e);
  2591. if (t == null)
  2592. return;
  2593. this._univerInstanceService.setCurrentUnitForType(e);
  2594. const o = t.getValue().length;
  2595. this._contextService.setContextValue(wn, !0), to(e) || this._contextService.setContextValue(lr, !0), t.focus(), this._setFocusId(e), this._focus$.next({
  2596. startOffset: o,
  2597. endOffset: o
  2598. });
  2599. }
  2600. dispose() {
  2601. this._editors.clear(), super.dispose();
  2602. }
  2603. getEditor(e = this._getCurrentEditorUnitId()) {
  2604. return this._editors.get(e);
  2605. }
  2606. getAllEditor() {
  2607. return this._editors;
  2608. }
  2609. register(e, t) {
  2610. var c, A, l, d;
  2611. const { initialSnapshot: o, canvasStyle: s = {} } = e, r = o.id;
  2612. this._univerInstanceService.getUnit(r, _.UNIVER_DOC) == null && this._univerInstanceService.createUnit(
  2613. _.UNIVER_DOC,
  2614. o || this._getBlank(r),
  2615. { makeCurrent: !1 }
  2616. );
  2617. let a = this._renderManagerService.getRenderById(r);
  2618. if (a == null && (this._renderManagerService.create(r), a = this._renderManagerService.getRenderById(r)), a) {
  2619. a.engine.setContainer(t);
  2620. const h = new DA(
  2621. { ...e, render: a, editorDom: t, canvasStyle: s },
  2622. this._univerInstanceService,
  2623. this._docSelectionManagerService,
  2624. this._commandService,
  2625. this._undoRedoService
  2626. );
  2627. 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();
  2628. }
  2629. return Zn(() => {
  2630. this._unRegister(r);
  2631. });
  2632. }
  2633. _unRegister(e) {
  2634. const t = this._editors.get(e);
  2635. t != null && (this._renderManagerService.removeRender(e), t.dispose(), this._editors.delete(e), this._univerInstanceService.disposeUnit(e));
  2636. }
  2637. _getCurrentEditorUnitId() {
  2638. return this._univerInstanceService.getCurrentUniverDocInstance().getUnitId();
  2639. }
  2640. _getBlank(e) {
  2641. return {
  2642. id: e,
  2643. body: {
  2644. dataStream: `${pi}`,
  2645. textRuns: [],
  2646. paragraphs: [
  2647. {
  2648. startIndex: 0
  2649. }
  2650. ]
  2651. },
  2652. documentStyle: {
  2653. renderConfig: {
  2654. verticalAlign: Va.TOP,
  2655. horizontalAlign: _e.LEFT
  2656. },
  2657. marginLeft: 3,
  2658. marginTop: 0,
  2659. marginRight: 3
  2660. }
  2661. };
  2662. }
  2663. };
  2664. Jo = QA([
  2665. Rt(0, Q),
  2666. Rt(1, fe),
  2667. Rt(2, z(G)),
  2668. Rt(3, ms),
  2669. Rt(4, y),
  2670. Rt(5, eo)
  2671. ], Jo);
  2672. const He = ps("univer.editor.service");
  2673. function LA(n) {
  2674. const { editorId: e, initialValue: t, container: o, autoFocus: s, isSingle: r } = n, i = Fe(() => s != null ? s : !1, []), [a, c] = ve(), A = $(He);
  2675. return kc(() => {
  2676. var l, d;
  2677. if (o.current) {
  2678. const h = {
  2679. body: {
  2680. dataStream: `\r
  2681. `,
  2682. textRuns: [],
  2683. customBlocks: [],
  2684. customDecorations: [],
  2685. customRanges: [],
  2686. paragraphs: [{
  2687. startIndex: 0
  2688. }]
  2689. },
  2690. ...t,
  2691. documentStyle: {
  2692. ...t == null ? void 0 : t.documentStyle,
  2693. pageSize: {
  2694. width: r ? 1 / 0 : o.current.clientWidth,
  2695. height: 1 / 0
  2696. }
  2697. },
  2698. id: e
  2699. }, u = A.register(
  2700. {
  2701. autofocus: !0,
  2702. editorUnitId: e,
  2703. initialSnapshot: h
  2704. },
  2705. o.current
  2706. ), g = A.getEditor(e);
  2707. if (c(g), i) {
  2708. g.focus();
  2709. const f = ((d = (l = h.body) == null ? void 0 : l.dataStream.length) != null ? d : 2) - 2;
  2710. g.setSelectionRanges([{ startOffset: f, endOffset: f }]);
  2711. }
  2712. return () => {
  2713. u == null || u.dispose();
  2714. };
  2715. }
  2716. }, []), a;
  2717. }
  2718. const at = {
  2719. id: "doc.operation.move-cursor",
  2720. type: N.OPERATION,
  2721. handler: (n, e) => !!e
  2722. }, ct = {
  2723. id: "doc.operation.move-selection",
  2724. type: N.OPERATION,
  2725. handler: (n, e) => !!e
  2726. }, FA = (n, e, t, o) => {
  2727. const s = $(y), r = $(ro), i = cn(e);
  2728. i.current = e;
  2729. const a = cn(o);
  2730. a.current = o, Re(() => {
  2731. if (!t || !n)
  2732. return;
  2733. const A = `sheet.formula-embedding-editor.${t.getEditorId()}`, l = new Dn(), d = (u, g) => {
  2734. if (a.current) {
  2735. a.current(u, g);
  2736. return;
  2737. }
  2738. let f = se.LEFT;
  2739. u === j.ARROW_DOWN ? f = se.DOWN : u === j.ARROW_UP ? f = se.UP : u === j.ARROW_RIGHT && (f = se.RIGHT), g === K.SHIFT ? s.executeCommand(ct.id, {
  2740. direction: f
  2741. }) : s.executeCommand(at.id, {
  2742. direction: f
  2743. });
  2744. };
  2745. return l.add(s.registerCommand({
  2746. id: A,
  2747. type: N.OPERATION,
  2748. handler(u, g) {
  2749. const { keyCode: f } = g;
  2750. d(f);
  2751. }
  2752. })), [
  2753. { keyCode: j.ARROW_DOWN },
  2754. { keyCode: j.ARROW_LEFT },
  2755. { keyCode: j.ARROW_RIGHT },
  2756. { keyCode: j.ARROW_UP },
  2757. { keyCode: j.ARROW_DOWN, metaKey: K.SHIFT },
  2758. { keyCode: j.ARROW_LEFT, metaKey: K.SHIFT },
  2759. { keyCode: j.ARROW_RIGHT, metaKey: K.SHIFT },
  2760. { keyCode: j.ARROW_UP, metaKey: K.SHIFT },
  2761. { keyCode: j.ARROW_DOWN, metaKey: K.CTRL_COMMAND },
  2762. { keyCode: j.ARROW_LEFT, metaKey: K.CTRL_COMMAND },
  2763. { keyCode: j.ARROW_RIGHT, metaKey: K.CTRL_COMMAND },
  2764. { keyCode: j.ARROW_UP, metaKey: K.CTRL_COMMAND },
  2765. { keyCode: j.ARROW_DOWN, metaKey: K.CTRL_COMMAND | K.SHIFT },
  2766. { keyCode: j.ARROW_LEFT, metaKey: K.CTRL_COMMAND | K.SHIFT },
  2767. { keyCode: j.ARROW_RIGHT, metaKey: K.CTRL_COMMAND | K.SHIFT },
  2768. { keyCode: j.ARROW_UP, metaKey: K.CTRL_COMMAND | K.SHIFT }
  2769. ].map(({ keyCode: u, metaKey: g }) => ({
  2770. id: A,
  2771. binding: g ? u | g : u,
  2772. preconditions: () => !0,
  2773. priority: 900,
  2774. staticParameters: {
  2775. eventType: Ri.Keyboard,
  2776. keyCode: u
  2777. }
  2778. })).forEach((u) => {
  2779. l.add(r.registerShortcut(u));
  2780. }), () => {
  2781. l.dispose();
  2782. };
  2783. }, [s, t, n, r]);
  2784. };
  2785. function HA(n, e) {
  2786. const t = $(y);
  2787. Re(() => {
  2788. if (!n) return;
  2789. const o = t.onCommandExecuted((s) => {
  2790. if (s.id === J.id) {
  2791. if (s.params.unitId !== n.getEditorId()) return;
  2792. e(n.getDocumentData());
  2793. }
  2794. });
  2795. return () => {
  2796. o.dispose();
  2797. };
  2798. }, [n, e, t]);
  2799. }
  2800. const kA = "univer-rich-text-editor-active", VA = "univer-rich-text-editor-wrap", jA = "univer-rich-text-editor-text", WA = "univer-rich-text-editor-error-wrap", zA = "univer-rich-text-editor-placeholder", Xt = {
  2801. richTextEditorActive: kA,
  2802. richTextEditorWrap: VA,
  2803. richTextEditorText: jA,
  2804. richTextEditorErrorWrap: WA,
  2805. richTextEditorPlaceholder: zA
  2806. }, cf = It((n, e) => {
  2807. var te;
  2808. const {
  2809. className: t,
  2810. autoFocus: o,
  2811. onFocusChange: s,
  2812. initialValue: r,
  2813. onClickOutside: i,
  2814. keyboardEventConfig: a,
  2815. moveCursor: c = !0,
  2816. style: A,
  2817. isSingle: l,
  2818. editorId: d,
  2819. onHeightChange: h,
  2820. onChange: u,
  2821. defaultHeight: g = 32,
  2822. maxHeight: f = 32
  2823. } = n, p = $(He), m = xo(s), E = xo(i), [I, v] = ve(g), R = Wo.useRef(null), S = Fe(() => d != null ? d : ja(`RICH_TEXT_EDITOR-${pt(4)}`), [d]), C = LA({
  2824. editorId: S,
  2825. initialValue: r,
  2826. container: R,
  2827. autoFocus: o,
  2828. isSingle: l
  2829. }), O = $(fe).getRenderById(S), P = O == null ? void 0 : O.with(Se), b = (te = P == null ? void 0 : P.isFocusing) != null ? te : !1, B = Wo.useRef(null), [M, H] = ve(() => {
  2830. var q, V;
  2831. return !Ce.transform.getPlainText((V = (q = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : q.dataStream) != null ? V : "");
  2832. }), { checkScrollBar: F } = dA(C, l, !0, !0), D = xo((q) => {
  2833. const V = O == null ? void 0 : O.with(ie), Y = V == null ? void 0 : V.getSkeleton().getActualSize();
  2834. Y && (h == null || h(Y.actualHeight), v(Math.max(g, Math.min(Y.actualHeight + 10, f)))), u == null || u(q), F();
  2835. });
  2836. return Re(() => {
  2837. var V, Y;
  2838. H(!Ce.transform.getPlainText((Y = (V = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : V.dataStream) != null ? Y : ""));
  2839. const q = C == null ? void 0 : C.selectionChange$.subscribe(() => {
  2840. var oe, ce;
  2841. H(!Ce.transform.getPlainText((ce = (oe = C == null ? void 0 : C.getDocumentData().body) == null ? void 0 : oe.dataStream) != null ? ce : ""));
  2842. });
  2843. return () => q == null ? void 0 : q.unsubscribe();
  2844. }, [C]), Nn(C == null ? void 0 : C.blur$), Nn(C == null ? void 0 : C.focus$), Re(() => {
  2845. m == null || m(b);
  2846. }, [b, m]), Re(() => {
  2847. const q = (V) => {
  2848. var oe, ce;
  2849. p.getFocusId() !== S || ((ce = (oe = V.target) == null ? void 0 : oe.dataset) == null ? void 0 : ce.editorid) === S || B.current && !B.current.contains(V.target) && (E == null || E());
  2850. };
  2851. return setTimeout(() => {
  2852. document.addEventListener("click", q);
  2853. }, 100), () => {
  2854. document.removeEventListener("click", q);
  2855. };
  2856. }, [C, S, p, E]), FA(b && c, !1, C), lA(b, a, C), Vc(e, () => C, [C]), HA(C, D), /* @__PURE__ */ w.jsx("div", { className: Un(Xt.richTextEditor, t), style: A, children: /* @__PURE__ */ w.jsxs(
  2857. "div",
  2858. {
  2859. className: Un(Xt.richTextEditorWrap, {
  2860. [Xt.richTextEditorActive]: b
  2861. }),
  2862. style: { height: I },
  2863. ref: B,
  2864. children: [
  2865. /* @__PURE__ */ w.jsx(
  2866. "div",
  2867. {
  2868. className: Xt.richTextEditorText,
  2869. ref: R,
  2870. onMouseUp: () => C == null ? void 0 : C.focus()
  2871. }
  2872. ),
  2873. M ? /* @__PURE__ */ w.jsx("div", { className: Xt.richTextEditorPlaceholder, children: n.placeholder }) : null
  2874. ]
  2875. }
  2876. ) });
  2877. });
  2878. var Qe = function() {
  2879. return Qe = Object.assign || function(n) {
  2880. for (var e, t = 1, o = arguments.length; t < o; t++) {
  2881. e = arguments[t];
  2882. for (var s in e) Object.prototype.hasOwnProperty.call(e, s) && (n[s] = e[s]);
  2883. }
  2884. return n;
  2885. }, Qe.apply(this, arguments);
  2886. }, GA = function(n, e) {
  2887. var t = {};
  2888. for (var o in n) Object.prototype.hasOwnProperty.call(n, o) && e.indexOf(o) < 0 && (t[o] = n[o]);
  2889. if (n != null && typeof Object.getOwnPropertySymbols == "function")
  2890. for (var s = 0, o = Object.getOwnPropertySymbols(n); s < o.length; s++)
  2891. e.indexOf(o[s]) < 0 && Object.prototype.propertyIsEnumerable.call(n, o[s]) && (t[o[s]] = n[o[s]]);
  2892. return t;
  2893. }, Ht = It(function(n, e) {
  2894. 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 = cn("_".concat(KA()));
  2895. return qi(t, "".concat(o), { defIds: t.defIds, idSuffix: c.current }, Qe({ ref: e, className: a }, i), r);
  2896. });
  2897. function qi(n, e, t, o, s) {
  2898. return Ft(n.tag, Qe(Qe({ key: e }, YA(n, t, s)), o), (qA(n, t).children || []).map(function(r, i) {
  2899. return qi(r, "".concat(e, "-").concat(n.tag, "-").concat(i), t, void 0, s);
  2900. }));
  2901. }
  2902. function YA(n, e, t) {
  2903. var o = Qe({}, n.attrs);
  2904. t != null && t.colorChannel1 && o.fill === "colorChannel1" && (o.fill = t.colorChannel1);
  2905. var s = e.defIds;
  2906. 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) {
  2907. var i = r[0], a = r[1];
  2908. typeof a == "string" && (o[i] = a.replace(/url\(#(.*)\)/, "url(#$1".concat(e.idSuffix, ")")));
  2909. })), o;
  2910. }
  2911. function qA(n, e) {
  2912. var t, o = e.defIds;
  2913. 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) {
  2914. 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;
  2915. }) }) : n;
  2916. }
  2917. function KA() {
  2918. return Math.random().toString(36).substring(2, 8);
  2919. }
  2920. Ht.displayName = "UniverIcon";
  2921. 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" } }] }, Ki = It(function(n, e) {
  2922. return Ft(Ht, Object.assign({}, n, {
  2923. id: "align-text-both-single",
  2924. ref: e,
  2925. icon: XA
  2926. }));
  2927. });
  2928. Ki.displayName = "AlignTextBothSingle";
  2929. 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" } }] }, Xi = It(function(n, e) {
  2930. return Ft(Ht, Object.assign({}, n, {
  2931. id: "horizontally-single",
  2932. ref: e,
  2933. icon: JA
  2934. }));
  2935. });
  2936. Xi.displayName = "HorizontallySingle";
  2937. 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" } }] }, Ji = It(function(n, e) {
  2938. return Ft(Ht, Object.assign({}, n, {
  2939. id: "left-justifying-single",
  2940. ref: e,
  2941. icon: ZA
  2942. }));
  2943. });
  2944. Ji.displayName = "LeftJustifyingSingle";
  2945. 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" } }] }, Zi = It(function(n, e) {
  2946. return Ft(Ht, Object.assign({}, n, {
  2947. id: "right-justifying-single",
  2948. ref: e,
  2949. icon: $A
  2950. }));
  2951. });
  2952. Zi.displayName = "RightJustifyingSingle";
  2953. var el = { 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" } }] }, $i = It(function(n, e) {
  2954. return Ft(Ht, Object.assign({}, n, {
  2955. id: "todo-list",
  2956. ref: e,
  2957. icon: el
  2958. }));
  2959. });
  2960. $i.displayName = "TodoList";
  2961. function ea(n) {
  2962. var o;
  2963. const { dataStream: e } = (o = n.body) != null ? o : {}, t = [
  2964. U.TABLE_START,
  2965. U.TABLE_CELL_END,
  2966. U.TABLE_CELL_START,
  2967. U.TABLE_END,
  2968. U.TABLE_ROW_END,
  2969. U.TABLE_ROW_START,
  2970. U.COLUMN_BREAK,
  2971. U.PAGE_BREAK,
  2972. U.TAB,
  2973. U.DOCS_END,
  2974. U.CUSTOM_BLOCK
  2975. ];
  2976. if (typeof e == "string")
  2977. for (let s = 0; s < e.length; s++) {
  2978. const r = e[s];
  2979. if (!t.includes(r))
  2980. return s;
  2981. }
  2982. return 0;
  2983. }
  2984. const ta = "COMPONENT_DOC_HEADER_FOOTER_PANEL", tl = "univer-panel", nl = "univer-options-section", ol = "univer-options-form-item", sl = "univer-options-input", rl = "univer-options-margin-setting", Pe = {
  2985. panel: tl,
  2986. optionsSection: nl,
  2987. optionsFormItem: ol,
  2988. optionsInput: sl,
  2989. optionsMarginSetting: rl
  2990. };
  2991. function il(n, e, t) {
  2992. const { useFirstPageHeaderFooter: o, evenAndOddHeaders: s, defaultHeaderId: r, defaultFooterId: i, firstPageHeaderId: a, firstPageFooterId: c, evenPageHeaderId: A, evenPageFooterId: l } = n;
  2993. return e === ge.HEADER ? o === L.TRUE ? t === 0 ? a : s === L.TRUE && t % 2 === 1 ? A : r : s === L.TRUE && t % 2 === 1 ? A : r : o === L.TRUE ? t === 0 ? c : s === L.TRUE && t % 2 === 1 ? l : i : s === L.TRUE && t % 2 === 1 ? l : i;
  2994. }
  2995. const al = (n) => {
  2996. const e = $(Ze), t = $(Q), o = $(fe), s = $(y), r = $(bs), { unitId: i } = n, a = o.getRenderById(i).with(Se), [c, A] = ve({}), l = (u, g) => {
  2997. var C;
  2998. A((T) => ({
  2999. ...T,
  3000. [g]: u ? L.TRUE : L.FALSE
  3001. }));
  3002. const f = t.getUniverDocInstance(i), p = f == null ? void 0 : f.getSnapshot().documentStyle, m = (C = o.getRenderById(i)) == null ? void 0 : C.with(ie), E = m == null ? void 0 : m.getViewModel();
  3003. if (p == null || E == null)
  3004. return;
  3005. const I = E.getEditArea();
  3006. let v = !1;
  3007. const R = a.getSegmentPage();
  3008. let S = !1;
  3009. if (g === "useFirstPageHeaderFooter" && u === !0 && ((I === ge.HEADER && !p.firstPageHeaderId || I === ge.FOOTER && !p.firstPageFooterId) && (v = !0), v && R === 0 && (S = !0)), g === "evenAndOddHeaders" && u === !0 && ((I === ge.HEADER && !p.evenPageHeaderId || I === ge.FOOTER && !p.evenPageFooterId) && (v = !0), v && R % 2 === 1 && (S = !0)), v) {
  3010. const O = X.generateRandomId(6);
  3011. S && a.setSegment(O), s.executeCommand(_n, {
  3012. unitId: i,
  3013. segmentId: O,
  3014. headerFooterProps: {
  3015. [g]: u ? L.TRUE : L.FALSE
  3016. }
  3017. });
  3018. } else {
  3019. const T = a.getSegmentPage(), O = a.getSegment(), P = il(
  3020. {
  3021. ...p,
  3022. [g]: u ? L.TRUE : L.FALSE
  3023. },
  3024. I,
  3025. T
  3026. );
  3027. P && P !== O && a.setSegment(P), s.executeCommand(_n, {
  3028. unitId: i,
  3029. headerFooterProps: {
  3030. [g]: u ? L.TRUE : L.FALSE
  3031. }
  3032. });
  3033. }
  3034. r.focus();
  3035. }, d = async (u, g) => {
  3036. A((f) => ({
  3037. ...f,
  3038. [g]: u
  3039. })), await s.executeCommand(_n, {
  3040. unitId: i,
  3041. headerFooterProps: {
  3042. [g]: u
  3043. }
  3044. }), a.removeAllRanges(), a.blur();
  3045. }, h = () => {
  3046. s.executeCommand(Ps.id, {
  3047. unitId: i
  3048. });
  3049. };
  3050. return Re(() => {
  3051. const u = t.getUniverDocInstance(i), g = u == null ? void 0 : u.getSnapshot().documentStyle;
  3052. if (g) {
  3053. const {
  3054. marginHeader: f = 0,
  3055. marginFooter: p = 0,
  3056. useFirstPageHeaderFooter: m = L.FALSE,
  3057. evenAndOddHeaders: E = L.FALSE
  3058. } = g;
  3059. A({
  3060. marginHeader: f,
  3061. marginFooter: p,
  3062. useFirstPageHeaderFooter: m,
  3063. evenAndOddHeaders: E
  3064. });
  3065. }
  3066. }, [i]), /* @__PURE__ */ w.jsxs("div", { className: Pe.options, children: [
  3067. /* @__PURE__ */ w.jsxs("div", { className: Pe.optionsSection, children: [
  3068. /* @__PURE__ */ w.jsx("div", { className: Pe.optionsFormItem, children: /* @__PURE__ */ w.jsx(
  3069. Rr,
  3070. {
  3071. checked: c.useFirstPageHeaderFooter === L.TRUE,
  3072. onChange: (u) => {
  3073. l(u, "useFirstPageHeaderFooter");
  3074. },
  3075. children: e.t("headerFooter.firstPageCheckBox")
  3076. }
  3077. ) }),
  3078. /* @__PURE__ */ w.jsx("div", { className: Pe.optionsFormItem, children: /* @__PURE__ */ w.jsx(
  3079. Rr,
  3080. {
  3081. checked: c.evenAndOddHeaders === L.TRUE,
  3082. onChange: (u) => {
  3083. l(u, "evenAndOddHeaders");
  3084. },
  3085. children: e.t("headerFooter.oddEvenCheckBox")
  3086. }
  3087. ) })
  3088. ] }),
  3089. /* @__PURE__ */ w.jsxs("div", { className: Un(Pe.optionsSection, Pe.optionsMarginSetting), children: [
  3090. /* @__PURE__ */ w.jsxs("div", { className: Pe.optionsMarginItem, children: [
  3091. /* @__PURE__ */ w.jsx("span", { children: e.t("headerFooter.headerTopMargin") }),
  3092. /* @__PURE__ */ w.jsx(
  3093. An,
  3094. {
  3095. min: 0,
  3096. max: 200,
  3097. precision: 1,
  3098. value: c.marginHeader,
  3099. onChange: (u) => {
  3100. d(u, "marginHeader");
  3101. },
  3102. className: Pe.optionsInput
  3103. }
  3104. )
  3105. ] }),
  3106. /* @__PURE__ */ w.jsxs("div", { className: Pe.optionsMarginItem, children: [
  3107. /* @__PURE__ */ w.jsx("span", { children: e.t("headerFooter.footerBottomMargin") }),
  3108. /* @__PURE__ */ w.jsx(
  3109. An,
  3110. {
  3111. min: 0,
  3112. max: 200,
  3113. precision: 1,
  3114. value: c.marginFooter,
  3115. onChange: (u) => {
  3116. d(u, "marginFooter");
  3117. },
  3118. className: Pe.optionsInput
  3119. }
  3120. )
  3121. ] })
  3122. ] }),
  3123. /* @__PURE__ */ w.jsx("div", { className: Pe.optionsSection, children: /* @__PURE__ */ w.jsx(qc, { onClick: h, children: e.t("headerFooter.closeHeaderFooter") }) })
  3124. ] });
  3125. }, cl = () => {
  3126. var A;
  3127. const n = $(Ze), e = $(fe), s = $(Q).getCurrentUniverDocInstance().getUnitId(), i = ((A = e.getRenderById(s)) == null ? void 0 : A.with(ie)).getViewModel(), [a, c] = ve(!0);
  3128. return Re(() => {
  3129. const l = i.getEditArea();
  3130. c(l !== ge.BODY);
  3131. const d = i.editAreaChange$.subscribe((h) => {
  3132. h != null && c(h !== ge.BODY);
  3133. });
  3134. return () => {
  3135. d.unsubscribe();
  3136. };
  3137. }, []), /* @__PURE__ */ w.jsx("div", { className: Pe.panel, children: a ? /* @__PURE__ */ w.jsx(al, { unitId: s }) : /* @__PURE__ */ w.jsx("div", { className: Pe.panelDisableText, children: n.t("headerFooter.disableText") }) });
  3138. }, Pr = 18, Dr = 200, _o = 6, Al = 4;
  3139. function ll(n, e) {
  3140. let { radius: t, width: o, height: s } = e;
  3141. t = t != null ? t : 0, o = o != null ? o : 30, s = s != null ? s : 30;
  3142. let r = 0;
  3143. 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, !1), 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());
  3144. }
  3145. class Ln extends dc {
  3146. constructor(t, o) {
  3147. super(t, o);
  3148. x(this, "color");
  3149. x(this, "text");
  3150. this.color = o == null ? void 0 : o.color, this.text = o == null ? void 0 : o.text;
  3151. }
  3152. static drawWith(t, o) {
  3153. const { text: s, color: r } = o;
  3154. t.save(), t.font = "13px Source Han Sans CN";
  3155. const i = t.measureText(s).width, a = Math.min(
  3156. i + 2 * _o,
  3157. Dr
  3158. );
  3159. ll(t, {
  3160. height: Pr,
  3161. width: a,
  3162. radius: 4,
  3163. fill: r,
  3164. evented: !1
  3165. }), t.fillStyle = "rgba(58, 96, 247, 1)";
  3166. const c = _o, A = Pr - Al, l = Dr - 2 * _o;
  3167. if (i > l) {
  3168. let d = "", h = 0;
  3169. for (const u of s) {
  3170. const g = t.measureText(u).width;
  3171. if (h + g <= l - t.measureText("...").width)
  3172. d += u, h += g;
  3173. else {
  3174. d += "...";
  3175. break;
  3176. }
  3177. }
  3178. t.fillText(d, c, A);
  3179. } else
  3180. t.fillText(s, c, A);
  3181. t.restore();
  3182. }
  3183. _draw(t) {
  3184. Ln.drawWith(t, this);
  3185. }
  3186. }
  3187. var dl = Object.defineProperty, ul = Object.getOwnPropertyDescriptor, hl = (n, e, t, o) => {
  3188. for (var s = o > 1 ? void 0 : o ? ul(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  3189. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  3190. return o && s && dl(e, t, s), s;
  3191. }, nt = (n, e) => (t, o) => e(t, o, n);
  3192. const wr = "rgba(58, 96, 247, 1)", Nr = "rgba(58, 96, 247, 0.08)";
  3193. var Me = /* @__PURE__ */ ((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 || {});
  3194. function gl(n, e, t) {
  3195. const { documentStyle: o } = n.getDataModel().getSnapshot(), {
  3196. defaultHeaderId: s,
  3197. defaultFooterId: r,
  3198. evenPageHeaderId: i,
  3199. evenPageFooterId: a,
  3200. firstPageHeaderId: c,
  3201. firstPageFooterId: A,
  3202. evenAndOddHeaders: l,
  3203. useFirstPageHeaderFooter: d
  3204. } = o;
  3205. switch (e) {
  3206. case ge.BODY:
  3207. return {
  3208. createType: null,
  3209. headerFooterId: null
  3210. };
  3211. case ge.HEADER:
  3212. return d === L.TRUE && !c ? {
  3213. createType: 0,
  3214. headerFooterId: null
  3215. } : l === L.TRUE && t % 2 === 0 && !i ? {
  3216. createType: 4,
  3217. headerFooterId: null
  3218. } : s ? {
  3219. createType: null,
  3220. headerFooterId: s
  3221. } : {
  3222. createType: 2,
  3223. headerFooterId: null
  3224. };
  3225. case ge.FOOTER:
  3226. return d === L.TRUE && !A ? {
  3227. createType: 1,
  3228. headerFooterId: null
  3229. } : l === L.TRUE && t % 2 === 0 && !a ? {
  3230. createType: 5,
  3231. headerFooterId: null
  3232. } : r ? {
  3233. createType: null,
  3234. headerFooterId: r
  3235. } : {
  3236. createType: 3,
  3237. headerFooterId: null
  3238. };
  3239. default:
  3240. throw new Error(`Invalid editArea: ${e}`);
  3241. }
  3242. }
  3243. let Zo = class extends ue {
  3244. constructor(e, t, o, s, r, i, a, c, A) {
  3245. super();
  3246. x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
  3247. 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();
  3248. }
  3249. _initialize() {
  3250. this._init(), this._drawHeaderFooterLabel(), this._initCustomComponents(), this._listenSwitchMode();
  3251. }
  3252. // Close header footer panel when switch mode.
  3253. _listenSwitchMode() {
  3254. this.disposeWithMe(
  3255. this._commandService.onCommandExecuted((e) => {
  3256. if (J.id === e.id) {
  3257. const t = this._context.unit, s = this._docSkeletonManagerService.getViewModel().getEditArea(), r = t.getSnapshot().documentStyle.documentFlavor;
  3258. s !== ge.BODY && r === ye.MODERN && this._commandService.executeCommand(Ps.id, {
  3259. unitId: this._context.unitId
  3260. });
  3261. }
  3262. })
  3263. );
  3264. }
  3265. _initCustomComponents() {
  3266. const e = this._componentManager;
  3267. this.disposeWithMe(e.register(ta, cl));
  3268. }
  3269. _init() {
  3270. const { unitId: e } = this._context, t = rt(this._context);
  3271. t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
  3272. }
  3273. _initialMain(e) {
  3274. const t = rt(this._context), { document: o } = t;
  3275. this.disposeWithMe(o.onDblclick$.subscribeEvent(async (s) => {
  3276. if (this._isEditorReadOnly(e) || !this._isTraditionalMode())
  3277. return;
  3278. const { offsetX: r, offsetY: i } = s, {
  3279. pageLayoutType: a = an.VERTICAL,
  3280. pageMarginLeft: c,
  3281. pageMarginTop: A
  3282. } = o.getOffsetConfig(), l = this._getTransformCoordForDocumentOffset(r, i);
  3283. if (l == null)
  3284. return;
  3285. const d = this._docSkeletonManagerService.getViewModel(), h = this._docSkeletonManagerService.getSkeleton(), u = d.getEditArea(), { editArea: g, pageNumber: f } = h.findEditAreaByCoord(
  3286. l,
  3287. a,
  3288. c,
  3289. A
  3290. );
  3291. if (u === g)
  3292. return;
  3293. d.setEditArea(g);
  3294. const { createType: p, headerFooterId: m } = gl(d, g, f);
  3295. if (g === ge.BODY)
  3296. this._docSelectionRenderService.setSegment(""), this._docSelectionRenderService.setSegmentPage(-1), this._docSelectionRenderService.setCursorManually(r, i);
  3297. else if (p != null) {
  3298. const I = X.generateRandomId(6);
  3299. this._docSelectionRenderService.setSegment(I), this._docSelectionRenderService.setSegmentPage(f), await this._commandService.executeCommand(na.id, {
  3300. unitId: e,
  3301. createType: p,
  3302. segmentId: I
  3303. });
  3304. } else m != null && (this._docSelectionRenderService.setSegment(m), this._docSelectionRenderService.setSegmentPage(f), this._docSelectionRenderService.setCursorManually(r, i));
  3305. }));
  3306. }
  3307. _getTransformCoordForDocumentOffset(e, t) {
  3308. const o = rt(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
  3309. if (a == null)
  3310. return;
  3311. const c = a.transformVector2SceneCoord(rn.FromArray([e, t]));
  3312. return i.clone().invert().applyPoint(c);
  3313. }
  3314. // eslint-disable-next-line max-lines-per-function
  3315. _drawHeaderFooterLabel() {
  3316. const e = this._localeService;
  3317. this._renderManagerService.currentRender$.subscribe((t) => {
  3318. if (t == null)
  3319. return;
  3320. const o = this._renderManagerService.getRenderById(t);
  3321. if (this._editorService.isEditor(t) || this._instanceSrv.getUniverDocInstance(t) == null || o == null)
  3322. return;
  3323. const { mainComponent: s } = o, r = s;
  3324. this.disposeWithMe(
  3325. Zn(
  3326. // eslint-disable-next-line max-lines-per-function
  3327. r.pageRender$.subscribe((i) => {
  3328. if (this._editorService.isEditor(t) || !this._isTraditionalMode())
  3329. return;
  3330. const A = this._docSkeletonManagerService.getViewModel().getEditArea() === ge.BODY, { page: l, pageLeft: d, pageTop: h, ctx: u } = i, { pageWidth: g, pageHeight: f, marginTop: p, marginBottom: m } = l;
  3331. if (u.save(), u.translate(d - 0.5, h - 0.5), A ? (yn.drawWith(u, {
  3332. left: 0,
  3333. top: 0,
  3334. width: g,
  3335. height: p,
  3336. fill: "rgba(255, 255, 255, 0.5)"
  3337. }), u.save(), u.translate(0, f - m), yn.drawWith(u, {
  3338. left: 0,
  3339. top: 0,
  3340. width: g,
  3341. height: m,
  3342. fill: "rgba(255, 255, 255, 0.5)"
  3343. }), u.restore()) : (u.save(), u.translate(0, p), yn.drawWith(u, {
  3344. left: 0,
  3345. top: p,
  3346. width: g,
  3347. height: f - p - m,
  3348. fill: "rgba(255, 255, 255, 0.5)"
  3349. }), u.restore()), !A) {
  3350. const E = {
  3351. dataArray: [{
  3352. command: "M",
  3353. points: [0, p]
  3354. }, {
  3355. command: "L",
  3356. points: [g, p]
  3357. }],
  3358. strokeWidth: 1,
  3359. stroke: wr
  3360. }, I = {
  3361. dataArray: [{
  3362. command: "M",
  3363. points: [0, f - m]
  3364. }, {
  3365. command: "L",
  3366. points: [g, f - m]
  3367. }],
  3368. strokeWidth: 1,
  3369. stroke: wr
  3370. };
  3371. mr.drawWith(u, E), mr.drawWith(u, I), u.translate(0, p + 1), Ln.drawWith(u, {
  3372. text: e.t("headerFooter.header"),
  3373. color: Nr
  3374. }), u.translate(0, f - p - m), Ln.drawWith(u, {
  3375. text: e.t("headerFooter.footer"),
  3376. color: Nr
  3377. });
  3378. }
  3379. u.restore();
  3380. })
  3381. )
  3382. );
  3383. });
  3384. }
  3385. _isEditorReadOnly(e) {
  3386. const t = this._editorService.getEditor(e);
  3387. return t ? t.isReadOnly() : !1;
  3388. }
  3389. _isTraditionalMode() {
  3390. return this._context.unit.getSnapshot().documentStyle.documentFlavor === ye.TRADITIONAL;
  3391. }
  3392. };
  3393. Zo = hl([
  3394. nt(1, y),
  3395. nt(2, He),
  3396. nt(3, Q),
  3397. nt(4, fe),
  3398. nt(5, z(ie)),
  3399. nt(6, z(Se)),
  3400. nt(7, z(Ze)),
  3401. nt(8, z(io))
  3402. ], Zo);
  3403. const Ms = {
  3404. id: "sidebar.operation.doc-header-footer-panel",
  3405. type: N.OPERATION,
  3406. handler: async (n, e) => {
  3407. const t = n.get(Bi), o = n.get(Ze);
  3408. switch (e.value) {
  3409. case "open":
  3410. t.open({
  3411. header: { title: o.t("headerFooter.panel") },
  3412. children: { label: ta },
  3413. onClose: () => {
  3414. },
  3415. width: 400
  3416. });
  3417. break;
  3418. case "close":
  3419. default:
  3420. t.close();
  3421. break;
  3422. }
  3423. return !0;
  3424. }
  3425. };
  3426. function Qr() {
  3427. return {
  3428. dataStream: `\r
  3429. `,
  3430. textRuns: [{
  3431. st: 0,
  3432. ed: 0,
  3433. ts: {
  3434. fs: 9
  3435. // The default header footer text size.
  3436. }
  3437. }],
  3438. customBlocks: [],
  3439. paragraphs: [
  3440. {
  3441. startIndex: 0,
  3442. paragraphStyle: {
  3443. spaceAbove: { v: 0 },
  3444. lineSpacing: 1.5,
  3445. spaceBelow: { v: 0 }
  3446. }
  3447. }
  3448. ],
  3449. sectionBreaks: [
  3450. {
  3451. startIndex: 1
  3452. }
  3453. ]
  3454. };
  3455. }
  3456. function Po(n, e, t, o) {
  3457. const s = k.getInstance(), r = 6, i = n != null ? n : X.generateRandomId(r), a = e === Me.DEFAULT_HEADER || e === Me.FIRST_PAGE_HEADER || e === Me.EVEN_PAGE_HEADER, c = s.insertOp([a ? "headers" : "footers", i], {
  3458. [a ? "headerId" : "footerId"]: i,
  3459. body: Qr()
  3460. });
  3461. o.push(c);
  3462. const A = X.generateRandomId(r), l = s.insertOp([a ? "footers" : "headers", A], {
  3463. [a ? "footerId" : "headerId"]: A,
  3464. body: Qr()
  3465. });
  3466. o.push(l);
  3467. let d = "defaultHeaderId", h = "defaultFooterId";
  3468. switch (e) {
  3469. case Me.DEFAULT_HEADER:
  3470. d = "defaultHeaderId", h = "defaultFooterId";
  3471. break;
  3472. case Me.DEFAULT_FOOTER:
  3473. d = "defaultFooterId", h = "defaultHeaderId";
  3474. break;
  3475. case Me.FIRST_PAGE_HEADER:
  3476. d = "firstPageHeaderId", h = "firstPageFooterId";
  3477. break;
  3478. case Me.FIRST_PAGE_FOOTER:
  3479. d = "firstPageFooterId", h = "firstPageHeaderId";
  3480. break;
  3481. case Me.EVEN_PAGE_HEADER:
  3482. d = "evenPageHeaderId", h = "evenPageFooterId";
  3483. break;
  3484. case Me.EVEN_PAGE_FOOTER:
  3485. d = "evenPageFooterId", h = "evenPageHeaderId";
  3486. break;
  3487. default:
  3488. throw new Error(`Unknown header footer type: ${e}`);
  3489. }
  3490. for (const [u, g] of [[d, i], [h, A]])
  3491. if (t[u] != null) {
  3492. const f = s.replaceOp(["documentStyle", u], t[u], g);
  3493. o.push(f);
  3494. } else {
  3495. const f = s.insertOp(["documentStyle", u], g);
  3496. o.push(f);
  3497. }
  3498. return o;
  3499. }
  3500. const _n = "doc.command.core-header-footer", na = {
  3501. id: _n,
  3502. type: N.COMMAND,
  3503. // eslint-disable-next-line max-lines-per-function
  3504. handler: async (n, e) => {
  3505. var v;
  3506. const t = n.get(y), o = n.get(Q), s = n.get(fe), { unitId: r, segmentId: i, createType: a, headerFooterProps: c } = e, A = (v = s.getRenderById(r)) == null ? void 0 : v.with(ie), l = o.getUniverDocInstance(r), d = A == null ? void 0 : A.getViewModel();
  3507. if (l == null || d == null)
  3508. return !1;
  3509. const h = d.getEditArea(), { documentStyle: u } = l.getSnapshot(), g = (c == null ? void 0 : c.marginFooter) != null || (c == null ? void 0 : c.marginHeader) != null, f = [{
  3510. startOffset: 0,
  3511. endOffset: 0,
  3512. collapsed: !0
  3513. }], p = {
  3514. id: J.id,
  3515. params: {
  3516. unitId: r,
  3517. actions: [],
  3518. textRanges: f,
  3519. debounce: !0
  3520. }
  3521. };
  3522. g && (p.params.noNeedSetTextRange = !0);
  3523. const m = k.getInstance(), E = [];
  3524. return a != null && Po(i, a, u, E), c != null && Object.keys(c).forEach((R) => {
  3525. const S = c[R], C = u[R];
  3526. if (S === C)
  3527. return;
  3528. let T;
  3529. if (C === void 0 ? T = m.insertOp(["documentStyle", R], S) : T = m.replaceOp(["documentStyle", R], C, S), E.push(T), R === "useFirstPageHeaderFooter" && S === L.TRUE && !u.firstPageHeaderId) {
  3530. const O = h === ge.HEADER ? Me.FIRST_PAGE_HEADER : Me.FIRST_PAGE_FOOTER;
  3531. Po(i, O, u, E);
  3532. } else if (R === "evenAndOddHeaders" && S === L.TRUE && !u.evenPageHeaderId) {
  3533. const O = h === ge.HEADER ? Me.EVEN_PAGE_HEADER : Me.EVEN_PAGE_FOOTER;
  3534. Po(i, O, u, E);
  3535. }
  3536. }), E.length === 0 ? !1 : (p.params.actions = E.reduce((R, S) => k.compose(R, S), null), !!t.syncExecuteCommand(p.id, p.params));
  3537. }
  3538. }, _s = {
  3539. id: "doc.command.open-header-footer-panel",
  3540. type: N.COMMAND,
  3541. handler: async (n, e) => n.get(y).executeCommand(Ms.id, { value: "open" })
  3542. }, Ps = {
  3543. id: "doc.command.close-header-footer",
  3544. type: N.COMMAND,
  3545. handler: async (n, e) => {
  3546. var g;
  3547. const t = n.get(y), o = n.get(fe), s = n.get(G), r = n.get(Q), { unitId: i } = e, a = o.getRenderById(i);
  3548. if (a == null)
  3549. return !1;
  3550. const { scene: c } = a, A = c.getTransformerByCreate(), l = a.with(ie), d = a.with(Se), h = l == null ? void 0 : l.getSkeleton(), u = l == null ? void 0 : l.getViewModel();
  3551. return u == null || h == null ? !1 : (s.replaceDocRanges([]), A.clearSelectedObjects(), d.setSegment(""), d.setSegmentPage(-1), u.setEditArea(ge.BODY), h.calculate(), (g = a.mainComponent) == null || g.makeDirty(!0), queueMicrotask(() => {
  3552. const f = r.getUnit(i), p = f == null ? void 0 : f.getSnapshot();
  3553. if (p == null)
  3554. return;
  3555. const m = ea(p);
  3556. s.replaceDocRanges([
  3557. {
  3558. startOffset: m,
  3559. endOffset: m
  3560. }
  3561. ]);
  3562. }), t.executeCommand(Ms.id, { value: "close" }), !0);
  3563. }
  3564. }, kt = "UI_PLUGIN_DOCS", Ds = `${kt}_COLOR_PICKER_COMPONENT`, oa = `${kt}_FONT_FAMILY_COMPONENT`, sa = `${kt}_FONT_FAMILY_ITEM_COMPONENT`, ra = `${kt}_FONT_SIZE_COMPONENT`, fl = "univer-doc-list-type-picker", pl = "univer-doc-list-type-picker-item", ml = "univer-doc-list-type-picker-item-active", Do = {
  3565. docListTypePicker: fl,
  3566. docListTypePickerItem: pl,
  3567. docListTypePickerItemActive: ml
  3568. }, ia = (n) => {
  3569. const { value: e, onChange: t, options: o } = n;
  3570. return /* @__PURE__ */ w.jsx("div", { className: Do.docListTypePicker, children: o.map((s) => /* @__PURE__ */ w.jsx(
  3571. "img",
  3572. {
  3573. className: Do.docListTypePickerItem + (e === s.value ? `
  3574. ${Do.docListTypePickerItemActive}
  3575. ` : ""),
  3576. onClick: () => {
  3577. t(s.value);
  3578. },
  3579. src: s.img
  3580. },
  3581. s.value
  3582. )) });
  3583. }, El = [
  3584. {
  3585. value: Oe.ORDER_LIST,
  3586. img: "data:image/jpeg;base64,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"
  3587. },
  3588. {
  3589. value: Oe.ORDER_LIST_1,
  3590. img: "data:image/jpeg;base64,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"
  3591. },
  3592. {
  3593. value: Oe.ORDER_LIST_2,
  3594. img: "data:image/jpeg;base64,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"
  3595. },
  3596. {
  3597. value: Oe.ORDER_LIST_3,
  3598. img: "data:image/jpeg;base64,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"
  3599. },
  3600. {
  3601. value: Oe.ORDER_LIST_4,
  3602. img: "data:image/jpeg;base64,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"
  3603. },
  3604. {
  3605. value: Oe.ORDER_LIST_5,
  3606. img: "data:image/jpeg;base64,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"
  3607. }
  3608. ], Sl = (n) => /* @__PURE__ */ w.jsx(
  3609. ia,
  3610. {
  3611. ...n,
  3612. options: El
  3613. }
  3614. ), Il = [
  3615. {
  3616. value: Oe.BULLET_LIST,
  3617. img: "data:image/jpeg;base64,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"
  3618. },
  3619. {
  3620. value: Oe.BULLET_LIST_1,
  3621. img: "data:image/jpeg;base64,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"
  3622. },
  3623. {
  3624. value: Oe.BULLET_LIST_2,
  3625. img: "data:image/jpeg;base64,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"
  3626. },
  3627. {
  3628. value: Oe.BULLET_LIST_3,
  3629. img: "data:image/jpeg;base64,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"
  3630. },
  3631. {
  3632. value: Oe.BULLET_LIST_4,
  3633. img: "data:image/jpeg;base64,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"
  3634. },
  3635. {
  3636. value: Oe.BULLET_LIST_5,
  3637. img: "data:image/jpeg;base64,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"
  3638. }
  3639. ], Cl = (n) => /* @__PURE__ */ w.jsx(
  3640. ia,
  3641. {
  3642. ...n,
  3643. options: Il
  3644. }
  3645. ), aa = `${kt}_ORDER_LIST_TYPE_COMPONENT`, ca = `${kt}_BULLET_LIST_TYPE_COMPONENT`, vl = "doc.command.tab", _t = {
  3646. id: vl,
  3647. type: N.COMMAND,
  3648. async handler(n, e) {
  3649. const o = n.get(Et).onAutoFormat(_t.id, e);
  3650. return (await Es(o, n.get(y))).result;
  3651. }
  3652. }, Rl = "doc.command.after-space", Ao = {
  3653. id: Rl,
  3654. type: N.COMMAND,
  3655. async handler(n) {
  3656. const t = n.get(Et).onAutoFormat(Ao.id);
  3657. return (await Es(t, n.get(y))).result;
  3658. }
  3659. }, ln = {
  3660. id: "doc.command.enter",
  3661. type: N.COMMAND,
  3662. async handler(n) {
  3663. const t = n.get(Et).onAutoFormat(ln.id);
  3664. return (await Es(t, n.get(y))).result;
  3665. }
  3666. };
  3667. function de(n) {
  3668. return n.getContextValue(hn) && n.getContextValue(Ss) && !n.getContextValue(mi);
  3669. }
  3670. function bl(n) {
  3671. return n.getContextValue(hn) && n.getContextValue(Ss) && !n.getContextValue(mi);
  3672. }
  3673. const xl = {
  3674. id: _t.id,
  3675. binding: j.TAB,
  3676. preconditions: de
  3677. }, Ol = {
  3678. id: _t.id,
  3679. binding: j.TAB | K.SHIFT,
  3680. preconditions: de,
  3681. staticParameters: {
  3682. shift: !0
  3683. }
  3684. };
  3685. var Tl = Object.defineProperty, yl = Object.getOwnPropertyDescriptor, Bl = (n, e, t, o) => {
  3686. for (var s = o > 1 ? void 0 : o ? yl(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  3687. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  3688. return o && s && Tl(e, t, s), s;
  3689. }, wo = (n, e) => (t, o) => e(t, o, n);
  3690. const Ml = 11, _l = 9, vn = {
  3691. /**
  3692. * fontFamily
  3693. */
  3694. ff: "Arial",
  3695. /**
  3696. * fontSize
  3697. */
  3698. fs: Ml
  3699. };
  3700. let Je = class extends ue {
  3701. constructor(e, t, o) {
  3702. super();
  3703. x(this, "_cacheStyle", null);
  3704. this._textSelectionManagerService = e, this._univerInstanceService = t, this._renderManagerService = o, this._init();
  3705. }
  3706. _init() {
  3707. this._listenDocRangeChange();
  3708. }
  3709. _listenDocRangeChange() {
  3710. this.disposeWithMe(
  3711. this._textSelectionManagerService.textSelection$.subscribe(() => {
  3712. this._clearStyleCache();
  3713. })
  3714. );
  3715. }
  3716. getStyleCache() {
  3717. return this._cacheStyle;
  3718. }
  3719. getDefaultStyle() {
  3720. var i;
  3721. const e = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC);
  3722. if (e == null)
  3723. return {
  3724. ...vn
  3725. };
  3726. const t = e == null ? void 0 : e.getUnitId(), o = (i = this._renderManagerService.getRenderById(t)) == null ? void 0 : i.with(ie), s = o == null ? void 0 : o.getViewModel();
  3727. return s == null ? {
  3728. ...vn
  3729. } : s.getEditArea() === ge.BODY ? {
  3730. ...vn
  3731. } : {
  3732. ...vn,
  3733. fs: _l
  3734. };
  3735. }
  3736. setStyleCache(e) {
  3737. this._cacheStyle = {
  3738. ...this._cacheStyle,
  3739. ...e
  3740. };
  3741. }
  3742. _clearStyleCache() {
  3743. this._cacheStyle = null;
  3744. }
  3745. };
  3746. Je = Bl([
  3747. wo(0, z(G)),
  3748. wo(1, Q),
  3749. wo(2, fe)
  3750. ], Je);
  3751. function Ve(n, e, t) {
  3752. return t.executeCommand(lt.id, {
  3753. preCommandId: n,
  3754. ...e != null ? e : {}
  3755. });
  3756. }
  3757. const Ur = "doc.command.set-inline-format-bold", Vt = {
  3758. id: Ur,
  3759. type: N.COMMAND,
  3760. handler: async (n, e) => {
  3761. const t = n.get(y);
  3762. return Ve(
  3763. Ur,
  3764. e,
  3765. t
  3766. );
  3767. }
  3768. }, Lr = "doc.command.set-inline-format-italic", jt = {
  3769. id: Lr,
  3770. type: N.COMMAND,
  3771. handler: async (n, e) => {
  3772. const t = n.get(y);
  3773. return Ve(
  3774. Lr,
  3775. e,
  3776. t
  3777. );
  3778. }
  3779. }, Fr = "doc.command.set-inline-format-underline", Wt = {
  3780. id: Fr,
  3781. type: N.COMMAND,
  3782. handler: async (n, e) => {
  3783. const t = n.get(y);
  3784. return Ve(
  3785. Fr,
  3786. e,
  3787. t
  3788. );
  3789. }
  3790. }, Hr = "doc.command.set-inline-format-strikethrough", zt = {
  3791. id: Hr,
  3792. type: N.COMMAND,
  3793. handler: async (n, e) => {
  3794. const t = n.get(y);
  3795. return Ve(
  3796. Hr,
  3797. e,
  3798. t
  3799. );
  3800. }
  3801. }, kr = "doc.command.set-inline-format-subscript", Ct = {
  3802. id: kr,
  3803. type: N.COMMAND,
  3804. handler: async (n, e) => {
  3805. const t = n.get(y);
  3806. return Ve(
  3807. kr,
  3808. e,
  3809. t
  3810. );
  3811. }
  3812. }, Vr = "doc.command.set-inline-format-superscript", Gt = {
  3813. id: Vr,
  3814. type: N.COMMAND,
  3815. handler: async (n, e) => {
  3816. const t = n.get(y);
  3817. return Ve(
  3818. Vr,
  3819. e,
  3820. t
  3821. );
  3822. }
  3823. }, jr = "doc.command.set-inline-format-fontsize", Pt = {
  3824. id: jr,
  3825. type: N.COMMAND,
  3826. handler: async (n, e) => {
  3827. const t = n.get(y);
  3828. return Ve(
  3829. jr,
  3830. e,
  3831. t
  3832. );
  3833. }
  3834. }, Wr = "doc.command.set-inline-format-font-family", Dt = {
  3835. id: Wr,
  3836. type: N.COMMAND,
  3837. handler: async (n, e) => {
  3838. const t = n.get(y);
  3839. return Ve(
  3840. Wr,
  3841. e,
  3842. t
  3843. );
  3844. }
  3845. }, zr = "doc.command.set-inline-format-text-color", wt = {
  3846. id: zr,
  3847. type: N.COMMAND,
  3848. handler: async (n, e) => {
  3849. const t = n.get(y);
  3850. return Ve(
  3851. zr,
  3852. e,
  3853. t
  3854. );
  3855. }
  3856. }, Gr = "doc.command.set-inline-format-text-background-color", Nt = {
  3857. id: Gr,
  3858. type: N.COMMAND,
  3859. handler: async (n, e) => {
  3860. const t = n.get(y);
  3861. return Ve(
  3862. Gr,
  3863. e,
  3864. t
  3865. );
  3866. }
  3867. }, Yr = "doc.command.reset-inline-format-text-background-color", fn = {
  3868. id: Yr,
  3869. type: N.COMMAND,
  3870. handler: async (n, e) => {
  3871. const t = n.get(y);
  3872. return Ve(
  3873. Yr,
  3874. e,
  3875. t
  3876. );
  3877. }
  3878. }, $o = {
  3879. [Vt.id]: "bl",
  3880. [jt.id]: "it",
  3881. [Wt.id]: "ul",
  3882. [zt.id]: "st",
  3883. [Pt.id]: "fs",
  3884. [Dt.id]: "ff",
  3885. [wt.id]: "cl",
  3886. [Nt.id]: "bg",
  3887. [fn.id]: "bg",
  3888. [Ct.id]: "va",
  3889. [Gt.id]: "va"
  3890. }, lt = {
  3891. id: "doc.command.set-inline-format",
  3892. type: N.COMMAND,
  3893. // eslint-disable-next-line max-lines-per-function, complexity
  3894. handler: async (n, e) => {
  3895. var R;
  3896. const { value: t, preCommandId: o } = e, s = n.get(y), r = n.get(G), i = n.get(Q), a = n.get(Je), c = r.getDocRanges(), A = (R = c.find((S) => S.isActive)) != null ? R : c[0];
  3897. if (c.length === 0)
  3898. return !1;
  3899. const { segmentId: l } = c[0], d = i.getCurrentUnitForType(_.UNIVER_DOC);
  3900. if (d == null)
  3901. return !1;
  3902. const h = d.getSelfOrHeaderFooterModel(l).getBody();
  3903. if (h == null)
  3904. return !1;
  3905. const u = d.getUnitId();
  3906. let g;
  3907. switch (o) {
  3908. case Vt.id:
  3909. // fallthrough
  3910. case jt.id:
  3911. // fallthrough
  3912. case Wt.id:
  3913. // fallthrough
  3914. case zt.id:
  3915. // fallthrough
  3916. case Ct.id:
  3917. // fallthrough
  3918. case Gt.id: {
  3919. const S = a.getDefaultStyle(), C = la(
  3920. h,
  3921. A,
  3922. S
  3923. );
  3924. g = Dl(
  3925. C,
  3926. o
  3927. );
  3928. break;
  3929. }
  3930. case Pt.id:
  3931. case Dt.id: {
  3932. g = t;
  3933. break;
  3934. }
  3935. case wt.id:
  3936. case Nt.id: {
  3937. g = {
  3938. rgb: t
  3939. };
  3940. break;
  3941. }
  3942. case fn.id: {
  3943. g = {
  3944. rgb: null
  3945. };
  3946. break;
  3947. }
  3948. default:
  3949. throw new Error(`Unknown command: ${o} in handleInlineFormat`);
  3950. }
  3951. const f = {
  3952. id: J.id,
  3953. params: {
  3954. unitId: u,
  3955. actions: [],
  3956. textRanges: c
  3957. }
  3958. }, p = new me(), m = k.getInstance(), E = new St();
  3959. E.reset();
  3960. for (const S of c) {
  3961. let { startOffset: C, endOffset: T, rangeType: O } = S;
  3962. if (C == null || T == null)
  3963. continue;
  3964. if (O === Ge.RECT && (C = C - 1), C === T) {
  3965. const B = a.getStyleCache(), M = $o[o];
  3966. a.setStyleCache(
  3967. {
  3968. [M]: (B == null ? void 0 : B[M]) !== void 0 ? Aa(
  3969. B,
  3970. M,
  3971. o
  3972. ) : g
  3973. }
  3974. );
  3975. continue;
  3976. }
  3977. const P = {
  3978. dataStream: "",
  3979. textRuns: [
  3980. {
  3981. st: 0,
  3982. ed: T - C,
  3983. ts: {
  3984. [$o[o]]: g
  3985. }
  3986. }
  3987. ]
  3988. }, b = C - E.cursor;
  3989. b !== 0 && p.push({
  3990. t: W.RETAIN,
  3991. len: b
  3992. }), p.push({
  3993. t: W.RETAIN,
  3994. body: P,
  3995. len: T - C
  3996. }), E.reset(), E.moveCursor(T);
  3997. }
  3998. const I = le(d, l);
  3999. return f.params.actions = m.editOp(p.serialize(), I), !!s.syncExecuteCommand(f.id, f.params);
  4000. }
  4001. };
  4002. function Pl(n) {
  4003. return n !== null && typeof n == "object";
  4004. }
  4005. function Aa(n, e, t) {
  4006. if (/bl|it/.test(e))
  4007. return (n == null ? void 0 : n[e]) === L.TRUE ? L.FALSE : L.TRUE;
  4008. if (/ul|st/.test(e))
  4009. return Pl(n == null ? void 0 : n[e]) && (n == null ? void 0 : n[e]).s === L.TRUE ? {
  4010. s: L.FALSE
  4011. } : {
  4012. s: L.TRUE
  4013. };
  4014. if (/va/.test(e))
  4015. return t === Ct.id ? (n == null ? void 0 : n[e]) === Ne.SUBSCRIPT ? Ne.NORMAL : Ne.SUBSCRIPT : (n == null ? void 0 : n[e]) === Ne.SUPERSCRIPT ? Ne.NORMAL : Ne.SUPERSCRIPT;
  4016. }
  4017. function la(n, e, t) {
  4018. var A, l, d, h, u, g, f, p, m, E, I, v, R, S;
  4019. const { startOffset: o, endOffset: s, collapsed: r } = e;
  4020. if (r) {
  4021. const C = (A = n.textRuns) != null ? A : [];
  4022. let T = null;
  4023. for (let O = C.length - 1; O >= 0; O--) {
  4024. const P = C[O];
  4025. if (P.st < o && o <= P.ed) {
  4026. T = P;
  4027. break;
  4028. }
  4029. }
  4030. return T != null && T.ts ? { ...t, ...T.ts } : t;
  4031. }
  4032. const { textRuns: i = [] } = Ei(n, o, s), a = X.deepClone(t);
  4033. a.fs = Math.max(a.fs, ...i.map((C) => {
  4034. var T, O;
  4035. return (O = (T = C == null ? void 0 : C.ts) == null ? void 0 : T.fs) != null ? O : a.fs;
  4036. })), a.ff = (h = (d = (l = i.find((C) => {
  4037. var T;
  4038. return ((T = C.ts) == null ? void 0 : T.ff) != null;
  4039. })) == null ? void 0 : l.ts) == null ? void 0 : d.ff) != null ? h : a.ff, a.it = i.length && i.every((C) => {
  4040. var T;
  4041. return ((T = C.ts) == null ? void 0 : T.it) === L.TRUE;
  4042. }) ? L.TRUE : L.FALSE, a.bl = i.length && i.every((C) => {
  4043. var T;
  4044. return ((T = C.ts) == null ? void 0 : T.bl) === L.TRUE;
  4045. }) ? L.TRUE : L.FALSE, a.ul = i.length && i.every((C) => {
  4046. var T, O;
  4047. return ((O = (T = C.ts) == null ? void 0 : T.ul) == null ? void 0 : O.s) === L.TRUE;
  4048. }) ? (u = i[0].ts) == null ? void 0 : u.ul : a.ul, a.st = i.length && i.every((C) => {
  4049. var T, O;
  4050. return ((O = (T = C.ts) == null ? void 0 : T.st) == null ? void 0 : O.s) === L.TRUE;
  4051. }) ? (g = i[0].ts) == null ? void 0 : g.st : a.st, a.bg = (m = (p = (f = i.find((C) => {
  4052. var T;
  4053. return ((T = C.ts) == null ? void 0 : T.bg) != null;
  4054. })) == null ? void 0 : f.ts) == null ? void 0 : p.bg) != null ? m : a.bg, a.cl = (v = (I = (E = i.find((C) => {
  4055. var T;
  4056. return ((T = C.ts) == null ? void 0 : T.cl) != null;
  4057. })) == null ? void 0 : E.ts) == null ? void 0 : I.cl) != null ? v : a.cl;
  4058. const c = i.filter((C) => {
  4059. var T;
  4060. return ((T = C == null ? void 0 : C.ts) == null ? void 0 : T.va) != null;
  4061. });
  4062. if (c.length > 0 && c.length === i.length) {
  4063. const C = (R = c[0].ts) == null ? void 0 : R.va;
  4064. let T = !0;
  4065. for (let O = 1; O < c.length; O++)
  4066. if (((S = c[O].ts) == null ? void 0 : S.va) !== C) {
  4067. T = !1;
  4068. break;
  4069. }
  4070. T && (a.va = C);
  4071. }
  4072. return a;
  4073. }
  4074. function Dl(n, e) {
  4075. const t = $o[e];
  4076. return Aa(n, t, e);
  4077. }
  4078. const pn = {
  4079. id: "doc.command.list-operation",
  4080. type: N.COMMAND,
  4081. handler: (n, e) => {
  4082. var E, I;
  4083. const t = n.get(G), o = n.get(Q), s = n.get(y), r = e.listType, i = o.getCurrentUnitForType(_.UNIVER_DOC), a = (E = t.getDocRanges()) != null ? E : [];
  4084. if (i == null || a.length === 0)
  4085. return !1;
  4086. const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4087. if (A == null)
  4088. return !1;
  4089. const l = mn(a, A), d = i.getUnitId(), h = {
  4090. id: J.id,
  4091. params: {
  4092. unitId: d,
  4093. actions: [],
  4094. textRanges: a,
  4095. isEditing: !1
  4096. }
  4097. };
  4098. new St().reset();
  4099. const g = Ce.paragraph.bullet.switch({
  4100. paragraphs: l,
  4101. listType: r,
  4102. document: i,
  4103. segmentId: c
  4104. }), f = k.getInstance(), p = le(i, c);
  4105. return h.params.actions = f.editOp(g.serialize(), p), !!s.syncExecuteCommand(h.id, h.params);
  4106. }
  4107. }, lo = {
  4108. id: "doc.command.change-list-type",
  4109. type: N.COMMAND,
  4110. handler: (n, e) => {
  4111. var E, I;
  4112. const t = n.get(G), o = n.get(Q), s = n.get(y), { listType: r } = e, i = o.getCurrentUnitForType(_.UNIVER_DOC), a = t.getDocRanges();
  4113. if (i == null || a == null || !a.length)
  4114. return !1;
  4115. const { segmentId: c } = a[0], A = (E = t.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4116. if (l == null)
  4117. return !1;
  4118. const d = mn(A, l), h = i.getUnitId(), u = Ce.paragraph.bullet.set({
  4119. paragraphs: d,
  4120. listType: r,
  4121. segmentId: c,
  4122. document: i
  4123. });
  4124. if (!u)
  4125. return !1;
  4126. const g = k.getInstance(), f = {
  4127. id: J.id,
  4128. params: {
  4129. unitId: h,
  4130. actions: [],
  4131. textRanges: A,
  4132. isEditing: !1
  4133. }
  4134. }, p = le(i, c);
  4135. return f.params.actions = g.editOp(u.serialize(), p), !!s.syncExecuteCommand(f.id, f.params);
  4136. }
  4137. };
  4138. var Pn = /* @__PURE__ */ ((n) => (n[n.increase = 1] = "increase", n[n.decrease = -1] = "decrease", n))(Pn || {});
  4139. const es = {
  4140. id: "doc.command.change-list-nesting-level",
  4141. type: N.COMMAND,
  4142. handler: (n, e) => {
  4143. var E, I;
  4144. if (!e)
  4145. return !1;
  4146. const { type: t } = e, o = n.get(G), s = n.get(Q), r = n.get(y), i = s.getCurrentUnitForType(_.UNIVER_DOC), a = o.getActiveTextRange();
  4147. if (i == null || a == null)
  4148. return !1;
  4149. const { segmentId: c } = a, A = (E = o.getDocRanges()) != null ? E : [], l = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4150. if (l == null)
  4151. return !1;
  4152. const d = Qs(a, l), h = i.getUnitId(), u = k.getInstance(), g = Ce.paragraph.bullet.changeNestLevel({
  4153. paragraphs: d,
  4154. type: t,
  4155. segmentId: c,
  4156. document: i
  4157. }), f = {
  4158. id: J.id,
  4159. params: {
  4160. unitId: h,
  4161. actions: [],
  4162. textRanges: A,
  4163. isEditing: !1
  4164. }
  4165. }, p = le(i, c);
  4166. return f.params.actions = u.editOp(g.serialize(), p), !!r.syncExecuteCommand(f.id, f.params);
  4167. }
  4168. }, uo = {
  4169. id: "doc.command.bullet-list",
  4170. type: N.COMMAND,
  4171. handler: (n, e) => {
  4172. const t = n.get(y);
  4173. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4174. listType: e.value
  4175. }) : t.syncExecuteCommand(pn.id, {
  4176. listType: Oe.BULLET_LIST
  4177. });
  4178. }
  4179. }, ws = {
  4180. id: "doc.command.check-list",
  4181. type: N.COMMAND,
  4182. handler: (n, e) => {
  4183. const t = n.get(y);
  4184. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4185. listType: e.value
  4186. }) : t.syncExecuteCommand(pn.id, {
  4187. listType: Oe.CHECK_LIST
  4188. });
  4189. }
  4190. }, Ns = {
  4191. id: "doc.command.toggle-check-list",
  4192. type: N.COMMAND,
  4193. handler: (n, e) => {
  4194. var f;
  4195. if (!e)
  4196. return !1;
  4197. const t = n.get(Q), o = n.get(y), { index: s, segmentId: r, textRanges: i } = e, a = t.getCurrentUnitForType(_.UNIVER_DOC);
  4198. if (a == null || ((f = a.getSelfOrHeaderFooterModel(r).getBody()) == null ? void 0 : f.paragraphs) == null)
  4199. return !1;
  4200. const A = a.getUnitId(), l = {
  4201. id: J.id,
  4202. params: {
  4203. unitId: A,
  4204. actions: [],
  4205. textRanges: i != null ? i : [],
  4206. segmentId: r,
  4207. isEditing: !1
  4208. }
  4209. }, d = Ce.paragraph.bullet.toggleChecklist({
  4210. document: a,
  4211. paragraphIndex: s,
  4212. segmentId: r
  4213. });
  4214. if (!d)
  4215. return !1;
  4216. const h = k.getInstance(), u = le(a, r);
  4217. return l.params.actions = h.editOp(d.serialize(), u), !!o.syncExecuteCommand(l.id, l.params);
  4218. }
  4219. }, ho = {
  4220. id: "doc.command.order-list",
  4221. type: N.COMMAND,
  4222. handler: (n, e) => {
  4223. const t = n.get(y);
  4224. return e != null && e.value ? t.syncExecuteCommand(lo.id, {
  4225. listType: e.value
  4226. }) : t.syncExecuteCommand(pn.id, {
  4227. listType: Oe.ORDER_LIST
  4228. });
  4229. }
  4230. }, da = {
  4231. id: "doc.command.quick-list",
  4232. type: N.COMMAND,
  4233. // eslint-disable-next-line max-lines-per-function
  4234. handler(n, e) {
  4235. var oe, ce, he, Ae, ne;
  4236. if (!e)
  4237. return !1;
  4238. const t = n.get(G), o = n.get(Q), s = n.get(y), r = o.getCurrentUnitForType(_.UNIVER_DOC), i = t.getActiveTextRange();
  4239. if (r == null || i == null)
  4240. return !1;
  4241. const { segmentId: a } = i, { listType: c, paragraph: A } = e, { paragraphStart: l, paragraphEnd: d } = A, h = new me(), u = k.getInstance(), { defaultTabStop: g = 36 } = r.getSnapshot().documentStyle, f = (ce = (oe = r.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : oe.sectionBreaks) != null ? ce : [], { startIndex: p, paragraphStyle: m = {} } = A, { indentFirstLine: E, snapToGrid: I, indentStart: v } = m, R = Wa[c].nestingLevel[0].paragraphProperties || {}, { hanging: S, indentStart: C } = R, T = R.textStyle, { charSpace: O, gridType: P } = wl(p, f) || { charSpace: 0, gridType: za.LINES }, b = uc(O, g, P, I);
  4242. let M = X.generateRandomId(6);
  4243. const H = (Ae = (he = r.getBody()) == null ? void 0 : he.paragraphs) != null ? Ae : [], F = H.findIndex((ae) => ae.startIndex === A.startIndex), D = H[F - 1], te = H[F + 1];
  4244. D && D.bullet && D.bullet.listType.indexOf(c) === 0 ? M = D.bullet.listId : te && te.bullet && te.bullet.listType.indexOf(c) === 0 && (M = te.bullet.listId);
  4245. const q = {
  4246. id: J.id,
  4247. params: {
  4248. unitId: r.getUnitId(),
  4249. actions: [],
  4250. textRanges: [{
  4251. startOffset: l,
  4252. endOffset: l,
  4253. collapsed: !0
  4254. }],
  4255. isEditing: !1
  4256. }
  4257. };
  4258. h.push({
  4259. t: W.RETAIN,
  4260. len: l
  4261. }), h.push({
  4262. t: W.DELETE,
  4263. len: d - l
  4264. }), h.push({
  4265. t: W.RETAIN,
  4266. len: 1,
  4267. body: {
  4268. dataStream: "",
  4269. paragraphs: [
  4270. {
  4271. startIndex: 0,
  4272. paragraphStyle: {
  4273. ...m,
  4274. textStyle: {
  4275. ...m.textStyle,
  4276. ...T
  4277. },
  4278. indentFirstLine: void 0,
  4279. hanging: S,
  4280. indentStart: { v: ze(C, b) - ze(S, b) + ze(E, b) + ze(v, b) }
  4281. },
  4282. bullet: {
  4283. ...(ne = A.bullet) != null ? ne : {
  4284. nestingLevel: 0,
  4285. textStyle: {
  4286. fs: 20
  4287. }
  4288. },
  4289. listType: c,
  4290. listId: M
  4291. }
  4292. }
  4293. ]
  4294. }
  4295. });
  4296. const V = le(r, a);
  4297. return q.params.actions = u.editOp(h.serialize(), V), !!s.syncExecuteCommand(q.id, q.params);
  4298. }
  4299. };
  4300. function Qs(n, e) {
  4301. const { startOffset: t, endOffset: o } = n, s = [];
  4302. let r = -1;
  4303. for (const i of e) {
  4304. const { startIndex: a } = i;
  4305. (t > r && t <= a || o > r && o <= a || a >= t && a <= o) && s.push(i), r = a;
  4306. }
  4307. return s;
  4308. }
  4309. function mn(n, e) {
  4310. const t = [];
  4311. for (const o of n) {
  4312. const s = Qs(o, e);
  4313. t.push(...s);
  4314. }
  4315. return t;
  4316. }
  4317. function wl(n, e) {
  4318. const t = e.sort(Ga("startIndex"));
  4319. for (let o = 0; o < t.length; o++) {
  4320. const s = e[o];
  4321. if (s.startIndex >= n)
  4322. return s;
  4323. }
  4324. }
  4325. const et = {
  4326. id: "doc.command.align-action",
  4327. type: N.COMMAND,
  4328. // eslint-disable-next-line max-lines-per-function
  4329. handler: (n, e) => {
  4330. var I;
  4331. const t = n.get(G), o = n.get(Q), s = n.get(y), { alignType: r } = e, i = o.getCurrentUniverDocInstance();
  4332. if (i == null)
  4333. return !1;
  4334. const a = t.getDocRanges();
  4335. if (a.length === 0)
  4336. return !1;
  4337. const c = a[0].segmentId, A = (I = i.getSelfOrHeaderFooterModel(c).getBody()) == null ? void 0 : I.paragraphs;
  4338. if (A == null)
  4339. return !1;
  4340. const l = mn(a, A), d = i.getUnitId(), h = l.every((v) => {
  4341. var R;
  4342. return ((R = v.paragraphStyle) == null ? void 0 : R.horizontalAlign) === r;
  4343. }), u = {
  4344. id: J.id,
  4345. params: {
  4346. unitId: d,
  4347. actions: [],
  4348. textRanges: a
  4349. }
  4350. }, g = new St();
  4351. g.reset();
  4352. const f = new me(), p = k.getInstance();
  4353. for (const v of l) {
  4354. const { startIndex: R } = v;
  4355. f.push({
  4356. t: W.RETAIN,
  4357. len: R - g.cursor
  4358. });
  4359. const S = {
  4360. ...v.paragraphStyle,
  4361. horizontalAlign: h ? _e.UNSPECIFIED : r
  4362. };
  4363. f.push({
  4364. t: W.RETAIN,
  4365. len: 1,
  4366. body: {
  4367. dataStream: "",
  4368. paragraphs: [
  4369. {
  4370. ...v,
  4371. paragraphStyle: S,
  4372. startIndex: 0
  4373. }
  4374. ]
  4375. },
  4376. coverType: no.REPLACE
  4377. }), g.moveCursorTo(R + 1);
  4378. }
  4379. const m = le(i, c);
  4380. return u.params.actions = p.editOp(f.serialize(), m), !!s.syncExecuteCommand(u.id, u.params);
  4381. }
  4382. }, go = {
  4383. id: "doc.command.align-left",
  4384. type: N.COMMAND,
  4385. handler: (n) => n.get(y).syncExecuteCommand(et.id, {
  4386. alignType: _e.LEFT
  4387. })
  4388. }, fo = {
  4389. id: "doc.command.align-center",
  4390. type: N.COMMAND,
  4391. handler: (n) => n.get(y).syncExecuteCommand(et.id, {
  4392. alignType: _e.CENTER
  4393. })
  4394. }, po = {
  4395. id: "doc.command.align-right",
  4396. type: N.COMMAND,
  4397. handler: (n) => n.get(y).syncExecuteCommand(et.id, {
  4398. alignType: _e.RIGHT
  4399. })
  4400. }, mo = {
  4401. id: "doc.command.align-justify",
  4402. type: N.COMMAND,
  4403. handler: (n) => n.get(y).syncExecuteCommand(et.id, {
  4404. alignType: _e.JUSTIFIED
  4405. })
  4406. }, Nl = {
  4407. id: Vt.id,
  4408. binding: j.B | K.CTRL_COMMAND,
  4409. preconditions: de
  4410. }, Ql = {
  4411. id: jt.id,
  4412. binding: j.I | K.CTRL_COMMAND,
  4413. preconditions: de
  4414. }, Ul = {
  4415. id: Wt.id,
  4416. binding: j.U | K.CTRL_COMMAND,
  4417. preconditions: de
  4418. }, Ll = {
  4419. id: zt.id,
  4420. binding: j.X | K.SHIFT | K.CTRL_COMMAND,
  4421. preconditions: de
  4422. }, Fl = {
  4423. id: Ct.id,
  4424. binding: j.COMMA | K.CTRL_COMMAND,
  4425. preconditions: de
  4426. }, Hl = {
  4427. id: Gt.id,
  4428. binding: j.PERIOD | K.CTRL_COMMAND,
  4429. preconditions: de
  4430. }, kl = {
  4431. id: go.id,
  4432. binding: j.L | K.CTRL_COMMAND | K.SHIFT,
  4433. preconditions: de
  4434. }, Vl = {
  4435. id: po.id,
  4436. binding: j.R | K.CTRL_COMMAND | K.SHIFT,
  4437. preconditions: de
  4438. }, jl = {
  4439. id: fo.id,
  4440. binding: j.E | K.CTRL_COMMAND | K.SHIFT,
  4441. preconditions: de
  4442. }, Wl = {
  4443. id: mo.id,
  4444. binding: j.J | K.CTRL_COMMAND | K.SHIFT,
  4445. preconditions: de
  4446. }, zl = {
  4447. id: ho.id,
  4448. binding: j.Digit7 | K.CTRL_COMMAND | K.SHIFT,
  4449. preconditions: de
  4450. }, Gl = {
  4451. id: uo.id,
  4452. binding: j.Digit8 | K.CTRL_COMMAND | K.SHIFT,
  4453. preconditions: de
  4454. }, Yl = "univer-doc-count-bar", ql = {
  4455. docCountBar: Yl
  4456. }, Kl = (n, e) => {
  4457. const t = n.get(Q).getUniverDocInstance(e.unitId), o = (t == null ? void 0 : t.zoomRatio) || 1;
  4458. return {
  4459. ...X.deepClone(e),
  4460. zoomRatio: o
  4461. };
  4462. }, Ye = {
  4463. id: "doc.operation.set-zoom-ratio",
  4464. type: N.OPERATION,
  4465. handler: (n, e) => {
  4466. const t = n.get(Q).getUniverDocInstance(e.unitId);
  4467. if (!t)
  4468. return !1;
  4469. const o = t.getSnapshot();
  4470. return o.settings == null ? o.settings = {
  4471. zoomRatio: e.zoomRatio
  4472. } : o.settings.zoomRatio = e.zoomRatio, !0;
  4473. }
  4474. }, Xl = [50, 80, 100, 130, 150, 170, 200, 400], Jl = [10, 400];
  4475. function Zl() {
  4476. const n = $(y), e = $(Q), t = Fe(() => e.getCurrentTypeOfUnit$(_.UNIVER_DOC), []), o = Nn(t), s = Li(() => {
  4477. var A, l;
  4478. if (!o) return 100;
  4479. const c = ((l = (A = o.getSettings()) == null ? void 0 : A.zoomRatio) != null ? l : 1) * 100;
  4480. return Math.round(c);
  4481. }, [o]), [r, i] = ve(() => s());
  4482. Re(() => (i(s()), n.onCommandExecuted((A) => {
  4483. if (A.id === Ye.id) {
  4484. const l = s();
  4485. i(l);
  4486. }
  4487. }).dispose), [n, s]);
  4488. function a(c) {
  4489. if (i(c), o == null)
  4490. return;
  4491. const A = c / 100;
  4492. n.executeCommand(Ye.id, {
  4493. unitId: o.getUnitId(),
  4494. zoomRatio: A
  4495. });
  4496. }
  4497. return /* @__PURE__ */ w.jsx(
  4498. Kc,
  4499. {
  4500. min: Jl[0],
  4501. value: r,
  4502. shortcuts: Xl,
  4503. onChange: a
  4504. }
  4505. );
  4506. }
  4507. function $l(n) {
  4508. return /* @__PURE__ */ w.jsx("section", { className: ql.docCountBar, children: /* @__PURE__ */ w.jsx(Zl, {}) });
  4509. }
  4510. const ed = "univer-doc-footer-container", td = {
  4511. docFooterContainer: ed
  4512. }, nd = () => /* @__PURE__ */ w.jsxs("div", { className: td.docFooterContainer, children: [
  4513. /* @__PURE__ */ w.jsx("div", {}),
  4514. /* @__PURE__ */ w.jsx($l, {})
  4515. ] }), Us = "docs-ui.config", qr = {
  4516. layout: {
  4517. docContainerConfig: sA,
  4518. toolbarConfig: oA
  4519. }
  4520. };
  4521. var Eo = /* @__PURE__ */ ((n) => (n[n.ABOVE = 0] = "ABOVE", n[n.BELLOW = 1] = "BELLOW", n))(Eo || {}), Ls = /* @__PURE__ */ ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Ls || {});
  4522. function od(n, e) {
  4523. let t = U.TABLE_START;
  4524. const o = [], s = [];
  4525. for (let r = 0; r < n; r++) {
  4526. t += U.TABLE_ROW_START;
  4527. for (let i = 0; i < e; i++)
  4528. t += `${U.TABLE_CELL_START}\r
  4529. ${U.TABLE_CELL_END}`, o.push({
  4530. startIndex: t.length - 3,
  4531. paragraphStyle: {
  4532. spaceAbove: { v: 3 },
  4533. lineSpacing: 2,
  4534. spaceBelow: { v: 0 }
  4535. }
  4536. }), s.push({
  4537. startIndex: t.length - 2
  4538. });
  4539. t += U.TABLE_ROW_END;
  4540. }
  4541. return t += U.TABLE_END, {
  4542. dataStream: t,
  4543. paragraphs: o,
  4544. sectionBreaks: s
  4545. };
  4546. }
  4547. function Fs() {
  4548. return {
  4549. margin: {
  4550. start: {
  4551. v: 10
  4552. },
  4553. end: {
  4554. v: 10
  4555. },
  4556. top: {
  4557. v: 5
  4558. },
  4559. bottom: {
  4560. v: 5
  4561. }
  4562. }
  4563. };
  4564. }
  4565. function Hs(n) {
  4566. const e = Fs();
  4567. return {
  4568. tableCells: [...new Array(n).fill(null).map(() => X.deepClone(e))],
  4569. trHeight: {
  4570. val: { v: 30 },
  4571. hRule: Ya.AUTO
  4572. }
  4573. };
  4574. }
  4575. function ks(n) {
  4576. return {
  4577. size: {
  4578. type: Si.SPECIFIED,
  4579. width: {
  4580. v: n
  4581. }
  4582. }
  4583. };
  4584. }
  4585. function ua(n, e, t) {
  4586. const o = ks(t / e), s = Hs(e), r = [...new Array(n).fill(null).map(() => X.deepClone(s))], i = [...new Array(e).fill(null).map(() => X.deepClone(o))], a = pt(6);
  4587. return {
  4588. tableRows: r,
  4589. tableColumns: i,
  4590. tableId: a,
  4591. align: qa.START,
  4592. indent: {
  4593. v: 0
  4594. },
  4595. textWrap: Ka.NONE,
  4596. position: {
  4597. positionH: {
  4598. relativeFrom: $n.PAGE,
  4599. posOffset: 0
  4600. },
  4601. positionV: {
  4602. relativeFrom: ot.PAGE,
  4603. posOffset: 0
  4604. }
  4605. },
  4606. dist: {
  4607. distB: 0,
  4608. distL: 0,
  4609. distR: 0,
  4610. distT: 0
  4611. },
  4612. cellMargin: {
  4613. start: {
  4614. v: 10
  4615. },
  4616. end: {
  4617. v: 10
  4618. },
  4619. top: {
  4620. v: 5
  4621. },
  4622. bottom: {
  4623. v: 5
  4624. }
  4625. },
  4626. size: {
  4627. type: Si.UNSPECIFIED,
  4628. width: {
  4629. v: t
  4630. }
  4631. }
  4632. };
  4633. }
  4634. function En(n, e) {
  4635. if (!n && !e)
  4636. return null;
  4637. if (e && e.length > 0) {
  4638. let t = Number.POSITIVE_INFINITY, o = Number.NEGATIVE_INFINITY;
  4639. const s = "";
  4640. for (const r of e) {
  4641. const { startOffset: i, endOffset: a, segmentId: c } = r;
  4642. i == null || a == null || c == null || (t = Math.min(t, i), o = Math.max(o, a));
  4643. }
  4644. if (Number.isFinite(t) && Number.isFinite(o))
  4645. return {
  4646. startOffset: t,
  4647. endOffset: o,
  4648. segmentId: s
  4649. };
  4650. } else if (n) {
  4651. const { startOffset: t, endOffset: o, segmentId: s } = n;
  4652. return t == null || o == null || s == null ? null : {
  4653. startOffset: t,
  4654. endOffset: o,
  4655. segmentId: s
  4656. };
  4657. }
  4658. }
  4659. function sd(n) {
  4660. let e = U.TABLE_ROW_START;
  4661. const t = [], o = [];
  4662. for (let s = 0; s < n; s++)
  4663. e += `${U.TABLE_CELL_START}\r
  4664. ${U.TABLE_CELL_END}`, t.push({
  4665. startIndex: e.length - 3,
  4666. paragraphStyle: {
  4667. spaceAbove: { v: 3 },
  4668. lineSpacing: 2,
  4669. spaceBelow: { v: 0 }
  4670. }
  4671. }), o.push({
  4672. startIndex: e.length - 2
  4673. });
  4674. return e += U.TABLE_ROW_END, {
  4675. dataStream: e,
  4676. paragraphs: t,
  4677. sectionBreaks: o
  4678. };
  4679. }
  4680. function rd() {
  4681. const n = `${U.TABLE_CELL_START}\r
  4682. ${U.TABLE_CELL_END}`, e = [], t = [];
  4683. return e.push({
  4684. startIndex: 1,
  4685. paragraphStyle: {
  4686. spaceAbove: { v: 3 },
  4687. lineSpacing: 2,
  4688. spaceBelow: { v: 0 }
  4689. }
  4690. }), t.push({
  4691. startIndex: 2
  4692. }), {
  4693. dataStream: n,
  4694. paragraphs: e,
  4695. sectionBreaks: t
  4696. };
  4697. }
  4698. function id(n, e, t) {
  4699. var d, h, u;
  4700. const { startOffset: o, endOffset: s, segmentId: r } = n, i = t.getSelfOrHeaderFooterViewModel(r), a = e === 0 ? o : s;
  4701. let c = null;
  4702. 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;
  4703. let l = 0;
  4704. for (const g of i.getChildren()) {
  4705. for (const f of g.children) {
  4706. const { children: p } = f, m = p[0];
  4707. if (m) {
  4708. for (const E of m.children)
  4709. if (E.startIndex <= a && a <= E.endIndex) {
  4710. l = m.children.indexOf(E), c = E;
  4711. break;
  4712. }
  4713. }
  4714. if (c)
  4715. break;
  4716. }
  4717. if (c)
  4718. break;
  4719. }
  4720. return c == null || A == null ? null : {
  4721. offset: e === 0 ? c.startIndex : c.endIndex + 1,
  4722. colCount: c.children.length,
  4723. tableId: A,
  4724. insertRowIndex: e === 0 ? l : l + 1
  4725. };
  4726. }
  4727. function ad(n, e, t) {
  4728. var u, g, f;
  4729. 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 = [];
  4730. let l = null, d = -1;
  4731. for (const p of i.getChildren()) {
  4732. for (const m of p.children) {
  4733. const { children: E } = m, I = E[0];
  4734. if (I) {
  4735. if (a < I.startIndex || a > I.endIndex)
  4736. continue;
  4737. l = I;
  4738. for (const v of I.children) {
  4739. for (const R of v.children) {
  4740. const S = v.children.indexOf(R);
  4741. if (a >= R.startIndex && a <= R.endIndex) {
  4742. d = S;
  4743. break;
  4744. }
  4745. }
  4746. if (d !== -1)
  4747. break;
  4748. }
  4749. }
  4750. if (l)
  4751. break;
  4752. }
  4753. if (l)
  4754. break;
  4755. }
  4756. if (l == null || c == null || d === -1)
  4757. return null;
  4758. let h = 0;
  4759. for (const p of l.children) {
  4760. const m = p.children[d], E = e === 0 ? m.startIndex : m.endIndex + 1;
  4761. A.push(E - h), h = E;
  4762. }
  4763. return {
  4764. offsets: A,
  4765. tableId: c,
  4766. columnIndex: d,
  4767. rowCount: l.children.length
  4768. };
  4769. }
  4770. function cd(n, e, t) {
  4771. const o = [];
  4772. let s = e[t].size.width.v, r = 0;
  4773. for (let i = 0; i < e.length; i++)
  4774. r += e[i].size.width.v;
  4775. r += s;
  4776. for (let i = 0; i < e.length; i++)
  4777. o.push(e[i].size.width.v / r * n);
  4778. return s = s / r * n, {
  4779. widths: o,
  4780. newColWidth: s
  4781. };
  4782. }
  4783. function ha(n, e) {
  4784. var h, u, g;
  4785. 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 = [];
  4786. let c = -1, A = 0, l = -1, d = !1;
  4787. for (const f of r.getChildren()) {
  4788. for (const p of f.children) {
  4789. const { children: m } = p, E = m[0];
  4790. if (E) {
  4791. if (t < E.startIndex || o > E.endIndex)
  4792. continue;
  4793. l = E.startIndex + 3;
  4794. for (const I of E.children) {
  4795. const v = E.children.indexOf(I), { startIndex: R, endIndex: S } = I;
  4796. 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 = !0);
  4797. }
  4798. }
  4799. if (a.length)
  4800. break;
  4801. }
  4802. if (a.length)
  4803. break;
  4804. }
  4805. return i == null || a.length === 0 ? null : {
  4806. tableId: i,
  4807. rowIndexes: a,
  4808. offset: c,
  4809. len: A,
  4810. cursor: l,
  4811. selectWholeTable: d
  4812. };
  4813. }
  4814. function Ad(n, e) {
  4815. var g, f, p;
  4816. 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((m) => t >= m.startIndex && o <= m.endIndex)) == null ? void 0 : p.tableId, a = [];
  4817. let c = null;
  4818. const A = [];
  4819. let l = -1, d = -1, h = -1;
  4820. for (const m of r.getChildren()) {
  4821. for (const E of m.children) {
  4822. const { children: I } = E, v = I[0];
  4823. if (v) {
  4824. if (t < v.startIndex || o > v.endIndex)
  4825. continue;
  4826. c = v;
  4827. for (const R of v.children)
  4828. for (const S of R.children) {
  4829. const C = R.children.indexOf(S);
  4830. t >= S.startIndex && t <= S.endIndex && (d = C), o >= S.startIndex && o <= S.endIndex && (h = C);
  4831. }
  4832. }
  4833. if (c)
  4834. break;
  4835. }
  4836. if (c)
  4837. break;
  4838. }
  4839. if (c == null || i == null)
  4840. return null;
  4841. for (let m = d; m <= h; m++)
  4842. A.push(m);
  4843. let u = 0;
  4844. for (const m of c.children) {
  4845. const E = m.children[d], I = m.children[h];
  4846. a.push({
  4847. retain: E.startIndex - u,
  4848. delete: I.endIndex - E.startIndex + 1
  4849. }), u = I.endIndex + 1;
  4850. }
  4851. return l = c.startIndex + 3, {
  4852. offsets: a,
  4853. tableId: i,
  4854. columnIndexes: A,
  4855. cursor: l,
  4856. selectWholeTable: A.length === c.children[0].children.length,
  4857. rowCount: c.children.length
  4858. };
  4859. }
  4860. function ga(n, e) {
  4861. var l, d, h;
  4862. 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;
  4863. let a = -1, c = 0, A = -1;
  4864. for (const u of r.getChildren()) {
  4865. for (const g of u.children) {
  4866. const { children: f } = g, p = f[0];
  4867. if (p) {
  4868. if (t < p.startIndex || o > p.endIndex)
  4869. continue;
  4870. a = p.startIndex, c = p.endIndex - p.startIndex + 1, A = p.startIndex;
  4871. }
  4872. if (p)
  4873. break;
  4874. }
  4875. if (c > 0)
  4876. break;
  4877. }
  4878. return i == null ? null : {
  4879. tableId: i,
  4880. offset: a,
  4881. len: c,
  4882. cursor: A
  4883. };
  4884. }
  4885. function ld(n, e) {
  4886. var g, f, p;
  4887. 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((m) => t >= m.startIndex && o <= m.endIndex)) == null ? void 0 : p.tableId, a = [];
  4888. let c = null, A = -1, l = -1, d = -1, h = -1;
  4889. for (const m of r.getChildren()) {
  4890. for (const E of m.children) {
  4891. const { children: I } = E, v = I[0];
  4892. if (v) {
  4893. if (t < v.startIndex || o > v.endIndex)
  4894. continue;
  4895. c = v;
  4896. for (const R of v.children) {
  4897. const S = v.children.indexOf(R);
  4898. for (const C of R.children) {
  4899. const T = R.children.indexOf(C);
  4900. t >= C.startIndex && t <= C.endIndex && (l = S, d = T), o >= C.startIndex && o <= C.endIndex && (h = T);
  4901. }
  4902. }
  4903. }
  4904. if (c)
  4905. break;
  4906. }
  4907. if (c)
  4908. break;
  4909. }
  4910. if (c == null || i == null || l === -1)
  4911. return null;
  4912. const u = c.children[l];
  4913. for (let m = d; m <= h; m++) {
  4914. const E = u.children[m];
  4915. a.push({
  4916. retain: E.startIndex + 1,
  4917. delete: E.endIndex - E.startIndex - 3
  4918. });
  4919. }
  4920. return A = c.startIndex + 3, {
  4921. offsets: a,
  4922. tableId: i,
  4923. cursor: A,
  4924. rowCount: c.children.length
  4925. };
  4926. }
  4927. var ts = /* @__PURE__ */ ((n) => (n[n.NEXT = 0] = "NEXT", n[n.PREV = 1] = "PREV", n))(ts || {});
  4928. function Kr(n, e, t) {
  4929. const { startOffset: o } = e;
  4930. let s = null;
  4931. for (const A of n.getChildren()) {
  4932. for (const l of A.children) {
  4933. const d = l.children[0];
  4934. if (d && o > d.startIndex && o < d.endIndex) {
  4935. s = d;
  4936. break;
  4937. }
  4938. }
  4939. if (s)
  4940. break;
  4941. }
  4942. if (s == null)
  4943. return null;
  4944. let r = -1, i = -1, a = null;
  4945. for (const A of s.children) {
  4946. for (const l of A.children)
  4947. if (o > l.startIndex && o < l.endIndex) {
  4948. r = A.children.indexOf(l), i = s.children.indexOf(A), a = A;
  4949. break;
  4950. }
  4951. if (r > -1)
  4952. break;
  4953. }
  4954. if (r === -1 || i === -1 || a == null)
  4955. return null;
  4956. let c = null;
  4957. if (t === 0) {
  4958. if (c = a.children[r + 1], !c) {
  4959. const A = s.children[i + 1];
  4960. A && (c = A.children[0]);
  4961. }
  4962. } else if (c = a.children[r - 1], !c) {
  4963. const A = s.children[i - 1];
  4964. A && (c = A.children[A.children.length - 1]);
  4965. }
  4966. if (c) {
  4967. const { startIndex: A, endIndex: l } = c;
  4968. return {
  4969. startOffset: A + 1,
  4970. endOffset: l - 2
  4971. };
  4972. }
  4973. }
  4974. function dd(n, e) {
  4975. const t = [], { customBlocks: o = [] } = n;
  4976. for (const s of e) {
  4977. const { startOffset: r, endOffset: i } = s;
  4978. if (!(r == null || i == null))
  4979. for (const a of o) {
  4980. const { startIndex: c } = a;
  4981. c >= r && c < i && t.push(a.blockId);
  4982. }
  4983. }
  4984. return t;
  4985. }
  4986. function ud(n) {
  4987. return n.some((e) => {
  4988. const { startNodePosition: t } = e;
  4989. return t ? (t == null ? void 0 : t.path.indexOf("cells")) > -1 : !1;
  4990. });
  4991. }
  4992. const hd = Is, fa = {
  4993. id: "doc.command.inner-paste",
  4994. type: N.COMMAND,
  4995. // eslint-disable-next-line max-lines-per-function, complexity
  4996. handler: async (n, e) => {
  4997. var O, P, b, B, M, H;
  4998. const { segmentId: t, textRanges: o, doc: s } = e, r = n.get(y), i = n.get(G), a = n.get(Q), c = i.getTextRanges(), A = i.getRectRanges(), { body: l, tableSource: d, drawings: h } = s;
  4999. if (!Array.isArray(c) || c.length === 0 || l == null)
  5000. return !1;
  5001. const u = a.getCurrentUniverDocInstance(), g = u == null ? void 0 : u.getSelfOrHeaderFooterModel(t).getBody();
  5002. if (u == null || g == null)
  5003. return !1;
  5004. const f = u.getUnitId(), p = {
  5005. id: J.id,
  5006. params: {
  5007. unitId: f,
  5008. actions: [],
  5009. textRanges: o,
  5010. segmentId: t
  5011. }
  5012. }, m = new St();
  5013. m.reset();
  5014. const E = new me(), I = k.getInstance(), v = [], R = !!((O = l.tables) != null && O.length), S = !!((P = l.customBlocks) != null && P.length);
  5015. if (R && t || R && ud(c) || c.length && (A != null && A.length))
  5016. return !1;
  5017. for (let F = 0; F < c.length; F++) {
  5018. const D = c[F], { startOffset: te, endOffset: q, collapsed: V } = D, Y = te - m.cursor, oe = X.deepClone(l);
  5019. if (R)
  5020. for (const Ae of oe.tables) {
  5021. const { tableId: ne } = Ae, ae = X.generateRandomId(6);
  5022. Ae.tableId = ae;
  5023. const Te = X.deepClone(d[ne]);
  5024. Te.tableId = ae;
  5025. const je = I.insertOp(["tableSource", ae], Te);
  5026. v.push(je);
  5027. }
  5028. if (S && h) {
  5029. const Ae = (B = (b = u.getSnapshot().drawingsOrder) == null ? void 0 : b.length) != null ? B : 0;
  5030. for (const ne of oe.customBlocks) {
  5031. const { blockId: ae } = ne, Te = X.generateRandomId(6);
  5032. ne.blockId = Te;
  5033. const je = X.deepClone(h[ae]);
  5034. je.drawingId = Te;
  5035. const ut = I.insertOp(["drawings", Te], je), we = I.insertOp(["drawingsOrder", Ae], Te);
  5036. v.push(ut), v.push(we);
  5037. }
  5038. }
  5039. const ce = Os((M = g.customRanges) != null ? M : [], q, hd.includes(f)), he = Ts((H = g.customDecorations) != null ? H : [], q);
  5040. if (ce && (oe.customRanges = [{
  5041. ...ce,
  5042. startIndex: 0,
  5043. endIndex: l.dataStream.length - 1
  5044. }]), he.length && (oe.customDecorations = he.map((Ae) => ({
  5045. ...Ae,
  5046. startIndex: 0,
  5047. endIndex: l.dataStream.length - 1
  5048. }))), V)
  5049. E.push({
  5050. t: W.RETAIN,
  5051. len: Y
  5052. }), E.push({
  5053. t: W.INSERT,
  5054. body: oe,
  5055. len: l.dataStream.length
  5056. });
  5057. else {
  5058. const Ae = Ce.selection.delete([D], l, m.cursor, oe, c.length === 1);
  5059. E.push(...Ae);
  5060. }
  5061. m.reset(), m.moveCursor(q);
  5062. }
  5063. const C = le(u, t);
  5064. return v.push(I.editOp(E.serialize(), C)), p.params.actions = v.reduce((F, D) => k.compose(F, D), null), !!r.syncExecuteCommand(p.id, p.params);
  5065. }
  5066. };
  5067. function gd(n, e) {
  5068. const { startOffset: t, endOffset: o } = n, s = e.some((i) => i.startIndex === o), r = Math.max(t, s ? o - 1 : o);
  5069. return {
  5070. ...n,
  5071. endOffset: r,
  5072. collapsed: t === r
  5073. };
  5074. }
  5075. function fd(n, e, t) {
  5076. var g, f;
  5077. const o = e.getSelfOrHeaderFooterModel(t).getBody(), s = new me(), r = k.getInstance(), i = [];
  5078. if (o == null)
  5079. return i;
  5080. const { tables: a = [] } = o, c = new St();
  5081. c.reset();
  5082. for (let p = 0; p < n.length; p++) {
  5083. const m = gd(n[p], a), { startOffset: E, endOffset: I, collapsed: v } = m, R = E - c.cursor;
  5084. v ? s.push({
  5085. t: W.RETAIN,
  5086. len: R
  5087. }) : s.push(...Ce.selection.delete([m], o, c.cursor, null, !1)), c.reset(), c.moveCursor(I);
  5088. }
  5089. const A = le(e, t);
  5090. i.push(r.editOp(s.serialize(), A));
  5091. const l = dd(o, n), d = (g = e.getDrawings()) != null ? g : {}, h = (f = e.getDrawingsOrder()) != null ? f : [], u = l.sort((p, m) => h.indexOf(p) > h.indexOf(m) ? -1 : h.indexOf(p) < h.indexOf(m) ? 1 : 0);
  5092. if (u.length > 0)
  5093. for (const p of u) {
  5094. const m = d[p], E = h.indexOf(p);
  5095. if (m == null || E < 0)
  5096. continue;
  5097. const I = r.removeOp(["drawings", p], m), v = r.removeOp(["drawingsOrder", E], p);
  5098. i.push(I), i.push(v);
  5099. }
  5100. return i.reduce((p, m) => k.compose(p, m), null);
  5101. }
  5102. function pd(n, e, t, o) {
  5103. const s = [];
  5104. if (e.getSelfOrHeaderFooterModel(o).getBody() == null)
  5105. return s;
  5106. const i = new me(), a = k.getInstance(), c = new St();
  5107. c.reset();
  5108. for (const l of n) {
  5109. const { startOffset: d, endOffset: h, spanEntireRow: u, spanEntireTable: g } = l;
  5110. if (!(d == null || h == null))
  5111. if (g) {
  5112. const f = ga({ startOffset: d, endOffset: h, segmentId: o }, t);
  5113. if (f == null)
  5114. continue;
  5115. const { offset: p, len: m, tableId: E } = f;
  5116. p - c.cursor > 0 && i.push({
  5117. t: W.RETAIN,
  5118. len: p - c.cursor
  5119. }), i.push({
  5120. t: W.DELETE,
  5121. len: m
  5122. });
  5123. const I = a.removeOp(["tableSource", E]);
  5124. s.push(I), c.moveCursorTo(p + m);
  5125. } else if (u) {
  5126. const f = ha({ startOffset: d, endOffset: h, segmentId: o }, t);
  5127. if (f == null)
  5128. continue;
  5129. const { offset: p, rowIndexes: m, len: E, tableId: I } = f;
  5130. p - c.cursor > 0 && i.push({
  5131. t: W.RETAIN,
  5132. len: p - c.cursor
  5133. }), i.push({
  5134. t: W.DELETE,
  5135. len: E
  5136. });
  5137. for (const v of m.reverse()) {
  5138. const R = a.removeOp(["tableSource", I, "tableRows", v]);
  5139. s.push(R);
  5140. }
  5141. c.moveCursorTo(p + E);
  5142. } else {
  5143. const f = ld({ startOffset: d, endOffset: h, segmentId: o }, t);
  5144. if (f == null)
  5145. continue;
  5146. const { offsets: p } = f;
  5147. for (const m of p) {
  5148. const { retain: E, delete: I } = m;
  5149. E - c.cursor > 0 && i.push({
  5150. t: W.RETAIN,
  5151. len: E - c.cursor
  5152. }), i.push({
  5153. t: W.DELETE,
  5154. len: I
  5155. }), c.moveCursorTo(E + I);
  5156. }
  5157. }
  5158. }
  5159. const A = le(e, o);
  5160. return s.push(a.editOp(i.serialize(), A)), s.reduce((l, d) => k.compose(l, d), null);
  5161. }
  5162. function md(n, e, t, o, s) {
  5163. let r = [];
  5164. 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) {
  5165. const i = pd(e, t, o, s);
  5166. r == null || r.length === 0 ? r = i : r = k.compose(
  5167. r,
  5168. k.transform(i, r, "right")
  5169. );
  5170. }
  5171. return r;
  5172. }
  5173. const Qt = {
  5174. id: "doc.command.inner-cut",
  5175. type: N.COMMAND,
  5176. handler: async (n, e) => {
  5177. var f, p;
  5178. const { segmentId: t, textRanges: o } = e, s = n.get(y), r = n.get(G), i = n.get(Q), a = (f = e.selections) != null ? f : r.getTextRanges(), c = r.getRectRanges();
  5179. if ((!Array.isArray(a) || a.length === 0) && (!Array.isArray(c) || c.length === 0))
  5180. return !1;
  5181. const A = (p = i.getCurrentUniverDocInstance()) == null ? void 0 : p.getUnitId();
  5182. if (!A)
  5183. return !1;
  5184. const l = i.getUniverDocInstance(A);
  5185. if (l == null)
  5186. return !1;
  5187. const d = ke(n, A);
  5188. if (d == null)
  5189. return !1;
  5190. const h = d.getViewModel(), u = {
  5191. id: J.id,
  5192. params: {
  5193. unitId: A,
  5194. actions: [],
  5195. textRanges: o
  5196. }
  5197. };
  5198. return u.params.actions = md(a, c, l, h, t), !!s.syncExecuteCommand(u.id, u.params);
  5199. }
  5200. };
  5201. var Be = /* @__PURE__ */ ((n) => (n[n.LEFT = 0] = "LEFT", n[n.RIGHT = 1] = "RIGHT", n))(Be || {});
  5202. const Ed = "doc.command.insert-text", Vs = {
  5203. id: Ed,
  5204. type: N.COMMAND,
  5205. handler: async (n, e) => {
  5206. var S;
  5207. const t = n.get(y), { range: o, segmentId: s, body: r, unitId: i, cursorOffset: a } = e, c = n.get(G), l = n.get(Q).getUnit(i, _.UNIVER_DOC);
  5208. if (l == null)
  5209. return !1;
  5210. const d = c.getActiveTextRange(), h = l.getSelfOrHeaderFooterModel((S = d == null ? void 0 : d.segmentId) != null ? S : "").getBody();
  5211. if (h == null)
  5212. return !1;
  5213. const { startOffset: u, collapsed: g } = o, f = a != null ? a : r.dataStream.length, p = [
  5214. {
  5215. startOffset: u + f,
  5216. endOffset: u + f,
  5217. style: d == null ? void 0 : d.style,
  5218. collapsed: g
  5219. }
  5220. ], m = {
  5221. id: J.id,
  5222. params: {
  5223. unitId: i,
  5224. actions: [],
  5225. textRanges: p,
  5226. debounce: !0
  5227. }
  5228. }, E = new me(), I = k.getInstance();
  5229. if (g)
  5230. u > 0 && E.push({
  5231. t: W.RETAIN,
  5232. len: u
  5233. }), E.push({
  5234. t: W.INSERT,
  5235. body: r,
  5236. len: r.dataStream.length
  5237. });
  5238. else {
  5239. const C = Ce.selection.delete([o], h, 0, r);
  5240. E.push(...C);
  5241. }
  5242. m.params.textRanges = [{
  5243. startOffset: u + f,
  5244. endOffset: u + f,
  5245. collapsed: g
  5246. }];
  5247. const v = le(l, s);
  5248. return m.params.actions = I.editOp(E.serialize(), v), !!t.syncExecuteCommand(m.id, m.params);
  5249. }
  5250. }, dn = {
  5251. id: "doc.command.delete-text",
  5252. type: N.COMMAND,
  5253. handler: async (n, e) => {
  5254. var R;
  5255. const t = n.get(y), o = n.get(Q), { range: s, segmentId: r, unitId: i, direction: a, len: c = 1 } = e, A = o.getUnit(i, _.UNIVER_DOC), l = A == null ? void 0 : A.getSelfOrHeaderFooterModel(r).getBody();
  5256. if (A == null || l == null)
  5257. return !1;
  5258. const { startOffset: d } = s;
  5259. let h = a === Be.LEFT ? d - c : d, u = a === Be.LEFT ? d - 1 : d + c - 1;
  5260. const g = (R = l.customRanges) == null ? void 0 : R.find((S) => S.startIndex <= h && S.endIndex >= u);
  5261. g != null && g.wholeEntity && (h = g.startIndex, u = Math.max(u, g.endIndex));
  5262. const f = {
  5263. id: J.id,
  5264. params: {
  5265. unitId: i,
  5266. actions: [],
  5267. textRanges: [{
  5268. startOffset: h,
  5269. endOffset: h,
  5270. collapsed: !0
  5271. }],
  5272. debounce: !0
  5273. }
  5274. }, p = new me(), m = k.getInstance();
  5275. p.push({
  5276. t: W.RETAIN,
  5277. len: h - 0
  5278. }), p.push({
  5279. t: W.DELETE,
  5280. len: u - h + 1
  5281. });
  5282. const I = le(A, r);
  5283. return f.params.actions = m.editOp(p.serialize(), I), !!t.syncExecuteCommand(f.id, f.params);
  5284. }
  5285. }, pa = {
  5286. id: "doc.command.update-text",
  5287. type: N.COMMAND,
  5288. handler: async (n, e) => {
  5289. const { range: t, segmentId: o, updateBody: s, coverType: r, unitId: i, textRanges: a } = e, c = n.get(y), l = n.get(Q).getCurrentUniverDocInstance();
  5290. if (l == null)
  5291. return !1;
  5292. const d = {
  5293. id: J.id,
  5294. params: {
  5295. unitId: i,
  5296. actions: [],
  5297. textRanges: a
  5298. }
  5299. }, h = new me(), u = k.getInstance(), { startOffset: g, endOffset: f } = t;
  5300. h.push({
  5301. t: W.RETAIN,
  5302. len: g
  5303. }), h.push({
  5304. t: W.RETAIN,
  5305. body: s,
  5306. len: f - g,
  5307. coverType: r
  5308. });
  5309. const p = le(l, o);
  5310. return d.params.actions = u.editOp(h.serialize(), p), !!c.syncExecuteCommand(d.id, d.params);
  5311. }
  5312. }, js = {
  5313. id: "doc.command.delete-custom-block",
  5314. type: N.COMMAND,
  5315. handler: async (n, e) => {
  5316. var b;
  5317. const t = n.get(G), o = n.get(Q), s = n.get(y), r = t.getActiveTextRange(), i = o.getCurrentUniverDocInstance();
  5318. if (r == null || i == null)
  5319. return !1;
  5320. 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 = [
  5321. {
  5322. startOffset: g,
  5323. endOffset: g,
  5324. style: u
  5325. }
  5326. ], p = {
  5327. id: J.id,
  5328. params: {
  5329. unitId: A,
  5330. actions: [],
  5331. textRanges: f,
  5332. prevTextRanges: [c]
  5333. }
  5334. }, m = new me(), E = k.getInstance(), I = [];
  5335. d > 0 && m.push({
  5336. t: W.RETAIN,
  5337. len: a === Be.LEFT ? d - 1 : d
  5338. }), m.push({
  5339. t: W.DELETE,
  5340. len: 1
  5341. });
  5342. const v = le(i, h);
  5343. I.push(E.editOp(m.serialize(), v));
  5344. 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);
  5345. return I.push(T), I.push(O), p.params.actions = I.reduce((B, M) => k.compose(B, M), null), !!s.syncExecuteCommand(p.id, p.params);
  5346. }
  5347. }, Ws = {
  5348. id: "doc.command.merge-two-paragraph",
  5349. type: N.COMMAND,
  5350. // eslint-disable-next-line max-lines-per-function
  5351. handler: async (n, e) => {
  5352. const t = n.get(G), o = n.get(Q), s = n.get(y), { direction: r, range: i } = e, a = t.getActiveTextRange(), c = t.getTextRanges();
  5353. if (a == null || c == null)
  5354. return !1;
  5355. const { segmentId: A, style: l } = a, d = o.getCurrentUnitForType(_.UNIVER_DOC), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
  5356. if (d == null || h == null)
  5357. return !1;
  5358. const u = a, g = d.getUnitId(), { startOffset: f, collapsed: p } = u;
  5359. if (!p)
  5360. return !1;
  5361. const m = r === Be.LEFT ? f : f + 1;
  5362. let E, I;
  5363. for (const b of h.paragraphs) {
  5364. if (b.startIndex >= m) {
  5365. I = b;
  5366. break;
  5367. }
  5368. E = b;
  5369. }
  5370. if (E == null || I == null)
  5371. return !1;
  5372. const v = r === Be.LEFT ? f - 1 : f, R = [
  5373. {
  5374. startOffset: v,
  5375. endOffset: v,
  5376. style: l
  5377. }
  5378. ], S = {
  5379. id: J.id,
  5380. params: {
  5381. unitId: g,
  5382. actions: [],
  5383. textRanges: R,
  5384. prevTextRanges: [i]
  5385. }
  5386. }, C = new me(), T = k.getInstance();
  5387. E.startIndex > 0 && C.push({
  5388. t: W.RETAIN,
  5389. len: E.startIndex
  5390. }), C.push({
  5391. t: W.DELETE,
  5392. len: 1
  5393. }), I.startIndex > E.startIndex + 1 && C.push({
  5394. t: W.RETAIN,
  5395. len: I.startIndex - E.startIndex - 1
  5396. }), C.push({
  5397. t: W.RETAIN,
  5398. len: 1,
  5399. coverType: no.REPLACE,
  5400. body: {
  5401. dataStream: "",
  5402. paragraphs: [
  5403. {
  5404. ...X.deepClone(E),
  5405. startIndex: 0
  5406. }
  5407. ]
  5408. }
  5409. });
  5410. const O = le(d, A);
  5411. return S.params.actions = T.editOp(C.serialize(), O), !!s.syncExecuteCommand(S.id, S.params);
  5412. }
  5413. };
  5414. function zs(n, e) {
  5415. let t = 0;
  5416. if (n == null || n.length === 0) {
  5417. if (typeof e[0].startOffset == "number") {
  5418. const o = e[0], { spanEntireRow: s, spanEntireTable: r } = o;
  5419. r ? t = o.startOffset - 3 : s ? o.startRow > 0 ? t = o.startOffset - 6 : t = o.startOffset : t = e[0].startOffset;
  5420. }
  5421. } else if (n.length > 0 && e.length > 0) {
  5422. const o = n[0], s = e[0];
  5423. if (o.startOffset != null && s.startOffset != null) {
  5424. if (o.startOffset < s.startOffset)
  5425. t = o.startOffset;
  5426. else if (o.startOffset >= s.startOffset) {
  5427. const { spanEntireRow: r, spanEntireTable: i } = s;
  5428. i ? t = s.startOffset - 3 : r && (t = s.startOffset - 6);
  5429. }
  5430. }
  5431. }
  5432. return t;
  5433. }
  5434. const So = {
  5435. id: "doc.command.delete-left",
  5436. type: N.COMMAND,
  5437. // eslint-disable-next-line max-lines-per-function, complexity
  5438. handler: async (n) => {
  5439. var O, P;
  5440. const e = n.get(G), t = n.get(Q), o = n.get(y);
  5441. let s = !0;
  5442. const r = t.getCurrentUniverDocInstance();
  5443. if (r == null)
  5444. return !1;
  5445. const i = r.getUnitId(), a = ke(n, i), c = e.getActiveTextRange(), A = e.getRectRanges(), l = e.getTextRanges(), d = a == null ? void 0 : a.getSkeleton();
  5446. if (d == null)
  5447. return !1;
  5448. if (A != null && A.length) {
  5449. const b = zs(l, A), B = A[0].segmentId, M = [
  5450. {
  5451. startOffset: b,
  5452. endOffset: b
  5453. }
  5454. ];
  5455. return o.executeCommand(Qt.id, {
  5456. segmentId: B,
  5457. textRanges: M
  5458. });
  5459. }
  5460. if (c == null || l == null)
  5461. return !1;
  5462. const { segmentId: h, style: u, segmentPage: g } = c, f = r.getSelfOrHeaderFooterModel(h).getBody();
  5463. if (f == null)
  5464. return !1;
  5465. const p = c, { startOffset: m, collapsed: E } = p, I = d.findNodeByCharIndex(m, h, g), v = hc(I), R = gc(I, f);
  5466. let S = m;
  5467. const C = d.findNodeByCharIndex(m - 1, h, g);
  5468. if (fc(I) && C !== I && (v === !0 || R === !0) && E) {
  5469. const b = pc(I, f);
  5470. if (b == null)
  5471. return !1;
  5472. const B = b == null ? void 0 : b.startIndex, M = { startIndex: 0 }, H = b.paragraphStyle;
  5473. if (v === !0) {
  5474. const D = b.paragraphStyle;
  5475. if (D) {
  5476. M.paragraphStyle = D;
  5477. const { hanging: te } = D;
  5478. te && (M.paragraphStyle.indentStart = te, M.paragraphStyle.hanging = void 0);
  5479. }
  5480. } else if (R === !0) {
  5481. const D = b.bullet;
  5482. D && (M.bullet = D), H != null && (M.paragraphStyle = { ...H }, delete M.paragraphStyle.hanging, delete M.paragraphStyle.indentStart);
  5483. }
  5484. const F = [
  5485. {
  5486. startOffset: S,
  5487. endOffset: S,
  5488. style: u
  5489. }
  5490. ];
  5491. s = await o.executeCommand(pa.id, {
  5492. unitId: r.getUnitId(),
  5493. updateBody: {
  5494. dataStream: "",
  5495. paragraphs: [{ ...M }]
  5496. },
  5497. range: {
  5498. startOffset: B,
  5499. endOffset: B + 1
  5500. },
  5501. textRanges: F,
  5502. coverType: no.REPLACE,
  5503. segmentId: h
  5504. });
  5505. } else if (E === !0) {
  5506. if (C == null)
  5507. return !0;
  5508. if (C.content === "\r")
  5509. s = await o.executeCommand(Ws.id, {
  5510. direction: Be.LEFT,
  5511. range: p
  5512. });
  5513. else if (C.streamType === "\b") {
  5514. const b = (P = r.getSnapshot().drawings) == null ? void 0 : P[(O = C.drawingId) != null ? O : ""];
  5515. if (b == null)
  5516. return !0;
  5517. if (b.layoutType === oo.INLINE) {
  5518. const M = r.getUnitId();
  5519. s = await o.executeCommand(js.id, {
  5520. direction: Be.LEFT,
  5521. range: c,
  5522. unitId: M,
  5523. drawingId: C.drawingId
  5524. });
  5525. } else {
  5526. const M = d.findNodeByCharIndex(m - 2);
  5527. if (M == null)
  5528. return !0;
  5529. S -= C.count, S -= M.count;
  5530. const H = [
  5531. {
  5532. startOffset: S,
  5533. endOffset: S,
  5534. style: u
  5535. }
  5536. ];
  5537. s = await o.executeCommand(dn.id, {
  5538. unitId: r.getUnitId(),
  5539. range: {
  5540. ...c,
  5541. startOffset: c.startOffset - 1,
  5542. endOffset: c.endOffset - 1
  5543. },
  5544. segmentId: h,
  5545. direction: Be.LEFT,
  5546. len: M.count,
  5547. textRanges: H
  5548. });
  5549. }
  5550. } else
  5551. S -= C.count, s = await o.executeCommand(dn.id, {
  5552. unitId: r.getUnitId(),
  5553. range: p,
  5554. segmentId: h,
  5555. direction: Be.LEFT,
  5556. len: C.count
  5557. });
  5558. } else {
  5559. const b = Ea(p, [p]);
  5560. s = await o.executeCommand(Qt.id, {
  5561. segmentId: h,
  5562. textRanges: b,
  5563. selections: [p]
  5564. });
  5565. }
  5566. return s;
  5567. }
  5568. }, ma = {
  5569. id: "doc.command.delete-right",
  5570. type: N.COMMAND,
  5571. // eslint-disable-next-line max-lines-per-function, complexity
  5572. handler: async (n) => {
  5573. var I, v;
  5574. const e = n.get(G), o = n.get(Q).getCurrentUniverDocInstance();
  5575. if (!o)
  5576. return !1;
  5577. const s = ke(n, o.getUnitId()), r = n.get(y), i = e.getActiveTextRange(), a = e.getRectRanges(), c = e.getTextRanges(), A = s == null ? void 0 : s.getSkeleton();
  5578. if (a != null && a.length) {
  5579. const R = zs(c, a), S = a[0].segmentId, C = [
  5580. {
  5581. startOffset: R,
  5582. endOffset: R
  5583. }
  5584. ];
  5585. return r.executeCommand(Qt.id, {
  5586. segmentId: S,
  5587. textRanges: C
  5588. });
  5589. }
  5590. if (i == null || A == null || c == null)
  5591. return !1;
  5592. const { segmentId: l, style: d, segmentPage: h } = i, u = o == null ? void 0 : o.getSelfOrHeaderFooterModel(l).getBody();
  5593. if (!o || !u)
  5594. return !1;
  5595. const g = i, { startOffset: f, endOffset: p, collapsed: m } = g;
  5596. if (f === u.dataStream.length - 2 && m)
  5597. return !0;
  5598. let E = !1;
  5599. if (m === !0) {
  5600. const R = A.findNodeByCharIndex(f, l, h), S = A.findNodeByCharIndex(f + 1);
  5601. if (R.streamType === U.PARAGRAPH && (S == null ? void 0 : S.streamType) === U.SECTION_BREAK)
  5602. return !1;
  5603. if (R.content === "\r")
  5604. E = await r.executeCommand(Ws.id, {
  5605. direction: Be.RIGHT,
  5606. range: i
  5607. });
  5608. else if (R.streamType === "\b") {
  5609. const C = (v = o.getSnapshot().drawings) == null ? void 0 : v[(I = R.drawingId) != null ? I : ""];
  5610. if (C == null)
  5611. return !0;
  5612. if (C.layoutType === oo.INLINE) {
  5613. const O = o.getUnitId();
  5614. E = await r.executeCommand(js.id, {
  5615. direction: Be.RIGHT,
  5616. range: i,
  5617. unitId: O,
  5618. drawingId: R.drawingId
  5619. });
  5620. } else {
  5621. if (S == null)
  5622. return !0;
  5623. const O = [
  5624. {
  5625. startOffset: f + 1,
  5626. endOffset: f + 1,
  5627. style: d
  5628. }
  5629. ];
  5630. E = await r.executeCommand(dn.id, {
  5631. unitId: o.getUnitId(),
  5632. range: {
  5633. ...i,
  5634. startOffset: f + 1,
  5635. endOffset: p + 1
  5636. },
  5637. segmentId: l,
  5638. direction: Be.RIGHT,
  5639. textRanges: O,
  5640. len: S.count
  5641. });
  5642. }
  5643. } else {
  5644. const C = [
  5645. {
  5646. startOffset: f,
  5647. endOffset: f,
  5648. style: d
  5649. }
  5650. ];
  5651. E = await r.executeCommand(dn.id, {
  5652. unitId: o.getUnitId(),
  5653. range: g,
  5654. segmentId: l,
  5655. direction: Be.RIGHT,
  5656. textRanges: C,
  5657. len: R.count
  5658. });
  5659. }
  5660. } else {
  5661. const R = Ea(g, [g]);
  5662. E = await r.executeCommand(Qt.id, {
  5663. segmentId: l,
  5664. textRanges: R,
  5665. selections: [g]
  5666. });
  5667. }
  5668. return E;
  5669. }
  5670. };
  5671. function Ea(n, e) {
  5672. let t = n.endOffset;
  5673. for (const s of e) {
  5674. const { startOffset: r, endOffset: i } = s;
  5675. r == null || i == null || i <= n.endOffset && (t -= i - r);
  5676. }
  5677. return [
  5678. {
  5679. startOffset: t,
  5680. endOffset: t,
  5681. style: n.style
  5682. }
  5683. ];
  5684. }
  5685. const Sd = 10, Id = 6;
  5686. function Cd() {
  5687. return X.generateRandomId(Id);
  5688. }
  5689. function vd(n) {
  5690. const e = n.match(/data-copy-id="([^\s]+)"/);
  5691. return e && e[1] ? e[1] : null;
  5692. }
  5693. class Rd {
  5694. constructor() {
  5695. x(this, "_cache", new Xa(Sd));
  5696. }
  5697. set(e, t) {
  5698. this._cache.set(e, t);
  5699. }
  5700. get(e) {
  5701. return this._cache.get(e);
  5702. }
  5703. clear() {
  5704. this._cache.clear();
  5705. }
  5706. }
  5707. const No = new Rd();
  5708. function Gs(n) {
  5709. const e = n.style, t = {}, o = n.tagName.toLowerCase();
  5710. switch (o) {
  5711. case "b":
  5712. case "em":
  5713. case "strong": {
  5714. t.bl = L.TRUE;
  5715. break;
  5716. }
  5717. case "s": {
  5718. t.st = {
  5719. s: L.TRUE
  5720. };
  5721. break;
  5722. }
  5723. case "u": {
  5724. t.ul = {
  5725. s: L.TRUE
  5726. };
  5727. break;
  5728. }
  5729. case "i": {
  5730. t.it = L.TRUE;
  5731. break;
  5732. }
  5733. case "sub":
  5734. case "sup": {
  5735. t.va = o === "sup" ? Ne.SUPERSCRIPT : Ne.SUBSCRIPT;
  5736. break;
  5737. }
  5738. }
  5739. for (let s = 0; s < e.length; s++) {
  5740. const r = e[s], i = e.getPropertyValue(r);
  5741. switch (r) {
  5742. case "font-family": {
  5743. t.ff = i.replace(/^"/g, "").replace(/"$/g, "");
  5744. break;
  5745. }
  5746. case "font-size": {
  5747. const a = Number.parseInt(i);
  5748. Number.isNaN(a) || (i.endsWith("pt") ? t.fs = a : i.endsWith("px") && (t.fs = mc(a)));
  5749. break;
  5750. }
  5751. case "font-style": {
  5752. i === "italic" && (t.it = L.TRUE);
  5753. break;
  5754. }
  5755. case "font-weight": {
  5756. (Number(i) > 400 || String(i) === "bold") && (t.bl = L.TRUE);
  5757. break;
  5758. }
  5759. case "text-decoration": {
  5760. /underline/.test(i) ? t.ul = {
  5761. s: L.TRUE
  5762. } : /overline/.test(i) ? t.ol = {
  5763. s: L.TRUE
  5764. } : /line-through/.test(i) && (t.st = {
  5765. s: L.TRUE
  5766. });
  5767. break;
  5768. }
  5769. case "color": {
  5770. try {
  5771. const a = new dr(i);
  5772. a.isValid && (t.cl = {
  5773. rgb: a.toRgbString()
  5774. });
  5775. } catch {
  5776. }
  5777. break;
  5778. }
  5779. case "background-color": {
  5780. const a = new dr(i);
  5781. a.isValid && (t.bg = {
  5782. rgb: a.toRgbString()
  5783. });
  5784. break;
  5785. }
  5786. }
  5787. }
  5788. return t;
  5789. }
  5790. function bd(n) {
  5791. const e = new DOMParser(), t = `<x-univer id="univer-root">${n}</x-univer>`;
  5792. return e.parseFromString(t, "text/html").querySelector("#univer-root");
  5793. }
  5794. function Xr(n, e) {
  5795. const t = n.tagName.toLowerCase();
  5796. return typeof e == "string" ? t === e : Array.isArray(e) ? e.some((o) => o === t) : e(n);
  5797. }
  5798. const Jr = 660, Jn = class Jn {
  5799. constructor() {
  5800. x(this, "_tableCache", []);
  5801. x(this, "_styleCache", /* @__PURE__ */ new Map());
  5802. x(this, "_styleRules", []);
  5803. x(this, "_afterProcessRules", []);
  5804. }
  5805. static use(e) {
  5806. if (this._pluginList.includes(e))
  5807. throw new Error(`Univer paste plugin ${e.name} already added`);
  5808. this._pluginList.push(e);
  5809. }
  5810. convert(e, t = {}) {
  5811. var a;
  5812. const o = Jn._pluginList.find((c) => c.checkPasteType(e)), s = bd(e), i = {
  5813. body: {
  5814. dataStream: "",
  5815. paragraphs: [],
  5816. sectionBreaks: [],
  5817. tables: [],
  5818. textRuns: [],
  5819. customBlocks: []
  5820. },
  5821. tableSource: {},
  5822. id: (a = t == null ? void 0 : t.unitId) != null ? a : ""
  5823. };
  5824. 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;
  5825. }
  5826. // eslint-disable-next-line max-lines-per-function, complexity
  5827. _process(e, t, o) {
  5828. var r, i, a, c;
  5829. const s = o.body;
  5830. for (const A of t)
  5831. if (A.nodeType === Node.TEXT_NODE) {
  5832. if (((r = A.nodeValue) == null ? void 0 : r.trim()) === "")
  5833. continue;
  5834. const l = (i = A.nodeValue) == null ? void 0 : i.replace(/[\r\n]/g, "");
  5835. let d;
  5836. e && this._styleCache.has(e) && (d = this._styleCache.get(e)), s.dataStream += l, d && Object.getOwnPropertyNames(d).length && s.textRuns.push({
  5837. st: s.dataStream.length - l.length,
  5838. ed: s.dataStream.length,
  5839. ts: d
  5840. });
  5841. } else if (A.nodeName === "IMG") {
  5842. const l = A, d = l.dataset.imageSourceType, h = d === xs.UUID ? l.dataset.source : l.src;
  5843. if (h && d) {
  5844. 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), m = X.generateRandomId(6);
  5845. (c = (a = o.body) == null ? void 0 : a.customBlocks) == null || c.push({ startIndex: s.dataStream.length, blockId: m }), s.dataStream += "\b", o.drawings || (o.drawings = {}), o.drawings[m] = {
  5846. drawingId: m,
  5847. title: "",
  5848. description: "",
  5849. imageSourceType: d,
  5850. source: h,
  5851. transform: { width: u, height: g, left: 0 },
  5852. docTransform: {
  5853. size: { width: f, height: p },
  5854. angle: 0,
  5855. positionH: {
  5856. relativeFrom: $n.PAGE,
  5857. posOffset: 0
  5858. },
  5859. positionV: {
  5860. relativeFrom: ot.PARAGRAPH,
  5861. posOffset: 0
  5862. }
  5863. },
  5864. layoutType: oo.INLINE,
  5865. drawingType: Cs.DRAWING_IMAGE,
  5866. unitId: o.id || "",
  5867. subUnitId: o.id || ""
  5868. };
  5869. }
  5870. } else {
  5871. if (Ja.includes(A.nodeName.toLowerCase()))
  5872. continue;
  5873. if (A.nodeType === Node.ELEMENT_NODE) {
  5874. const l = A, d = this._processBeforeLink(l, o), h = e ? this._styleCache.get(e) : {}, u = this._styleRules.find(({ filter: m }) => Xr(A, m)), g = u ? u.getStyle(A) : Gs(A);
  5875. this._styleCache.set(A, { ...h, ...g });
  5876. const { childNodes: f } = A;
  5877. this._processBeforeTable(A, o), this._process(A, f, o), this._processAfterTable(A, o);
  5878. const p = this._afterProcessRules.find(
  5879. ({ filter: m }) => Xr(A, m)
  5880. );
  5881. p && p.handler(o, A), this._processAfterLink(l, o, d);
  5882. }
  5883. }
  5884. }
  5885. _processBeforeTable(e, t) {
  5886. var r;
  5887. const o = e.tagName.toUpperCase(), s = t.body;
  5888. switch (o) {
  5889. case "TABLE": {
  5890. s.dataStream[s.dataStream.length - 1] !== "\r" && (s.dataStream += "\r", s.paragraphs == null && (s.paragraphs = []), (r = s.paragraphs) == null || r.push({
  5891. startIndex: s.dataStream.length - 1
  5892. }));
  5893. const i = ua(0, 0, Jr);
  5894. this._tableCache.push({
  5895. table: i,
  5896. startIndex: s.dataStream.length
  5897. }), s.dataStream += U.TABLE_START;
  5898. break;
  5899. }
  5900. case "TR": {
  5901. const i = Hs(0);
  5902. this._tableCache[this._tableCache.length - 1].table.tableRows.push(i), s.dataStream += U.TABLE_ROW_START;
  5903. break;
  5904. }
  5905. case "TD": {
  5906. const i = Fs(), a = this._tableCache[this._tableCache.length - 1].table;
  5907. a.tableRows[a.tableRows.length - 1].tableCells.push(i), s.dataStream += U.TABLE_CELL_START;
  5908. break;
  5909. }
  5910. }
  5911. }
  5912. _processAfterTable(e, t) {
  5913. var i, a;
  5914. const o = e.tagName.toUpperCase(), s = t.body;
  5915. t.tableSource == null && (t.tableSource = {}), s.tables == null && (s.tables = []), s.sectionBreaks == null && (s.sectionBreaks = []);
  5916. const { tableSource: r } = t;
  5917. switch (o) {
  5918. case "TABLE": {
  5919. 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(() => X.deepClone(h))];
  5920. l.tableColumns = u, r[l.tableId] = l, s.dataStream += U.TABLE_END, s.tables.push({
  5921. startIndex: A,
  5922. endIndex: s.dataStream.length,
  5923. tableId: l.tableId
  5924. });
  5925. break;
  5926. }
  5927. case "TR": {
  5928. s.dataStream += U.TABLE_ROW_END;
  5929. break;
  5930. }
  5931. case "TD": {
  5932. s.dataStream[s.dataStream.length - 1] !== "\r" && ((i = s.paragraphs) == null || i.push({
  5933. startIndex: s.dataStream.length
  5934. }), s.dataStream += "\r"), (a = s.sectionBreaks) == null || a.push({
  5935. startIndex: s.dataStream.length
  5936. }), s.dataStream += `
  5937. ${U.TABLE_CELL_END}`;
  5938. break;
  5939. }
  5940. }
  5941. }
  5942. _processBeforeLink(e, t) {
  5943. return t.body.dataStream.length;
  5944. }
  5945. _processAfterLink(e, t, o) {
  5946. var i, a;
  5947. const s = t.body, r = e;
  5948. r.tagName.toUpperCase() === "A" && (s.customRanges = (i = s.customRanges) != null ? i : [], s.customRanges.push({
  5949. startIndex: o,
  5950. endIndex: s.dataStream.length - 1,
  5951. rangeId: (a = r.dataset.rangeid) != null ? a : pt(),
  5952. rangeType: Ii.HYPERLINK,
  5953. properties: { url: r.href }
  5954. }));
  5955. }
  5956. };
  5957. x(Jn, "_pluginList", []);
  5958. let Ut = Jn;
  5959. const xd = {
  5960. name: "univer-doc-paste-plugin-lark",
  5961. checkPasteType(n) {
  5962. return /lark-record-clipboard/i.test(n);
  5963. },
  5964. // TODO: @JOCS, support inline code copy from lark.
  5965. stylesRules: [
  5966. {
  5967. filter: ["s"],
  5968. getStyle(n) {
  5969. const e = Gs(n);
  5970. return {
  5971. st: {
  5972. s: L.TRUE
  5973. },
  5974. ...e
  5975. };
  5976. }
  5977. }
  5978. ],
  5979. afterProcessRules: [
  5980. {
  5981. filter(n) {
  5982. return n.tagName === "DIV" && /ace-line/i.test(n.className);
  5983. },
  5984. handler(n) {
  5985. const e = n.body;
  5986. e.paragraphs == null && (e.paragraphs = []), e.paragraphs.push({
  5987. startIndex: e.dataStream.length
  5988. }), e.dataStream += "\r";
  5989. }
  5990. }
  5991. ]
  5992. };
  5993. function Sa(n) {
  5994. const e = n.style, t = {};
  5995. for (let o = 0; o < e.length; o++) {
  5996. const s = e[o], r = e.getPropertyValue(s);
  5997. switch (s) {
  5998. case "margin-top": {
  5999. const i = Number.parseInt(r);
  6000. t.spaceAbove = { v: /pt/.test(r) ? Er(i) : i };
  6001. break;
  6002. }
  6003. case "margin-bottom": {
  6004. const i = Number.parseInt(r);
  6005. t.spaceBelow = { v: /pt/.test(r) ? Er(i) : i };
  6006. break;
  6007. }
  6008. case "line-height": {
  6009. let i = Number.parseFloat(r);
  6010. r.endsWith("%") && (i /= 100), t.lineSpacing = i;
  6011. break;
  6012. }
  6013. }
  6014. }
  6015. return Object.getOwnPropertyNames(t).length ? t : null;
  6016. }
  6017. const Od = {
  6018. name: "univer-doc-paste-plugin-univer",
  6019. checkPasteType(n) {
  6020. return /UniverNormal/i.test(n);
  6021. },
  6022. stylesRules: [],
  6023. afterProcessRules: [
  6024. {
  6025. filter(n) {
  6026. return n.tagName === "P" && /UniverNormal/i.test(n.className);
  6027. },
  6028. handler(n, e) {
  6029. const t = n.body;
  6030. t.paragraphs == null && (t.paragraphs = []);
  6031. const o = {
  6032. startIndex: t.dataStream.length
  6033. }, s = Sa(e);
  6034. s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
  6035. }
  6036. }
  6037. ]
  6038. }, Td = {
  6039. name: "univer-doc-paste-plugin-word",
  6040. checkPasteType(n) {
  6041. return /word|mso/i.test(n);
  6042. },
  6043. stylesRules: [
  6044. {
  6045. filter: ["b"],
  6046. getStyle(n) {
  6047. const e = Gs(n);
  6048. return { bl: L.TRUE, ...e };
  6049. }
  6050. }
  6051. ],
  6052. afterProcessRules: [
  6053. {
  6054. filter(n) {
  6055. return n.tagName === "P";
  6056. },
  6057. handler(n, e) {
  6058. const t = n.body;
  6059. t.paragraphs == null && (t.paragraphs = []);
  6060. const o = {
  6061. startIndex: t.dataStream.length
  6062. }, s = Sa(e);
  6063. s && (o.paragraphStyle = s), t.paragraphs.push(o), t.dataStream += "\r";
  6064. }
  6065. }
  6066. ]
  6067. };
  6068. function yd(n) {
  6069. var o, s;
  6070. const e = (r) => {
  6071. let i = "";
  6072. return Object.keys(r).forEach((a) => {
  6073. r[a] !== void 0 && (i += ` ${a}=${r[a]}`);
  6074. }), i;
  6075. }, t = {
  6076. "data-doc-transform-height": n.docTransform.size.height,
  6077. "data-doc-transform-width": n.docTransform.size.width,
  6078. "data-width": (o = n.transform) == null ? void 0 : o.width,
  6079. "data-height": (s = n.transform) == null ? void 0 : s.height,
  6080. "data-image-source-type": n.imageSourceType,
  6081. "data-source": n.imageSourceType === xs.UUID ? n.source : void 0,
  6082. src: n.source
  6083. };
  6084. return `<img ${e(t)}></img>`;
  6085. }
  6086. function Zr(n, e) {
  6087. 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;
  6088. let f = n.slice(t, o);
  6089. const p = [];
  6090. return a === L.TRUE && (f = `<i>${f}</i>`), g === Ne.SUPERSCRIPT ? f = `<sup>${f}</sup>` : g === Ne.SUBSCRIPT && (f = `<sub>${f}</sub>`), (A == null ? void 0 : A.s) === L.TRUE && (f = `<u>${f}</u>`), (l == null ? void 0 : l.s) === L.TRUE && (f = `<s>${f}</s>`), c === L.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;
  6091. }
  6092. function Qo(n, e, t) {
  6093. const { dataStream: o, textRuns: s = [] } = n;
  6094. if (e === t)
  6095. return "";
  6096. let r = e;
  6097. const i = [];
  6098. for (const a of s) {
  6099. const { st: c, ed: A } = a;
  6100. X.hasIntersectionBetweenTwoRanges(e, t, c, A) && (c > r ? (i.push(o.slice(r, c)), i.push(Zr(o, {
  6101. ...a,
  6102. ed: Math.min(A, t)
  6103. }))) : i.push(Zr(o, {
  6104. ...a,
  6105. st: r,
  6106. ed: Math.min(A, t)
  6107. }))), r = Math.max(e, Math.min(A, t));
  6108. }
  6109. return r !== t && i.push(o.slice(r, t)), i.join("");
  6110. }
  6111. function Bd(n, e, t) {
  6112. const o = n.body, s = n.drawings || {}, { customRanges: r = [], customBlocks: i = [] } = o || {}, a = [...i], c = r.filter((u) => u.startIndex >= e && u.endIndex <= t);
  6113. let A = e, l = "";
  6114. const d = (u, g) => {
  6115. let f = "", p = 0, m = u, E = a.findIndex((I) => u <= I.startIndex && g >= I.startIndex);
  6116. if (E === -1)
  6117. return f = Qo(o, u, g), { sliceHtml: f, customBlockLength: p };
  6118. for (; E !== -1; ) {
  6119. const I = a[E];
  6120. a.splice(E, 1), f += Qo(o, m, I.startIndex);
  6121. const v = s[I.blockId];
  6122. if (v)
  6123. switch (v.drawingType) {
  6124. case Cs.DRAWING_IMAGE: {
  6125. f += yd(v), p++;
  6126. break;
  6127. }
  6128. }
  6129. m = I.startIndex + 1, E = a.findIndex((R) => m <= R.startIndex && g >= R.startIndex);
  6130. }
  6131. return f = f + Qo(o, m, g + 1), { sliceHtml: f, customBlockLength: p };
  6132. };
  6133. c.forEach((u) => {
  6134. var v, R;
  6135. const { startIndex: g, endIndex: f, rangeType: p, rangeId: m } = u, E = d(A, g);
  6136. l += E.sliceHtml;
  6137. const I = d(g, f + 1);
  6138. switch (p) {
  6139. case Ii.HYPERLINK: {
  6140. l += `<a data-rangeid="${m}" href="${(R = (v = u.properties) == null ? void 0 : v.url) != null ? R : ""}">${I.sliceHtml}</a>`;
  6141. break;
  6142. }
  6143. default: {
  6144. l += I.sliceHtml;
  6145. break;
  6146. }
  6147. }
  6148. A = f + 1 + (E.customBlockLength + I.customBlockLength);
  6149. });
  6150. const h = d(A, t);
  6151. return l += h.sliceHtml, l;
  6152. }
  6153. function Md(n) {
  6154. const e = n.body || {}, { paragraphs: t = [], sectionBreaks: o = [] } = e;
  6155. let { dataStream: s = "" } = e;
  6156. s.endsWith(`\r
  6157. `) || (s += `\r
  6158. `, t.push({
  6159. startIndex: s.length - 2
  6160. }), o.push({
  6161. startIndex: s.length - 1
  6162. }), e.dataStream = s, e.paragraphs = t, e.sectionBreaks = o);
  6163. const r = { html: "" }, i = Ec(s).sectionList;
  6164. for (const a of i)
  6165. yt(a, n, r);
  6166. return r.html;
  6167. }
  6168. function yt(n, e, t) {
  6169. var o, s;
  6170. switch (n.nodeType) {
  6171. case qt.SECTION_BREAK: {
  6172. for (const r of n.children)
  6173. yt(r, e, t);
  6174. break;
  6175. }
  6176. case qt.PARAGRAPH: {
  6177. 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 = [];
  6178. 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)
  6179. for (const g of r)
  6180. yt(g, e, t);
  6181. t.html += `${Bd(e, i, a)}</p>`;
  6182. break;
  6183. }
  6184. case qt.TABLE: {
  6185. const { children: r } = n;
  6186. t.html += '<table class="UniverTable" style="width: 100%; border-collapse: collapse;"><tbody>';
  6187. for (const i of r)
  6188. yt(i, e, t);
  6189. t.html += "</tbody></table>";
  6190. break;
  6191. }
  6192. case qt.TABLE_ROW: {
  6193. const { children: r } = n;
  6194. t.html += '<tr class="UniverTableRow">';
  6195. for (const i of r)
  6196. yt(i, e, t);
  6197. t.html += "</tr>";
  6198. break;
  6199. }
  6200. case qt.TABLE_CELL: {
  6201. const { children: r } = n;
  6202. t.html += '<td class="UniverTableCell">';
  6203. for (const i of r)
  6204. yt(i, e, t);
  6205. t.html += "</td>";
  6206. break;
  6207. }
  6208. default:
  6209. throw new Error(`Unknown node type: ${n.nodeType}`);
  6210. }
  6211. }
  6212. class _d {
  6213. convert(e) {
  6214. if (e.length === 0)
  6215. throw new Error("The bodyList length at least to be 1");
  6216. let t = "";
  6217. for (const o of X.deepClone(e))
  6218. t += Md(o);
  6219. return t;
  6220. }
  6221. }
  6222. var Pd = Object.defineProperty, Dd = Object.getOwnPropertyDescriptor, wd = (n, e, t, o) => {
  6223. for (var s = o > 1 ? void 0 : o ? Dd(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  6224. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  6225. return o && s && Pd(e, t, s), s;
  6226. }, Jt = (n, e) => (t, o) => e(t, o, n);
  6227. Ut.use(Td);
  6228. Ut.use(xd);
  6229. Ut.use(Od);
  6230. function $r(n, e, t) {
  6231. var r, i, a;
  6232. const o = Ei(n, e, t + 2), s = U.TABLE_START + U.TABLE_ROW_START + U.TABLE_CELL_START + o.dataStream + U.TABLE_CELL_END + U.TABLE_ROW_END + U.TABLE_END;
  6233. return o.dataStream = s, (r = o.textRuns) == null || r.forEach((c) => {
  6234. const { st: A, ed: l } = c;
  6235. c.st = A + 3, c.ed = l + 3;
  6236. }), (i = o.tables) == null || i.forEach((c) => {
  6237. const { startIndex: A, endIndex: l } = c;
  6238. c.startIndex = A + 3, c.endIndex = l + 3;
  6239. }), (a = o.paragraphs) == null || a.forEach((c) => {
  6240. const { startIndex: A } = c;
  6241. c.startIndex = A + 3;
  6242. }), o;
  6243. }
  6244. const Sn = ps("doc.clipboard-service");
  6245. let ns = class extends ue {
  6246. constructor(e, t, o, s, r) {
  6247. super();
  6248. x(this, "_clipboardHooks", []);
  6249. x(this, "_htmlToUDM", new Ut());
  6250. x(this, "_umdToHtml", new _d());
  6251. this._univerInstanceService = e, this._logService = t, this._commandService = o, this._clipboardInterfaceService = s, this._docSelectionManagerService = r;
  6252. }
  6253. async copy(e = ur.copy) {
  6254. var r;
  6255. const { newSnapshotList: t = [], needCache: o = !1, snapshot: s } = (r = this._getDocumentBodyInRanges(e)) != null ? r : {};
  6256. if (t.length === 0 || s == null)
  6257. return !1;
  6258. try {
  6259. const i = this._docSelectionManagerService.getActiveTextRange(), a = !!(i != null && i.segmentId);
  6260. this._setClipboardData(t, !a && o);
  6261. } catch (i) {
  6262. return this._logService.error("[DocClipboardService] copy failed", i), !1;
  6263. }
  6264. return !0;
  6265. }
  6266. async cut() {
  6267. return this._cut();
  6268. }
  6269. async paste(e) {
  6270. const t = await this._genDocDataFromClipboardItems(e);
  6271. return this._paste(t);
  6272. }
  6273. async legacyPaste(e) {
  6274. let { html: t, text: o, files: s } = e;
  6275. const r = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC), i = (r == null ? void 0 : r.getUnitId()) || "";
  6276. !t && !o && s.length && (t = await this._createImagePasteHtml(s));
  6277. const a = this._genDocDataFromHtmlAndText(t, o, i);
  6278. if (i === vs)
  6279. if (o) {
  6280. const c = Ce.transform.fromPlainText(o);
  6281. return this._paste({ body: c });
  6282. } else
  6283. a.body.textRuns = [];
  6284. return this._paste(a);
  6285. }
  6286. async _cut() {
  6287. var i, a, c;
  6288. const {
  6289. segmentId: e,
  6290. endOffset: t,
  6291. style: o
  6292. } = (i = this._docSelectionManagerService.getActiveTextRange()) != null ? i : {}, s = (a = this._docSelectionManagerService.getTextRanges()) != null ? a : [], r = (c = this._docSelectionManagerService.getRectRanges()) != null ? c : [];
  6293. if (e == null && this._logService.error("[DocClipboardController] segmentId is not existed"), s.length === 0 && r.length === 0)
  6294. return !1;
  6295. this.copy(ur.cut);
  6296. try {
  6297. let A = 0;
  6298. if (r.length > 0)
  6299. A = zs(s, r);
  6300. else if (t != null) {
  6301. A = t;
  6302. for (const d of s) {
  6303. const { startOffset: h, endOffset: u } = d;
  6304. h == null || u == null || u <= t && (A -= u - h);
  6305. }
  6306. }
  6307. const l = [
  6308. {
  6309. startOffset: A,
  6310. endOffset: A,
  6311. style: o
  6312. }
  6313. ];
  6314. return this._commandService.executeCommand(Qt.id, { segmentId: e, textRanges: l });
  6315. } catch {
  6316. return this._logService.error("[DocClipboardController] cut content failed"), !1;
  6317. }
  6318. }
  6319. async _paste(e) {
  6320. var l, d;
  6321. const { body: t } = e;
  6322. if (t == null)
  6323. return !1;
  6324. let o = Za(t);
  6325. if (!((l = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC)) == null ? void 0 : l.getUnitId()))
  6326. return !1;
  6327. this._clipboardHooks.forEach((h) => {
  6328. h.onBeforePaste && (o = h.onBeforePaste(o));
  6329. }), o.customRanges = (d = o.customRanges) == null ? void 0 : d.map(Ce.customRange.copyCustomRange);
  6330. const r = this._docSelectionManagerService.getActiveTextRange(), { segmentId: i, endOffset: a, style: c } = r || {}, A = this._docSelectionManagerService.getTextRanges();
  6331. if (i == null && this._logService.error("[DocClipboardController] segmentId does not exist!"), a == null || A == null)
  6332. return !1;
  6333. try {
  6334. let h = a;
  6335. for (const g of A) {
  6336. const { startOffset: f, endOffset: p } = g;
  6337. f == null || p == null || p <= a && (h += o.dataStream.length - (p - f));
  6338. }
  6339. const u = [
  6340. {
  6341. startOffset: h,
  6342. endOffset: h,
  6343. style: c
  6344. }
  6345. ];
  6346. return this._commandService.executeCommand(fa.id, {
  6347. doc: {
  6348. ...e,
  6349. body: o
  6350. },
  6351. segmentId: i,
  6352. textRanges: u
  6353. });
  6354. } catch {
  6355. return this._logService.error("[DocClipboardController]", "clipboard is empty."), !1;
  6356. }
  6357. }
  6358. async _setClipboardData(e, t = !0) {
  6359. var i, a, c, A;
  6360. const o = Cd(), s = (e.length > 1 ? e.map((l) => {
  6361. var d;
  6362. return ((d = l.body) == null ? void 0 : d.dataStream) || "";
  6363. }).join(`
  6364. `) : ((i = e[0].body) == null ? void 0 : i.dataStream) || "").replaceAll(U.TABLE_START, "").replaceAll(U.TABLE_END, "").replaceAll(U.TABLE_ROW_START, "").replaceAll(U.TABLE_ROW_END, "").replaceAll(U.TABLE_CELL_START, "").replaceAll(U.TABLE_CELL_END, "").replaceAll(`\r
  6365. `, " ");
  6366. let r = this._umdToHtml.convert(e);
  6367. if (e.length === 1 && t) {
  6368. r = r.replace(/(<[a-z]+)/, (h, u) => `${u} data-copy-id="${o}"`);
  6369. const l = e[0], d = { body: l.body };
  6370. if ((c = (a = l.body) == null ? void 0 : a.customBlocks) != null && c.length) {
  6371. d.drawings = {};
  6372. for (const h of l.body.customBlocks) {
  6373. const { blockId: u } = h, g = (A = l.drawings) == null ? void 0 : A[u];
  6374. if (g) {
  6375. const f = X.generateRandomId(6);
  6376. h.blockId = f, d.drawings[f] = {
  6377. ...X.deepClone(g),
  6378. drawingId: f
  6379. };
  6380. }
  6381. }
  6382. }
  6383. No.set(o, d);
  6384. }
  6385. return this._clipboardInterfaceService.write(s, r);
  6386. }
  6387. addClipboardHook(e) {
  6388. return this._clipboardHooks.push(e), Zn(() => {
  6389. const t = this._clipboardHooks.indexOf(e);
  6390. t > -1 && this._clipboardHooks.splice(t, 1);
  6391. });
  6392. }
  6393. _getDocumentBodyInRanges(e) {
  6394. var A;
  6395. const t = this._univerInstanceService.getCurrentUniverDocInstance(), o = this._docSelectionManagerService.getDocRanges(), s = [];
  6396. let r = !0;
  6397. if (t == null || o.length === 0)
  6398. return;
  6399. const i = o[0].segmentId, a = (A = t == null ? void 0 : t.getSelfOrHeaderFooterModel(i)) == null ? void 0 : A.getBody(), c = t.getSnapshot();
  6400. if (a != null) {
  6401. for (const l of o) {
  6402. const { startOffset: d, endOffset: h, collapsed: u, rangeType: g } = l;
  6403. if (u || d == null || h == null)
  6404. continue;
  6405. if (g === Ge.RECT) {
  6406. r = !1;
  6407. const { spanEntireRow: m } = l;
  6408. let E;
  6409. E = $r(a, d, h), s.push(E);
  6410. continue;
  6411. }
  6412. const f = { startOffset: d, endOffset: h, collapsed: u }, p = t.getSelfOrHeaderFooterModel(i).sliceBody(f.startOffset, f.endOffset, e);
  6413. p != null && s.push(p);
  6414. }
  6415. return {
  6416. newSnapshotList: s.map((l) => ({ ...c, body: l })),
  6417. needCache: r,
  6418. snapshot: c
  6419. };
  6420. }
  6421. }
  6422. async _genDocDataFromClipboardItems(e) {
  6423. try {
  6424. let t = "", o = "";
  6425. const s = [];
  6426. for (const r of e)
  6427. for (const i of r.types)
  6428. switch (i) {
  6429. case Qi: {
  6430. o = await r.getType(i).then((a) => a && a.text());
  6431. break;
  6432. }
  6433. case Ni: {
  6434. t = await r.getType(i).then((a) => a && a.text());
  6435. break;
  6436. }
  6437. case wi:
  6438. case Di:
  6439. case Pi:
  6440. case _i: {
  6441. const a = await r.getType(i), c = new File([a], `pasted_image.${i.split("/")[1]}`, { type: i });
  6442. s.push(c);
  6443. break;
  6444. }
  6445. }
  6446. return !t && !o && s.length && (t = await this._createImagePasteHtml(s)), this._genDocDataFromHtmlAndText(t, o);
  6447. } catch (t) {
  6448. return Promise.reject(t);
  6449. }
  6450. }
  6451. _genDocDataFromHtmlAndText(e, t, o) {
  6452. if (!e) {
  6453. if (t)
  6454. return { body: Ce.transform.fromPlainText(t) };
  6455. throw new Error("[DocClipboardService] html and text cannot be both empty!");
  6456. }
  6457. const s = vd(e);
  6458. if (s) {
  6459. const i = No.get(s);
  6460. if (i)
  6461. return i;
  6462. }
  6463. if (!o) {
  6464. const i = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC);
  6465. o = (i == null ? void 0 : i.getUnitId()) || "";
  6466. }
  6467. const r = this._htmlToUDM.convert(e, { unitId: o });
  6468. return s && No.set(s, r), r;
  6469. }
  6470. async _createImagePasteHtml(e) {
  6471. var a, c;
  6472. const t = {
  6473. id: "",
  6474. documentStyle: {},
  6475. body: {
  6476. dataStream: "",
  6477. customBlocks: []
  6478. },
  6479. drawings: {}
  6480. }, o = async (A) => {
  6481. const l = new FileReader();
  6482. return new Promise((d) => {
  6483. l.onloadend = function() {
  6484. d({
  6485. source: l.result,
  6486. imageSourceType: xs.BASE64
  6487. });
  6488. }, l.readAsDataURL(A);
  6489. });
  6490. }, s = (A) => {
  6491. const l = new Image(), d = 500;
  6492. return new Promise((h) => {
  6493. l.src = typeof A == "string" ? A : URL.createObjectURL(A), l.onload = () => {
  6494. const u = Math.min(d, l.naturalWidth), g = l.naturalHeight / l.naturalWidth;
  6495. h({ width: u, height: u * g });
  6496. };
  6497. });
  6498. }, r = (c = (a = this._clipboardHooks.find((A) => A.onBeforePasteImage)) == null ? void 0 : a.onBeforePasteImage) != null ? c : o;
  6499. return await Promise.all(e.map(async (A, l) => {
  6500. var m;
  6501. const d = await r(A);
  6502. if (!d)
  6503. return Promise.resolve();
  6504. const { width: h = 100, height: u = 100 } = await s(A), g = `paste_image_id_${l}`, f = t.body, p = t.drawings;
  6505. f.dataStream += "\b", (m = f.customBlocks) == null || m.push({ startIndex: l, blockId: g }), p[g] = {
  6506. drawingId: g,
  6507. unitId: "",
  6508. subUnitId: "",
  6509. imageSourceType: d.imageSourceType,
  6510. title: "",
  6511. source: d.source,
  6512. description: "",
  6513. layoutType: oo.INLINE,
  6514. drawingType: Cs.DRAWING_IMAGE,
  6515. transform: {
  6516. width: h,
  6517. height: u,
  6518. angle: 0
  6519. },
  6520. docTransform: {
  6521. angle: 0,
  6522. size: { width: h, height: u },
  6523. positionH: { relativeFrom: $n.CHARACTER, posOffset: 0 },
  6524. positionV: { relativeFrom: ot.LINE, posOffset: 0 }
  6525. }
  6526. };
  6527. })), this._umdToHtml.convert([t]);
  6528. }
  6529. };
  6530. ns = wd([
  6531. Jt(0, Q),
  6532. Jt(1, fs),
  6533. Jt(2, y),
  6534. Jt(3, Mi),
  6535. Jt(4, z(G))
  6536. ], ns);
  6537. function Io(n) {
  6538. return n.getContextValue(hn) || n.getContextValue(wn);
  6539. }
  6540. const Ys = 999, Fn = {
  6541. id: Oc.id,
  6542. name: "doc.command.copy",
  6543. type: N.COMMAND,
  6544. multi: !0,
  6545. priority: Ys,
  6546. preconditions: Io,
  6547. handler: async (n) => n.get(Sn).copy()
  6548. }, qs = {
  6549. id: Tc.id,
  6550. name: "doc.command.cut",
  6551. type: N.COMMAND,
  6552. multi: !0,
  6553. priority: Ys,
  6554. preconditions: Io,
  6555. handler: async (n) => n.get(Sn).cut()
  6556. }, Ks = {
  6557. id: yc.id,
  6558. name: "doc.command.paste",
  6559. type: N.COMMAND,
  6560. multi: !0,
  6561. priority: Ys,
  6562. preconditions: Io,
  6563. handler: async (n) => {
  6564. const e = n.get(Sn), o = await n.get(Mi).read();
  6565. return o.length === 0 ? !1 : e.paste(o);
  6566. }
  6567. }, Co = {
  6568. id: "doc.command.switch-mode",
  6569. type: N.COMMAND,
  6570. // eslint-disable-next-line max-lines-per-function, complexity
  6571. handler: async (n) => {
  6572. var E, I, v, R, S;
  6573. const e = n.get(y), t = n.get(fe), o = n.get(G), r = n.get(Q).getCurrentUniverDocInstance();
  6574. if (r == null)
  6575. return !1;
  6576. const i = r.getUnitId(), a = (E = t.getRenderById(i)) == null ? void 0 : E.with(ie).getSkeleton(), c = (I = t.getRenderById(i)) == null ? void 0 : I.with(Se);
  6577. if (a == null || c == null)
  6578. return !1;
  6579. const A = c == null ? void 0 : c.getSegment(), l = c == null ? void 0 : c.getSegmentPage(), d = r.getSnapshot().documentStyle.documentFlavor, h = o.getDocRanges(), u = {
  6580. id: J.id,
  6581. params: {
  6582. unitId: i,
  6583. actions: [],
  6584. textRanges: d === ye.TRADITIONAL && A ? [] : h
  6585. }
  6586. }, g = k.getInstance(), f = [];
  6587. let p;
  6588. if (d === void 0 ? p = g.insertOp(["documentStyle", "documentFlavor"], ye.MODERN) : d === ye.MODERN ? p = g.replaceOp(["documentStyle", "documentFlavor"], d, ye.TRADITIONAL) : p = g.replaceOp(["documentStyle", "documentFlavor"], d, ye.MODERN), p)
  6589. f.push(p);
  6590. else
  6591. return !1;
  6592. if (d !== ye.MODERN) {
  6593. const C = r.getSnapshot(), { drawings: T = {}, body: O } = C, P = (v = O == null ? void 0 : O.customBlocks) != null ? v : [];
  6594. for (const b in T) {
  6595. const B = T[b], M = P.find((ae) => ae.blockId === b);
  6596. if (M == null)
  6597. continue;
  6598. const H = B.docTransform.positionV, { relativeFrom: F, posOffset: D } = H;
  6599. if (F === ot.PARAGRAPH)
  6600. continue;
  6601. const { startIndex: te } = M, q = a.findNodeByCharIndex(te, 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), ce = (S = Y == null ? void 0 : Y.parent) == null ? void 0 : S.parent;
  6602. if (q == null || V == null || oe == null || Y == null || ce == null)
  6603. continue;
  6604. let he = 0;
  6605. F === ot.LINE ? he -= V.top : F === ot.PAGE && (he += ce.marginTop), he += oe.top;
  6606. const Ae = {
  6607. ...H,
  6608. relativeFrom: ot.PARAGRAPH,
  6609. posOffset: (D != null ? D : 0) - he
  6610. }, ne = g.replaceOp(["drawings", b, "docTransform", "positionV"], H, Ae);
  6611. ne && f.push(ne);
  6612. }
  6613. }
  6614. return u.params.actions = f.reduce((C, T) => k.compose(C, T), null), !!e.syncExecuteCommand(u.id, u.params);
  6615. }
  6616. }, Xs = {
  6617. id: "doc.table.delete-rows",
  6618. type: N.COMMAND,
  6619. // eslint-disable-next-line max-lines-per-function
  6620. handler: async (n) => {
  6621. const e = n.get(G), t = n.get(Q), o = n.get(y), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  6622. if (i == null)
  6623. return !1;
  6624. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  6625. if (c == null || A == null)
  6626. return !1;
  6627. const l = ke(n, c.getUnitId());
  6628. if (l == null)
  6629. return !1;
  6630. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new me(), g = k.getInstance(), f = ha(i, d);
  6631. if (f == null)
  6632. return !1;
  6633. const { offset: p, rowIndexes: m, len: E, tableId: I, cursor: v, selectWholeTable: R } = f;
  6634. if (R)
  6635. return o.executeCommand(In.id);
  6636. const S = [], C = [{
  6637. startOffset: v,
  6638. endOffset: v,
  6639. collapsed: !0
  6640. }], T = {
  6641. id: J.id,
  6642. params: {
  6643. unitId: h,
  6644. actions: [],
  6645. textRanges: C
  6646. }
  6647. };
  6648. p > 0 && u.push({
  6649. t: W.RETAIN,
  6650. len: p
  6651. }), u.push({
  6652. t: W.DELETE,
  6653. len: E
  6654. });
  6655. const O = le(c, a);
  6656. S.push(g.editOp(u.serialize(), O));
  6657. for (const b of m.reverse()) {
  6658. const B = g.removeOp(["tableSource", I, "tableRows", b]);
  6659. S.push(B);
  6660. }
  6661. return T.params.actions = S.reduce((b, B) => k.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
  6662. }
  6663. }, Js = {
  6664. id: "doc.table.delete-columns",
  6665. type: N.COMMAND,
  6666. // eslint-disable-next-line max-lines-per-function
  6667. handler: async (n) => {
  6668. const e = n.get(G), t = n.get(Q), o = n.get(y), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  6669. if (i == null)
  6670. return !1;
  6671. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  6672. if (c == null || A == null)
  6673. return !1;
  6674. const l = ke(n, c.getUnitId());
  6675. if (l == null)
  6676. return !1;
  6677. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new me(), g = k.getInstance(), f = Ad(i, d);
  6678. if (f == null)
  6679. return !1;
  6680. const { offsets: p, columnIndexes: m, tableId: E, cursor: I, rowCount: v, selectWholeTable: R } = f;
  6681. if (R)
  6682. return o.executeCommand(In.id);
  6683. const S = [], C = [{
  6684. startOffset: I,
  6685. endOffset: I,
  6686. collapsed: !0
  6687. }], T = {
  6688. id: J.id,
  6689. params: {
  6690. unitId: h,
  6691. actions: [],
  6692. textRanges: C
  6693. }
  6694. };
  6695. for (const b of p) {
  6696. const { retain: B, delete: M } = b;
  6697. B > 0 && u.push({
  6698. t: W.RETAIN,
  6699. len: B
  6700. }), u.push({
  6701. t: W.DELETE,
  6702. len: M
  6703. });
  6704. }
  6705. const O = le(c, a);
  6706. S.push(g.editOp(u.serialize(), O)), m.reverse();
  6707. for (let b = 0; b < v; b++)
  6708. for (const B of m) {
  6709. const M = g.removeOp(["tableSource", E, "tableRows", b, "tableCells", B]);
  6710. S.push(M);
  6711. }
  6712. for (const b of m) {
  6713. const B = g.removeOp(["tableSource", E, "tableColumns", b]);
  6714. S.push(B);
  6715. }
  6716. return T.params.actions = S.reduce((b, B) => k.compose(b, B), null), !!o.syncExecuteCommand(T.id, T.params);
  6717. }
  6718. }, In = {
  6719. id: "doc.table.delete-table",
  6720. type: N.COMMAND,
  6721. // eslint-disable-next-line max-lines-per-function
  6722. handler: async (n) => {
  6723. const e = n.get(G), t = n.get(Q), o = n.get(y), s = e.getRectRanges(), r = e.getActiveTextRange(), i = En(r, s);
  6724. if (i == null)
  6725. return !1;
  6726. const { segmentId: a } = i, c = t.getCurrentUniverDocInstance(), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a).getBody();
  6727. if (c == null || A == null)
  6728. return !1;
  6729. const l = ke(n, c.getUnitId());
  6730. if (l == null)
  6731. return !1;
  6732. const d = l.getViewModel(), h = c == null ? void 0 : c.getUnitId(), u = new me(), g = k.getInstance(), f = ga(i, d);
  6733. if (f == null)
  6734. return !1;
  6735. const { offset: p, len: m, tableId: E, cursor: I } = f, v = [], R = [{
  6736. startOffset: I,
  6737. endOffset: I,
  6738. collapsed: !0
  6739. }], S = {
  6740. id: J.id,
  6741. params: {
  6742. unitId: h,
  6743. actions: [],
  6744. textRanges: R
  6745. }
  6746. };
  6747. p > 0 && u.push({
  6748. t: W.RETAIN,
  6749. len: p
  6750. }), u.push({
  6751. t: W.DELETE,
  6752. len: m
  6753. });
  6754. const C = le(c, a);
  6755. v.push(g.editOp(u.serialize(), C));
  6756. const T = g.removeOp(["tableSource", E]);
  6757. return v.push(T), S.params.actions = v.reduce((P, b) => k.compose(P, b), null), !!o.syncExecuteCommand(S.id, S.params);
  6758. }
  6759. }, Zs = "doc.command.table-insert-row", $s = "doc.command.table-insert-column", Nd = "doc.command.table-insert-row-above", Qd = "doc.command.table-insert-row-bellow", Ud = "doc.command.table-insert-column-left", Ld = "doc.command.table-insert-column-right", er = {
  6760. id: Nd,
  6761. type: N.COMMAND,
  6762. handler: async (n) => n.get(y).executeCommand(Zs, { position: Eo.ABOVE })
  6763. }, tr = {
  6764. id: Qd,
  6765. type: N.COMMAND,
  6766. handler: async (n) => n.get(y).executeCommand(Zs, { position: Eo.BELLOW })
  6767. }, nr = {
  6768. id: Ud,
  6769. type: N.COMMAND,
  6770. handler: async (n) => n.get(y).executeCommand($s, { position: Ls.LEFT })
  6771. }, or = {
  6772. id: Ld,
  6773. type: N.COMMAND,
  6774. handler: async (n) => n.get(y).executeCommand($s, { position: Ls.RIGHT })
  6775. }, Ia = {
  6776. id: Zs,
  6777. type: N.COMMAND,
  6778. // eslint-disable-next-line max-lines-per-function
  6779. handler: async (n, e) => {
  6780. const { position: t } = e, o = n.get(G), s = n.get(Q), r = n.get(y), i = o.getRectRanges(), a = o.getActiveTextRange(), c = En(a, i);
  6781. if (c == null)
  6782. return !1;
  6783. const { segmentId: A } = c, l = s.getCurrentUnitForType(_.UNIVER_DOC), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
  6784. if (l == null || d == null)
  6785. return !1;
  6786. const h = ke(n, l.getUnitId());
  6787. if (h == null)
  6788. return !1;
  6789. const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new me(), p = k.getInstance(), m = id(c, t, u);
  6790. if (m == null)
  6791. return !1;
  6792. const { offset: E, colCount: I, tableId: v, insertRowIndex: R } = m, S = [], C = E + 2, T = [{
  6793. startOffset: C,
  6794. endOffset: C,
  6795. collapsed: !0
  6796. }], O = {
  6797. id: J.id,
  6798. params: {
  6799. unitId: g,
  6800. actions: [],
  6801. textRanges: T
  6802. }
  6803. };
  6804. E > 0 && f.push({
  6805. t: W.RETAIN,
  6806. len: E
  6807. });
  6808. const P = sd(I);
  6809. f.push({
  6810. t: W.INSERT,
  6811. body: P,
  6812. len: P.dataStream.length
  6813. });
  6814. const b = le(l, A);
  6815. S.push(p.editOp(f.serialize(), b));
  6816. const B = Hs(I), M = p.insertOp(["tableSource", v, "tableRows", R], B);
  6817. return S.push(M), O.params.actions = S.reduce((F, D) => k.compose(F, D), null), !!r.syncExecuteCommand(O.id, O.params);
  6818. }
  6819. }, Fd = {
  6820. id: $s,
  6821. type: N.COMMAND,
  6822. // eslint-disable-next-line max-lines-per-function
  6823. handler: async (n, e) => {
  6824. var ce, he, Ae;
  6825. const { position: t } = e, o = n.get(G), s = n.get(Q), r = n.get(y), i = o.getRectRanges(), a = o.getActiveTextRange(), c = En(a, i);
  6826. if (c == null)
  6827. return !1;
  6828. const { segmentId: A } = c, l = s.getCurrentUniverDocInstance(), d = l == null ? void 0 : l.getSelfOrHeaderFooterModel(A).getBody();
  6829. if (l == null || d == null)
  6830. return !1;
  6831. const h = ke(n, l.getUnitId());
  6832. if (h == null)
  6833. return !1;
  6834. const u = h.getViewModel(), g = l == null ? void 0 : l.getUnitId(), f = new me(), p = k.getInstance(), m = ad(c, t, u);
  6835. if (m == null)
  6836. return !1;
  6837. const { offsets: E, columnIndex: I, tableId: v, rowCount: R } = m, S = [], C = E[0] + 1, T = [{
  6838. startOffset: C,
  6839. endOffset: C,
  6840. collapsed: !0
  6841. }], O = {
  6842. id: J.id,
  6843. params: {
  6844. unitId: g,
  6845. actions: [],
  6846. textRanges: T
  6847. }
  6848. };
  6849. for (const ne of E) {
  6850. f.push({
  6851. t: W.RETAIN,
  6852. len: ne
  6853. });
  6854. const ae = rd();
  6855. f.push({
  6856. t: W.INSERT,
  6857. body: ae,
  6858. len: ae.dataStream.length
  6859. });
  6860. }
  6861. const P = le(l, A);
  6862. S.push(p.editOp(f.serialize(), P));
  6863. for (let ne = 0; ne < R; ne++) {
  6864. const ae = Fs(), Te = p.insertOp(["tableSource", v, "tableRows", ne, "tableCells", I], ae);
  6865. S.push(Te);
  6866. }
  6867. const b = l.getSnapshot(), B = b.documentStyle, { marginLeft: M = 0, marginRight: H = 0 } = B, F = ((he = (ce = B.pageSize) == null ? void 0 : ce.width) != null ? he : 800) - M - H, D = (Ae = b == null ? void 0 : b.tableSource) == null ? void 0 : Ae[v].tableColumns, { newColWidth: te, widths: q } = cd(F, D, I);
  6868. for (let ne = 0; ne < q.length; ne++) {
  6869. const ae = p.replaceOp(["tableSource", v, "tableColumns", ne, "size", "width", "v"], D[ne].size.width.v, q[ne]);
  6870. S.push(ae);
  6871. }
  6872. const V = ks(te), Y = p.insertOp(["tableSource", v, "tableColumns", I], V);
  6873. return S.push(Y), O.params.actions = S.reduce((ne, ae) => k.compose(ne, ae), null), !!r.syncExecuteCommand(O.id, O.params);
  6874. }
  6875. }, Ca = "COMPONENT_DOC_CREATE_TABLE_CONFIRM";
  6876. function va(n, e) {
  6877. const t = [];
  6878. for (let o = 0, s = n.length; o < s; o++)
  6879. n[o] === U.PARAGRAPH && t.push({
  6880. startIndex: o
  6881. });
  6882. if (e)
  6883. for (const o of t)
  6884. e.bullet && (o.bullet = X.deepClone(e.bullet)), e.paragraphStyle && (o.paragraphStyle = X.deepClone(e.paragraphStyle));
  6885. return t;
  6886. }
  6887. const Ra = {
  6888. id: "doc.command.break-line",
  6889. type: N.COMMAND,
  6890. // eslint-disable-next-line max-lines-per-function
  6891. handler: async (n) => {
  6892. var S, C, T;
  6893. const e = n.get(G), t = n.get(Q), o = n.get(y), s = n.get(Je), r = e.getActiveTextRange(), i = e.getRectRanges();
  6894. if (r == null)
  6895. return !1;
  6896. if (i && i.length) {
  6897. const { startOffset: O } = r;
  6898. return e.replaceDocRanges([{
  6899. startOffset: O,
  6900. endOffset: O
  6901. }]), !0;
  6902. }
  6903. const { segmentId: a } = r, c = t.getCurrentUnitForType(_.UNIVER_DOC), A = c == null ? void 0 : c.getSelfOrHeaderFooterModel(a != null ? a : "").getBody();
  6904. if (c == null || A == null)
  6905. return !1;
  6906. const l = c.getUnitId(), { startOffset: d, endOffset: h } = r, g = ((S = A.paragraphs) != null ? S : []).find((O) => O.startIndex >= d);
  6907. if (!g)
  6908. return !1;
  6909. const f = g.startIndex, p = s.getDefaultStyle(), m = s.getStyleCache(), E = co((C = A.textRuns) != null ? C : [], h, p, m), I = {
  6910. dataStream: U.PARAGRAPH,
  6911. paragraphs: va(U.PARAGRAPH, g),
  6912. textRuns: [{
  6913. st: 0,
  6914. ed: 1,
  6915. ts: {
  6916. ...E.ts
  6917. }
  6918. }]
  6919. }, v = {
  6920. startOffset: d,
  6921. endOffset: h,
  6922. collapsed: d === h
  6923. }, R = await o.executeCommand(Vs.id, {
  6924. unitId: l,
  6925. body: I,
  6926. range: v,
  6927. segmentId: a
  6928. });
  6929. if (((T = g.bullet) == null ? void 0 : T.listType) === Oe.CHECK_LIST_CHECKED) {
  6930. const O = {
  6931. index: f + 1 - (h - d),
  6932. segmentId: a,
  6933. textRanges: [{
  6934. startOffset: d + 1,
  6935. endOffset: d + 1
  6936. }]
  6937. };
  6938. return !!await o.executeCommand(Ns.id, O) && R;
  6939. }
  6940. return R;
  6941. }
  6942. }, Hd = "doc.command.create-table", ba = {
  6943. id: Hd,
  6944. type: N.COMMAND,
  6945. // eslint-disable-next-line max-lines-per-function
  6946. handler: async (n, e) => {
  6947. var Ae, ne, ae, Te, je, ut;
  6948. const { rowCount: t, colCount: o } = e, s = n.get(G), r = n.get(Q), i = n.get(y), a = n.get(Je), c = s.getActiveTextRange();
  6949. if (c == null)
  6950. return !1;
  6951. const { segmentId: A, segmentPage: l } = c, d = r.getCurrentUniverDocInstance(), h = d == null ? void 0 : d.getSelfOrHeaderFooterModel(A).getBody();
  6952. if (d == null || h == null)
  6953. return !1;
  6954. const u = d.getUnitId(), g = ke(n, u), f = g == null ? void 0 : g.getSkeleton();
  6955. if (f == null)
  6956. return !1;
  6957. const { startOffset: p } = c, E = ((Ae = h.paragraphs) != null ? Ae : []).find((we) => we.startIndex >= p), I = f.findNodeByCharIndex(p, A, l);
  6958. if (I == null)
  6959. return !1;
  6960. const v = new me(), R = k.getInstance(), S = [], C = p + 4, T = [{
  6961. startOffset: C,
  6962. endOffset: C,
  6963. collapsed: !0
  6964. }], O = {
  6965. id: J.id,
  6966. params: {
  6967. unitId: u,
  6968. actions: [],
  6969. textRanges: T
  6970. }
  6971. };
  6972. p > 0 && v.push({
  6973. t: W.RETAIN,
  6974. len: p
  6975. }), v.push({
  6976. t: W.INSERT,
  6977. body: {
  6978. dataStream: U.PARAGRAPH,
  6979. paragraphs: va(U.PARAGRAPH, E)
  6980. },
  6981. len: 1
  6982. });
  6983. const P = a.getDefaultStyle(), b = a.getStyleCache(), B = co(
  6984. (ne = h.textRuns) != null ? ne : [],
  6985. p,
  6986. P,
  6987. b
  6988. ), { dataStream: M, paragraphs: H, sectionBreaks: F } = od(t, o), D = (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;
  6989. if (D == null)
  6990. return !1;
  6991. const { pageWidth: te, marginLeft: q, marginRight: V } = D, Y = ua(t, o, te - q - V);
  6992. v.push({
  6993. t: W.INSERT,
  6994. body: {
  6995. dataStream: M,
  6996. paragraphs: H,
  6997. sectionBreaks: F,
  6998. textRuns: [{
  6999. ...B,
  7000. st: 0,
  7001. ed: M.length
  7002. }],
  7003. tables: [
  7004. {
  7005. startIndex: 0,
  7006. endIndex: M.length,
  7007. tableId: Y.tableId
  7008. }
  7009. ]
  7010. },
  7011. len: M.length
  7012. });
  7013. const oe = le(d, A);
  7014. S.push(R.editOp(v.serialize(), oe));
  7015. const ce = R.insertOp(["tableSource", Y.tableId], Y);
  7016. return S.push(ce), O.params.actions = S.reduce((we, Yt) => k.compose(we, Yt), null), !!i.syncExecuteCommand(O.id, O.params);
  7017. }
  7018. }, Uo = "doc.component.create-table-confirm", sr = {
  7019. id: "doc.operation.create-table",
  7020. type: N.COMMAND,
  7021. handler: async (n) => {
  7022. const e = n.get(Ze), t = n.get(Bc), o = n.get(y), s = {
  7023. rowCount: 3,
  7024. colCount: 5
  7025. }, r = (i, a) => {
  7026. s.rowCount = i, s.colCount = a;
  7027. };
  7028. return await t.open({
  7029. id: Uo,
  7030. children: {
  7031. label: {
  7032. name: Ca,
  7033. props: {
  7034. handleRowColChange: r,
  7035. tableCreateParams: s
  7036. }
  7037. }
  7038. },
  7039. width: 400,
  7040. title: { title: e.t("toolbar.table.insert") },
  7041. onConfirm: () => {
  7042. o.executeCommand(ba.id, s), t.close(Uo);
  7043. },
  7044. onClose: () => {
  7045. t.close(Uo);
  7046. }
  7047. }), !0;
  7048. }
  7049. }, qe = {
  7050. id: "doc-paragraph-setting.command",
  7051. type: N.COMMAND,
  7052. handler: async (n, e) => {
  7053. var m, E;
  7054. const t = n.get(G), o = n.get(Q), s = n.get(y), r = o.getCurrentUnitForType(_.UNIVER_DOC), i = t.getDocRanges();
  7055. if (!r || i.length === 0 || !e)
  7056. return !1;
  7057. const a = i[0].segmentId, c = r.getUnitId(), A = (E = (m = r.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : m.paragraphs) != null ? E : [], l = mn(i, A), d = {
  7058. id: J.id,
  7059. params: {
  7060. unitId: c,
  7061. actions: [],
  7062. textRanges: i
  7063. }
  7064. }, h = new St();
  7065. h.reset();
  7066. const u = new me(), g = k.getInstance();
  7067. for (const I of l) {
  7068. const { startIndex: v } = I;
  7069. u.push({
  7070. t: W.RETAIN,
  7071. len: v - h.cursor
  7072. });
  7073. const R = {
  7074. ...I.paragraphStyle,
  7075. ...e.paragraph
  7076. };
  7077. u.push({
  7078. t: W.RETAIN,
  7079. len: 1,
  7080. body: {
  7081. dataStream: "",
  7082. paragraphs: [
  7083. {
  7084. ...I,
  7085. paragraphStyle: R,
  7086. startIndex: 0
  7087. }
  7088. ]
  7089. },
  7090. coverType: no.REPLACE
  7091. }), h.moveCursorTo(v + 1);
  7092. }
  7093. const f = le(r, a);
  7094. return d.params.actions = g.editOp(u.serialize(), f), !!s.syncExecuteCommand(d.id, d.params);
  7095. }
  7096. }, kd = () => {
  7097. const n = $(G), e = $(Lt), t = Fe(() => n.getDocRanges(), []);
  7098. return Re(() => {
  7099. t.length || e.closePanel();
  7100. }, [t]), t;
  7101. }, Vd = () => {
  7102. var i, a;
  7103. const e = $(Q).getCurrentUnitForType(_.UNIVER_DOC), t = kd();
  7104. if (!e || t.length === 0)
  7105. return [];
  7106. const o = t[0].segmentId, s = (a = (i = e.getSelfOrHeaderFooterModel(o).getBody()) == null ? void 0 : i.paragraphs) != null ? a : [];
  7107. return mn(t, s);
  7108. }, jd = (n, e) => {
  7109. const t = $(y), [o, s] = ve(() => {
  7110. var a, c;
  7111. const i = n[0];
  7112. return i ? String((c = (a = i.paragraphStyle) == null ? void 0 : a.horizontalAlign) != null ? c : e) : e;
  7113. });
  7114. return [o, (i) => (s(i), t.executeCommand(qe.id, {
  7115. paragraph: { horizontalAlign: Number(i) }
  7116. }))];
  7117. }, Wd = (n) => {
  7118. const e = $(y), [t, o] = ve(() => {
  7119. var i;
  7120. const r = n[0];
  7121. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.indentStart, 0) : 0;
  7122. });
  7123. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7124. paragraph: { indentStart: { v: r } }
  7125. }))];
  7126. }, zd = (n) => {
  7127. const e = $(y), [t, o] = ve(() => {
  7128. var i;
  7129. const r = n[0];
  7130. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.indentEnd, 0) : 0;
  7131. });
  7132. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7133. paragraph: { indentEnd: { v: r } }
  7134. }))];
  7135. }, Gd = (n) => {
  7136. const e = $(y), [t, o] = ve(() => {
  7137. var i;
  7138. const r = n[0];
  7139. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.indentFirstLine, 0) : 0;
  7140. });
  7141. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7142. paragraph: { indentFirstLine: { v: r } }
  7143. }))];
  7144. }, Yd = (n) => {
  7145. const e = $(y), [t, o] = ve(() => {
  7146. var i;
  7147. const r = n[0];
  7148. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.hanging, 0) : 0;
  7149. });
  7150. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7151. paragraph: { hanging: { v: r } }
  7152. }))];
  7153. }, qd = (n) => {
  7154. const e = $(y), [t, o] = ve(() => {
  7155. var i;
  7156. const r = n[0];
  7157. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.spaceAbove, 0) : 0;
  7158. });
  7159. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7160. paragraph: { spaceAbove: { v: r } }
  7161. }))];
  7162. }, Kd = (n) => {
  7163. const e = $(y), [t, o] = ve(() => {
  7164. var i;
  7165. const r = n[0];
  7166. return r ? ze((i = r.paragraphStyle) == null ? void 0 : i.spaceBelow, 0) : 0;
  7167. });
  7168. return [t, (r) => (o(r), e.executeCommand(qe.id, {
  7169. paragraph: { spaceBelow: { v: r } }
  7170. }))];
  7171. }, Xd = (n) => {
  7172. const e = $(y), t = $(fe), o = $(Q), s = Fe(() => {
  7173. var g;
  7174. const u = o.getCurrentUnitForType(_.UNIVER_DOC);
  7175. if (u)
  7176. return (g = t.getRenderById(u == null ? void 0 : u.getUnitId())) == null ? void 0 : g.with(ie).getSkeleton();
  7177. }, []), r = Fe(() => new Le({}), []), [i, a] = ve(() => {
  7178. var g, f;
  7179. const u = n[0];
  7180. return u && (f = (g = u.paragraphStyle) == null ? void 0 : g.lineSpacing) != null ? f : 1;
  7181. }), c = cn(i), [A, l] = ve(() => {
  7182. var g, f;
  7183. const u = n[0];
  7184. return u ? (f = (g = u.paragraphStyle) == null ? void 0 : g.spacingRule) != null ? f : Bt.AUTO : Bt.AUTO;
  7185. }), d = async (u) => {
  7186. a(u), r.next({ lineSpacing: u, spacingRule: A });
  7187. }, h = async (u) => {
  7188. if (u !== A) {
  7189. let g = c.current;
  7190. if (u === Bt.AT_LEAST) {
  7191. const f = s == null ? void 0 : s.findNodeByCharIndex(n[0].startIndex), p = f == null ? void 0 : f.parent, m = p == null ? void 0 : p.parent;
  7192. (m == null ? void 0 : m.contentHeight) !== void 0 && (g = Math.max(m.contentHeight, g));
  7193. } else
  7194. g > 5 && (g = 2);
  7195. c.current = i, d(g), l(u), r.next({ spacingRule: u });
  7196. }
  7197. };
  7198. return Re(() => {
  7199. const u = r.pipe(
  7200. zo((g) => !!Object.keys(g).length),
  7201. Gc(16),
  7202. zo((g) => !!g.length),
  7203. Yc((g) => g.reduce((f, p) => (Object.keys(p).forEach((m) => {
  7204. f[m] = p[m];
  7205. }), f), {}))
  7206. ).subscribe((g) => e.executeCommand(qe.id, {
  7207. paragraph: { ...g }
  7208. }));
  7209. return () => u.unsubscribe();
  7210. }, []), {
  7211. lineSpacing: [i, d],
  7212. spacingRule: [A, h]
  7213. };
  7214. }, Jd = "univer-paragraph-setting-icon-list", Zd = "univer-paragraph-setting-icon-list-item", $d = "univer-paragraph-setting-icon-list-active", eu = "univer-paragraph-setting-title", tu = "univer-paragraph-setting-label", nu = "univer-paragraph-setting-mt-base", ou = "univer-paragraph-setting-flex-col", su = "univer-paragraph-setting-space-line", re = {
  7215. paragraphSettingIconList: Jd,
  7216. paragraphSettingIconListItem: Zd,
  7217. paragraphSettingIconListActive: $d,
  7218. paragraphSettingTitle: eu,
  7219. paragraphSettingLabel: tu,
  7220. paragraphSettingMtBase: nu,
  7221. paragraphSettingFlexCol: ou,
  7222. paragraphSettingSpaceLine: su
  7223. }, ht = (n) => {
  7224. const { value: e, onChange: t, className: o = "", min: s = 0, max: r = 100, step: i = 1 } = n, a = Hc.useRef(null);
  7225. return /* @__PURE__ */ w.jsx(
  7226. An,
  7227. {
  7228. step: i,
  7229. ref: a,
  7230. min: s,
  7231. max: r,
  7232. value: e,
  7233. onChange: (c) => {
  7234. t(c != null ? c : 0).finally(() => {
  7235. setTimeout(() => {
  7236. var A;
  7237. (A = a.current) == null || A.focus();
  7238. }, 30);
  7239. });
  7240. },
  7241. className: o
  7242. }
  7243. );
  7244. };
  7245. function ru() {
  7246. const n = $(Ze), e = Fe(
  7247. () => [
  7248. { label: n.t("toolbar.alignLeft"), value: String(_e.LEFT), icon: /* @__PURE__ */ w.jsx(Ji, {}) },
  7249. { label: n.t("toolbar.alignCenter"), value: String(_e.CENTER), icon: /* @__PURE__ */ w.jsx(Xi, {}) },
  7250. { label: n.t("toolbar.alignRight"), value: String(_e.RIGHT), icon: /* @__PURE__ */ w.jsx(Zi, {}) },
  7251. { label: n.t("toolbar.alignJustify"), value: String(_e.JUSTIFIED), icon: /* @__PURE__ */ w.jsx(Ki, {}) }
  7252. ],
  7253. []
  7254. ), t = Vd(), [o, s] = jd(t, e[0].value), [r, i] = Wd(t), [a, c] = zd(t), [A, l] = Gd(t), [d, h] = Yd(t), [u, g] = qd(t), [f, p] = Kd(t), { lineSpacing: [m, E], spacingRule: [I, v] } = Xd(t), R = Fe(() => I === Bt.AUTO ? { min: 1, max: 5, step: m < 2 ? 0.5 : 1 } : { min: 1, max: 100 }, [I, m]);
  7255. return /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSetting, children: [
  7256. /* @__PURE__ */ w.jsx("div", { className: re.paragraphSettingTitle, children: n.t("doc.paragraphSetting.alignment") }),
  7257. /* @__PURE__ */ w.jsx(
  7258. "div",
  7259. {
  7260. className: `
  7261. ${re.paragraphSettingIconList}
  7262. ${re.paragraphSettingMtBase}
  7263. `,
  7264. children: e.map((S) => /* @__PURE__ */ w.jsx(Xc, { title: S.label, placement: "bottom", children: /* @__PURE__ */ w.jsx(
  7265. "span",
  7266. {
  7267. className: Un(
  7268. re.paragraphSettingIconListItem,
  7269. { [re.paragraphSettingIconListActive]: o === S.value }
  7270. ),
  7271. onClick: () => s(S.value),
  7272. children: S.icon
  7273. }
  7274. ) }, S.value))
  7275. }
  7276. ),
  7277. /* @__PURE__ */ w.jsx("div", { className: re.paragraphSettingTitle, children: n.t("doc.paragraphSetting.indentation") }),
  7278. /* @__PURE__ */ w.jsxs("div", { children: [
  7279. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7280. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7281. n.t("doc.paragraphSetting.left"),
  7282. "(px)"
  7283. ] }),
  7284. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: r, onChange: (S) => i(S != null ? S : 0) })
  7285. ] }),
  7286. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7287. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7288. n.t("doc.paragraphSetting.right"),
  7289. "(px)"
  7290. ] }),
  7291. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: a, onChange: (S) => c(S != null ? S : 0) })
  7292. ] }),
  7293. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7294. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7295. n.t("doc.paragraphSetting.firstLine"),
  7296. "(px)"
  7297. ] }),
  7298. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: A, onChange: (S) => l(S != null ? S : 0) })
  7299. ] }),
  7300. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7301. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7302. n.t("doc.paragraphSetting.hanging"),
  7303. "(px)"
  7304. ] }),
  7305. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: d, onChange: (S) => h(S != null ? S : 0) })
  7306. ] })
  7307. ] }),
  7308. /* @__PURE__ */ w.jsx("div", { className: re.paragraphSettingTitle, children: n.t("doc.paragraphSetting.spacing") }),
  7309. /* @__PURE__ */ w.jsxs("div", { children: [
  7310. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7311. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7312. n.t("doc.paragraphSetting.before"),
  7313. "(px)"
  7314. ] }),
  7315. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: u, onChange: (S) => g(S != null ? S : 0) })
  7316. ] }),
  7317. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7318. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingLabel, children: [
  7319. n.t("doc.paragraphSetting.after"),
  7320. "(px)"
  7321. ] }),
  7322. /* @__PURE__ */ w.jsx(ht, { className: re.paragraphSettingMtBase, value: f, onChange: (S) => p(S != null ? S : 0) })
  7323. ] }),
  7324. /* @__PURE__ */ w.jsxs("div", { className: re.paragraphSettingFlexCol, children: [
  7325. /* @__PURE__ */ w.jsx("div", { className: re.paragraphSettingLabel, children: n.t("doc.paragraphSetting.lineSpace") }),
  7326. /* @__PURE__ */ w.jsxs(
  7327. "div",
  7328. {
  7329. className: `
  7330. ${re.paragraphSettingMtBase}
  7331. ${re.paragraphSettingSpaceLine}
  7332. `,
  7333. style: { width: 162 },
  7334. children: [
  7335. /* @__PURE__ */ w.jsx(
  7336. Jc,
  7337. {
  7338. value: `${I}`,
  7339. options: [
  7340. { label: n.t("doc.paragraphSetting.multiSpace"), value: `${Bt.AUTO}` },
  7341. { label: n.t("doc.paragraphSetting.fixedValue"), value: `${Bt.AT_LEAST}` }
  7342. ],
  7343. onChange: (S) => v(Number(S))
  7344. }
  7345. ),
  7346. /* @__PURE__ */ w.jsx(
  7347. ht,
  7348. {
  7349. ...R,
  7350. value: m,
  7351. onChange: (S) => E(S != null ? S : 0)
  7352. }
  7353. )
  7354. ]
  7355. }
  7356. )
  7357. ] })
  7358. ] })
  7359. ] });
  7360. }
  7361. const iu = (n, e) => e.length === n.length && n.some((t) => e.some((o) => o.startOffset === t.startOffset && o.endOffset === t.endOffset));
  7362. function au() {
  7363. const n = $(y), e = $(Ze), t = Nn(e.currentLocale$), [o, s] = ve(""), r = Fe(() => fi(() => s(pt(4)), 300), []), i = cn([]);
  7364. return Re(() => {
  7365. const a = n.onCommandExecuted((c) => {
  7366. if (De.id === c.id) {
  7367. const A = c.params.ranges;
  7368. iu(A, i.current) || s(pt(4)), i.current = A;
  7369. }
  7370. J.id === c.id && c.params.trigger !== qe.id && r();
  7371. });
  7372. return () => a.dispose();
  7373. }, [r]), Re(() => {
  7374. s(pt(4));
  7375. }, [t]), Re(() => () => r.cancel(), [r]), /* @__PURE__ */ w.jsx(ru, {}, o);
  7376. }
  7377. var cu = Object.defineProperty, Au = Object.getOwnPropertyDescriptor, lu = (n, e, t, o) => {
  7378. for (var s = o > 1 ? void 0 : o ? Au(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  7379. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  7380. return o && s && cu(e, t, s), s;
  7381. }, Lo = (n, e) => (t, o) => e(t, o, n);
  7382. const ei = "doc_ui_paragraph-setting-panel";
  7383. let Lt = class extends ue {
  7384. constructor(e, t, o) {
  7385. super();
  7386. x(this, "_id");
  7387. this._commandService = e, this._componentManager = t, this._sidebarService = o, this._init();
  7388. }
  7389. _init() {
  7390. this.disposeWithMe(this._componentManager.register(ei, au));
  7391. }
  7392. openPanel() {
  7393. const e = {
  7394. header: { title: "doc.slider.paragraphSetting" },
  7395. id: this._id,
  7396. children: {
  7397. label: ei
  7398. },
  7399. width: 300
  7400. };
  7401. this._sidebarService.open(e);
  7402. }
  7403. closePanel() {
  7404. this._sidebarService.close(this._id);
  7405. }
  7406. };
  7407. Lt = lu([
  7408. Lo(0, y),
  7409. Lo(1, z(io)),
  7410. Lo(2, z(Bi))
  7411. ], Lt);
  7412. const rr = {
  7413. id: "sidebar.operation.doc-paragraph-setting-panel",
  7414. type: N.OPERATION,
  7415. handler: (n) => (n.get(Lt).openPanel(), !0)
  7416. }, ir = (n) => {
  7417. const e = n.get(G);
  7418. return new pe((t) => {
  7419. const o = e.textSelection$.subscribe(() => {
  7420. e.getDocRanges().some((i) => i.collapsed === !1 || i.rangeType === Ge.RECT) ? t.next(!1) : t.next(!0);
  7421. });
  7422. return () => o.unsubscribe();
  7423. });
  7424. };
  7425. function du(n) {
  7426. if (n.length < 2)
  7427. return !0;
  7428. const e = n.map((t) => t.tableId);
  7429. return e.every((t) => t === e[0]);
  7430. }
  7431. function ti(n, e, t) {
  7432. var r;
  7433. const o = e.getRectRanges(), s = e.getActiveTextRange();
  7434. if (o && o.length && du(o) && s == null) {
  7435. n.next(!1);
  7436. return;
  7437. }
  7438. if (s && (o == null || o.length === 0)) {
  7439. 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;
  7440. if (l && l.length && l.some((d) => {
  7441. const { startIndex: h, endIndex: u } = d;
  7442. return a > h && a < u || c > h && c < u;
  7443. })) {
  7444. n.next(!1);
  7445. return;
  7446. }
  7447. }
  7448. n.next(!0);
  7449. }
  7450. const tt = (n) => {
  7451. const e = n.get(G), t = n.get(Q);
  7452. return new pe((o) => {
  7453. const s = e.textSelection$.subscribe(() => {
  7454. ti(o, e, t);
  7455. });
  7456. return ti(o, e, t), () => s.unsubscribe();
  7457. });
  7458. }, uu = (n) => ({
  7459. id: Fn.name,
  7460. commandId: Fn.id,
  7461. type: Z.BUTTON,
  7462. icon: "Copy",
  7463. title: "rightClick.copy",
  7464. disabled$: ir(n),
  7465. hidden$: ee(n, _.UNIVER_DOC)
  7466. }), hu = (n) => ({
  7467. id: rr.id,
  7468. type: Z.BUTTON,
  7469. icon: "MenuSingle24",
  7470. title: "doc.menu.paragraphSetting",
  7471. hidden$: ee(n, _.UNIVER_DOC)
  7472. }), gu = (n) => ({
  7473. id: qs.id,
  7474. type: Z.BUTTON,
  7475. icon: "Copy",
  7476. title: "rightClick.cut",
  7477. disabled$: ir(n),
  7478. hidden$: ee(n, _.UNIVER_DOC)
  7479. }), fu = (n) => ({
  7480. id: Ks.id,
  7481. type: Z.BUTTON,
  7482. icon: "PasteSpecial",
  7483. title: "rightClick.paste",
  7484. hidden$: ee(n, _.UNIVER_DOC)
  7485. }), pu = (n) => ({
  7486. id: So.id,
  7487. type: Z.BUTTON,
  7488. icon: "PasteSpecial",
  7489. title: "rightClick.delete",
  7490. disabled$: ir(n),
  7491. hidden$: ee(n, _.UNIVER_DOC)
  7492. }), xa = "doc.menu.table-insert";
  7493. function mu(n) {
  7494. return {
  7495. id: xa,
  7496. type: Z.SUBITEMS,
  7497. title: "table.insert",
  7498. icon: "Insert",
  7499. hidden$: ao(ee(n, _.UNIVER_DOC), tt(n), (e, t) => e || t)
  7500. };
  7501. }
  7502. function Eu(n) {
  7503. return {
  7504. id: er.id,
  7505. type: Z.BUTTON,
  7506. title: "table.insertRowAbove",
  7507. icon: "InsertRowAbove",
  7508. disabled$: tt(n),
  7509. hidden$: ee(n, _.UNIVER_DOC)
  7510. };
  7511. }
  7512. function Su(n) {
  7513. return {
  7514. id: tr.id,
  7515. type: Z.BUTTON,
  7516. title: "table.insertRowBelow",
  7517. icon: "InsertRowBelow",
  7518. disabled$: tt(n),
  7519. hidden$: ee(n, _.UNIVER_DOC)
  7520. };
  7521. }
  7522. function Iu(n) {
  7523. return {
  7524. id: nr.id,
  7525. type: Z.BUTTON,
  7526. title: "table.insertColumnLeft",
  7527. icon: "LeftInsertColumn",
  7528. disabled$: tt(n),
  7529. hidden$: ee(n, _.UNIVER_DOC)
  7530. };
  7531. }
  7532. function Cu(n) {
  7533. return {
  7534. id: or.id,
  7535. type: Z.BUTTON,
  7536. title: "table.insertColumnRight",
  7537. icon: "RightInsertColumn",
  7538. disabled$: tt(n),
  7539. hidden$: ee(n, _.UNIVER_DOC)
  7540. };
  7541. }
  7542. const Oa = "doc.menu.table-delete";
  7543. function vu(n) {
  7544. return {
  7545. id: Oa,
  7546. type: Z.SUBITEMS,
  7547. title: "table.delete",
  7548. icon: "Reduce",
  7549. hidden$: ao(ee(n, _.UNIVER_DOC), tt(n), (e, t) => e || t)
  7550. };
  7551. }
  7552. function Ru(n) {
  7553. return {
  7554. id: Xs.id,
  7555. type: Z.BUTTON,
  7556. title: "table.deleteRows",
  7557. icon: "DeleteRow",
  7558. disabled$: tt(n),
  7559. hidden$: ee(n, _.UNIVER_DOC)
  7560. };
  7561. }
  7562. function bu(n) {
  7563. return {
  7564. id: Js.id,
  7565. type: Z.BUTTON,
  7566. title: "table.deleteColumns",
  7567. icon: "DeleteColumn",
  7568. disabled$: tt(n),
  7569. hidden$: ee(n, _.UNIVER_DOC)
  7570. };
  7571. }
  7572. function xu(n) {
  7573. return {
  7574. id: In.id,
  7575. type: Z.BUTTON,
  7576. title: "table.deleteTable",
  7577. icon: "GridSingle",
  7578. disabled$: tt(n),
  7579. hidden$: ee(n, _.UNIVER_DOC)
  7580. };
  7581. }
  7582. function Ou(n) {
  7583. const e = n.get(Q), t = n.get(fe);
  7584. return new pe((o) => {
  7585. const s = e.focused$.subscribe((a) => {
  7586. if (a == null || e.getUnitType(a) !== _.UNIVER_DOC)
  7587. return o.next(!0);
  7588. const A = t.getRenderById(a);
  7589. if (A == null)
  7590. return o.next(!0);
  7591. A.with(ie).getViewModel().editAreaChange$.subscribe((d) => {
  7592. o.next(d === ge.HEADER || d === ge.FOOTER);
  7593. });
  7594. }), r = t.getCurrentTypeOfRenderer(_.UNIVER_DOC);
  7595. if (r == null)
  7596. return o.next(!0);
  7597. const i = r.with(ie).getViewModel();
  7598. return o.next(i.getEditArea() !== ge.BODY), () => s.unsubscribe();
  7599. });
  7600. }
  7601. function Tu(n) {
  7602. const e = n.get(Q), t = n.get(y);
  7603. return new pe((o) => {
  7604. const s = t.onCommandExecuted((c) => {
  7605. if (c.id === J.id) {
  7606. const { unitId: A } = c.params, l = e.getUnit(A);
  7607. if (l == null) {
  7608. o.next(!0);
  7609. return;
  7610. }
  7611. const { documentStyle: d } = l.getSnapshot();
  7612. o.next((d == null ? void 0 : d.documentFlavor) !== ye.TRADITIONAL);
  7613. }
  7614. }), r = e.focused$.subscribe((c) => {
  7615. if (c == null)
  7616. return o.next(!0);
  7617. const A = e.getUniverDocInstance(c), l = A == null ? void 0 : A.getSnapshot().documentStyle.documentFlavor;
  7618. o.next(l !== ye.TRADITIONAL);
  7619. }), i = e.getCurrentUniverDocInstance();
  7620. if (i == null)
  7621. return o.next(!0);
  7622. const a = i == null ? void 0 : i.getSnapshot().documentStyle.documentFlavor;
  7623. return o.next(a !== ye.TRADITIONAL), () => {
  7624. s.dispose(), r.unsubscribe();
  7625. };
  7626. });
  7627. }
  7628. function yu(n) {
  7629. const e = n.get(G), t = n.get(Q);
  7630. return new pe((o) => {
  7631. const s = e.textSelection$.subscribe((r) => {
  7632. if (r == null) {
  7633. o.next(!0);
  7634. return;
  7635. }
  7636. const { textRanges: i } = r;
  7637. if (i.length !== 1) {
  7638. o.next(!0);
  7639. return;
  7640. }
  7641. const a = i[0], { collapsed: c, startNodePosition: A, startOffset: l } = a;
  7642. if (!c || l == null) {
  7643. o.next(!0);
  7644. return;
  7645. }
  7646. const d = t.getCurrentUniverDocInstance();
  7647. if (d == null) {
  7648. o.next(!0);
  7649. return;
  7650. }
  7651. const h = ke(n, d.getUnitId());
  7652. if (h == null) {
  7653. o.next(!0);
  7654. return;
  7655. }
  7656. if (h.getViewModel().getCustomRangeRaw(l)) {
  7657. o.next(!0);
  7658. return;
  7659. }
  7660. if (A != null) {
  7661. const { path: f } = A;
  7662. if (f.indexOf("cells") !== -1) {
  7663. o.next(!0);
  7664. return;
  7665. }
  7666. }
  7667. o.next(!1);
  7668. });
  7669. return () => s.unsubscribe();
  7670. });
  7671. }
  7672. function be(n) {
  7673. const e = n.get(G);
  7674. return new pe((t) => {
  7675. const o = e.textSelection$.subscribe((s) => {
  7676. if (s == null) {
  7677. t.next(!0);
  7678. return;
  7679. }
  7680. const { textRanges: r, rectRanges: i } = s;
  7681. if (r.length === 0 && i.length === 0) {
  7682. t.next(!0);
  7683. return;
  7684. }
  7685. t.next(!1);
  7686. });
  7687. return () => o.unsubscribe();
  7688. });
  7689. }
  7690. function Bu(n) {
  7691. const e = n.get(y);
  7692. return {
  7693. id: Vt.id,
  7694. type: Z.BUTTON,
  7695. icon: "BoldSingle",
  7696. title: "Set bold",
  7697. tooltip: "toolbar.bold",
  7698. activated$: new pe((t) => {
  7699. const o = e.onCommandExecuted((s) => {
  7700. var i;
  7701. const r = s.id;
  7702. if (r === De.id || r === lt.id) {
  7703. const a = dt(n);
  7704. if (a == null) {
  7705. t.next(!1);
  7706. return;
  7707. }
  7708. const c = (i = a.ts) == null ? void 0 : i.bl;
  7709. t.next(c === L.TRUE);
  7710. }
  7711. });
  7712. return t.next(!1), o.dispose;
  7713. }),
  7714. disabled$: be(n),
  7715. hidden$: ee(n, _.UNIVER_DOC)
  7716. };
  7717. }
  7718. function Mu(n) {
  7719. const e = n.get(y);
  7720. return {
  7721. id: jt.id,
  7722. type: Z.BUTTON,
  7723. icon: "ItalicSingle",
  7724. title: "Set italic",
  7725. tooltip: "toolbar.italic",
  7726. activated$: new pe((t) => {
  7727. const o = e.onCommandExecuted((s) => {
  7728. var i;
  7729. const r = s.id;
  7730. if (r === De.id || r === lt.id) {
  7731. const a = dt(n);
  7732. if (a == null) {
  7733. t.next(!1);
  7734. return;
  7735. }
  7736. const c = (i = a.ts) == null ? void 0 : i.it;
  7737. t.next(c === L.TRUE);
  7738. }
  7739. });
  7740. return t.next(!1), o.dispose;
  7741. }),
  7742. disabled$: be(n),
  7743. hidden$: ee(n, _.UNIVER_DOC)
  7744. };
  7745. }
  7746. function _u(n) {
  7747. const e = n.get(y);
  7748. return {
  7749. id: Wt.id,
  7750. type: Z.BUTTON,
  7751. icon: "UnderlineSingle",
  7752. title: "Set underline",
  7753. tooltip: "toolbar.underline",
  7754. activated$: new pe((t) => {
  7755. const o = e.onCommandExecuted((s) => {
  7756. var i;
  7757. const r = s.id;
  7758. if (r === De.id || r === lt.id) {
  7759. const a = dt(n);
  7760. if (a == null) {
  7761. t.next(!1);
  7762. return;
  7763. }
  7764. const c = (i = a.ts) == null ? void 0 : i.ul;
  7765. t.next((c == null ? void 0 : c.s) === L.TRUE);
  7766. }
  7767. });
  7768. return t.next(!1), o.dispose;
  7769. }),
  7770. disabled$: be(n),
  7771. hidden$: ee(n, _.UNIVER_DOC)
  7772. };
  7773. }
  7774. function Pu(n) {
  7775. const e = n.get(y);
  7776. return {
  7777. id: zt.id,
  7778. type: Z.BUTTON,
  7779. icon: "StrikethroughSingle",
  7780. title: "Set strike through",
  7781. tooltip: "toolbar.strikethrough",
  7782. activated$: new pe((t) => {
  7783. const o = e.onCommandExecuted((s) => {
  7784. var i;
  7785. const r = s.id;
  7786. if (r === De.id || r === lt.id) {
  7787. const a = dt(n);
  7788. if (a == null) {
  7789. t.next(!1);
  7790. return;
  7791. }
  7792. const c = (i = a.ts) == null ? void 0 : i.st;
  7793. t.next((c == null ? void 0 : c.s) === L.TRUE);
  7794. }
  7795. });
  7796. return t.next(!1), o.dispose;
  7797. }),
  7798. disabled$: be(n),
  7799. hidden$: ee(n, _.UNIVER_DOC)
  7800. };
  7801. }
  7802. function Du(n) {
  7803. const e = n.get(y);
  7804. return {
  7805. id: Ct.id,
  7806. type: Z.BUTTON,
  7807. icon: "SubscriptSingle",
  7808. tooltip: "toolbar.subscript",
  7809. activated$: new pe((t) => {
  7810. const o = e.onCommandExecuted((s) => {
  7811. var i;
  7812. const r = s.id;
  7813. if (r === De.id || r === lt.id) {
  7814. const a = dt(n);
  7815. if (a == null) {
  7816. t.next(!1);
  7817. return;
  7818. }
  7819. const c = (i = a.ts) == null ? void 0 : i.va;
  7820. t.next(c === Ne.SUBSCRIPT);
  7821. }
  7822. });
  7823. return t.next(!1), o.dispose;
  7824. }),
  7825. disabled$: be(n),
  7826. hidden$: ee(n, _.UNIVER_DOC)
  7827. };
  7828. }
  7829. function wu(n) {
  7830. const e = n.get(y);
  7831. return {
  7832. id: Gt.id,
  7833. type: Z.BUTTON,
  7834. icon: "SuperscriptSingle",
  7835. tooltip: "toolbar.superscript",
  7836. activated$: new pe((t) => {
  7837. const o = e.onCommandExecuted((s) => {
  7838. var i;
  7839. const r = s.id;
  7840. if (r === De.id || r === lt.id) {
  7841. const a = dt(n);
  7842. if (a == null) {
  7843. t.next(!1);
  7844. return;
  7845. }
  7846. const c = (i = a.ts) == null ? void 0 : i.va;
  7847. t.next(c === Ne.SUPERSCRIPT);
  7848. }
  7849. });
  7850. return t.next(!1), o.dispose;
  7851. }),
  7852. disabled$: be(n),
  7853. hidden$: ee(n, _.UNIVER_DOC)
  7854. };
  7855. }
  7856. function Nu(n) {
  7857. const e = n.get(y);
  7858. return {
  7859. id: Dt.id,
  7860. tooltip: "toolbar.font",
  7861. type: Z.SELECTOR,
  7862. label: oa,
  7863. selections: Mc.map((t) => ({
  7864. label: {
  7865. name: sa,
  7866. hoverable: !0
  7867. },
  7868. value: t.value
  7869. })),
  7870. // disabled$: getCurrentSheetDisabled$(accessor),
  7871. value$: new pe((t) => {
  7872. const o = Ci.ff, s = e.onCommandExecuted((r) => {
  7873. var a;
  7874. const i = r.id;
  7875. if (i === De.id || i === Dt.id) {
  7876. const c = dt(n);
  7877. if (c == null) {
  7878. t.next(o);
  7879. return;
  7880. }
  7881. const A = (a = c.ts) == null ? void 0 : a.ff;
  7882. t.next(A != null ? A : o);
  7883. }
  7884. });
  7885. return t.next(o), s.dispose;
  7886. }),
  7887. disabled$: be(n),
  7888. hidden$: ee(n, _.UNIVER_DOC)
  7889. };
  7890. }
  7891. function Qu(n) {
  7892. const e = n.get(y);
  7893. return {
  7894. id: Pt.id,
  7895. type: Z.SELECTOR,
  7896. tooltip: "toolbar.fontSize",
  7897. label: {
  7898. name: ra,
  7899. props: {
  7900. min: 1,
  7901. max: 400
  7902. // disabled$,
  7903. }
  7904. },
  7905. selections: _c,
  7906. // disabled$,
  7907. value$: new pe((t) => {
  7908. const o = Ci.fs, s = e.onCommandExecuted((r) => {
  7909. var a;
  7910. const i = r.id;
  7911. if (i === De.id || i === Pt.id) {
  7912. const c = dt(n);
  7913. if (c == null) {
  7914. t.next(o);
  7915. return;
  7916. }
  7917. const A = (a = c.ts) == null ? void 0 : a.fs;
  7918. t.next(A != null ? A : o);
  7919. }
  7920. });
  7921. return t.next(o), s.dispose;
  7922. }),
  7923. disabled$: be(n),
  7924. hidden$: ee(n, _.UNIVER_DOC)
  7925. };
  7926. }
  7927. function Uu(n) {
  7928. const e = n.get(y), t = n.get(vi);
  7929. return {
  7930. id: wt.id,
  7931. icon: "FontColor",
  7932. tooltip: "toolbar.textColor.main",
  7933. type: Z.BUTTON_SELECTOR,
  7934. selections: [
  7935. {
  7936. label: {
  7937. name: Ds,
  7938. hoverable: !1
  7939. }
  7940. }
  7941. ],
  7942. value$: new pe((o) => {
  7943. const s = t.getCurrentTheme().textColor, r = e.onCommandExecuted((i) => {
  7944. if (i.id === wt.id) {
  7945. const a = i.params.value;
  7946. o.next(a != null ? a : s);
  7947. }
  7948. });
  7949. return o.next(s), r.dispose;
  7950. }),
  7951. disabled$: be(n),
  7952. hidden$: ee(n, _.UNIVER_DOC)
  7953. // disabled$: getCurrentSheetDisabled$(accessor),
  7954. };
  7955. }
  7956. function Lu(n) {
  7957. return {
  7958. id: _s.id,
  7959. type: Z.BUTTON,
  7960. icon: "HeaderFooterSingle",
  7961. tooltip: "toolbar.headerFooter",
  7962. hidden$: ao(ee(n, _.UNIVER_DOC, void 0, $e), Tu(n), (e, t) => e || t)
  7963. };
  7964. }
  7965. const Fu = "GridSingle", Ta = "doc.menu.table";
  7966. function Hu(n) {
  7967. return {
  7968. id: Ta,
  7969. type: Z.SUBITEMS,
  7970. icon: Fu,
  7971. tooltip: "toolbar.table.main",
  7972. disabled$: yu(n),
  7973. // Do not show header footer menu and insert table at zen mode.
  7974. hidden$: ao(ee(n, _.UNIVER_DOC, void 0, $e), Ou(n), (e, t) => e || t)
  7975. };
  7976. }
  7977. function ku(n) {
  7978. return {
  7979. id: sr.id,
  7980. title: "toolbar.table.insert",
  7981. type: Z.BUTTON,
  7982. hidden$: ee(n, _.UNIVER_DOC)
  7983. };
  7984. }
  7985. function Vu(n) {
  7986. const e = n.get(y);
  7987. return {
  7988. id: go.id,
  7989. type: Z.BUTTON,
  7990. icon: "LeftJustifyingSingle",
  7991. tooltip: "toolbar.alignLeft",
  7992. disabled$: be(n),
  7993. activated$: new pe((t) => {
  7994. const o = e.onCommandExecuted((s) => {
  7995. var i;
  7996. const r = s.id;
  7997. if (r === De.id || r === et.id) {
  7998. const a = vo(n);
  7999. if (a == null)
  8000. return;
  8001. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8002. t.next(c === _e.LEFT);
  8003. }
  8004. });
  8005. return t.next(!1), o.dispose;
  8006. }),
  8007. hidden$: ee(n, _.UNIVER_DOC, void 0, $e)
  8008. };
  8009. }
  8010. function ju(n) {
  8011. const e = n.get(y);
  8012. return {
  8013. id: fo.id,
  8014. type: Z.BUTTON,
  8015. icon: "HorizontallySingle",
  8016. tooltip: "toolbar.alignCenter",
  8017. activated$: new pe((t) => {
  8018. const o = e.onCommandExecuted((s) => {
  8019. var i;
  8020. const r = s.id;
  8021. if (r === De.id || r === et.id) {
  8022. const a = vo(n);
  8023. if (a == null)
  8024. return;
  8025. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8026. t.next(c === _e.CENTER);
  8027. }
  8028. });
  8029. return t.next(!1), o.dispose;
  8030. }),
  8031. disabled$: be(n),
  8032. hidden$: ee(n, _.UNIVER_DOC, void 0, $e)
  8033. };
  8034. }
  8035. function Wu(n) {
  8036. const e = n.get(y);
  8037. return {
  8038. id: po.id,
  8039. type: Z.BUTTON,
  8040. icon: "RightJustifyingSingle",
  8041. tooltip: "toolbar.alignRight",
  8042. activated$: new pe((t) => {
  8043. const o = e.onCommandExecuted((s) => {
  8044. var i;
  8045. const r = s.id;
  8046. if (r === De.id || r === et.id) {
  8047. const a = vo(n);
  8048. if (a == null)
  8049. return;
  8050. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8051. t.next(c === _e.RIGHT);
  8052. }
  8053. });
  8054. return t.next(!1), o.dispose;
  8055. }),
  8056. disabled$: be(n),
  8057. hidden$: ee(n, _.UNIVER_DOC, void 0, $e)
  8058. };
  8059. }
  8060. function zu(n) {
  8061. const e = n.get(y);
  8062. return {
  8063. id: mo.id,
  8064. type: Z.BUTTON,
  8065. icon: "AlignTextBothSingle",
  8066. tooltip: "toolbar.alignJustify",
  8067. activated$: new pe((t) => {
  8068. const o = e.onCommandExecuted((s) => {
  8069. var i;
  8070. const r = s.id;
  8071. if (r === De.id || r === et.id) {
  8072. const a = vo(n);
  8073. if (a == null)
  8074. return;
  8075. const c = (i = a.paragraphStyle) == null ? void 0 : i.horizontalAlign;
  8076. t.next(c === _e.JUSTIFIED);
  8077. }
  8078. });
  8079. return t.next(!1), o.dispose;
  8080. }),
  8081. disabled$: be(n),
  8082. hidden$: ee(n, _.UNIVER_DOC, void 0, $e)
  8083. };
  8084. }
  8085. const un = (n) => new pe((e) => {
  8086. const t = n.get(Q), o = n.get(G);
  8087. let s;
  8088. const r = t.focused$.subscribe((i) => {
  8089. if (s == null || s.unsubscribe(), i == null)
  8090. return;
  8091. const a = t.getUniverDocInstance(i);
  8092. a != null && (s = o.textSelection$.subscribe(() => {
  8093. var l, d, h;
  8094. const c = o.getDocRanges(), A = (l = c.find((u) => u.isActive)) != null ? l : c[0];
  8095. if (A) {
  8096. const u = a.getSelfOrHeaderFooterModel(A == null ? void 0 : A.segmentId), g = Qs(A, (h = (d = u.getBody()) == null ? void 0 : d.paragraphs) != null ? h : []);
  8097. let f;
  8098. if (g.every((p) => {
  8099. var m;
  8100. return f || (f = (m = p.bullet) == null ? void 0 : m.listType), p.bullet && p.bullet.listType === f;
  8101. })) {
  8102. e.next(f);
  8103. return;
  8104. }
  8105. }
  8106. e.next(void 0);
  8107. }));
  8108. });
  8109. return () => {
  8110. r.unsubscribe(), s == null || s.unsubscribe();
  8111. };
  8112. });
  8113. function Gu(n) {
  8114. return {
  8115. id: ho.id,
  8116. type: Z.BUTTON_SELECTOR,
  8117. selections: [
  8118. {
  8119. label: {
  8120. name: aa,
  8121. hoverable: !1
  8122. },
  8123. value$: un(n)
  8124. }
  8125. ],
  8126. icon: "OrderSingle",
  8127. tooltip: "toolbar.order",
  8128. hidden$: ee(n, _.UNIVER_DOC),
  8129. disabled$: be(n),
  8130. activated$: un(n).pipe(gn((e) => e && e.indexOf("ORDER_LIST") === 0))
  8131. };
  8132. }
  8133. function Yu(n) {
  8134. return {
  8135. id: uo.id,
  8136. type: Z.BUTTON_SELECTOR,
  8137. selections: [
  8138. {
  8139. label: {
  8140. name: ca,
  8141. hoverable: !1
  8142. },
  8143. value$: un(n)
  8144. }
  8145. ],
  8146. icon: "UnorderSingle",
  8147. tooltip: "toolbar.unorder",
  8148. disabled$: be(n),
  8149. hidden$: ee(n, _.UNIVER_DOC),
  8150. activated$: un(n).pipe(gn((e) => e && e.indexOf("BULLET_LIST") === 0))
  8151. };
  8152. }
  8153. function qu(n) {
  8154. return {
  8155. id: ws.id,
  8156. type: Z.BUTTON,
  8157. icon: "TodoList",
  8158. tooltip: "toolbar.checklist",
  8159. disabled$: be(n),
  8160. hidden$: ee(n, _.UNIVER_DOC),
  8161. activated$: un(n).pipe(gn((e) => e && e.indexOf("CHECK_LIST") === 0))
  8162. };
  8163. }
  8164. function Ku(n) {
  8165. const e = n.get(y), t = n.get(Q);
  8166. return {
  8167. id: Co.id,
  8168. type: Z.BUTTON,
  8169. icon: "KeyboardSingle",
  8170. tooltip: "toolbar.documentFlavor",
  8171. hidden$: ee(n, _.UNIVER_DOC, void 0, $e),
  8172. activated$: new pe((o) => {
  8173. var i;
  8174. const s = e.onCommandExecuted((a) => {
  8175. var c;
  8176. if (a.id === J.id) {
  8177. const A = t.getCurrentUnitForType(_.UNIVER_DOC);
  8178. o.next(((c = A == null ? void 0 : A.getSnapshot()) == null ? void 0 : c.documentStyle.documentFlavor) === ye.MODERN);
  8179. }
  8180. }), r = t.getCurrentUnitForType(_.UNIVER_DOC);
  8181. return o.next(((i = r == null ? void 0 : r.getSnapshot()) == null ? void 0 : i.documentStyle.documentFlavor) === ye.MODERN), () => s.dispose();
  8182. })
  8183. };
  8184. }
  8185. function Xu(n) {
  8186. return {
  8187. id: fn.id,
  8188. type: Z.BUTTON,
  8189. title: "toolbar.resetColor",
  8190. icon: "NoColor"
  8191. };
  8192. }
  8193. function Ju(n) {
  8194. const e = n.get(y), t = n.get(vi);
  8195. return {
  8196. id: Nt.id,
  8197. tooltip: "toolbar.fillColor.main",
  8198. type: Z.BUTTON_SELECTOR,
  8199. icon: "PaintBucket",
  8200. selections: [
  8201. {
  8202. label: {
  8203. name: Ds,
  8204. hoverable: !1
  8205. }
  8206. }
  8207. ],
  8208. value$: new pe((o) => {
  8209. const s = t.getCurrentTheme().primaryColor, r = e.onCommandExecuted((i) => {
  8210. if (i.id === Nt.id) {
  8211. const a = i.params.value;
  8212. o.next(a != null ? a : s);
  8213. }
  8214. });
  8215. return o.next(s), r.dispose;
  8216. }),
  8217. disabled$: be(n),
  8218. hidden$: ee(n, _.UNIVER_DOC)
  8219. };
  8220. }
  8221. function dt(n) {
  8222. var h, u;
  8223. const e = n.get(Q), t = n.get(G), o = n.get(Je), s = e.getCurrentUnitForType(_.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 : {};
  8224. if (s == null || i == null)
  8225. return {
  8226. ts: {
  8227. ...a,
  8228. ...c
  8229. }
  8230. };
  8231. const { segmentId: A } = i, l = s.getSelfOrHeaderFooterModel(A).getBody();
  8232. return l == null ? {
  8233. ts: {
  8234. ...a,
  8235. ...c
  8236. }
  8237. } : {
  8238. ts: {
  8239. ...la(l, i, a),
  8240. ...c
  8241. }
  8242. };
  8243. }
  8244. function vo(n) {
  8245. var l, d;
  8246. const e = n.get(Q), t = n.get(G), o = e.getCurrentUniverDocInstance(), s = t.getDocRanges(), r = (l = s.find((h) => h.isActive)) != null ? l : s[0];
  8247. if (o == null || r == null)
  8248. return;
  8249. const { startOffset: i, segmentId: a } = r, c = (d = o.getSelfOrHeaderFooterModel(a).getBody()) == null ? void 0 : d.paragraphs;
  8250. if (c == null)
  8251. return;
  8252. let A = -1;
  8253. for (const h of c) {
  8254. const { startIndex: u } = h;
  8255. if (i > A && i <= u)
  8256. return h;
  8257. A = u;
  8258. }
  8259. return null;
  8260. }
  8261. const Zu = {
  8262. [Ir.FORMAT]: {
  8263. [Vt.id]: {
  8264. order: 0,
  8265. menuItemFactory: Bu
  8266. },
  8267. [jt.id]: {
  8268. order: 1,
  8269. menuItemFactory: Mu
  8270. },
  8271. [Wt.id]: {
  8272. order: 2,
  8273. menuItemFactory: _u
  8274. },
  8275. [zt.id]: {
  8276. order: 3,
  8277. menuItemFactory: Pu
  8278. },
  8279. [Ct.id]: {
  8280. order: 4,
  8281. menuItemFactory: Du
  8282. },
  8283. [Gt.id]: {
  8284. order: 5,
  8285. menuItemFactory: wu
  8286. },
  8287. [Pt.id]: {
  8288. order: 6,
  8289. menuItemFactory: Qu
  8290. },
  8291. [Dt.id]: {
  8292. order: 7,
  8293. menuItemFactory: Nu
  8294. },
  8295. [wt.id]: {
  8296. order: 8,
  8297. menuItemFactory: Uu
  8298. },
  8299. [Nt.id]: {
  8300. order: 9,
  8301. menuItemFactory: Ju,
  8302. [fn.id]: {
  8303. order: 0,
  8304. menuItemFactory: Xu
  8305. }
  8306. }
  8307. },
  8308. [Ir.LAYOUT]: {
  8309. [Ta]: {
  8310. order: 1,
  8311. menuItemFactory: Hu,
  8312. [sr.id]: {
  8313. order: 0,
  8314. menuItemFactory: ku
  8315. }
  8316. },
  8317. [go.id]: {
  8318. order: 2,
  8319. menuItemFactory: Vu
  8320. },
  8321. [fo.id]: {
  8322. order: 3,
  8323. menuItemFactory: ju
  8324. },
  8325. [po.id]: {
  8326. order: 4,
  8327. menuItemFactory: Wu
  8328. },
  8329. [mo.id]: {
  8330. order: 5,
  8331. menuItemFactory: zu
  8332. },
  8333. [ho.id]: {
  8334. order: 6,
  8335. menuItemFactory: Gu
  8336. },
  8337. [uo.id]: {
  8338. order: 7,
  8339. menuItemFactory: Yu
  8340. },
  8341. [ws.id]: {
  8342. order: 8,
  8343. menuItemFactory: qu
  8344. },
  8345. [_s.id]: {
  8346. order: 9,
  8347. menuItemFactory: Lu
  8348. },
  8349. [Co.id]: {
  8350. order: 10,
  8351. menuItemFactory: Ku
  8352. }
  8353. },
  8354. [Ui.MAIN_AREA]: {
  8355. [Cr.FORMAT]: {
  8356. [Fn.name]: {
  8357. order: 0,
  8358. menuItemFactory: uu
  8359. },
  8360. [qs.id]: {
  8361. order: 1,
  8362. menuItemFactory: gu
  8363. },
  8364. [Ks.id]: {
  8365. order: 2,
  8366. menuItemFactory: fu
  8367. },
  8368. [So.id]: {
  8369. order: 3,
  8370. menuItemFactory: pu
  8371. }
  8372. },
  8373. [Cr.LAYOUT]: {
  8374. [rr.id]: {
  8375. order: 0,
  8376. menuItemFactory: hu
  8377. },
  8378. [xa]: {
  8379. order: 1,
  8380. menuItemFactory: mu,
  8381. [er.id]: {
  8382. order: 1,
  8383. menuItemFactory: Eu
  8384. },
  8385. [tr.id]: {
  8386. order: 2,
  8387. menuItemFactory: Su
  8388. },
  8389. [nr.id]: {
  8390. order: 3,
  8391. menuItemFactory: Iu
  8392. },
  8393. [or.id]: {
  8394. order: 4,
  8395. menuItemFactory: Cu
  8396. }
  8397. },
  8398. [Oa]: {
  8399. order: 2,
  8400. menuItemFactory: vu,
  8401. [Xs.id]: {
  8402. order: 1,
  8403. menuItemFactory: Ru
  8404. },
  8405. [Js.id]: {
  8406. order: 2,
  8407. menuItemFactory: bu
  8408. },
  8409. [In.id]: {
  8410. order: 3,
  8411. menuItemFactory: xu
  8412. }
  8413. }
  8414. }
  8415. }
  8416. };
  8417. var $u = Object.defineProperty, eh = Object.getOwnPropertyDescriptor, th = (n, e, t, o) => {
  8418. for (var s = o > 1 ? void 0 : o ? eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8419. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8420. return o && s && $u(e, t, s), s;
  8421. }, Ke = (n, e) => (t, o) => e(t, o, n);
  8422. let Hn = class extends ue {
  8423. constructor(n, e, t, o, s, r, i, a, c) {
  8424. 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();
  8425. }
  8426. _initCustomComponents() {
  8427. const n = this._componentManager;
  8428. this.disposeWithMe(n.register(Ds, Zc)), this.disposeWithMe(n.register(oa, Pc)), this.disposeWithMe(n.register(sa, Dc)), this.disposeWithMe(n.register(ra, wc)), this.disposeWithMe(n.register(ca, Cl)), this.disposeWithMe(n.register(aa, Sl)), this.disposeWithMe(n.register("TodoList", $i));
  8429. }
  8430. // TODO: @zhangwei, why add workbook to docs-ui?
  8431. _initUiParts() {
  8432. var t, o;
  8433. const n = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_SHEET), e = this._configService.getConfig(Us);
  8434. (o = (t = e == null ? void 0 : e.layout) == null ? void 0 : t.docContainerConfig) != null && o.footer && !n && this.disposeWithMe(this._uiPartsService.registerComponent(Nc.FOOTER, () => $a(nd, this._injector)));
  8435. }
  8436. _initMenus() {
  8437. this._menuManagerService.mergeMenu(Zu);
  8438. }
  8439. _initShortCut() {
  8440. [
  8441. Nl,
  8442. Ql,
  8443. Ul,
  8444. Ll,
  8445. Fl,
  8446. Hl,
  8447. jl,
  8448. Wl,
  8449. Vl,
  8450. kl,
  8451. zl,
  8452. Gl,
  8453. xl
  8454. ].forEach((n) => {
  8455. this.disposeWithMe(this._shortcutService.registerShortcut(n));
  8456. });
  8457. }
  8458. _init() {
  8459. this._initCustomComponents(), this._initMenus(), this._initFocusHandler(), this._initCommands(), this._initUiParts(), this._initShortCut();
  8460. }
  8461. _initCommands() {
  8462. [
  8463. na,
  8464. _s,
  8465. Ms
  8466. ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
  8467. }
  8468. _initFocusHandler() {
  8469. this.disposeWithMe(
  8470. this._layoutService.registerFocusHandler(_.UNIVER_DOC, (n) => {
  8471. this._injector.get(fe).getRenderById(n).with(Se).focus();
  8472. })
  8473. );
  8474. }
  8475. };
  8476. Hn = th([
  8477. Ke(0, z(so)),
  8478. Ke(1, z(io)),
  8479. Ke(2, y),
  8480. Ke(3, bs),
  8481. Ke(4, Qc),
  8482. Ke(5, Uc),
  8483. Ke(6, Q),
  8484. Ke(7, ro),
  8485. Ke(8, Rs)
  8486. ], Hn);
  8487. var nh = Object.defineProperty, oh = Object.getOwnPropertyDescriptor, sh = (n, e, t, o) => {
  8488. for (var s = o > 1 ? void 0 : o ? oh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8489. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8490. return o && s && nh(e, t, s), s;
  8491. }, Fo = (n, e) => (t, o) => e(t, o, n);
  8492. const ni = 1.5;
  8493. let kn = class extends At {
  8494. constructor(n, e, t, o) {
  8495. super(), this._context = n, this._textSelectionManagerService = e, this._editorService = t, this._docSkeletonManagerService = o, this._init();
  8496. }
  8497. _init() {
  8498. this._textSelectionManagerService.textSelection$.pipe(st(this.dispose$)).subscribe((n) => {
  8499. if (n == null)
  8500. return;
  8501. const { isEditing: e, unitId: t } = n;
  8502. t !== this._context.unitId || !e || this._context.unitId !== vs && this._scrollToSelection();
  8503. });
  8504. }
  8505. scrollToRange(n) {
  8506. const e = this._docSkeletonManagerService.getSkeleton();
  8507. if (!e)
  8508. return;
  8509. const { startOffset: t } = n, o = e.findNodePositionByCharIndex(t);
  8510. o && this.scrollToNode(o);
  8511. }
  8512. scrollToNode(n) {
  8513. var O;
  8514. const { unitId: e, scene: t, mainComponent: o } = this._context, s = this._docSkeletonManagerService.getSkeleton();
  8515. if (o == null || s == null)
  8516. return;
  8517. const r = o.getOffsetConfig(), { docsLeft: i, docsTop: a } = r, c = new it(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);
  8518. if (f == null)
  8519. return;
  8520. const {
  8521. left: m,
  8522. top: E,
  8523. right: I,
  8524. bottom: v
  8525. } = f.getBounding().viewBound;
  8526. let R = 0, S = 0;
  8527. const C = p ? (O = p.params.backScrollOffset) != null ? O : 0 : 100;
  8528. g < E ? R = g - E - C : g > v - h && (R = g - v + h + C), u < m ? S = u - m : u > I - ni && (S = u - I + ni);
  8529. const T = f.transViewportScroll2ScrollValue(S, R);
  8530. f.scrollByBarDeltaValue(T);
  8531. }
  8532. // Let the selection show on the current screen.
  8533. _scrollToSelection() {
  8534. const n = this._textSelectionManagerService.getActiveTextRange();
  8535. if (n == null)
  8536. return;
  8537. const { collapsed: e, startNodePosition: t } = n;
  8538. e && this.scrollToNode(t);
  8539. }
  8540. };
  8541. kn = sh([
  8542. Fo(1, z(G)),
  8543. Fo(2, He),
  8544. Fo(3, z(ie))
  8545. ], kn);
  8546. var rh = Object.defineProperty, ih = Object.getOwnPropertyDescriptor, ah = (n, e, t, o) => {
  8547. for (var s = o > 1 ? void 0 : o ? ih(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8548. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8549. return o && s && rh(e, t, s), s;
  8550. }, bt = (n, e) => (t, o) => e(t, o, n);
  8551. let os = class extends At {
  8552. constructor(n, e, t, o, s, r, i) {
  8553. 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();
  8554. }
  8555. reRender(n) {
  8556. var r, i;
  8557. const e = (r = this._renderManagerService.getRenderById(n)) == null ? void 0 : r.with(ie), t = e == null ? void 0 : e.getSkeleton();
  8558. if (!t || !!t.getViewModel().getDataModel().getSnapshot().disabled)
  8559. return;
  8560. t.calculate();
  8561. const s = this._editorService.getEditor(n);
  8562. if (this._editorService.isEditor(n) && !(s != null && s.params.scrollBar)) {
  8563. (i = this._context.mainComponent) == null || i.makeDirty();
  8564. return;
  8565. }
  8566. this._recalculateSizeBySkeleton(t);
  8567. }
  8568. _addNewRender() {
  8569. const { scene: n, engine: e } = this._context, t = new Sc(Xe.VIEW_MAIN, n, {
  8570. left: 0,
  8571. top: 0,
  8572. bottom: 0,
  8573. right: 0,
  8574. isWheelPreventDefaultX: !0
  8575. });
  8576. n.attachControl(), n.onMouseWheel$.subscribeEvent((o, s) => {
  8577. const r = this._univerInstanceService.getCurrentUnitForType(_.UNIVER_DOC);
  8578. if ((r == null ? void 0 : r.getUnitId()) !== this._context.unitId)
  8579. return;
  8580. const i = o;
  8581. if (i.ctrlKey) {
  8582. const a = Math.abs(i.deltaX);
  8583. let c = a < 40 ? 0.2 : a < 80 ? 0.4 : 0.2;
  8584. 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();
  8585. } else
  8586. t.onMouseWheel(i, s);
  8587. }), new Vo(t), n.addLayer(
  8588. new Sr(n, [], Oo),
  8589. new Sr(n, [], aA)
  8590. ), this._addComponent(), e.runRenderLoop(() => {
  8591. n.render();
  8592. }), this._docSelectionRenderService.__attachScrollEvent();
  8593. }
  8594. _addComponent() {
  8595. const { scene: n, unit: e, components: t } = this._context, r = {
  8596. pageMarginLeft: 20,
  8597. pageMarginTop: 20
  8598. }, i = new Ic(We.MAIN, void 0, r);
  8599. i.zIndex = xr;
  8600. const a = new Cc(We.BACKGROUND, void 0, r);
  8601. 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);
  8602. }
  8603. _initRenderRefresh() {
  8604. this._docSkeletonManagerService.currentSkeletonBefore$.pipe(st(this.dispose$)).subscribe((n) => {
  8605. this._create(n);
  8606. });
  8607. }
  8608. _create(n) {
  8609. var a;
  8610. if (!n)
  8611. return;
  8612. const { mainComponent: e, components: t } = this._context, o = e, s = t.get(We.BACKGROUND);
  8613. o.changeSkeleton(n), s.changeSkeleton(n);
  8614. const { unitId: r } = this._context, i = this._editorService.getEditor(r);
  8615. if (this._editorService.isEditor(r) && !(i != null && i.params.scrollBar)) {
  8616. (a = this._context.mainComponent) == null || a.makeDirty();
  8617. return;
  8618. }
  8619. this._recalculateSizeBySkeleton(n);
  8620. }
  8621. _initCommandListener() {
  8622. const n = [J.id];
  8623. this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
  8624. if (n.includes(e.id)) {
  8625. const t = e.params, { unitId: o } = t;
  8626. this.reRender(o);
  8627. }
  8628. }));
  8629. }
  8630. _recalculateSizeBySkeleton(n) {
  8631. var u;
  8632. 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;
  8633. if (a == null)
  8634. return;
  8635. let c = 0, A = 0;
  8636. const d = this._context.unit.getSnapshot().documentStyle.documentFlavor;
  8637. for (let g = 0, f = a.length; g < f; g++) {
  8638. const p = a[g];
  8639. let { pageWidth: m, pageHeight: E } = p;
  8640. if (d === ye.MODERN) {
  8641. const I = ch(p);
  8642. m = I.pageWidth, E = I.pageHeight;
  8643. }
  8644. r.pageLayoutType === an.VERTICAL ? (A += E, A += r.pageMarginTop, g === f - 1 && (A += r.pageMarginTop), c = Math.max(c, m)) : r.pageLayoutType === an.HORIZONTAL && (c += m, g !== f - 1 && (c += r.pageMarginLeft), A = Math.max(A, E));
  8645. }
  8646. r.resize(c, A), i.resize(c, A);
  8647. const h = this._editorService.getEditor(o);
  8648. (!this._editorService.isEditor(o) || h != null && h.params.scrollBar) && t.resize(c, A);
  8649. }
  8650. };
  8651. os = ah([
  8652. bt(1, y),
  8653. bt(2, z(Se)),
  8654. bt(3, z(ie)),
  8655. bt(4, He),
  8656. bt(5, fe),
  8657. bt(6, Q)
  8658. ], os);
  8659. function ch(n) {
  8660. let { pageWidth: e, pageHeight: t } = n;
  8661. const { marginLeft: o, marginRight: s, marginTop: r, marginBottom: i, skeDrawings: a, skeTables: c } = n;
  8662. e === Number.POSITIVE_INFINITY && (e = n.width + o + s), t === Number.POSITIVE_INFINITY && (t = n.height + r + i);
  8663. for (const A of a.values())
  8664. e = Math.max(e, A.aLeft + A.width + o + s), t = Math.max(t, A.aTop + A.height + r + i);
  8665. for (const A of c.values())
  8666. e = Math.max(e, A.left + A.width + o + s), t = Math.max(t, A.top + A.height + r + i);
  8667. return { pageWidth: e, pageHeight: t };
  8668. }
  8669. const ya = {
  8670. id: "doc.command.select-all",
  8671. type: N.COMMAND,
  8672. handler: async (n) => {
  8673. var h;
  8674. const e = n.get(Q), t = n.get(G), o = e.getCurrentUnitForType(_.UNIVER_DOC), s = t.getDocRanges(), r = (h = s.find((u) => u.isActive)) != null ? h : s[0];
  8675. if (o == null || r == null)
  8676. return !1;
  8677. const { segmentId: i } = r, a = o.getUnitId(), c = o.getSelfOrHeaderFooterModel(i).getSnapshot().body;
  8678. if (c == null)
  8679. return !1;
  8680. const { tables: A = [] } = c, l = [];
  8681. let d = 0;
  8682. for (const u of A) {
  8683. const { startIndex: g, endIndex: f } = u;
  8684. d !== g && l.push({
  8685. startOffset: d,
  8686. endOffset: g - 1,
  8687. rangeType: Ge.TEXT
  8688. }), l.push({
  8689. startOffset: g + 3,
  8690. // 3 is TABLE_START, ROW_START, CELL_START.
  8691. endOffset: f - 5,
  8692. // 4 is CELL_END, ROW_END, TABLE_END AND \n.
  8693. rangeType: Ge.RECT
  8694. }), d = f;
  8695. }
  8696. return d !== c.dataStream.length - 2 && l.push({
  8697. startOffset: d,
  8698. endOffset: c.dataStream.length - 2,
  8699. rangeType: Ge.TEXT
  8700. }), t.replaceDocRanges(l, {
  8701. unitId: a,
  8702. subUnitId: a
  8703. }, !1), !0;
  8704. }
  8705. };
  8706. class Ro extends At {
  8707. constructor(t) {
  8708. super();
  8709. x(this, "_previousActiveRange", null);
  8710. x(this, "_undoMutationParamsCache", []);
  8711. x(this, "_redoMutationParamsCache", []);
  8712. this._context = t;
  8713. }
  8714. clearUndoRedoMutationParamsCache() {
  8715. this._undoMutationParamsCache = [], this._redoMutationParamsCache = [];
  8716. }
  8717. getUndoRedoMutationParamsCache() {
  8718. return {
  8719. undoCache: this._undoMutationParamsCache,
  8720. redoCache: this._redoMutationParamsCache
  8721. };
  8722. }
  8723. setUndoRedoMutationParamsCache({ undoCache: t = [], redoCache: o = [] }) {
  8724. this._undoMutationParamsCache = t, this._redoMutationParamsCache = o;
  8725. }
  8726. getActiveRange() {
  8727. return this._previousActiveRange;
  8728. }
  8729. setActiveRange(t) {
  8730. this._previousActiveRange = t;
  8731. }
  8732. pushUndoRedoMutationParams(t, o) {
  8733. this._undoMutationParamsCache.push(t), this._redoMutationParamsCache.push(o);
  8734. }
  8735. fetchComposedUndoRedoMutationParams() {
  8736. if (this._undoMutationParamsCache.length === 0 || this._previousActiveRange == null || this._redoMutationParamsCache.length === 0)
  8737. return null;
  8738. const { unitId: t } = this._undoMutationParamsCache[0], o = {
  8739. unitId: t,
  8740. actions: this._undoMutationParamsCache.reverse().reduce((r, i) => k.compose(r, i.actions), null),
  8741. textRanges: []
  8742. // Add empty array, will never use, just fix type error
  8743. };
  8744. return { redoMutationParams: {
  8745. unitId: t,
  8746. actions: this._redoMutationParamsCache.reduce((r, i) => k.compose(r, i.actions), null),
  8747. textRanges: []
  8748. // Add empty array, will never use, just fix type error
  8749. }, undoMutationParams: o, previousActiveRange: this._previousActiveRange };
  8750. }
  8751. dispose() {
  8752. this._undoMutationParamsCache = [], this._redoMutationParamsCache = [], this._previousActiveRange = null;
  8753. }
  8754. }
  8755. const Ah = Is, Ba = {
  8756. id: "doc.command.ime-input",
  8757. type: N.COMMAND,
  8758. // eslint-disable-next-line max-lines-per-function
  8759. handler: async (n, e) => {
  8760. var D, te, q, V;
  8761. const { unitId: t, newText: o, oldTextLen: s, isCompositionEnd: r, isCompositionStart: i } = e, a = n.get(y), c = n.get(fe), A = n.get(Q), l = n.get(Je), d = (D = c.getRenderById(t)) == null ? void 0 : D.with(Ro), h = A.getUnit(t, _.UNIVER_DOC);
  8762. if (h == null || d == null)
  8763. return !1;
  8764. const u = d.getActiveRange();
  8765. if (u == null)
  8766. return !1;
  8767. const { style: g, segmentId: f } = u, p = h.getSelfOrHeaderFooterModel(f).getBody();
  8768. if (p == null)
  8769. return !1;
  8770. Object.assign(u, u);
  8771. const { startOffset: E, endOffset: I } = u, v = o.length, R = [
  8772. {
  8773. startOffset: E + v,
  8774. endOffset: E + v,
  8775. collapsed: !0,
  8776. style: g
  8777. }
  8778. ], S = {
  8779. id: J.id,
  8780. params: {
  8781. unitId: t,
  8782. actions: [],
  8783. textRanges: R
  8784. }
  8785. }, C = l.getDefaultStyle(), T = l.getStyleCache(), O = Os((te = p.customRanges) != null ? te : [], E + s, Ah.includes(t)), P = co(
  8786. (q = p.textRuns) != null ? q : [],
  8787. i ? I : E + s,
  8788. C,
  8789. T
  8790. ), b = Ts((V = p.customDecorations) != null ? V : [], E + s), B = new me(), M = k.getInstance();
  8791. if (!u.collapsed && i) {
  8792. const Y = Ce.selection.delete([u], p, 0, null, !1);
  8793. B.push(...Y), S.params.textRanges = [{
  8794. startOffset: E + v,
  8795. endOffset: E + v,
  8796. collapsed: !0
  8797. }];
  8798. } else
  8799. B.push({
  8800. t: W.RETAIN,
  8801. len: E
  8802. });
  8803. s > 0 && B.push({
  8804. t: W.DELETE,
  8805. len: s
  8806. }), B.push({
  8807. t: W.INSERT,
  8808. body: {
  8809. dataStream: o,
  8810. textRuns: P ? [{
  8811. ...P,
  8812. st: 0,
  8813. ed: o.length
  8814. }] : [],
  8815. customRanges: O ? [{
  8816. ...O,
  8817. startIndex: 0,
  8818. endIndex: o.length - 1
  8819. }] : [],
  8820. customDecorations: b.map((Y) => ({
  8821. ...Y,
  8822. startIndex: 0,
  8823. endIndex: o.length - 1
  8824. }))
  8825. },
  8826. len: o.length
  8827. });
  8828. const H = le(h, f);
  8829. S.params.actions = M.editOp(B.serialize(), H), S.params.noHistory = !r, S.params.isCompositionEnd = r;
  8830. const F = a.syncExecuteCommand(S.id, S.params);
  8831. return d.pushUndoRedoMutationParams(F, S.params), !!F;
  8832. }
  8833. }, ss = {
  8834. type: N.COMMAND,
  8835. id: "doc.command.set-zoom-ratio",
  8836. handler: async (n, e) => {
  8837. var d, h, u;
  8838. const t = n.get(y), o = n.get(eo), s = n.get(Q);
  8839. let r = (d = s.getCurrentUniverDocInstance()) == null ? void 0 : d.getUnitId();
  8840. if (!r) return !1;
  8841. let i = 1;
  8842. if (e && (r = (h = e.documentId) != null ? h : r, i = (u = e.zoomRatio) != null ? u : i), !s.getUniverDocInstance(r)) return !1;
  8843. const c = {
  8844. zoomRatio: i,
  8845. unitId: r
  8846. }, A = Kl(n, c);
  8847. return t.syncExecuteCommand(Ye.id, c) ? (o.pushUndoRedo({
  8848. unitID: r,
  8849. undoMutations: [{ id: Ye.id, params: A }],
  8850. redoMutations: [{ id: Ye.id, params: c }]
  8851. }), !0) : !1;
  8852. }
  8853. }, Ma = {
  8854. id: "doc.table.tab-in-table",
  8855. type: N.COMMAND,
  8856. handler: async (n, e) => {
  8857. var g;
  8858. const { shift: t } = e, o = n.get(G), s = o.getDocRanges(), r = n.get(y), a = n.get(Q).getCurrentUniverDocInstance();
  8859. if (!a)
  8860. return !1;
  8861. const c = (g = s.find((f) => f.isActive)) != null ? g : s[0], A = a.getUnitId(), l = ke(n, A), d = l == null ? void 0 : l.getSkeleton(), h = d == null ? void 0 : d.getViewModel().getSelfOrHeaderFooterViewModel(c == null ? void 0 : c.segmentId);
  8862. if (h == null || c == null)
  8863. return !1;
  8864. let u = null;
  8865. if (t ? u = Kr(h, c, ts.PREV) : u = Kr(h, c, ts.NEXT), u) {
  8866. const { startOffset: f, endOffset: p } = u, m = [{
  8867. startOffset: f,
  8868. endOffset: p
  8869. }];
  8870. return o.replaceDocRanges(m), !0;
  8871. }
  8872. return t === !1 ? await r.executeCommand(Ia.id, {
  8873. position: Eo.BELLOW
  8874. }) : !0;
  8875. }
  8876. };
  8877. var lh = Object.defineProperty, dh = Object.getOwnPropertyDescriptor, uh = (n, e, t, o) => {
  8878. for (var s = o > 1 ? void 0 : o ? dh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8879. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8880. return o && s && lh(e, t, s), s;
  8881. }, Ho = (n, e) => (t, o) => e(t, o, n);
  8882. let rs = class {
  8883. constructor(n, e, t) {
  8884. x(this, "_docContainer");
  8885. // 获取SheetContainer组件
  8886. x(this, "getComponent", (n) => {
  8887. if (this._docContainer = n, !n.getContentRef().current)
  8888. throw new Error("container is not ready");
  8889. });
  8890. /**
  8891. * Change language
  8892. * @param {string} lang new language
  8893. *
  8894. * e: {target: HTMLSelectElement } reference from https://stackoverflow.com/a/48443771
  8895. *
  8896. */
  8897. x(this, "changeLocale", (n) => {
  8898. this._localeService.setLocale(n);
  8899. });
  8900. this._localeService = n, this._injector = e, this._configService = t;
  8901. }
  8902. getUIConfig() {
  8903. return {
  8904. injector: this._injector,
  8905. config: this._configService.getConfig(Us),
  8906. changeLocale: this.changeLocale,
  8907. getComponent: this.getComponent
  8908. };
  8909. }
  8910. getContentRef() {
  8911. return this._docContainer.getContentRef();
  8912. }
  8913. UIDidMount(n) {
  8914. if (this._docContainer)
  8915. return n(this._docContainer);
  8916. }
  8917. getDocContainer() {
  8918. return this._docContainer;
  8919. }
  8920. };
  8921. rs = uh([
  8922. Ho(0, z(Ze)),
  8923. Ho(1, z(so)),
  8924. Ho(2, Rs)
  8925. ], rs);
  8926. var hh = Object.defineProperty, gh = Object.getOwnPropertyDescriptor, fh = (n, e, t, o) => {
  8927. for (var s = o > 1 ? void 0 : o ? gh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8928. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8929. return o && s && hh(e, t, s), s;
  8930. }, ph = (n, e) => (t, o) => e(t, o, n);
  8931. let Vn = class extends At {
  8932. constructor(e) {
  8933. super();
  8934. x(this, "_docContainerController");
  8935. this._injector = e, this._docContainerController = this._injector.createInstance(rs);
  8936. }
  8937. };
  8938. Vn = fh([
  8939. ph(0, z(so))
  8940. ], Vn);
  8941. var mh = Object.defineProperty, Eh = Object.getOwnPropertyDescriptor, Sh = (n, e, t, o) => {
  8942. for (var s = o > 1 ? void 0 : o ? Eh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  8943. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  8944. return o && s && mh(e, t, s), s;
  8945. }, oi = (n, e) => (t, o) => e(t, o, n);
  8946. let jn = class extends ue {
  8947. constructor(n, e) {
  8948. super(), this._docAutoFormatService = n, this._renderManagerService = e, this._initListTabAutoFormat(), this._initListSpaceAutoFormat(), this._initDefaultEnterFormat(), this._initExitListAutoFormat();
  8949. }
  8950. _initListTabAutoFormat() {
  8951. this.disposeWithMe(
  8952. this._docAutoFormatService.registerAutoFormat({
  8953. id: _t.id,
  8954. match: (n) => {
  8955. var s;
  8956. const { selection: e, paragraphs: t, unit: o } = n;
  8957. if (t.length === 1 && e.startOffset === t[0].paragraphStart && t[0].bullet) {
  8958. const r = (s = o.getBody()) == null ? void 0 : s.paragraphs, i = r == null ? void 0 : r.filter((a) => {
  8959. var c;
  8960. return ((c = a.bullet) == null ? void 0 : c.listId) === t[0].bullet.listId;
  8961. });
  8962. return (i == null ? void 0 : i.findIndex((a) => a.startIndex === t[0].startIndex)) !== 0;
  8963. } else if (t.length > 1 && t.some((r) => r.bullet))
  8964. return !0;
  8965. return !1;
  8966. },
  8967. // traverse all paragraphs, set paragraph
  8968. getMutations(n) {
  8969. const e = n.commandParams;
  8970. return [{
  8971. id: es.id,
  8972. params: {
  8973. type: e != null && e.shift ? Pn.decrease : Pn.increase
  8974. }
  8975. }];
  8976. },
  8977. priority: 100
  8978. })
  8979. ), this.disposeWithMe(
  8980. this._docAutoFormatService.registerAutoFormat({
  8981. id: _t.id,
  8982. match: (n) => {
  8983. const { selection: e, unit: t } = n, { startNodePosition: o, endNodePosition: s } = e, r = this._renderManagerService.getRenderById(t.getUnitId()), i = r == null ? void 0 : r.with(ie).getSkeleton();
  8984. return i == null ? !1 : !!(o && s && zi(i, o, s) || o && !s && o.path.indexOf("cells") > -1);
  8985. },
  8986. getMutations(n) {
  8987. const e = n.commandParams;
  8988. return [{
  8989. id: Ma.id,
  8990. params: {
  8991. shift: !!(e != null && e.shift)
  8992. }
  8993. }];
  8994. },
  8995. priority: 99
  8996. })
  8997. );
  8998. }
  8999. _initListSpaceAutoFormat() {
  9000. this.disposeWithMe(
  9001. this._docAutoFormatService.registerAutoFormat({
  9002. id: Ao.id,
  9003. match: (n) => {
  9004. var r;
  9005. const { selection: e, paragraphs: t, unit: o } = n;
  9006. if (!e.collapsed || t.length !== 1)
  9007. return !1;
  9008. const s = (r = o.getBody()) == null ? void 0 : r.dataStream.slice(t[0].paragraphStart, t[0].paragraphEnd - 1);
  9009. return !!(s && Object.keys(bo).includes(s));
  9010. },
  9011. getMutations(n) {
  9012. var s;
  9013. const { paragraphs: e, unit: t } = n, o = (s = t.getBody()) == null ? void 0 : s.dataStream.slice(e[0].paragraphStart, e[0].paragraphEnd - 1);
  9014. if (o && Object.keys(bo).includes(o)) {
  9015. const r = bo[o];
  9016. return [{
  9017. id: da.id,
  9018. params: {
  9019. listType: r,
  9020. paragraph: e[0]
  9021. }
  9022. }];
  9023. }
  9024. return [];
  9025. }
  9026. })
  9027. );
  9028. }
  9029. _initExitListAutoFormat() {
  9030. this.disposeWithMe(
  9031. this._docAutoFormatService.registerAutoFormat({
  9032. id: ln.id,
  9033. match: (n) => {
  9034. const { paragraphs: e } = n;
  9035. return !!(e.length === 1 && e[0].bullet && e[0].paragraphStart === e[0].paragraphEnd);
  9036. },
  9037. getMutations: (n) => {
  9038. const e = n.paragraphs[0].bullet;
  9039. return e ? e.nestingLevel > 0 ? [{
  9040. id: es.id,
  9041. params: {
  9042. type: Pn.decrease
  9043. }
  9044. }] : [{
  9045. id: pn.id,
  9046. params: {
  9047. listType: n.paragraphs[0].bullet.listType
  9048. }
  9049. }] : [];
  9050. }
  9051. })
  9052. );
  9053. }
  9054. _initDefaultEnterFormat() {
  9055. this.disposeWithMe(
  9056. this._docAutoFormatService.registerAutoFormat({
  9057. id: ln.id,
  9058. match: () => !0,
  9059. getMutations() {
  9060. return [{
  9061. id: Ra.id
  9062. }];
  9063. },
  9064. priority: -9999
  9065. })
  9066. );
  9067. }
  9068. };
  9069. jn = Sh([
  9070. oi(0, z(Et)),
  9071. oi(1, fe)
  9072. ], jn);
  9073. function Ih(n) {
  9074. return n.rows[0].cells[0].sections[0].columns[0].lines[0];
  9075. }
  9076. function Ch(n) {
  9077. const e = n.rows[n.rows.length - 1], t = e.cells[e.cells.length - 1];
  9078. return bc(t);
  9079. }
  9080. function vh(n, e) {
  9081. const { ed: t } = n, { skeTables: o } = e;
  9082. let s = null;
  9083. for (const r of o.values())
  9084. if (r.st === t + 1) {
  9085. s = r;
  9086. break;
  9087. }
  9088. return s;
  9089. }
  9090. function si(n) {
  9091. const e = n == null ? void 0 : n.parent;
  9092. let t = null, o = null;
  9093. if (n == null || e == null)
  9094. return {
  9095. lineBeforeTable: t,
  9096. lineAfterTable: o
  9097. };
  9098. const { st: s, ed: r } = n, i = e.type === Ie.CELL ? [e] : e.parent.pages;
  9099. return vc(i, (a) => {
  9100. a.st === r + 1 ? o = a : a.ed === s - 1 && (t = a);
  9101. }), {
  9102. lineBeforeTable: t,
  9103. lineAfterTable: o
  9104. };
  9105. }
  9106. function _a(n) {
  9107. return n.sections[0].columns[0].lines.length === 0;
  9108. }
  9109. function Pa(n) {
  9110. var i, a;
  9111. const e = n.parent, t = e == null ? void 0 : e.parent, o = t == null ? void 0 : t.tableId;
  9112. if (e == null || t == null)
  9113. return;
  9114. const s = e.cells.indexOf(n);
  9115. let r = t.rows[t.rows.indexOf(e) + 1];
  9116. if (r == null && o.indexOf("#-#")) {
  9117. 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}`;
  9118. if (l)
  9119. for (const h of l) {
  9120. const { skeTables: u } = h;
  9121. if (u.has(d)) {
  9122. const g = u.get(d);
  9123. if (g != null && g.rows.length) {
  9124. r = g.rows.find((f) => !f.isRepeatRow);
  9125. break;
  9126. }
  9127. }
  9128. }
  9129. }
  9130. if (r != null) {
  9131. const c = r.cells[s];
  9132. return _a(c) ? Pa(c) : c;
  9133. }
  9134. }
  9135. function Da(n) {
  9136. var r, i;
  9137. const e = n.parent, t = e == null ? void 0 : e.parent;
  9138. if (e == null || t == null)
  9139. return;
  9140. let o = t.rows[t.rows.indexOf(e) - 1];
  9141. const s = e.cells.indexOf(n);
  9142. if ((o == null || o.isRepeatRow) && t.tableId.indexOf("#-#")) {
  9143. 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}`;
  9144. if (A)
  9145. for (const d of A) {
  9146. const { skeTables: h } = d;
  9147. if (h.has(l)) {
  9148. const u = h.get(l);
  9149. if (u != null && u.rows.length) {
  9150. o = u.rows[u.rows.length - 1];
  9151. break;
  9152. }
  9153. }
  9154. }
  9155. }
  9156. if (o != null) {
  9157. const a = o.cells[s];
  9158. return _a(a) ? Da(a) : a;
  9159. }
  9160. }
  9161. function Rh(n, e) {
  9162. const { st: t } = n, { skeTables: o } = e;
  9163. let s = null;
  9164. for (const r of o.values())
  9165. if (r.ed === t - 1) {
  9166. s = r;
  9167. break;
  9168. }
  9169. return s;
  9170. }
  9171. function bh(n) {
  9172. return n.sections[0].columns[0].lines[0];
  9173. }
  9174. function xh(n) {
  9175. const e = Rc(n);
  9176. return e.lines[e.lines.length - 1];
  9177. }
  9178. var Oh = Object.defineProperty, Th = Object.getOwnPropertyDescriptor, yh = (n, e, t, o) => {
  9179. for (var s = o > 1 ? void 0 : o ? Th(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9180. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9181. return o && s && Oh(e, t, s), s;
  9182. }, Rn = (n, e) => (t, o) => e(t, o, n);
  9183. let Wn = class extends ue {
  9184. constructor(e, t, o, s) {
  9185. super();
  9186. x(this, "_onInputSubscription");
  9187. this._univerInstanceService = e, this._renderManagerService = t, this._textSelectionManagerService = o, this._commandService = s, this._commandExecutedListener();
  9188. }
  9189. dispose() {
  9190. var e;
  9191. super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
  9192. }
  9193. _commandExecutedListener() {
  9194. const e = [at.id, ct.id];
  9195. this.disposeWithMe(
  9196. this._commandService.onCommandExecuted((t) => {
  9197. if (!e.includes(t.id))
  9198. return;
  9199. const o = t.params;
  9200. switch (t.id) {
  9201. case at.id:
  9202. return this._handleMoveCursor(o.direction);
  9203. case ct.id:
  9204. return this._handleShiftMoveSelection(o.direction);
  9205. default:
  9206. throw new Error("Unknown command");
  9207. }
  9208. })
  9209. );
  9210. }
  9211. // eslint-disable-next-line max-lines-per-function, complexity
  9212. _handleShiftMoveSelection(e) {
  9213. var I, v, R;
  9214. const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
  9215. if (s == null)
  9216. return;
  9217. const r = (I = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : I.with(ie).getSkeleton(), i = this._getDocObject();
  9218. if (t == null || r == null || i == null)
  9219. return;
  9220. const {
  9221. startOffset: a,
  9222. endOffset: c,
  9223. style: A,
  9224. collapsed: l,
  9225. direction: d,
  9226. segmentId: h,
  9227. startNodePosition: u,
  9228. endNodePosition: g,
  9229. segmentPage: f
  9230. } = t;
  9231. if (o.length > 1) {
  9232. let S = Number.POSITIVE_INFINITY, C = Number.NEGATIVE_INFINITY;
  9233. for (const T of o)
  9234. S = Math.min(S, T.startOffset), C = Math.max(C, T.endOffset);
  9235. this._textSelectionManagerService.replaceTextRanges([
  9236. {
  9237. startOffset: e === se.LEFT || e === se.UP ? C : S,
  9238. endOffset: e === se.LEFT || e === se.UP ? S : C,
  9239. style: A
  9240. }
  9241. ], !1);
  9242. return;
  9243. }
  9244. const p = l || d === xe.FORWARD ? a : c;
  9245. let m = l || d === xe.FORWARD ? c : a;
  9246. const E = (v = s.getSelfOrHeaderFooterModel(h).getBody().dataStream.length) != null ? v : Number.POSITIVE_INFINITY;
  9247. if (e === se.LEFT || e === se.RIGHT) {
  9248. const S = r.findNodeByCharIndex(m - 1, h, f), C = r.findNodeByCharIndex(m, h, f);
  9249. m = e === se.RIGHT ? m + C.count : m - ((R = S == null ? void 0 : S.count) != null ? R : 0), m = Math.min(E - 2, Math.max(0, m)), this._textSelectionManagerService.replaceTextRanges([
  9250. {
  9251. startOffset: p,
  9252. endOffset: m,
  9253. style: A
  9254. }
  9255. ], !1), this._scrollToFocusNodePosition(s.getUnitId(), m);
  9256. } else {
  9257. const S = r.findNodeByCharIndex(m, h, f), C = i.document.getOffsetConfig(), T = l ? u : d === xe.FORWARD ? g : u, O = this._getTopOrBottomPosition(r, S, T, e === se.DOWN, !0);
  9258. if (O == null) {
  9259. const b = e === se.UP ? 0 : E - 2;
  9260. if (b === m)
  9261. return;
  9262. this._textSelectionManagerService.replaceTextRanges([
  9263. {
  9264. startOffset: p,
  9265. endOffset: b,
  9266. style: A
  9267. }
  9268. ], !1);
  9269. return;
  9270. }
  9271. const P = new it(C, r).getRangePointData(
  9272. O,
  9273. O
  9274. ).cursorList[0];
  9275. this._textSelectionManagerService.replaceTextRanges([
  9276. {
  9277. startOffset: p,
  9278. endOffset: P.endOffset,
  9279. style: A
  9280. }
  9281. ], !1), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
  9282. }
  9283. }
  9284. // eslint-disable-next-line max-lines-per-function, complexity
  9285. _handleMoveCursor(e) {
  9286. var E, I, v, R;
  9287. const t = this._textSelectionManagerService.getActiveTextRange(), o = this._textSelectionManagerService.getTextRanges(), s = this._univerInstanceService.getCurrentUniverDocInstance();
  9288. if (s == null)
  9289. return !1;
  9290. const r = (E = this._renderManagerService.getRenderById(s.getUnitId())) == null ? void 0 : E.with(ie).getSkeleton(), i = this._getDocObject();
  9291. if (t == null || r == null || i == null || o == null)
  9292. return;
  9293. const { startOffset: a, endOffset: c, style: A, collapsed: l, segmentId: d, startNodePosition: h, endNodePosition: u, segmentPage: g } = t, f = s.getSelfOrHeaderFooterModel(d).getBody();
  9294. if (f == null)
  9295. return;
  9296. const p = (I = f.dataStream.length) != null ? I : Number.POSITIVE_INFINITY, m = (v = s.getCustomRanges()) != null ? v : [];
  9297. if (e === se.LEFT || e === se.RIGHT) {
  9298. let S;
  9299. if (!t.collapsed || o.length > 1) {
  9300. let O = Number.POSITIVE_INFINITY, P = Number.NEGATIVE_INFINITY;
  9301. for (const b of o)
  9302. O = Math.min(O, b.startOffset), P = Math.max(P, b.endOffset);
  9303. S = e === se.LEFT ? O : P;
  9304. } else {
  9305. const O = r.findNodeByCharIndex(a - 1, d, g), P = r.findNodeByCharIndex(a, d, g), b = r.findNodeByCharIndex(a + 1, d, g);
  9306. e === se.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) === U.SECTION_BREAK ? 1 : 0));
  9307. }
  9308. const C = [
  9309. U.TABLE_START,
  9310. U.TABLE_END,
  9311. U.TABLE_ROW_START,
  9312. U.TABLE_ROW_END,
  9313. U.TABLE_CELL_START,
  9314. U.TABLE_CELL_END,
  9315. U.SECTION_BREAK
  9316. ];
  9317. if (e === se.LEFT)
  9318. for (; C.includes(f.dataStream[S]); )
  9319. S--;
  9320. else
  9321. for (; C.includes(f.dataStream[S]); )
  9322. S++;
  9323. m.filter((O) => O.wholeEntity && O.startIndex < S && O.endIndex >= S).forEach((O) => {
  9324. e === se.LEFT ? S = Math.min(O.startIndex, S) : S = Math.max(O.endIndex + 1, S);
  9325. }), this._textSelectionManagerService.replaceTextRanges([
  9326. {
  9327. startOffset: Math.max(0, S),
  9328. endOffset: Math.max(0, S),
  9329. style: A
  9330. }
  9331. ], !1), this._scrollToFocusNodePosition(s.getUnitId(), S);
  9332. } else {
  9333. const S = r.findNodeByCharIndex(a, d, g), C = r.findNodeByCharIndex(c, d, g), T = i.document.getOffsetConfig(), O = this._getTopOrBottomPosition(
  9334. r,
  9335. e === se.UP || l ? S : C,
  9336. e === se.UP || l ? h : u,
  9337. e === se.DOWN
  9338. );
  9339. if (O == null) {
  9340. let b;
  9341. l ? b = e === se.UP ? 0 : p - 2 : b = e === se.UP ? a : c, this._textSelectionManagerService.replaceTextRanges([
  9342. {
  9343. startOffset: Math.max(0, b),
  9344. endOffset: Math.max(0, b),
  9345. style: A
  9346. }
  9347. ], !1);
  9348. return;
  9349. }
  9350. const P = new it(T, r).getRangePointData(
  9351. O,
  9352. O
  9353. ).cursorList[0];
  9354. this._textSelectionManagerService.replaceTextRanges([
  9355. {
  9356. ...P,
  9357. style: A
  9358. }
  9359. ], !1), this._scrollToFocusNodePosition(s.getUnitId(), P.endOffset);
  9360. }
  9361. }
  9362. _getTopOrBottomPosition(e, t, o, s, r = !1) {
  9363. if (t == null || o == null)
  9364. return;
  9365. const i = this._getGlyphLeftOffsetInLine(t), a = this._getNextOrPrevLine(t, s, r);
  9366. if (a == null)
  9367. return;
  9368. const c = this._matchPositionByLeftOffset(e, a, i, o);
  9369. if (c != null)
  9370. return { ...c, isBack: !0 };
  9371. }
  9372. _getGlyphLeftOffsetInLine(e) {
  9373. const t = e.parent;
  9374. if (t == null)
  9375. return Number.NEGATIVE_INFINITY;
  9376. const o = t.left, { left: s } = e;
  9377. return o + s;
  9378. }
  9379. _matchPositionByLeftOffset(e, t, o, s) {
  9380. const r = {
  9381. distance: Number.POSITIVE_INFINITY
  9382. };
  9383. for (const a of t.divides) {
  9384. const c = a.left;
  9385. for (const A of a.glyphGroup) {
  9386. if (A.streamType === U.SECTION_BREAK)
  9387. continue;
  9388. const { left: l } = A, d = c + l, h = Math.abs(o - d);
  9389. h < r.distance && (r.glyph = A, r.distance = h);
  9390. }
  9391. }
  9392. if (r.glyph == null)
  9393. return;
  9394. const { segmentPage: i } = s;
  9395. return e.findPositionByGlyph(r.glyph, i);
  9396. }
  9397. // eslint-disable-next-line max-lines-per-function, complexity
  9398. _getNextOrPrevLine(e, t, o = !1) {
  9399. var f, p, m, E, I, v, R, S, C, T, O, P;
  9400. 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;
  9401. if (s == null || r == null || i == null || a == null || c == null)
  9402. return;
  9403. const A = i.lines.indexOf(r);
  9404. if (A === -1)
  9405. return;
  9406. let l;
  9407. if (c.type === Ie.CELL && o) {
  9408. const b = ri(c, t);
  9409. if (b)
  9410. return b;
  9411. }
  9412. if (t === !0) {
  9413. l = i.lines[A + 1];
  9414. const b = vh(r, c);
  9415. if (b) {
  9416. const B = Ih(b);
  9417. B && (l = B);
  9418. }
  9419. } else {
  9420. l = i.lines[A - 1];
  9421. const b = Rh(r, c);
  9422. if (b) {
  9423. const B = Ch(b);
  9424. B && (l = B);
  9425. }
  9426. }
  9427. if (l != null)
  9428. return l;
  9429. const d = a.columns.indexOf(i);
  9430. if (d === -1)
  9431. return;
  9432. if (t === !0)
  9433. l = (f = a.columns[d + 1]) == null ? void 0 : f.lines[0];
  9434. else {
  9435. const b = (m = (p = a.columns) == null ? void 0 : p[d - 1]) == null ? void 0 : m.lines;
  9436. l = b == null ? void 0 : b[b.length - 1];
  9437. }
  9438. if (l != null)
  9439. return l;
  9440. const h = c.sections.indexOf(a);
  9441. if (h === -1)
  9442. return;
  9443. if (t === !0)
  9444. l = (I = (E = c.sections[h - 1]) == null ? void 0 : E.columns[0]) == null ? void 0 : I.lines[0];
  9445. else {
  9446. 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], M = B == null ? void 0 : B.lines;
  9447. l = M == null ? void 0 : M[M.length - 1];
  9448. }
  9449. if (l != null)
  9450. return l;
  9451. if (c.type === Ie.CELL)
  9452. return ri(c, t);
  9453. const u = c.parent;
  9454. if (u == null)
  9455. return;
  9456. const g = u.pages.indexOf(c);
  9457. if (g !== -1) {
  9458. if (t === !0)
  9459. 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];
  9460. else {
  9461. const b = (O = u.pages[g - 1]) == null ? void 0 : O.sections;
  9462. if (b == null)
  9463. return;
  9464. const B = (P = b[b.length - 1]) == null ? void 0 : P.columns, M = B[B.length - 1], H = M == null ? void 0 : M.lines;
  9465. l = H[H.length - 1];
  9466. }
  9467. if (l != null)
  9468. return l;
  9469. }
  9470. }
  9471. _scrollToFocusNodePosition(e, t) {
  9472. var s;
  9473. const o = (s = this._renderManagerService.getRenderById(e)) == null ? void 0 : s.with(kn);
  9474. o != null && o.scrollToRange({
  9475. startOffset: t,
  9476. endOffset: t,
  9477. collapsed: !0
  9478. });
  9479. }
  9480. _getDocObject() {
  9481. return cA(this._univerInstanceService, this._renderManagerService);
  9482. }
  9483. };
  9484. Wn = yh([
  9485. Rn(0, Q),
  9486. Rn(1, fe),
  9487. Rn(2, z(G)),
  9488. Rn(3, y)
  9489. ], Wn);
  9490. function ri(n, e) {
  9491. var o, s;
  9492. let t = null;
  9493. if (e === !0) {
  9494. const r = Pa(n);
  9495. if (r)
  9496. t = bh(r);
  9497. else {
  9498. const i = (o = n.parent) == null ? void 0 : o.parent, { lineAfterTable: a } = si(i);
  9499. a && (t = a);
  9500. }
  9501. } else {
  9502. const r = Da(n);
  9503. if (r)
  9504. t = xh(r);
  9505. else {
  9506. const i = (s = n.parent) == null ? void 0 : s.parent, { lineBeforeTable: a } = si(i);
  9507. a && (t = a);
  9508. }
  9509. }
  9510. return t;
  9511. }
  9512. const Bh = "univer-create", Mh = "univer-create-item", _h = "univer-create-label", Ph = "univer-create-input", gt = {
  9513. create: Bh,
  9514. createItem: Mh,
  9515. createLabel: _h,
  9516. createInput: Ph
  9517. }, Dh = ({
  9518. handleRowColChange: n,
  9519. tableCreateParams: e
  9520. }) => {
  9521. const t = $(Ze), [o, s] = ve(3), [r, i] = ve(5);
  9522. function a(c, A) {
  9523. s(c), i(A), n(c, A);
  9524. }
  9525. return Re(() => {
  9526. s(e.rowCount), i(e.colCount);
  9527. }, [e]), /* @__PURE__ */ w.jsxs("div", { className: gt.create, children: [
  9528. /* @__PURE__ */ w.jsxs("div", { className: gt.createItem, children: [
  9529. /* @__PURE__ */ w.jsx("span", { className: gt.createLabel, children: t.t("toolbar.table.rowCount") }),
  9530. /* @__PURE__ */ w.jsx(
  9531. An,
  9532. {
  9533. min: 1,
  9534. max: 20,
  9535. precision: 0,
  9536. value: o,
  9537. onChange: (c) => {
  9538. a(c, r);
  9539. },
  9540. className: gt.createInput
  9541. }
  9542. )
  9543. ] }),
  9544. /* @__PURE__ */ w.jsxs("div", { className: gt.createItem, children: [
  9545. /* @__PURE__ */ w.jsx("span", { className: gt.createLabel, children: t.t("toolbar.table.colCount") }),
  9546. /* @__PURE__ */ w.jsx(
  9547. An,
  9548. {
  9549. min: 1,
  9550. max: 20,
  9551. precision: 0,
  9552. value: r,
  9553. onChange: (c) => {
  9554. a(o, c);
  9555. },
  9556. className: gt.createInput
  9557. }
  9558. )
  9559. ] })
  9560. ] });
  9561. };
  9562. var wh = Object.defineProperty, Nh = Object.getOwnPropertyDescriptor, Qh = (n, e, t, o) => {
  9563. for (var s = o > 1 ? void 0 : o ? Nh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9564. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9565. return o && s && wh(e, t, s), s;
  9566. }, ii = (n, e) => (t, o) => e(t, o, n);
  9567. let zn = class extends ue {
  9568. constructor(n, e) {
  9569. super(), this._commandService = n, this._componentManager = e, this._initialize();
  9570. }
  9571. _initialize() {
  9572. this._init(), this._registerCommands(), this._initCustomComponents();
  9573. }
  9574. _registerCommands() {
  9575. [
  9576. sr
  9577. ].forEach((n) => this.disposeWithMe(this._commandService.registerCommand(n)));
  9578. }
  9579. _initCustomComponents() {
  9580. const n = this._componentManager;
  9581. this.disposeWithMe(n.register(Ca, Dh));
  9582. }
  9583. _init() {
  9584. }
  9585. };
  9586. zn = Qh([
  9587. ii(0, y),
  9588. ii(1, z(io))
  9589. ], zn);
  9590. const ai = 4;
  9591. var Uh = Object.defineProperty, Lh = Object.getOwnPropertyDescriptor, Fh = (n, e, t, o) => {
  9592. for (var s = o > 1 ? void 0 : o ? Lh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9593. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9594. return o && s && Uh(e, t, s), s;
  9595. }, bn = (n, e) => (t, o) => e(t, o, n);
  9596. function wa(n, e) {
  9597. const t = ci(n.left, n.top, e), o = ci(n.right, n.bottom, e);
  9598. return {
  9599. left: t.x,
  9600. top: t.y,
  9601. right: o.x,
  9602. bottom: o.y
  9603. };
  9604. }
  9605. function ci(n, e, t) {
  9606. const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
  9607. if (!r)
  9608. return {
  9609. x: n,
  9610. y: e
  9611. };
  9612. const { viewportScrollX: i, viewportScrollY: a } = r, c = (n - i) * o, A = (e - a) * s;
  9613. return {
  9614. x: c,
  9615. y: A
  9616. };
  9617. }
  9618. function Ai(n, e, t) {
  9619. const { scaleX: o, scaleY: s } = t.getAncestorScale(), r = t.getViewport(Xe.VIEW_MAIN);
  9620. if (!r)
  9621. return {
  9622. x: n,
  9623. y: e
  9624. };
  9625. const { viewportScrollX: i, viewportScrollY: a } = r, c = n / o + i, A = e / s + a;
  9626. return {
  9627. x: c,
  9628. y: A
  9629. };
  9630. }
  9631. const ko = (n, e) => {
  9632. const { scene: t, mainComponent: o, engine: s } = e, r = e.with(ie).getSkeleton(), i = r.findNodePositionByCharIndex(n.startOffset, !0, n.segmentId, n.segmentPage), a = r.findNodePositionByCharIndex(n.endOffset, !0, n.segmentId, n.segmentPage), c = o;
  9633. if (!a || !i)
  9634. return;
  9635. const A = c.getOffsetConfig(), { docsLeft: l, docsTop: d } = A, h = s.getCanvasElement(), u = h.getBoundingClientRect(), g = Ti(h.style.width), { top: f, left: p, width: m } = u, E = m / g, { scaleX: I, scaleY: v } = t.getAncestorScale(), R = new it(A, r), { borderBoxPointGroup: S } = R.getRangePointData(i, a);
  9636. return Bs(S).map((O) => wa(O, t)).map((O) => ({
  9637. left: (O.left + l * I) * E + p,
  9638. right: (O.right + l * I) * E + p,
  9639. top: (O.top + d * v) * E + f,
  9640. bottom: (O.bottom + d * v) * E + f
  9641. }));
  9642. };
  9643. let is = class extends ue {
  9644. constructor(n, e, t, o) {
  9645. super(), this._globalPopupManagerService = n, this._renderManagerService = e, this._univerInstanceService = t, this._commandService = o;
  9646. }
  9647. _createObjectPositionObserver(n, e) {
  9648. const t = () => {
  9649. const { scene: a, engine: c } = e, { left: A, top: l, width: d, height: h } = n, u = {
  9650. left: A,
  9651. right: A + d,
  9652. top: l,
  9653. bottom: l + h
  9654. }, g = c.getCanvasElement(), f = g.getBoundingClientRect(), p = Ti(g.style.width), m = wa(u, a), { top: E, left: I, width: v } = f, R = v / p;
  9655. return {
  9656. left: m.left * R + I,
  9657. right: m.right * R + I,
  9658. top: m.top * R + E,
  9659. bottom: m.bottom * R + E
  9660. };
  9661. }, o = t(), s = new Le(o), r = new Dn();
  9662. r.add(this._commandService.onCommandExecuted((a) => {
  9663. if (a.id === Ye.id || a.id === J.id) {
  9664. const c = t();
  9665. c && s.next(c);
  9666. }
  9667. }));
  9668. const i = e.scene.getViewport(Xe.VIEW_MAIN);
  9669. return i && r.add(i.onScrollAfter$.subscribeEvent(() => {
  9670. s.next(t());
  9671. })), {
  9672. position: o,
  9673. position$: s,
  9674. disposable: r
  9675. };
  9676. }
  9677. _createRangePositionObserver(n, e) {
  9678. var i;
  9679. const t = (i = ko(n, e)) != null ? i : [], o = new Le(t), s = new Dn();
  9680. s.add(this._commandService.onCommandExecuted((a) => {
  9681. if ((a.id === Ye.id || a.id === J.id) && a.params.unitId === e.unitId) {
  9682. const A = ko(n, e);
  9683. A && o.next(A);
  9684. }
  9685. }));
  9686. const r = e.scene.getViewport(Xe.VIEW_MAIN);
  9687. return r && s.add(r.onScrollAfter$.subscribeEvent(() => {
  9688. const a = ko(n, e);
  9689. a && o.next(a);
  9690. })), {
  9691. positions: t,
  9692. positions$: o,
  9693. disposable: s
  9694. };
  9695. }
  9696. // #region attach to object
  9697. /**
  9698. * attach a popup to canvas object
  9699. * @param targetObject target canvas object
  9700. * @param popup popup item
  9701. * @returns disposable
  9702. */
  9703. attachPopupToObject(n, e, t) {
  9704. const o = this._renderManagerService.getRenderById(t);
  9705. if (!o)
  9706. throw new Error(`Current render not found, unitId: ${t}`);
  9707. const { position: s, position$: r, disposable: i } = this._createObjectPositionObserver(n, o), a = this._globalPopupManagerService.addPopup({
  9708. ...e,
  9709. unitId: t,
  9710. subUnitId: "default",
  9711. anchorRect: s,
  9712. anchorRect$: r,
  9713. canvasElement: o.engine.getCanvasElement()
  9714. });
  9715. return {
  9716. dispose: () => {
  9717. this._globalPopupManagerService.removePopup(a), r.complete(), i.dispose();
  9718. }
  9719. };
  9720. }
  9721. // #endregion
  9722. // #region attach to range
  9723. /**
  9724. * attach a popup to doc range
  9725. * @param range doc range
  9726. * @param popup popup item
  9727. * @param unitId unit id
  9728. * @returns disposable
  9729. */
  9730. attachPopupToRange(n, e, t) {
  9731. if (!this._univerInstanceService.getUnit(t))
  9732. throw new Error(`Document not found, unitId: ${t}`);
  9733. const { direction: s = "top", multipleDirection: r } = e, i = this._renderManagerService.getRenderById(t);
  9734. if (!i)
  9735. throw new Error(`Current render not found, unitId: ${t}`);
  9736. const { positions: a, positions$: c, disposable: A } = this._createRangePositionObserver(n, i), l = c.pipe(gn((h) => s.includes("top") ? h[0] : h[h.length - 1])), d = this._globalPopupManagerService.addPopup({
  9737. ...e,
  9738. unitId: t,
  9739. subUnitId: "default",
  9740. anchorRect: s.includes("top") ? a[0] : a[a.length - 1],
  9741. anchorRect$: l,
  9742. excludeRects: a,
  9743. excludeRects$: c,
  9744. direction: s.includes("top") || s.includes("bottom") ? a.length > 1 ? r : s : "bottom",
  9745. canvasElement: i.engine.getCanvasElement()
  9746. });
  9747. return {
  9748. dispose: () => {
  9749. this._globalPopupManagerService.removePopup(d), c.complete(), A.dispose();
  9750. },
  9751. canDispose: () => this._globalPopupManagerService.activePopupId !== d
  9752. };
  9753. }
  9754. // #endregion
  9755. };
  9756. is = Fh([
  9757. bn(0, z(Lc)),
  9758. bn(1, fe),
  9759. bn(2, Q),
  9760. bn(3, y)
  9761. ], is);
  9762. var Hh = Object.defineProperty, kh = Object.getOwnPropertyDescriptor, Vh = (n, e, t, o) => {
  9763. for (var s = o > 1 ? void 0 : o ? kh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9764. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9765. return o && s && Hh(e, t, s), s;
  9766. }, jh = (n, e) => (t, o) => e(t, o, n);
  9767. const Wh = (n, e, t, o) => {
  9768. var h, u, g, f, p;
  9769. const s = t.findNodePositionByCharIndex(n.startOffset, !0, n.segmentId, o), r = t.getSkeletonData();
  9770. let i = n.endOffset;
  9771. if (n.segmentId) {
  9772. const m = (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];
  9773. m && (i = Math.min(m.ed, i));
  9774. }
  9775. const a = t.findNodePositionByCharIndex(i, !0, n.segmentId, o);
  9776. if (!a || !s)
  9777. return;
  9778. const c = e.getOffsetConfig(), A = new it(c, t), { borderBoxPointGroup: l } = A.getRangePointData(s, a);
  9779. return Bs(l).map((m) => ({
  9780. top: m.top + c.docsTop - ai,
  9781. bottom: m.bottom + c.docsTop + ai,
  9782. left: m.left + c.docsLeft,
  9783. right: m.right + c.docsLeft
  9784. }));
  9785. }, zh = (n, e, t, o = -1) => {
  9786. const s = t.findPositionByGlyph(n, o);
  9787. if (!s)
  9788. return;
  9789. const r = e.getOffsetConfig(), i = { ...s, isBack: !0 }, a = new it(r, t), { borderBoxPointGroup: c } = a.getRangePointData(i, i), l = Bs(c)[0];
  9790. return {
  9791. top: l.top + r.docsTop,
  9792. bottom: l.bottom + r.docsTop,
  9793. left: l.left + r.docsLeft,
  9794. right: l.left + r.docsLeft + n.width
  9795. };
  9796. };
  9797. let Gn = class extends ue {
  9798. constructor(e, t) {
  9799. super();
  9800. x(this, "_hoverCustomRanges$", new Le([]));
  9801. x(this, "hoverCustomRanges$", this._hoverCustomRanges$.pipe(vr((e, t) => e.length === t.length && e.every((o, s) => t[s].range.rangeId === o.range.rangeId && t[s].segmentId === o.segmentId && t[s].segmentPageIndex === o.segmentPageIndex && t[s].range.startIndex === o.range.startIndex))));
  9802. x(this, "_clickCustomRanges$", new Ee());
  9803. x(this, "clickCustomRanges$", this._clickCustomRanges$.asObservable());
  9804. x(this, "_hoverBullet$", new Ee());
  9805. x(this, "hoverBullet$", this._hoverBullet$.pipe(vr((e, t) => (e == null ? void 0 : e.paragraph.startIndex) === (t == null ? void 0 : t.paragraph.startIndex) && (e == null ? void 0 : e.segmentId) === (t == null ? void 0 : t.segmentId) && (e == null ? void 0 : e.segmentPageIndex) === (t == null ? void 0 : t.segmentPageIndex))));
  9806. x(this, "_clickBullet$", new Ee());
  9807. x(this, "clickBullets$", this._clickBullet$.asObservable());
  9808. x(this, "_customRangeDirty", !0);
  9809. x(this, "_bulletDirty", !0);
  9810. /**
  9811. * cache the bounding of custom ranges,
  9812. * it will be updated when the doc-skeleton is recalculated
  9813. */
  9814. x(this, "_customRangeBounds", []);
  9815. /**
  9816. * cache the bounding of bullets,
  9817. * it will be updated when the doc-skeleton is recalculated
  9818. */
  9819. x(this, "_bulletBounds", []);
  9820. this._context = e, this._docSkeletonManagerService = t, this._initResetDirty(), this._initEvents(), this._initPointer();
  9821. }
  9822. get _skeleton() {
  9823. return this._docSkeletonManagerService.getSkeleton();
  9824. }
  9825. get _documents() {
  9826. return this._context.mainComponent;
  9827. }
  9828. dispose() {
  9829. this._hoverCustomRanges$.complete(), this._clickCustomRanges$.complete(), super.dispose();
  9830. }
  9831. _initPointer() {
  9832. let e = mt.TEXT;
  9833. this.disposeWithMe(this.hoverCustomRanges$.subscribe((t) => {
  9834. t.length ? (e = this._context.scene.getCursor(), this._context.scene.setCursor(mt.POINTER)) : this._context.scene.setCursor(e);
  9835. }));
  9836. }
  9837. _initResetDirty() {
  9838. this.disposeWithMe(this._skeleton.dirty$.subscribe(() => {
  9839. this._customRangeDirty = !0, this._bulletDirty = !0;
  9840. })), this.disposeWithMe(
  9841. nn(this._context.engine.onTransformChange$).pipe(
  9842. Qn((e) => e.type === yi.resize)
  9843. ).subscribe(() => {
  9844. this._customRangeDirty = !0, this._bulletDirty = !0;
  9845. })
  9846. );
  9847. }
  9848. _initEvents() {
  9849. this.disposeWithMe(nn(this._context.scene.onPointerMove$).pipe(Hi(30)).subscribe((o) => {
  9850. this._hoverCustomRanges$.next(
  9851. this._calcActiveRanges(o)
  9852. ), this._hoverBullet$.next(
  9853. this._calcActiveBullet(o)
  9854. );
  9855. })), this.disposeWithMe(this._context.scene.onPointerEnter$.subscribeEvent(() => {
  9856. this._hoverBullet$.next(null), this._hoverCustomRanges$.next([]);
  9857. }));
  9858. const e = nn(this._context.mainComponent.onPointerDown$), t = nn(this._context.scene.onPointerUp$);
  9859. this.disposeWithMe(e.pipe(
  9860. jc((o) => t.pipe(Wc(1), gn((s) => ({ down: o, up: s })))),
  9861. Qn(({ down: o, up: s }) => o.target === s.target && s.timeStamp - o.timeStamp < 300)
  9862. // filter(({ down, up }) => down.offsetX === up.offsetX && down.offsetY === up.offsetY)
  9863. ).subscribe(({ down: o }) => {
  9864. if (o.button === 2)
  9865. return;
  9866. const s = this._calcActiveRanges(o);
  9867. s.length && this._clickCustomRanges$.next(s.pop());
  9868. const r = this._calcActiveBullet(o);
  9869. r && this._clickBullet$.next(r);
  9870. }));
  9871. }
  9872. _buildCustomRangeBoundsBySegment(e, t = -1) {
  9873. var r, i, a;
  9874. const o = (a = (i = (r = this._context.unit.getSelfOrHeaderFooterModel(e)) == null ? void 0 : r.getBody()) == null ? void 0 : i.customRanges) != null ? a : [], s = [];
  9875. return o.forEach((c) => {
  9876. const A = {
  9877. startOffset: c.startIndex,
  9878. endOffset: c.endIndex + 1,
  9879. collapsed: !1,
  9880. segmentId: e
  9881. }, l = Wh(A, this._documents, this._skeleton, t);
  9882. if (!l)
  9883. return null;
  9884. s.push({
  9885. customRange: c,
  9886. rects: l,
  9887. segmentId: e,
  9888. segmentPageIndex: t
  9889. });
  9890. }), s;
  9891. }
  9892. _buildCustomRangeBounds() {
  9893. var t;
  9894. if (!this._customRangeDirty)
  9895. return;
  9896. this._customRangeDirty = !1;
  9897. const e = [];
  9898. e.push(...this._buildCustomRangeBoundsBySegment()), (t = this._skeleton.getSkeletonData()) == null || t.pages.forEach((o, s) => {
  9899. o.headerId && e.push(...this._buildCustomRangeBoundsBySegment(o.headerId, s)), o.footerId && e.push(...this._buildCustomRangeBoundsBySegment(o.footerId, s));
  9900. }), this._customRangeBounds = e;
  9901. }
  9902. _calcActiveRanges(e) {
  9903. this._buildCustomRangeBounds();
  9904. const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
  9905. return this._customRangeBounds.filter((a) => a.rects.some((c) => {
  9906. const { left: A, right: l, top: d, bottom: h } = c;
  9907. return s >= A && s <= l && r >= d && r <= h;
  9908. })).map(
  9909. (a) => ({
  9910. segmentId: a.segmentId,
  9911. range: a.customRange,
  9912. segmentPageIndex: a.segmentPageIndex,
  9913. rects: a.rects
  9914. })
  9915. );
  9916. }
  9917. _buildBulletBoundsBySegment(e, t = -1) {
  9918. var c, A, l, d, h;
  9919. 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();
  9920. if (!i)
  9921. return r;
  9922. const a = (u) => {
  9923. var g, f, p;
  9924. for (const m of u) {
  9925. const E = [...m.sections];
  9926. if (m.skeTables) {
  9927. const I = Array.from(m.skeTables.values());
  9928. E.push(...I.map((v) => v.rows.map((R) => R.cells.map((S) => S.sections))).flat(4));
  9929. }
  9930. for (const I of E)
  9931. for (const v of I.columns)
  9932. for (const R of v.lines)
  9933. if (R.paragraphStart) {
  9934. const S = s.find((C) => C.startIndex === R.paragraphIndex);
  9935. if (S) {
  9936. 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];
  9937. if (!T)
  9938. continue;
  9939. const O = zh(T, this._documents, this._skeleton, t);
  9940. if (!O)
  9941. continue;
  9942. r.push({
  9943. rect: O,
  9944. segmentId: e,
  9945. segmentPageIndex: t,
  9946. paragraph: S
  9947. });
  9948. }
  9949. }
  9950. }
  9951. return r;
  9952. };
  9953. if (e) {
  9954. 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();
  9955. return u ? a(Array.from(u)) : r;
  9956. }
  9957. return a(i.pages);
  9958. }
  9959. _buildBulletBounds() {
  9960. var e;
  9961. this._bulletDirty && (this._bulletDirty = !1, this._bulletBounds = [], this._bulletBounds.push(...this._buildBulletBoundsBySegment()), (e = this._skeleton.getSkeletonData()) == null || e.pages.forEach((t, o) => {
  9962. t.headerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.headerId, o)), t.footerId && this._bulletBounds.push(...this._buildBulletBoundsBySegment(t.footerId, o));
  9963. }));
  9964. }
  9965. _calcActiveBullet(e) {
  9966. this._buildBulletBounds();
  9967. const { offsetX: t, offsetY: o } = e, { x: s, y: r } = Ai(t, o, this._context.scene);
  9968. return this._bulletBounds.find((a) => {
  9969. const { left: c, right: A, top: l, bottom: d } = a.rect;
  9970. return s >= c && s <= A && r >= l && r <= d;
  9971. });
  9972. }
  9973. };
  9974. Gn = Vh([
  9975. jh(1, z(ie))
  9976. ], Gn);
  9977. var Gh = Object.defineProperty, Yh = Object.getOwnPropertyDescriptor, qh = (n, e, t, o) => {
  9978. for (var s = o > 1 ? void 0 : o ? Yh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  9979. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  9980. return o && s && Gh(e, t, s), s;
  9981. }, xn = (n, e) => (t, o) => e(t, o, n);
  9982. let as = class extends ue {
  9983. constructor(n, e, t, o, s) {
  9984. super(), this._context = n, this._docSkeletonManagerService = e, this._commandService = t, this._docEventManagerService = o, this._textSelectionManagerService = s, this._initPointerDownObserver(), this._initHoverCursor();
  9985. }
  9986. _initPointerDownObserver() {
  9987. this._docEventManagerService.clickBullets$.subscribe((n) => {
  9988. const e = this._textSelectionManagerService.getTextRanges();
  9989. this._commandService.executeCommand(Ns.id, {
  9990. index: n.paragraph.startIndex,
  9991. segmentId: n.segmentId,
  9992. textRanges: e
  9993. });
  9994. });
  9995. }
  9996. _initHoverCursor() {
  9997. this.disposeWithMe(
  9998. this._docEventManagerService.hoverBullet$.subscribe((n) => {
  9999. n ? this._context.mainComponent.setCursor(mt.POINTER) : this._context.mainComponent.setCursor(mt.TEXT);
  10000. })
  10001. );
  10002. }
  10003. _getTransformCoordForDocumentOffset(n, e, t, o) {
  10004. const { documentTransform: s } = n.getOffsetConfig(), r = e.transformVector2SceneCoord(rn.FromArray([t, o]));
  10005. if (r)
  10006. return s.clone().invert().applyPoint(r);
  10007. }
  10008. };
  10009. as = qh([
  10010. xn(1, z(ie)),
  10011. xn(2, y),
  10012. xn(3, z(Gn)),
  10013. xn(4, z(G))
  10014. ], as);
  10015. var Kh = Object.defineProperty, Xh = Object.getOwnPropertyDescriptor, Jh = (n, e, t, o) => {
  10016. for (var s = o > 1 ? void 0 : o ? Xh(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10017. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10018. return o && s && Kh(e, t, s), s;
  10019. }, Zt = (n, e) => (t, o) => e(t, o, n);
  10020. let Yn = class extends At {
  10021. constructor(n, e, t, o, s, r) {
  10022. super(), this._context = n, this._commandService = e, this._docClipboardService = t, this._docSelectionRenderService = o, this._contextService = s, this._editorService = r, this._init();
  10023. }
  10024. _init() {
  10025. this._initLegacyPasteCommand();
  10026. }
  10027. _initLegacyPasteCommand() {
  10028. var n;
  10029. (n = this._docSelectionRenderService) == null || n.onPaste$.pipe(st(this.dispose$)).subscribe((e) => {
  10030. var c, A, l;
  10031. if (!Io(this._contextService))
  10032. return;
  10033. e.event.preventDefault();
  10034. const t = e.event;
  10035. let o = (c = t.clipboardData) == null ? void 0 : c.getData(Ni);
  10036. const s = (A = t.clipboardData) == null ? void 0 : A.getData(Qi), r = [
  10037. wi,
  10038. Di,
  10039. Pi,
  10040. _i
  10041. ], i = [...((l = t.clipboardData) == null ? void 0 : l.items) || []].filter((d) => r.includes(d.type)).map((d) => d.getAsFile()).filter((d) => !!d);
  10042. this._editorService.getEditor(this._context.unitId) && (o != null ? o : "").indexOf("</table>") > -1 && (o = ""), this._docClipboardService.legacyPaste({ html: o, text: s, files: i });
  10043. });
  10044. }
  10045. };
  10046. Yn = Jh([
  10047. Zt(1, y),
  10048. Zt(2, Sn),
  10049. Zt(3, z(Se)),
  10050. Zt(4, ms),
  10051. Zt(5, He)
  10052. ], Yn);
  10053. var Zh = Object.defineProperty, $h = Object.getOwnPropertyDescriptor, eg = (n, e, t, o) => {
  10054. for (var s = o > 1 ? void 0 : o ? $h(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10055. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10056. return o && s && Zh(e, t, s), s;
  10057. }, li = (n, e) => (t, o) => e(t, o, n);
  10058. const tg = [
  10059. pi,
  10060. ec,
  10061. vs,
  10062. $e
  10063. ];
  10064. let cs = class extends ue {
  10065. constructor(n, e, t) {
  10066. super(), this._context = n, this._contextMenuService = e, this._commandService = t, tg.includes(this._context.unitId) || (this._initPointerDown(), this._initEditChange());
  10067. }
  10068. _initPointerDown() {
  10069. var t, o;
  10070. const e = ((o = (t = this._context) == null ? void 0 : t.mainComponent) == null ? void 0 : o.onPointerDown$).subscribeEvent((s) => {
  10071. s.button === 2 && this._contextMenuService.triggerContextMenu(s, Ui.MAIN_AREA);
  10072. });
  10073. this.disposeWithMe(e);
  10074. }
  10075. _initEditChange() {
  10076. this.disposeWithMe(
  10077. this._commandService.onCommandExecuted((n) => {
  10078. n.id === J.id && this._contextMenuService.visible && this._contextMenuService.hideContextMenu();
  10079. })
  10080. );
  10081. }
  10082. };
  10083. cs = eg([
  10084. li(1, Fc),
  10085. li(2, y)
  10086. ], cs);
  10087. var ng = Object.defineProperty, og = Object.getOwnPropertyDescriptor, sg = (n, e, t, o) => {
  10088. for (var s = o > 1 ? void 0 : o ? og(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10089. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10090. return o && s && ng(e, t, s), s;
  10091. }, xt = (n, e) => (t, o) => e(t, o, n);
  10092. let qn = class extends ue {
  10093. constructor(e, t, o, s, r, i, a) {
  10094. super();
  10095. x(this, "_initialEditors", /* @__PURE__ */ new Set());
  10096. this._context = e, this._univerInstanceService = t, this._editorService = o, this._commandService = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._renderManagerService = a, this._initialize();
  10097. }
  10098. _initialize() {
  10099. this._editorService.getAllEditor().forEach((e) => {
  10100. const t = e.getEditorId();
  10101. t === this._context.unitId && (this._initialEditors.has(t) || (this._initialEditors.add(t), this._resize(t)));
  10102. }), this._commandExecutedListener(), this._initialBlur(), this._initialFocus();
  10103. }
  10104. _resize(e) {
  10105. if (e == null)
  10106. return;
  10107. const t = this._editorService.getEditor(e);
  10108. if ((t == null ? void 0 : t.cancelDefaultResizeListener) === !0)
  10109. return;
  10110. const o = this._univerInstanceService.getUniverDocInstance(e);
  10111. if (!o)
  10112. return;
  10113. const s = this._docSkeletonManagerService.getSkeleton();
  10114. if (t == null || t.render == null || s == null || o == null)
  10115. return;
  10116. s.calculate();
  10117. const { marginTop: r = 0, marginBottom: i = 0, marginLeft: a = 0, marginRight: c = 0 } = o.getSnapshot().documentStyle, { scene: A, mainComponent: l } = t.render;
  10118. let { actualHeight: d, actualWidth: h } = s.getActualSize();
  10119. d += r + i, h += a + c;
  10120. const { width: u, height: g } = t.getBoundingClientRect(), f = Math.max(h, u), p = Math.max(d, g);
  10121. A.transformByState({
  10122. width: f,
  10123. height: p
  10124. }), l == null || l.resize(f, p);
  10125. }
  10126. _initialBlur() {
  10127. this.disposeWithMe(
  10128. this._editorService.blur$.subscribe(() => {
  10129. this._docSelectionRenderService.blur();
  10130. })
  10131. ), this.disposeWithMe(
  10132. this._docSelectionRenderService.onBlur$.subscribe(() => {
  10133. const { unitId: e } = this._context, t = this._editorService.getEditor(e), o = this._editorService.getFocusEditor();
  10134. t == null || t.isSheetEditor() || o && o.getEditorId() === e || e.includes("range_selector") || e.includes("embedding_formula_editor") || this._editorService.blur();
  10135. })
  10136. );
  10137. }
  10138. _initialFocus() {
  10139. const e = [
  10140. "univer-formula-search",
  10141. "univer-formula-help",
  10142. "formula-help-decorator",
  10143. "univer-formula-help-param"
  10144. ];
  10145. this.disposeWithMe(
  10146. Ue(window, "mousedown").subscribe((o) => {
  10147. const r = o.target.classList[0] || "";
  10148. tc(r, e) && o.stopPropagation();
  10149. })
  10150. ), this._univerInstanceService.getAllUnitsForType(_.UNIVER_SHEET).forEach((o) => {
  10151. const s = o.getUnitId(), r = this._renderManagerService.getRenderById(s), i = r == null ? void 0 : r.engine.getCanvas().getCanvasEle();
  10152. i != null && Ue(i, "mousedown").subscribe((a) => {
  10153. a.stopPropagation();
  10154. });
  10155. });
  10156. }
  10157. /**
  10158. * Listen to document edits to refresh the size of the formula editor.
  10159. */
  10160. _commandExecutedListener() {
  10161. const e = [J.id];
  10162. this.disposeWithMe(
  10163. this._commandService.onCommandExecuted((t) => {
  10164. if (e.includes(t.id)) {
  10165. const o = t.params, { unitId: s } = o;
  10166. if (this._editorService.isSheetEditor(s) || s !== this._context.unitId)
  10167. return;
  10168. const r = this._editorService.getEditor(s);
  10169. r && !r.params.scrollBar && this._resize(s);
  10170. }
  10171. })
  10172. );
  10173. }
  10174. };
  10175. qn = sg([
  10176. xt(1, Q),
  10177. xt(2, He),
  10178. xt(3, y),
  10179. xt(4, z(Se)),
  10180. xt(5, z(ie)),
  10181. xt(6, fe)
  10182. ], qn);
  10183. var rg = Object.defineProperty, ig = Object.getOwnPropertyDescriptor, ag = (n, e, t, o) => {
  10184. for (var s = o > 1 ? void 0 : o ? ig(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10185. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10186. return o && s && rg(e, t, s), s;
  10187. }, On = (n, e) => (t, o) => e(t, o, n);
  10188. let As = class extends ue {
  10189. constructor(e, t, o, s, r) {
  10190. super();
  10191. x(this, "_previousIMEContent", "");
  10192. x(this, "_isCompositionStart", !0);
  10193. x(this, "_onStartSubscription");
  10194. x(this, "_onUpdateSubscription");
  10195. x(this, "_onEndSubscription");
  10196. this._context = e, this._docSelectionRenderService = t, this._docImeInputManagerService = o, this._docSkeletonManagerService = s, this._commandService = r, this._initialize();
  10197. }
  10198. dispose() {
  10199. var e, t, o;
  10200. (e = this._onStartSubscription) == null || e.unsubscribe(), (t = this._onUpdateSubscription) == null || t.unsubscribe(), (o = this._onEndSubscription) == null || o.unsubscribe();
  10201. }
  10202. _initialize() {
  10203. this._initialOnCompositionstart(), this._initialOnCompositionUpdate(), this._initialOnCompositionend();
  10204. }
  10205. _initialOnCompositionstart() {
  10206. this._onStartSubscription = this._docSelectionRenderService.onCompositionstart$.subscribe((e) => {
  10207. if (e == null)
  10208. return;
  10209. this._resetIME();
  10210. const { activeRange: t } = e;
  10211. t != null && this._docImeInputManagerService.setActiveRange(X.deepClone(t));
  10212. });
  10213. }
  10214. _initialOnCompositionUpdate() {
  10215. this._onUpdateSubscription = this._docSelectionRenderService.onCompositionupdate$.subscribe((e) => {
  10216. this._updateContent(e, !0);
  10217. });
  10218. }
  10219. _initialOnCompositionend() {
  10220. this._onEndSubscription = this._docSelectionRenderService.onCompositionend$.subscribe((e) => {
  10221. this._updateContent(e, !1);
  10222. });
  10223. }
  10224. async _updateContent(e, t) {
  10225. if (e == null)
  10226. return;
  10227. const o = this._context.unitId, s = this._docSkeletonManagerService.getSkeleton(), { event: r, activeRange: i } = e;
  10228. if (s == null || i == null)
  10229. return;
  10230. const c = r.data;
  10231. c === this._previousIMEContent && t || (await this._commandService.executeCommand(Ba.id, {
  10232. unitId: o,
  10233. newText: c,
  10234. oldTextLen: this._previousIMEContent.length,
  10235. isCompositionStart: this._isCompositionStart,
  10236. isCompositionEnd: !t
  10237. }), t ? (this._isCompositionStart && (this._isCompositionStart = !1), this._previousIMEContent = c) : this._resetIME());
  10238. }
  10239. _resetIME() {
  10240. this._previousIMEContent = "", this._isCompositionStart = !0, this._docImeInputManagerService.clearUndoRedoMutationParamsCache(), this._docImeInputManagerService.setActiveRange(null);
  10241. }
  10242. };
  10243. As = ag([
  10244. On(1, z(Se)),
  10245. On(2, z(Ro)),
  10246. On(3, z(ie)),
  10247. On(4, y)
  10248. ], As);
  10249. var cg = Object.defineProperty, Ag = Object.getOwnPropertyDescriptor, lg = (n, e, t, o) => {
  10250. for (var s = o > 1 ? void 0 : o ? Ag(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10251. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10252. return o && s && cg(e, t, s), s;
  10253. }, Tn = (n, e) => (t, o) => e(t, o, n);
  10254. let ls = class extends ue {
  10255. constructor(e, t, o, s, r) {
  10256. super();
  10257. x(this, "_onInputSubscription");
  10258. this._context = e, this._docSelectionRenderService = t, this._docSkeletonManagerService = o, this._commandService = s, this._docMenuStyleService = r, this._init();
  10259. }
  10260. dispose() {
  10261. var e;
  10262. super.dispose(), (e = this._onInputSubscription) == null || e.unsubscribe();
  10263. }
  10264. _init() {
  10265. this._initialNormalInput();
  10266. }
  10267. _initialNormalInput() {
  10268. this._onInputSubscription = this._docSelectionRenderService.onInput$.subscribe(async (e) => {
  10269. var p, m, E;
  10270. if (e == null)
  10271. return;
  10272. const { unitId: t } = this._context, { event: o, content: s = "", activeRange: r } = e, i = o, a = this._docSkeletonManagerService.getSkeleton();
  10273. if (i.data == null || a == null || r == null)
  10274. return;
  10275. 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, Is.includes(t)), g = co((m = l == null ? void 0 : l.textRuns) != null ? m : [], r.endOffset, d, h), f = Ts((E = l == null ? void 0 : l.customDecorations) != null ? E : [], r.endOffset);
  10276. await this._commandService.executeCommand(Vs.id, {
  10277. unitId: t,
  10278. body: {
  10279. dataStream: s,
  10280. textRuns: g ? [
  10281. {
  10282. ...g,
  10283. st: 0,
  10284. ed: s.length
  10285. }
  10286. ] : [],
  10287. customRanges: u ? [{
  10288. ...u,
  10289. startIndex: 0,
  10290. endIndex: s.length - 1
  10291. }] : [],
  10292. customDecorations: f.map((I) => ({
  10293. ...I,
  10294. startIndex: 0,
  10295. endIndex: s.length - 1
  10296. }))
  10297. },
  10298. range: r,
  10299. segmentId: c
  10300. }), s === " " && await this._commandService.executeCommand(Ao.id);
  10301. });
  10302. }
  10303. };
  10304. ls = lg([
  10305. Tn(1, z(Se)),
  10306. Tn(2, z(ie)),
  10307. Tn(3, y),
  10308. Tn(4, z(Je))
  10309. ], ls);
  10310. class ar extends ue {
  10311. constructor(e) {
  10312. super(), this._context = e;
  10313. }
  10314. calculatePagePosition() {
  10315. var v, R;
  10316. const e = rt(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;
  10317. if (a == null || c === Number.POSITIVE_INFINITY || A === Number.POSITIVE_INFINITY)
  10318. return;
  10319. const { width: h, height: u } = a;
  10320. let g = 0, f = d, p = 0, m = 0, E = Number.POSITIVE_INFINITY;
  10321. 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 ? m = (u - d * 2) / o : m = A + d * 2, r.resize(p, m), h <= 1 && (g = -1e4, f = -1e4), s.translate(g, f), i.translate(g, f);
  10322. const I = r.getViewport(Xe.VIEW_MAIN);
  10323. return E !== Number.POSITIVE_INFINITY && I != null && I.scrollToViewportPos({
  10324. viewportScrollX: E
  10325. }), this;
  10326. }
  10327. }
  10328. var dg = Object.defineProperty, ug = Object.getOwnPropertyDescriptor, hg = (n, e, t, o) => {
  10329. for (var s = o > 1 ? void 0 : o ? ug(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10330. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10331. return o && s && dg(e, t, s), s;
  10332. }, di = (n, e) => (t, o) => e(t, o, n);
  10333. let ds = class extends ue {
  10334. constructor(n, e, t) {
  10335. super(), this._context = n, this._docPageLayoutService = e, this._textSelectionManagerService = t;
  10336. const o = this._context.unitId;
  10337. if (to(o) && o !== $e) return this;
  10338. this._initResize();
  10339. }
  10340. _initResize() {
  10341. this.disposeWithMe(
  10342. nn(this._context.engine.onTransformChange$).pipe(
  10343. Qn((n) => n.type === yi.resize),
  10344. Hi(0, zc)
  10345. ).subscribe(() => {
  10346. this._docPageLayoutService.calculatePagePosition(), this._textSelectionManagerService.refreshSelection();
  10347. })
  10348. );
  10349. }
  10350. };
  10351. ds = hg([
  10352. di(1, z(ar)),
  10353. di(2, z(G))
  10354. ], ds);
  10355. var gg = Object.defineProperty, fg = Object.getOwnPropertyDescriptor, pg = (n, e, t, o) => {
  10356. for (var s = o > 1 ? void 0 : o ? fg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10357. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10358. return o && s && gg(e, t, s), s;
  10359. }, Ot = (n, e) => (t, o) => e(t, o, n);
  10360. let us = class extends ue {
  10361. constructor(e, t, o, s, r, i, a) {
  10362. super();
  10363. x(this, "_loadedMap", /* @__PURE__ */ new WeakSet());
  10364. this._context = e, this._commandService = t, this._editorService = o, this._instanceSrv = s, this._docSelectionRenderService = r, this._docSkeletonManagerService = i, this._docSelectionManagerService = a, this._initialize();
  10365. }
  10366. _initialize() {
  10367. this._init(), this._skeletonListener(), this._commandExecutedListener(), this._refreshListener(), this._syncSelection();
  10368. }
  10369. _init() {
  10370. const { unitId: e } = this._context, t = rt(this._context);
  10371. t == null || t.document == null || this._loadedMap.has(t.document) || (this._initialMain(e), this._loadedMap.add(t.document));
  10372. }
  10373. _refreshListener() {
  10374. this.disposeWithMe(
  10375. this._docSelectionManagerService.refreshSelection$.subscribe((e) => {
  10376. if (e == null)
  10377. return;
  10378. const { unitId: t, docRanges: o, isEditing: s, options: r } = e;
  10379. t === this._context.unitId && (this._docSelectionRenderService.removeAllRanges(), this._docSelectionRenderService.addDocRanges(o, s, r));
  10380. })
  10381. );
  10382. }
  10383. _syncSelection() {
  10384. this.disposeWithMe(
  10385. this._docSelectionRenderService.textSelectionInner$.subscribe((e) => {
  10386. e != null && this._docSelectionManagerService.__replaceTextRangesWithNoRefresh(e, {
  10387. unitId: this._context.unitId,
  10388. subUnitId: this._context.unitId
  10389. });
  10390. })
  10391. );
  10392. }
  10393. // eslint-disable-next-line max-lines-per-function
  10394. _initialMain(e) {
  10395. const t = rt(this._context), { document: o, scene: s } = t;
  10396. this.disposeWithMe(o.onPointerEnter$.subscribeEvent(() => {
  10397. this._isEditorReadOnly(e) || (o.cursor = mt.TEXT);
  10398. })), this.disposeWithMe(o.onPointerLeave$.subscribeEvent(() => {
  10399. o.cursor = mt.DEFAULT, s.resetCursor();
  10400. })), this.disposeWithMe(o.onPointerDown$.subscribeEvent((r, i) => {
  10401. if (this._isEditorReadOnly(e))
  10402. return;
  10403. const a = this._instanceSrv.getCurrentUnitForType(_.UNIVER_DOC);
  10404. (a == null ? void 0 : a.getUnitId()) !== e && this._instanceSrv.setCurrentUnitForType(e);
  10405. const c = this._docSkeletonManagerService.getSkeleton(), { offsetX: A, offsetY: l } = r, d = this._getTransformCoordForDocumentOffset(A, l);
  10406. if (d != null) {
  10407. const {
  10408. pageLayoutType: h = an.VERTICAL,
  10409. pageMarginLeft: u,
  10410. pageMarginTop: g
  10411. } = o.getOffsetConfig(), { editArea: f } = c.findEditAreaByCoord(
  10412. d,
  10413. h,
  10414. u,
  10415. g
  10416. ), p = this._docSkeletonManagerService.getViewModel(), m = p.getEditArea();
  10417. m !== ge.BODY && f !== ge.BODY && f !== m && p.setEditArea(f);
  10418. }
  10419. if (this._docSelectionRenderService.__onPointDown(r), this._editorService.getEditor(e)) {
  10420. this._setEditorFocus(e);
  10421. const { offsetX: h, offsetY: u } = r;
  10422. setTimeout(() => {
  10423. e !== this._editorService.getFocusId() && (this._setEditorFocus(e), this._docSelectionRenderService.setCursorManually(h, u));
  10424. }, 0);
  10425. }
  10426. r.button !== 2 && i.stopPropagation();
  10427. })), this.disposeWithMe(o.onDblclick$.subscribeEvent((r) => {
  10428. this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleDblClick(r);
  10429. })), this.disposeWithMe(o.onTripleClick$.subscribeEvent((r) => {
  10430. this._isEditorReadOnly(e) || this._docSelectionRenderService.__handleTripleClick(r);
  10431. }));
  10432. }
  10433. _getTransformCoordForDocumentOffset(e, t) {
  10434. const o = rt(this._context), { document: s, scene: r } = o, { documentTransform: i } = s.getOffsetConfig(), a = r.getViewports()[0];
  10435. if (a == null)
  10436. return;
  10437. const c = a.transformVector2SceneCoord(rn.FromArray([e, t]));
  10438. return i.clone().invert().applyPoint(c);
  10439. }
  10440. _isEditorReadOnly(e) {
  10441. const t = this._editorService.getEditor(e);
  10442. return t ? t.isReadOnly() : !1;
  10443. }
  10444. _setEditorFocus(e) {
  10445. this._editorService.focus(e);
  10446. }
  10447. _commandExecutedListener() {
  10448. const e = [Ye.id];
  10449. this.disposeWithMe(
  10450. this._commandService.onCommandExecuted((t) => {
  10451. var o;
  10452. if (e.includes(t.id)) {
  10453. const s = t.params, { unitId: r } = s, i = (o = this._docSelectionManagerService.__getCurrentSelection()) == null ? void 0 : o.unitId;
  10454. if (r !== i)
  10455. return;
  10456. this._docSelectionManagerService.refreshSelection();
  10457. }
  10458. })
  10459. );
  10460. }
  10461. _skeletonListener() {
  10462. this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((e) => {
  10463. if (!e) return;
  10464. const { unitId: t } = this._context;
  10465. if (!to(t)) {
  10466. this._docSelectionRenderService.focus();
  10467. const r = this._context.unit.getSnapshot(), i = ea(r);
  10468. this._docSelectionManagerService.replaceDocRanges([
  10469. {
  10470. startOffset: i,
  10471. endOffset: i
  10472. }
  10473. ], {
  10474. unitId: t,
  10475. subUnitId: t
  10476. }, !1);
  10477. }
  10478. }));
  10479. }
  10480. };
  10481. us = pg([
  10482. Ot(1, y),
  10483. Ot(2, He),
  10484. Ot(3, Q),
  10485. Ot(4, z(Se)),
  10486. Ot(5, z(ie)),
  10487. Ot(6, z(G))
  10488. ], us);
  10489. var mg = Object.defineProperty, Eg = Object.getOwnPropertyDescriptor, Sg = (n, e, t, o) => {
  10490. for (var s = o > 1 ? void 0 : o ? Eg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10491. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10492. return o && s && mg(e, t, s), s;
  10493. }, ft = (n, e) => (t, o) => e(t, o, n);
  10494. let hs = class extends ue {
  10495. constructor(n, e, t, o, s, r, i, a) {
  10496. 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, !0), 20);
  10497. }
  10498. _initRenderRefresher() {
  10499. this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
  10500. if (n == null)
  10501. return;
  10502. const { unitId: e, scene: t } = this._context;
  10503. this._editorService.isEditor(e) || this.disposeWithMe(t.onMouseWheel$.subscribeEvent((o) => {
  10504. if (!o.ctrlKey || !this._contextService.getContextValue(hn))
  10505. return;
  10506. const s = this._univerInstanceService.getCurrentUniverDocInstance();
  10507. if (!s)
  10508. return;
  10509. const { documentFlavor: r } = s.getSnapshot().documentStyle;
  10510. if (r === ye.MODERN)
  10511. return;
  10512. const i = Math.abs(o.deltaX);
  10513. let a = i < 40 ? 0.2 : i < 80 ? 0.4 : 0.2;
  10514. a *= o.deltaY > 0 ? -1 : 1, t.scaleX < 1 && (a /= 2);
  10515. const c = s.zoomRatio;
  10516. let A = +Number.parseFloat(`${c + a}`).toFixed(1);
  10517. A = A >= 4 ? 4 : A <= 0.1 ? 0.1 : A, this._commandService.executeCommand(ss.id, {
  10518. zoomRatio: A,
  10519. unitId: s.getUnitId()
  10520. }), o.preventDefault();
  10521. }));
  10522. });
  10523. }
  10524. _initSkeletonListener() {
  10525. this.disposeWithMe(this._docSkeletonManagerService.currentSkeleton$.subscribe((n) => {
  10526. if (n == null)
  10527. return;
  10528. const e = this._univerInstanceService.getCurrentUniverDocInstance();
  10529. if (!e) return;
  10530. const t = e.zoomRatio || 1;
  10531. this.updateViewZoom(t, !1);
  10532. }));
  10533. }
  10534. _initCommandExecutedListener() {
  10535. const n = [Ye.id];
  10536. this.disposeWithMe(this._commandService.onCommandExecuted((e) => {
  10537. if (n.includes(e.id) && e.params.unitId === this._context.unitId) {
  10538. const o = this._context.unit.zoomRatio || 1;
  10539. this.updateViewZoom(o);
  10540. }
  10541. })), this.disposeWithMe(
  10542. this._commandService.beforeCommandExecuted((e) => {
  10543. e.id === Co.id && this._commandService.executeCommand(ss.id, {
  10544. zoomRatio: 1,
  10545. unitId: this._context.unitId
  10546. });
  10547. })
  10548. );
  10549. }
  10550. updateViewZoom(n, e = !0) {
  10551. var o;
  10552. const t = rt(this._context);
  10553. 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();
  10554. }
  10555. };
  10556. hs = Sg([
  10557. ft(1, ms),
  10558. ft(2, z(ie)),
  10559. ft(3, Q),
  10560. ft(4, y),
  10561. ft(5, z(G)),
  10562. ft(6, He),
  10563. ft(7, z(ar))
  10564. ], hs);
  10565. var Ig = Object.defineProperty, Cg = Object.getOwnPropertyDescriptor, vg = (n, e, t, o) => {
  10566. for (var s = o > 1 ? void 0 : o ? Cg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10567. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10568. return o && s && Ig(e, t, s), s;
  10569. }, $t = (n, e) => (t, o) => e(t, o, n);
  10570. const ui = 300;
  10571. let Kn = class extends At {
  10572. constructor(e, t, o, s, r) {
  10573. super();
  10574. x(this, "_docStateChange$", new Le(null));
  10575. x(this, "docStateChange$", this._docStateChange$.asObservable());
  10576. // This cache used for history compose.
  10577. x(this, "_historyStateCache", /* @__PURE__ */ new Map());
  10578. // This cache used for collaboration state compose.
  10579. x(this, "_changeStateCache", /* @__PURE__ */ new Map());
  10580. x(this, "_historyTimer", null);
  10581. x(this, "_changeStateCacheTimer", null);
  10582. this._undoRedoService = e, this._commandService = t, this._univerInstanceService = o, this._docStateEmitService = s, this._renderManagerService = r, this._initialize(), this._listenDocStateChange();
  10583. }
  10584. getStateCache(e) {
  10585. var t, o;
  10586. return {
  10587. history: (t = this._historyStateCache.get(e)) != null ? t : [],
  10588. collaboration: (o = this._changeStateCache.get(e)) != null ? o : []
  10589. };
  10590. }
  10591. setStateCache(e, t) {
  10592. this._historyStateCache.set(e, t.history), this._changeStateCache.set(e, t.collaboration);
  10593. }
  10594. _setChangeState(e) {
  10595. this._cacheChangeState(e, "history"), this._cacheChangeState(e, "collaboration");
  10596. }
  10597. _initialize() {
  10598. this.disposeWithMe(
  10599. this._commandService.beforeCommandExecuted((e) => {
  10600. if (e.id === hr || e.id === gr) {
  10601. const t = this._univerInstanceService.getCurrentUniverDocInstance();
  10602. if (t == null)
  10603. return;
  10604. const o = t.getUnitId();
  10605. this._pushHistory(o), this._emitChangeState(o);
  10606. }
  10607. })
  10608. );
  10609. }
  10610. _listenDocStateChange() {
  10611. this._docStateEmitService.docStateChangeParams$.pipe(st(this.dispose$)).subscribe((e) => {
  10612. var a;
  10613. if (e == null)
  10614. return;
  10615. const { isCompositionEnd: t, isSync: o, syncer: s, ...r } = e, i = (a = this._renderManagerService.getRenderById(o ? s : e.unitId)) == null ? void 0 : a.with(Ro);
  10616. if (i != null) {
  10617. if (t) {
  10618. const c = i.fetchComposedUndoRedoMutationParams();
  10619. if (c == null)
  10620. throw new Error("historyParams is null in RichTextEditingMutation");
  10621. const { undoMutationParams: A, redoMutationParams: l, previousActiveRange: d } = c;
  10622. r.redoState.actions = l.actions, r.undoState.actions = A.actions, r.undoState.textRanges = [d];
  10623. }
  10624. this._setChangeState(r);
  10625. }
  10626. });
  10627. }
  10628. _cacheChangeState(e, t = "history") {
  10629. const { trigger: o, unitId: s, noHistory: r, debounce: i = !1 } = e;
  10630. if (r || o == null || t === "history" && (o === gr || o === hr))
  10631. return;
  10632. const a = t === "history" ? this._historyStateCache : this._changeStateCache, c = t === "history" ? this._pushHistory.bind(this) : this._emitChangeState.bind(this);
  10633. if (a.has(s)) {
  10634. const A = a.get(s);
  10635. A == null || A.push(e);
  10636. } else
  10637. a.set(s, [e]);
  10638. i ? t === "history" ? (this._historyTimer && clearTimeout(this._historyTimer), this._historyTimer = setTimeout(() => {
  10639. c(s);
  10640. }, ui)) : (this._changeStateCacheTimer && clearTimeout(this._changeStateCacheTimer), this._changeStateCacheTimer = setTimeout(() => {
  10641. c(s);
  10642. }, ui)) : c(s);
  10643. }
  10644. _pushHistory(e) {
  10645. const t = this._undoRedoService, o = this._historyStateCache.get(e);
  10646. if (!Array.isArray(o) || o.length === 0)
  10647. return;
  10648. const s = o.length, r = o[0].commandId, i = o[0], a = o[s - 1], c = {
  10649. unitId: e,
  10650. actions: o.reduce((l, d) => k.compose(l, d.redoState.actions), null),
  10651. textRanges: a.redoState.textRanges
  10652. }, A = {
  10653. unitId: e,
  10654. // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
  10655. actions: o.reverse().reduce((l, d) => k.compose(l, d.undoState.actions), null),
  10656. textRanges: i.undoState.textRanges
  10657. };
  10658. t.pushUndoRedo({
  10659. unitID: e,
  10660. undoMutations: [{ id: r, params: A }],
  10661. redoMutations: [{ id: r, params: c }]
  10662. }), o.length = 0;
  10663. }
  10664. _emitChangeState(e) {
  10665. const t = this._changeStateCache.get(e);
  10666. if (!Array.isArray(t) || t.length === 0)
  10667. return;
  10668. const o = t.length, { commandId: s, trigger: r, segmentId: i, noHistory: a, debounce: c } = t[0], A = t[0], l = t[o - 1], d = {
  10669. unitId: e,
  10670. actions: t.reduce((g, f) => k.compose(g, f.redoState.actions), null),
  10671. textRanges: l.redoState.textRanges
  10672. }, h = {
  10673. unitId: e,
  10674. // Always need to put undoParams after redoParams, because `reverse` will change the `cacheStates` order.
  10675. actions: t.reverse().reduce((g, f) => k.compose(g, f.undoState.actions), null),
  10676. textRanges: A.undoState.textRanges
  10677. }, u = {
  10678. commandId: s,
  10679. unitId: e,
  10680. trigger: r,
  10681. redoState: d,
  10682. undoState: h,
  10683. segmentId: i,
  10684. noHistory: a,
  10685. debounce: c
  10686. };
  10687. t.length = 0, this._docStateChange$.next(u);
  10688. }
  10689. };
  10690. Kn = vg([
  10691. $t(0, z(eo)),
  10692. $t(1, y),
  10693. $t(2, Q),
  10694. $t(3, z(ic)),
  10695. $t(4, fe)
  10696. ], Kn);
  10697. var Rg = Object.defineProperty, bg = Object.getOwnPropertyDescriptor, xg = (n, e, t, o) => {
  10698. for (var s = o > 1 ? void 0 : o ? bg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10699. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10700. return o && s && Rg(e, t, s), s;
  10701. }, hi = (n, e) => (t, o) => e(t, o, n);
  10702. const gi = "univer-doc-main-canvas";
  10703. let Xn = class extends At {
  10704. constructor(n, e) {
  10705. super(), this._instanceSrv = n, this._renderManagerService = e, this._init();
  10706. }
  10707. _init() {
  10708. this._renderManagerService.createRender$.pipe(st(this.dispose$)).subscribe((n) => this._createRenderWithId(n)), this._instanceSrv.getAllUnitsForType(_.UNIVER_DOC).forEach((n) => this._createRenderer(n)), this._instanceSrv.getTypeOfUnitAdded$(_.UNIVER_DOC).pipe(st(this.dispose$)).subscribe((n) => this._createRenderer(n)), this._instanceSrv.getTypeOfUnitDisposed$(_.UNIVER_DOC).pipe(st(this.dispose$)).subscribe((n) => this._disposeRenderer(n));
  10709. }
  10710. _createRenderer(n) {
  10711. var o;
  10712. const e = n.getUnitId(), t = (o = this._instanceSrv.getCurrentUnitForType(_.UNIVER_DOC)) == null ? void 0 : o.getUnitId();
  10713. this._renderManagerService.created$.subscribe((s) => {
  10714. s.unitId === t && (s.engine.getCanvas().setId(gi), s.engine.getCanvas().getContext().setId(gi));
  10715. }), this._renderManagerService.has(e) || (this._createRenderWithId(e), this._renderManagerService.setCurrent(e));
  10716. }
  10717. _createRenderWithId(n) {
  10718. this._renderManagerService.createRender(n);
  10719. }
  10720. _disposeRenderer(n) {
  10721. const e = n.getUnitId();
  10722. this._renderManagerService.removeRender(e);
  10723. }
  10724. };
  10725. Xn = xg([
  10726. hi(0, Q),
  10727. hi(1, fe)
  10728. ], Xn);
  10729. class Og extends ue {
  10730. constructor() {
  10731. super(...arguments);
  10732. x(this, "_currentSelectorId");
  10733. x(this, "_selectionChange$", new Ee());
  10734. x(this, "selectionChange$", this._selectionChange$.asObservable());
  10735. x(this, "_openSelector$", new Ee());
  10736. x(this, "openSelector$", this._openSelector$.asObservable());
  10737. x(this, "_selectorModalVisible$", new Le(!1));
  10738. x(this, "selectorModalVisible$", this._selectorModalVisible$.asObservable());
  10739. }
  10740. get selectorModalVisible() {
  10741. return this._selectorModalVisible$.getValue();
  10742. }
  10743. setCurrentSelectorId(t) {
  10744. this._currentSelectorId = t;
  10745. }
  10746. getCurrentSelectorId() {
  10747. return this._currentSelectorId;
  10748. }
  10749. selectionChange(t) {
  10750. this._currentSelectorId && this._selectionChange$.next(t);
  10751. }
  10752. openSelector() {
  10753. this._openSelector$.next(null);
  10754. }
  10755. triggerModalVisibleChange(t) {
  10756. this._selectorModalVisible$.next(t);
  10757. }
  10758. }
  10759. const Tg = ps(
  10760. "univer.range-selector.service"
  10761. ), yg = {
  10762. id: ln.id,
  10763. preconditions: bl,
  10764. binding: j.ENTER
  10765. }, Bg = {
  10766. id: So.id,
  10767. preconditions: de,
  10768. binding: j.BACKSPACE
  10769. }, Mg = {
  10770. id: ma.id,
  10771. preconditions: de,
  10772. binding: j.DELETE
  10773. }, _g = {
  10774. id: at.id,
  10775. binding: j.ARROW_UP,
  10776. preconditions: de,
  10777. staticParameters: {
  10778. direction: se.UP
  10779. }
  10780. }, Pg = {
  10781. id: at.id,
  10782. binding: j.ARROW_DOWN,
  10783. preconditions: de,
  10784. staticParameters: {
  10785. direction: se.DOWN
  10786. }
  10787. }, Dg = {
  10788. id: at.id,
  10789. binding: j.ARROW_LEFT,
  10790. preconditions: de,
  10791. staticParameters: {
  10792. direction: se.LEFT
  10793. }
  10794. }, wg = {
  10795. id: at.id,
  10796. binding: j.ARROW_RIGHT,
  10797. preconditions: de,
  10798. staticParameters: {
  10799. direction: se.RIGHT
  10800. }
  10801. }, Ng = {
  10802. id: ct.id,
  10803. binding: j.ARROW_UP | K.SHIFT,
  10804. preconditions: de,
  10805. staticParameters: {
  10806. direction: se.UP
  10807. }
  10808. }, Qg = {
  10809. id: ct.id,
  10810. binding: j.ARROW_DOWN | K.SHIFT,
  10811. preconditions: de,
  10812. staticParameters: {
  10813. direction: se.DOWN
  10814. }
  10815. }, Ug = {
  10816. id: ct.id,
  10817. binding: j.ARROW_LEFT | K.SHIFT,
  10818. preconditions: de,
  10819. staticParameters: {
  10820. direction: se.LEFT
  10821. }
  10822. }, Lg = {
  10823. id: ct.id,
  10824. binding: j.ARROW_RIGHT | K.SHIFT,
  10825. preconditions: de,
  10826. staticParameters: {
  10827. direction: se.RIGHT
  10828. }
  10829. }, Fg = {
  10830. id: ya.id,
  10831. binding: j.A | K.CTRL_COMMAND,
  10832. preconditions: (n) => n.getContextValue(Ss) && (n.getContextValue(hn) || n.getContextValue(wn))
  10833. };
  10834. var Na = Object.defineProperty, Hg = Object.getOwnPropertyDescriptor, kg = (n, e, t) => e in n ? Na(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t, Vg = (n, e, t, o) => {
  10835. for (var s = o > 1 ? void 0 : o ? Hg(e, t) : e, r = n.length - 1, i; r >= 0; r--)
  10836. (i = n[r]) && (s = (o ? i(e, t, s) : i(s)) || s);
  10837. return o && s && Na(e, t, s), s;
  10838. }, en = (n, e) => (t, o) => e(t, o, n), jg = (n, e, t) => kg(n, e + "", t);
  10839. let gs = class extends oc {
  10840. // static override type = UniverInstanceType.UNIVER_DOC;
  10841. constructor(n = qr, e, t, o, s, r) {
  10842. super(), this._config = n, this._injector = e, this._renderManagerSrv = t, this._commandService = o, this._logService = s, this._configService = r;
  10843. const { menu: i, ...a } = sc(
  10844. {},
  10845. qr,
  10846. this._config
  10847. );
  10848. i && this._configService.setConfig("menu", i, { merge: !0 }), this._configService.setConfig(Us, a), this._initDependencies(e), this._initializeShortcut(), this._initCommand();
  10849. }
  10850. onReady() {
  10851. this._initRenderBasics(), this._markDocAsFocused(), fr(this._injector, [
  10852. [Kn],
  10853. [Xn]
  10854. ]);
  10855. }
  10856. onRendered() {
  10857. this._initUI(), this._initRenderModules(), fr(this._injector, [
  10858. [jn],
  10859. [Wn],
  10860. [Lt],
  10861. [zn],
  10862. // FIXME: LifecycleStages.Rendered must be used, otherwise the menu cannot be added to the DOM, but the sheet ui
  10863. // plugin can be added in LifecycleStages.Ready
  10864. [Hn]
  10865. ]);
  10866. }
  10867. _initCommand() {
  10868. [
  10869. So,
  10870. ma,
  10871. Vt,
  10872. jt,
  10873. Wt,
  10874. zt,
  10875. Ct,
  10876. Gt,
  10877. Pt,
  10878. Dt,
  10879. wt,
  10880. fn,
  10881. Nt,
  10882. lt,
  10883. Ra,
  10884. Vs,
  10885. dn,
  10886. js,
  10887. pa,
  10888. Ws,
  10889. Ye,
  10890. ho,
  10891. uo,
  10892. pn,
  10893. go,
  10894. fo,
  10895. po,
  10896. et,
  10897. mo,
  10898. ba,
  10899. Ia,
  10900. er,
  10901. tr,
  10902. Fd,
  10903. nr,
  10904. or,
  10905. Xs,
  10906. Js,
  10907. In,
  10908. Ps,
  10909. Ma,
  10910. _t,
  10911. Ao,
  10912. ln,
  10913. es,
  10914. lo,
  10915. ws,
  10916. Ns,
  10917. da,
  10918. Ba,
  10919. Co,
  10920. qe,
  10921. fa,
  10922. Qt,
  10923. gA,
  10924. Vi,
  10925. fA,
  10926. ss,
  10927. ya,
  10928. rr,
  10929. at,
  10930. ct,
  10931. mA
  10932. ].forEach((n) => {
  10933. this._commandService.registerCommand(n);
  10934. }), [Fn, qs, Ks].forEach((n) => this.disposeWithMe(this._commandService.registerMultipleCommand(n)));
  10935. }
  10936. _initializeShortcut() {
  10937. [
  10938. _g,
  10939. Pg,
  10940. wg,
  10941. Dg,
  10942. Ng,
  10943. Qg,
  10944. Ug,
  10945. Lg,
  10946. Fg,
  10947. Bg,
  10948. Mg,
  10949. yg,
  10950. Ol
  10951. ].forEach((n) => {
  10952. this._injector.get(ro).registerShortcut(n);
  10953. });
  10954. }
  10955. _initDependencies(n) {
  10956. rc([
  10957. [Yn],
  10958. [qn],
  10959. [Hn],
  10960. [jn],
  10961. [zn],
  10962. [Wn],
  10963. [Vn],
  10964. [Lt],
  10965. [He, { useClass: Jo }],
  10966. [Tg, { useClass: Og }],
  10967. [Sn, { useClass: ns }],
  10968. [is],
  10969. [Xn],
  10970. [Kn],
  10971. [Et],
  10972. [Je]
  10973. ], this._config.override).forEach((t) => n.add(t));
  10974. }
  10975. _markDocAsFocused() {
  10976. const n = this._injector.get(Q), e = this._injector.get(He);
  10977. try {
  10978. const t = n.getCurrentUnitForType(_.UNIVER_DOC);
  10979. if (!t) return;
  10980. const o = t.getUnitId();
  10981. e.isEditor(o) || n.focusUnit(t.getUnitId());
  10982. } catch (t) {
  10983. this._logService.warn(t);
  10984. }
  10985. }
  10986. _initUI() {
  10987. this._injector.get(Vn);
  10988. }
  10989. _initRenderBasics() {
  10990. [
  10991. [ie],
  10992. [Se],
  10993. [ac],
  10994. [ar],
  10995. [Ro],
  10996. [os],
  10997. [hs]
  10998. ].forEach((n) => {
  10999. this._renderManagerSrv.registerRenderModule(_.UNIVER_DOC, n);
  11000. });
  11001. }
  11002. _initRenderModules() {
  11003. [
  11004. [Gn],
  11005. [kn],
  11006. [us],
  11007. [Zo],
  11008. [ds],
  11009. [cs],
  11010. [as],
  11011. [Yn],
  11012. [ls],
  11013. [As],
  11014. [qn]
  11015. ].forEach((n) => {
  11016. this._renderManagerSrv.registerRenderModule(_.UNIVER_DOC, n);
  11017. });
  11018. }
  11019. };
  11020. jg(gs, "pluginName", rA);
  11021. gs = Vg([
  11022. nc(xc),
  11023. en(1, z(so)),
  11024. en(2, fe),
  11025. en(3, y),
  11026. en(4, fs),
  11027. en(5, Rs)
  11028. ], gs);
  11029. export {
  11030. Ao as AfterSpaceCommand,
  11031. fo as AlignCenterCommand,
  11032. mo as AlignJustifyCommand,
  11033. go as AlignLeftCommand,
  11034. et as AlignOperationCommand,
  11035. po as AlignRightCommand,
  11036. Ra as BreakLineCommand,
  11037. uo as BulletListCommand,
  11038. es as ChangeListNestingLevelCommand,
  11039. Pn as ChangeListNestingLevelType,
  11040. lo as ChangeListTypeCommand,
  11041. ws as CheckListCommand,
  11042. fA as CoverContentCommand,
  11043. ba as CreateDocTableCommand,
  11044. Qt as CutContentCommand,
  11045. iA as DOCS_COMPONENT_BACKGROUND_LAYER_INDEX,
  11046. xr as DOCS_COMPONENT_DEFAULT_Z_INDEX,
  11047. aA as DOCS_COMPONENT_HEADER_LAYER_INDEX,
  11048. Oo as DOCS_COMPONENT_MAIN_LAYER_INDEX,
  11049. We as DOCS_VIEW_KEY,
  11050. rA as DOC_UI_PLUGIN_NAME,
  11051. ai as DOC_VERTICAL_PADDING,
  11052. sA as DefaultDocContainerConfig,
  11053. oA as DefaultToolbarConfig,
  11054. dn as DeleteCommand,
  11055. js as DeleteCustomBlockCommand,
  11056. So as DeleteLeftCommand,
  11057. ma as DeleteRightCommand,
  11058. Et as DocAutoFormatService,
  11059. kn as DocBackScrollRenderController,
  11060. is as DocCanvasPopManagerService,
  11061. Fn as DocCopyCommand,
  11062. sr as DocCreateTableOperation,
  11063. qs as DocCutCommand,
  11064. Gn as DocEventManagerService,
  11065. Ro as DocIMEInputManagerService,
  11066. Ks as DocPasteCommand,
  11067. os as DocRenderController,
  11068. ya as DocSelectAllCommand,
  11069. Se as DocSelectionRenderService,
  11070. Kn as DocStateChangeManagerService,
  11071. Js as DocTableDeleteColumnsCommand,
  11072. Xs as DocTableDeleteRowsCommand,
  11073. In as DocTableDeleteTableCommand,
  11074. Fd as DocTableInsertColumnCommand,
  11075. nr as DocTableInsertColumnLeftCommand,
  11076. or as DocTableInsertColumnRightCommand,
  11077. er as DocTableInsertRowAboveCommand,
  11078. tr as DocTableInsertRowBellowCommand,
  11079. Ia as DocTableInsertRowCommand,
  11080. Ma as DocTableTabCommand,
  11081. Hn as DocUIController,
  11082. Xn as DocsRenderService,
  11083. Zu as DocsUIMenuSchema,
  11084. DA as Editor,
  11085. Ed as EditorInsertTextCommandId,
  11086. Jo as EditorService,
  11087. ln as EnterCommand,
  11088. Sn as IDocClipboardService,
  11089. He as IEditorService,
  11090. Ba as IMEInputCommand,
  11091. Tg as IRangeSelectorService,
  11092. fa as InnerPasteCommand,
  11093. Vs as InsertCommand,
  11094. pn as ListOperationCommand,
  11095. Ws as MergeTwoParagraphCommand,
  11096. at as MoveCursorOperation,
  11097. ct as MoveSelectionOperation,
  11098. ef as NORMAL_TEXT_SELECTION_PLUGIN_NAME,
  11099. it as NodePositionConvertToCursor,
  11100. Gi as NodePositionConvertToRectRange,
  11101. ho as OrderListCommand,
  11102. xd as PastePluginLark,
  11103. Od as PastePluginUniver,
  11104. Td as PastePluginWord,
  11105. da as QuickListCommand,
  11106. Og as RangeSelectorService,
  11107. Yi as RectRange,
  11108. gA as ReplaceContentCommand,
  11109. Vi as ReplaceSnapshotCommand,
  11110. mA as ReplaceTextRunsCommand,
  11111. fn as ResetInlineFormatTextBackgroundColorCommand,
  11112. cf as RichTextEditor,
  11113. ss as SetDocZoomRatioCommand,
  11114. Ye as SetDocZoomRatioOperation,
  11115. Vt as SetInlineFormatBoldCommand,
  11116. lt as SetInlineFormatCommand,
  11117. Dt as SetInlineFormatFontFamilyCommand,
  11118. Pt as SetInlineFormatFontSizeCommand,
  11119. jt as SetInlineFormatItalicCommand,
  11120. zt as SetInlineFormatStrikethroughCommand,
  11121. Ct as SetInlineFormatSubscriptCommand,
  11122. Gt as SetInlineFormatSuperscriptCommand,
  11123. Nt as SetInlineFormatTextBackgroundColorCommand,
  11124. wt as SetInlineFormatTextColorCommand,
  11125. Wt as SetInlineFormatUnderlineCommand,
  11126. qo as TEXT_RANGE_LAYER_INDEX,
  11127. _t as TabCommand,
  11128. Mt as TextRange,
  11129. Ns as ToggleCheckListCommand,
  11130. gs as UniverDocsUIPlugin,
  11131. pa as UpdateCommand,
  11132. Xe as VIEWPORT_KEY,
  11133. nf as addCustomDecorationBySelectionFactory,
  11134. AA as addCustomDecorationFactory,
  11135. ko as calcDocRangePositions,
  11136. Mo as convertPositionsToRectRanges,
  11137. of as deleteCustomDecorationFactory,
  11138. rf as docDrawingPositionToTransform,
  11139. ua as genTableSource,
  11140. va as generateParagraphs,
  11141. Mn as getAnchorBounding,
  11142. yA as getCanvasOffsetByEngine,
  11143. ke as getCommandSkeleton,
  11144. zs as getCursorWhenDelete,
  11145. dd as getCustomBlockIdsInSelections,
  11146. md as getCutActionsFromDocRanges,
  11147. cA as getDocObject,
  11148. tf as getDocObjectById,
  11149. Fs as getEmptyTableCell,
  11150. Hs as getEmptyTableRow,
  11151. Bs as getLineBounding,
  11152. yr as getOneTextSelectionRange,
  11153. Qs as getParagraphsInRange,
  11154. mn as getParagraphsInRanges,
  11155. le as getRichTextEditPath,
  11156. ks as getTableColumn,
  11157. sf as hasParagraphInTable,
  11158. Wi as isInSameTableCell,
  11159. SA as isValidRectRange,
  11160. rt as neoGetDocObject,
  11161. af as transformToDocDrawingPosition,
  11162. lA as useKeyboardEvent,
  11163. dA as useResize,
  11164. de as whenDocAndEditorFocused
  11165. };