1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770 |
- /******/ (function() { // webpackBootstrap
- /******/ var __webpack_modules__ = ({
- /***/ 6411:
- /***/ (function(module, exports) {
- var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- autosize 4.0.4
- license: MIT
- http://www.jacklmoore.com/autosize
- */
- (function (global, factory) {
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else { var mod; }
- })(this, function (module, exports) {
- 'use strict';
- var map = typeof Map === "function" ? new Map() : function () {
- var keys = [];
- var values = [];
- return {
- has: function has(key) {
- return keys.indexOf(key) > -1;
- },
- get: function get(key) {
- return values[keys.indexOf(key)];
- },
- set: function set(key, value) {
- if (keys.indexOf(key) === -1) {
- keys.push(key);
- values.push(value);
- }
- },
- delete: function _delete(key) {
- var index = keys.indexOf(key);
- if (index > -1) {
- keys.splice(index, 1);
- values.splice(index, 1);
- }
- }
- };
- }();
- var createEvent = function createEvent(name) {
- return new Event(name, { bubbles: true });
- };
- try {
- new Event('test');
- } catch (e) {
- // IE does not support `new Event()`
- createEvent = function createEvent(name) {
- var evt = document.createEvent('Event');
- evt.initEvent(name, true, false);
- return evt;
- };
- }
- function assign(ta) {
- if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
- var heightOffset = null;
- var clientWidth = null;
- var cachedHeight = null;
- function init() {
- var style = window.getComputedStyle(ta, null);
- if (style.resize === 'vertical') {
- ta.style.resize = 'none';
- } else if (style.resize === 'both') {
- ta.style.resize = 'horizontal';
- }
- if (style.boxSizing === 'content-box') {
- heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
- } else {
- heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
- }
- // Fix when a textarea is not on document body and heightOffset is Not a Number
- if (isNaN(heightOffset)) {
- heightOffset = 0;
- }
- update();
- }
- function changeOverflow(value) {
- {
- // Chrome/Safari-specific fix:
- // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
- // made available by removing the scrollbar. The following forces the necessary text reflow.
- var width = ta.style.width;
- ta.style.width = '0px';
- // Force reflow:
- /* jshint ignore:start */
- ta.offsetWidth;
- /* jshint ignore:end */
- ta.style.width = width;
- }
- ta.style.overflowY = value;
- }
- function getParentOverflows(el) {
- var arr = [];
- while (el && el.parentNode && el.parentNode instanceof Element) {
- if (el.parentNode.scrollTop) {
- arr.push({
- node: el.parentNode,
- scrollTop: el.parentNode.scrollTop
- });
- }
- el = el.parentNode;
- }
- return arr;
- }
- function resize() {
- if (ta.scrollHeight === 0) {
- // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
- return;
- }
- var overflows = getParentOverflows(ta);
- var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
- ta.style.height = '';
- ta.style.height = ta.scrollHeight + heightOffset + 'px';
- // used to check if an update is actually necessary on window.resize
- clientWidth = ta.clientWidth;
- // prevents scroll-position jumping
- overflows.forEach(function (el) {
- el.node.scrollTop = el.scrollTop;
- });
- if (docTop) {
- document.documentElement.scrollTop = docTop;
- }
- }
- function update() {
- resize();
- var styleHeight = Math.round(parseFloat(ta.style.height));
- var computed = window.getComputedStyle(ta, null);
- // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
- var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
- // The actual height not matching the style height (set via the resize method) indicates that
- // the max-height has been exceeded, in which case the overflow should be allowed.
- if (actualHeight < styleHeight) {
- if (computed.overflowY === 'hidden') {
- changeOverflow('scroll');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- } else {
- // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
- if (computed.overflowY !== 'hidden') {
- changeOverflow('hidden');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- }
- if (cachedHeight !== actualHeight) {
- cachedHeight = actualHeight;
- var evt = createEvent('autosize:resized');
- try {
- ta.dispatchEvent(evt);
- } catch (err) {
- // Firefox will throw an error on dispatchEvent for a detached element
- // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
- }
- }
- }
- var pageResize = function pageResize() {
- if (ta.clientWidth !== clientWidth) {
- update();
- }
- };
- var destroy = function (style) {
- window.removeEventListener('resize', pageResize, false);
- ta.removeEventListener('input', update, false);
- ta.removeEventListener('keyup', update, false);
- ta.removeEventListener('autosize:destroy', destroy, false);
- ta.removeEventListener('autosize:update', update, false);
- Object.keys(style).forEach(function (key) {
- ta.style[key] = style[key];
- });
- map.delete(ta);
- }.bind(ta, {
- height: ta.style.height,
- resize: ta.style.resize,
- overflowY: ta.style.overflowY,
- overflowX: ta.style.overflowX,
- wordWrap: ta.style.wordWrap
- });
- ta.addEventListener('autosize:destroy', destroy, false);
- // IE9 does not fire onpropertychange or oninput for deletions,
- // so binding to onkeyup to catch most of those events.
- // There is no way that I know of to detect something like 'cut' in IE9.
- if ('onpropertychange' in ta && 'oninput' in ta) {
- ta.addEventListener('keyup', update, false);
- }
- window.addEventListener('resize', pageResize, false);
- ta.addEventListener('input', update, false);
- ta.addEventListener('autosize:update', update, false);
- ta.style.overflowX = 'hidden';
- ta.style.wordWrap = 'break-word';
- map.set(ta, {
- destroy: destroy,
- update: update
- });
- init();
- }
- function destroy(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.destroy();
- }
- }
- function update(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.update();
- }
- }
- var autosize = null;
- // Do nothing in Node.js environment and IE8 (or lower)
- if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
- autosize = function autosize(el) {
- return el;
- };
- autosize.destroy = function (el) {
- return el;
- };
- autosize.update = function (el) {
- return el;
- };
- } else {
- autosize = function autosize(el, options) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], function (x) {
- return assign(x, options);
- });
- }
- return el;
- };
- autosize.destroy = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], destroy);
- }
- return el;
- };
- autosize.update = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], update);
- }
- return el;
- };
- }
- exports.default = autosize;
- module.exports = exports['default'];
- });
- /***/ }),
- /***/ 4403:
- /***/ (function(module, exports) {
- var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- Copyright (c) 2018 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
- */
- /* global define */
- (function () {
- 'use strict';
- var hasOwn = {}.hasOwnProperty;
- var nativeCodeString = '[native code]';
- function classNames() {
- var classes = [];
- for (var i = 0; i < arguments.length; i++) {
- var arg = arguments[i];
- if (!arg) continue;
- var argType = typeof arg;
- if (argType === 'string' || argType === 'number') {
- classes.push(arg);
- } else if (Array.isArray(arg)) {
- if (arg.length) {
- var inner = classNames.apply(null, arg);
- if (inner) {
- classes.push(inner);
- }
- }
- } else if (argType === 'object') {
- if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
- classes.push(arg.toString());
- continue;
- }
- for (var key in arg) {
- if (hasOwn.call(arg, key) && arg[key]) {
- classes.push(key);
- }
- }
- }
- }
- return classes.join(' ');
- }
- if ( true && module.exports) {
- classNames.default = classNames;
- module.exports = classNames;
- } else if (true) {
- // register as 'classnames', consistent with npm package name
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
- return classNames;
- }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else {}
- }());
- /***/ }),
- /***/ 4827:
- /***/ (function(module) {
- // This code has been refactored for 140 bytes
- // You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
- var computedStyle = function (el, prop, getComputedStyle) {
- getComputedStyle = window.getComputedStyle;
- // In one fell swoop
- return (
- // If we have getComputedStyle
- getComputedStyle ?
- // Query it
- // TODO: From CSS-Query notes, we might need (node, null) for FF
- getComputedStyle(el) :
- // Otherwise, we are in IE and use currentStyle
- el.currentStyle
- )[
- // Switch to camelCase for CSSOM
- // DEV: Grabbed from jQuery
- // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
- // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
- prop.replace(/-(\w)/gi, function (word, letter) {
- return letter.toUpperCase();
- })
- ];
- };
- module.exports = computedStyle;
- /***/ }),
- /***/ 9894:
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
- // Load in dependencies
- var computedStyle = __webpack_require__(4827);
- /**
- * Calculate the `line-height` of a given node
- * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
- * @returns {Number} `line-height` of the element in pixels
- */
- function lineHeight(node) {
- // Grab the line-height via style
- var lnHeightStr = computedStyle(node, 'line-height');
- var lnHeight = parseFloat(lnHeightStr, 10);
- // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
- if (lnHeightStr === lnHeight + '') {
- // Save the old lineHeight style and update the em unit to the element
- var _lnHeightStyle = node.style.lineHeight;
- node.style.lineHeight = lnHeightStr + 'em';
- // Calculate the em based height
- lnHeightStr = computedStyle(node, 'line-height');
- lnHeight = parseFloat(lnHeightStr, 10);
- // Revert the lineHeight style
- if (_lnHeightStyle) {
- node.style.lineHeight = _lnHeightStyle;
- } else {
- delete node.style.lineHeight;
- }
- }
- // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
- // DEV: `em` units are converted to `pt` in IE6
- // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
- if (lnHeightStr.indexOf('pt') !== -1) {
- lnHeight *= 4;
- lnHeight /= 3;
- // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
- } else if (lnHeightStr.indexOf('mm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 25.4;
- // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
- } else if (lnHeightStr.indexOf('cm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 2.54;
- // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
- } else if (lnHeightStr.indexOf('in') !== -1) {
- lnHeight *= 96;
- // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
- } else if (lnHeightStr.indexOf('pc') !== -1) {
- lnHeight *= 16;
- }
- // Continue our computation
- lnHeight = Math.round(lnHeight);
- // If the line-height is "normal", calculate by font-size
- if (lnHeightStr === 'normal') {
- // Create a temporary node
- var nodeName = node.nodeName;
- var _node = document.createElement(nodeName);
- _node.innerHTML = ' ';
- // If we have a text area, reset it to only 1 row
- // https://github.com/twolfson/line-height/issues/4
- if (nodeName.toUpperCase() === 'TEXTAREA') {
- _node.setAttribute('rows', '1');
- }
- // Set the font-size of the element
- var fontSizeStr = computedStyle(node, 'font-size');
- _node.style.fontSize = fontSizeStr;
- // Remove default padding/border which can affect offset height
- // https://github.com/twolfson/line-height/issues/4
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
- _node.style.padding = '0px';
- _node.style.border = '0px';
- // Append it to the body
- var body = document.body;
- body.appendChild(_node);
- // Assume the line height of the element is the height
- var height = _node.offsetHeight;
- lnHeight = height;
- // Remove our child from the DOM
- body.removeChild(_node);
- }
- // Return the calculated height
- return lnHeight;
- }
- // Export lineHeight
- module.exports = lineHeight;
- /***/ }),
- /***/ 5372:
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var ReactPropTypesSecret = __webpack_require__(9567);
- function emptyFunction() {}
- function emptyFunctionWithReset() {}
- emptyFunctionWithReset.resetWarningCache = emptyFunction;
- module.exports = function() {
- function shim(props, propName, componentName, location, propFullName, secret) {
- if (secret === ReactPropTypesSecret) {
- // It is still safe when called from React.
- return;
- }
- var err = new Error(
- 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
- 'Use PropTypes.checkPropTypes() to call them. ' +
- 'Read more at http://fb.me/use-check-prop-types'
- );
- err.name = 'Invariant Violation';
- throw err;
- };
- shim.isRequired = shim;
- function getShim() {
- return shim;
- };
- // Important!
- // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
- var ReactPropTypes = {
- array: shim,
- bigint: shim,
- bool: shim,
- func: shim,
- number: shim,
- object: shim,
- string: shim,
- symbol: shim,
- any: shim,
- arrayOf: getShim,
- element: shim,
- elementType: shim,
- instanceOf: getShim,
- node: shim,
- objectOf: getShim,
- oneOf: getShim,
- oneOfType: getShim,
- shape: getShim,
- exact: getShim,
- checkPropTypes: emptyFunctionWithReset,
- resetWarningCache: emptyFunction
- };
- ReactPropTypes.PropTypes = ReactPropTypes;
- return ReactPropTypes;
- };
- /***/ }),
- /***/ 2652:
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- if (false) { var throwOnDirectAccess, ReactIs; } else {
- // By explicitly using `prop-types` you are opting into new production behavior.
- // http://fb.me/prop-types-in-prod
- module.exports = __webpack_require__(5372)();
- }
- /***/ }),
- /***/ 9567:
- /***/ (function(module) {
- "use strict";
- /**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
- module.exports = ReactPropTypesSecret;
- /***/ }),
- /***/ 5438:
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
- })();
- var __assign = (this && this.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
- };
- var __rest = (this && this.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
- t[p[i]] = s[p[i]];
- return t;
- };
- exports.__esModule = true;
- var React = __webpack_require__(9196);
- var PropTypes = __webpack_require__(2652);
- var autosize = __webpack_require__(6411);
- var _getLineHeight = __webpack_require__(9894);
- var getLineHeight = _getLineHeight;
- var RESIZED = "autosize:resized";
- /**
- * A light replacement for built-in textarea component
- * which automaticaly adjusts its height to match the content
- */
- var TextareaAutosizeClass = /** @class */ (function (_super) {
- __extends(TextareaAutosizeClass, _super);
- function TextareaAutosizeClass() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- lineHeight: null
- };
- _this.textarea = null;
- _this.onResize = function (e) {
- if (_this.props.onResize) {
- _this.props.onResize(e);
- }
- };
- _this.updateLineHeight = function () {
- if (_this.textarea) {
- _this.setState({
- lineHeight: getLineHeight(_this.textarea)
- });
- }
- };
- _this.onChange = function (e) {
- var onChange = _this.props.onChange;
- _this.currentValue = e.currentTarget.value;
- onChange && onChange(e);
- };
- return _this;
- }
- TextareaAutosizeClass.prototype.componentDidMount = function () {
- var _this = this;
- var _a = this.props, maxRows = _a.maxRows, async = _a.async;
- if (typeof maxRows === "number") {
- this.updateLineHeight();
- }
- if (typeof maxRows === "number" || async) {
- /*
- the defer is needed to:
- - force "autosize" to activate the scrollbar when this.props.maxRows is passed
- - support StyledComponents (see #71)
- */
- setTimeout(function () { return _this.textarea && autosize(_this.textarea); });
- }
- else {
- this.textarea && autosize(this.textarea);
- }
- if (this.textarea) {
- this.textarea.addEventListener(RESIZED, this.onResize);
- }
- };
- TextareaAutosizeClass.prototype.componentWillUnmount = function () {
- if (this.textarea) {
- this.textarea.removeEventListener(RESIZED, this.onResize);
- autosize.destroy(this.textarea);
- }
- };
- TextareaAutosizeClass.prototype.render = function () {
- var _this = this;
- var _a = this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, children = _b.children, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef", "children"]), lineHeight = _a.state.lineHeight;
- var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
- return (React.createElement("textarea", __assign({}, props, { onChange: this.onChange, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, ref: function (element) {
- _this.textarea = element;
- if (typeof _this.props.innerRef === 'function') {
- _this.props.innerRef(element);
- }
- else if (_this.props.innerRef) {
- _this.props.innerRef.current = element;
- }
- } }), children));
- };
- TextareaAutosizeClass.prototype.componentDidUpdate = function () {
- this.textarea && autosize.update(this.textarea);
- };
- TextareaAutosizeClass.defaultProps = {
- rows: 1,
- async: false
- };
- TextareaAutosizeClass.propTypes = {
- rows: PropTypes.number,
- maxRows: PropTypes.number,
- onResize: PropTypes.func,
- innerRef: PropTypes.any,
- async: PropTypes.bool
- };
- return TextareaAutosizeClass;
- }(React.Component));
- exports.TextareaAutosize = React.forwardRef(function (props, ref) {
- return React.createElement(TextareaAutosizeClass, __assign({}, props, { innerRef: ref }));
- });
- /***/ }),
- /***/ 773:
- /***/ (function(__unused_webpack_module, exports, __webpack_require__) {
- "use strict";
- var __webpack_unused_export__;
- __webpack_unused_export__ = true;
- var TextareaAutosize_1 = __webpack_require__(5438);
- exports.Z = TextareaAutosize_1.TextareaAutosize;
- /***/ }),
- /***/ 4793:
- /***/ (function(module) {
- var characterMap = {
- "À": "A",
- "Á": "A",
- "Â": "A",
- "Ã": "A",
- "Ä": "A",
- "Å": "A",
- "Ấ": "A",
- "Ắ": "A",
- "Ẳ": "A",
- "Ẵ": "A",
- "Ặ": "A",
- "Æ": "AE",
- "Ầ": "A",
- "Ằ": "A",
- "Ȃ": "A",
- "Ç": "C",
- "Ḉ": "C",
- "È": "E",
- "É": "E",
- "Ê": "E",
- "Ë": "E",
- "Ế": "E",
- "Ḗ": "E",
- "Ề": "E",
- "Ḕ": "E",
- "Ḝ": "E",
- "Ȇ": "E",
- "Ì": "I",
- "Í": "I",
- "Î": "I",
- "Ï": "I",
- "Ḯ": "I",
- "Ȋ": "I",
- "Ð": "D",
- "Ñ": "N",
- "Ò": "O",
- "Ó": "O",
- "Ô": "O",
- "Õ": "O",
- "Ö": "O",
- "Ø": "O",
- "Ố": "O",
- "Ṍ": "O",
- "Ṓ": "O",
- "Ȏ": "O",
- "Ù": "U",
- "Ú": "U",
- "Û": "U",
- "Ü": "U",
- "Ý": "Y",
- "à": "a",
- "á": "a",
- "â": "a",
- "ã": "a",
- "ä": "a",
- "å": "a",
- "ấ": "a",
- "ắ": "a",
- "ẳ": "a",
- "ẵ": "a",
- "ặ": "a",
- "æ": "ae",
- "ầ": "a",
- "ằ": "a",
- "ȃ": "a",
- "ç": "c",
- "ḉ": "c",
- "è": "e",
- "é": "e",
- "ê": "e",
- "ë": "e",
- "ế": "e",
- "ḗ": "e",
- "ề": "e",
- "ḕ": "e",
- "ḝ": "e",
- "ȇ": "e",
- "ì": "i",
- "í": "i",
- "î": "i",
- "ï": "i",
- "ḯ": "i",
- "ȋ": "i",
- "ð": "d",
- "ñ": "n",
- "ò": "o",
- "ó": "o",
- "ô": "o",
- "õ": "o",
- "ö": "o",
- "ø": "o",
- "ố": "o",
- "ṍ": "o",
- "ṓ": "o",
- "ȏ": "o",
- "ù": "u",
- "ú": "u",
- "û": "u",
- "ü": "u",
- "ý": "y",
- "ÿ": "y",
- "Ā": "A",
- "ā": "a",
- "Ă": "A",
- "ă": "a",
- "Ą": "A",
- "ą": "a",
- "Ć": "C",
- "ć": "c",
- "Ĉ": "C",
- "ĉ": "c",
- "Ċ": "C",
- "ċ": "c",
- "Č": "C",
- "č": "c",
- "C̆": "C",
- "c̆": "c",
- "Ď": "D",
- "ď": "d",
- "Đ": "D",
- "đ": "d",
- "Ē": "E",
- "ē": "e",
- "Ĕ": "E",
- "ĕ": "e",
- "Ė": "E",
- "ė": "e",
- "Ę": "E",
- "ę": "e",
- "Ě": "E",
- "ě": "e",
- "Ĝ": "G",
- "Ǵ": "G",
- "ĝ": "g",
- "ǵ": "g",
- "Ğ": "G",
- "ğ": "g",
- "Ġ": "G",
- "ġ": "g",
- "Ģ": "G",
- "ģ": "g",
- "Ĥ": "H",
- "ĥ": "h",
- "Ħ": "H",
- "ħ": "h",
- "Ḫ": "H",
- "ḫ": "h",
- "Ĩ": "I",
- "ĩ": "i",
- "Ī": "I",
- "ī": "i",
- "Ĭ": "I",
- "ĭ": "i",
- "Į": "I",
- "į": "i",
- "İ": "I",
- "ı": "i",
- "IJ": "IJ",
- "ij": "ij",
- "Ĵ": "J",
- "ĵ": "j",
- "Ķ": "K",
- "ķ": "k",
- "Ḱ": "K",
- "ḱ": "k",
- "K̆": "K",
- "k̆": "k",
- "Ĺ": "L",
- "ĺ": "l",
- "Ļ": "L",
- "ļ": "l",
- "Ľ": "L",
- "ľ": "l",
- "Ŀ": "L",
- "ŀ": "l",
- "Ł": "l",
- "ł": "l",
- "Ḿ": "M",
- "ḿ": "m",
- "M̆": "M",
- "m̆": "m",
- "Ń": "N",
- "ń": "n",
- "Ņ": "N",
- "ņ": "n",
- "Ň": "N",
- "ň": "n",
- "ʼn": "n",
- "N̆": "N",
- "n̆": "n",
- "Ō": "O",
- "ō": "o",
- "Ŏ": "O",
- "ŏ": "o",
- "Ő": "O",
- "ő": "o",
- "Œ": "OE",
- "œ": "oe",
- "P̆": "P",
- "p̆": "p",
- "Ŕ": "R",
- "ŕ": "r",
- "Ŗ": "R",
- "ŗ": "r",
- "Ř": "R",
- "ř": "r",
- "R̆": "R",
- "r̆": "r",
- "Ȓ": "R",
- "ȓ": "r",
- "Ś": "S",
- "ś": "s",
- "Ŝ": "S",
- "ŝ": "s",
- "Ş": "S",
- "Ș": "S",
- "ș": "s",
- "ş": "s",
- "Š": "S",
- "š": "s",
- "Ţ": "T",
- "ţ": "t",
- "ț": "t",
- "Ț": "T",
- "Ť": "T",
- "ť": "t",
- "Ŧ": "T",
- "ŧ": "t",
- "T̆": "T",
- "t̆": "t",
- "Ũ": "U",
- "ũ": "u",
- "Ū": "U",
- "ū": "u",
- "Ŭ": "U",
- "ŭ": "u",
- "Ů": "U",
- "ů": "u",
- "Ű": "U",
- "ű": "u",
- "Ų": "U",
- "ų": "u",
- "Ȗ": "U",
- "ȗ": "u",
- "V̆": "V",
- "v̆": "v",
- "Ŵ": "W",
- "ŵ": "w",
- "Ẃ": "W",
- "ẃ": "w",
- "X̆": "X",
- "x̆": "x",
- "Ŷ": "Y",
- "ŷ": "y",
- "Ÿ": "Y",
- "Y̆": "Y",
- "y̆": "y",
- "Ź": "Z",
- "ź": "z",
- "Ż": "Z",
- "ż": "z",
- "Ž": "Z",
- "ž": "z",
- "ſ": "s",
- "ƒ": "f",
- "Ơ": "O",
- "ơ": "o",
- "Ư": "U",
- "ư": "u",
- "Ǎ": "A",
- "ǎ": "a",
- "Ǐ": "I",
- "ǐ": "i",
- "Ǒ": "O",
- "ǒ": "o",
- "Ǔ": "U",
- "ǔ": "u",
- "Ǖ": "U",
- "ǖ": "u",
- "Ǘ": "U",
- "ǘ": "u",
- "Ǚ": "U",
- "ǚ": "u",
- "Ǜ": "U",
- "ǜ": "u",
- "Ứ": "U",
- "ứ": "u",
- "Ṹ": "U",
- "ṹ": "u",
- "Ǻ": "A",
- "ǻ": "a",
- "Ǽ": "AE",
- "ǽ": "ae",
- "Ǿ": "O",
- "ǿ": "o",
- "Þ": "TH",
- "þ": "th",
- "Ṕ": "P",
- "ṕ": "p",
- "Ṥ": "S",
- "ṥ": "s",
- "X́": "X",
- "x́": "x",
- "Ѓ": "Г",
- "ѓ": "г",
- "Ќ": "К",
- "ќ": "к",
- "A̋": "A",
- "a̋": "a",
- "E̋": "E",
- "e̋": "e",
- "I̋": "I",
- "i̋": "i",
- "Ǹ": "N",
- "ǹ": "n",
- "Ồ": "O",
- "ồ": "o",
- "Ṑ": "O",
- "ṑ": "o",
- "Ừ": "U",
- "ừ": "u",
- "Ẁ": "W",
- "ẁ": "w",
- "Ỳ": "Y",
- "ỳ": "y",
- "Ȁ": "A",
- "ȁ": "a",
- "Ȅ": "E",
- "ȅ": "e",
- "Ȉ": "I",
- "ȉ": "i",
- "Ȍ": "O",
- "ȍ": "o",
- "Ȑ": "R",
- "ȑ": "r",
- "Ȕ": "U",
- "ȕ": "u",
- "B̌": "B",
- "b̌": "b",
- "Č̣": "C",
- "č̣": "c",
- "Ê̌": "E",
- "ê̌": "e",
- "F̌": "F",
- "f̌": "f",
- "Ǧ": "G",
- "ǧ": "g",
- "Ȟ": "H",
- "ȟ": "h",
- "J̌": "J",
- "ǰ": "j",
- "Ǩ": "K",
- "ǩ": "k",
- "M̌": "M",
- "m̌": "m",
- "P̌": "P",
- "p̌": "p",
- "Q̌": "Q",
- "q̌": "q",
- "Ř̩": "R",
- "ř̩": "r",
- "Ṧ": "S",
- "ṧ": "s",
- "V̌": "V",
- "v̌": "v",
- "W̌": "W",
- "w̌": "w",
- "X̌": "X",
- "x̌": "x",
- "Y̌": "Y",
- "y̌": "y",
- "A̧": "A",
- "a̧": "a",
- "B̧": "B",
- "b̧": "b",
- "Ḑ": "D",
- "ḑ": "d",
- "Ȩ": "E",
- "ȩ": "e",
- "Ɛ̧": "E",
- "ɛ̧": "e",
- "Ḩ": "H",
- "ḩ": "h",
- "I̧": "I",
- "i̧": "i",
- "Ɨ̧": "I",
- "ɨ̧": "i",
- "M̧": "M",
- "m̧": "m",
- "O̧": "O",
- "o̧": "o",
- "Q̧": "Q",
- "q̧": "q",
- "U̧": "U",
- "u̧": "u",
- "X̧": "X",
- "x̧": "x",
- "Z̧": "Z",
- "z̧": "z",
- };
- var chars = Object.keys(characterMap).join('|');
- var allAccents = new RegExp(chars, 'g');
- var firstAccent = new RegExp(chars, '');
- function matcher(match) {
- return characterMap[match];
- }
- var removeAccents = function(string) {
- return string.replace(allAccents, matcher);
- };
- var hasAccents = function(string) {
- return !!string.match(firstAccent);
- };
- module.exports = removeAccents;
- module.exports.has = hasAccents;
- module.exports.remove = removeAccents;
- /***/ }),
- /***/ 9196:
- /***/ (function(module) {
- "use strict";
- module.exports = window["React"];
- /***/ })
- /******/ });
- /************************************************************************/
- /******/ // The module cache
- /******/ var __webpack_module_cache__ = {};
- /******/
- /******/ // The require function
- /******/ function __webpack_require__(moduleId) {
- /******/ // Check if module is in cache
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
- /******/ if (cachedModule !== undefined) {
- /******/ return cachedModule.exports;
- /******/ }
- /******/ // Create a new module (and put it into the cache)
- /******/ var module = __webpack_module_cache__[moduleId] = {
- /******/ // no module.id needed
- /******/ // no module.loaded needed
- /******/ exports: {}
- /******/ };
- /******/
- /******/ // Execute the module function
- /******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
- /******/
- /******/ // Return the exports of the module
- /******/ return module.exports;
- /******/ }
- /******/
- /************************************************************************/
- /******/ /* webpack/runtime/compat get default export */
- /******/ !function() {
- /******/ // getDefaultExport function for compatibility with non-harmony modules
- /******/ __webpack_require__.n = function(module) {
- /******/ var getter = module && module.__esModule ?
- /******/ function() { return module['default']; } :
- /******/ function() { return module; };
- /******/ __webpack_require__.d(getter, { a: getter });
- /******/ return getter;
- /******/ };
- /******/ }();
- /******/
- /******/ /* webpack/runtime/define property getters */
- /******/ !function() {
- /******/ // define getter functions for harmony exports
- /******/ __webpack_require__.d = function(exports, definition) {
- /******/ for(var key in definition) {
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
- /******/ }
- /******/ }
- /******/ };
- /******/ }();
- /******/
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
- /******/ !function() {
- /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
- /******/ }();
- /******/
- /******/ /* webpack/runtime/make namespace object */
- /******/ !function() {
- /******/ // define __esModule on exports
- /******/ __webpack_require__.r = function(exports) {
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
- /******/ }
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
- /******/ };
- /******/ }();
- /******/
- /************************************************************************/
- var __webpack_exports__ = {};
- // This entry need to be wrapped in an IIFE because it need to be in strict mode.
- !function() {
- "use strict";
- // ESM COMPAT FLAG
- __webpack_require__.r(__webpack_exports__);
- // EXPORTS
- __webpack_require__.d(__webpack_exports__, {
- "AlignmentToolbar": function() { return /* reexport */ AlignmentToolbar; },
- "Autocomplete": function() { return /* reexport */ Autocomplete; },
- "AutosaveMonitor": function() { return /* reexport */ autosave_monitor; },
- "BlockAlignmentToolbar": function() { return /* reexport */ BlockAlignmentToolbar; },
- "BlockControls": function() { return /* reexport */ BlockControls; },
- "BlockEdit": function() { return /* reexport */ BlockEdit; },
- "BlockEditorKeyboardShortcuts": function() { return /* reexport */ BlockEditorKeyboardShortcuts; },
- "BlockFormatControls": function() { return /* reexport */ BlockFormatControls; },
- "BlockIcon": function() { return /* reexport */ BlockIcon; },
- "BlockInspector": function() { return /* reexport */ BlockInspector; },
- "BlockList": function() { return /* reexport */ BlockList; },
- "BlockMover": function() { return /* reexport */ BlockMover; },
- "BlockNavigationDropdown": function() { return /* reexport */ BlockNavigationDropdown; },
- "BlockSelectionClearer": function() { return /* reexport */ BlockSelectionClearer; },
- "BlockSettingsMenu": function() { return /* reexport */ BlockSettingsMenu; },
- "BlockTitle": function() { return /* reexport */ BlockTitle; },
- "BlockToolbar": function() { return /* reexport */ BlockToolbar; },
- "ColorPalette": function() { return /* reexport */ ColorPalette; },
- "ContrastChecker": function() { return /* reexport */ ContrastChecker; },
- "CopyHandler": function() { return /* reexport */ CopyHandler; },
- "DefaultBlockAppender": function() { return /* reexport */ DefaultBlockAppender; },
- "DocumentOutline": function() { return /* reexport */ document_outline; },
- "DocumentOutlineCheck": function() { return /* reexport */ check; },
- "EditorHistoryRedo": function() { return /* reexport */ editor_history_redo; },
- "EditorHistoryUndo": function() { return /* reexport */ editor_history_undo; },
- "EditorKeyboardShortcutsRegister": function() { return /* reexport */ register_shortcuts; },
- "EditorNotices": function() { return /* reexport */ editor_notices; },
- "EditorProvider": function() { return /* reexport */ provider; },
- "EditorSnackbars": function() { return /* reexport */ EditorSnackbars; },
- "EntitiesSavedStates": function() { return /* reexport */ EntitiesSavedStates; },
- "ErrorBoundary": function() { return /* reexport */ error_boundary; },
- "FontSizePicker": function() { return /* reexport */ FontSizePicker; },
- "InnerBlocks": function() { return /* reexport */ InnerBlocks; },
- "Inserter": function() { return /* reexport */ Inserter; },
- "InspectorAdvancedControls": function() { return /* reexport */ InspectorAdvancedControls; },
- "InspectorControls": function() { return /* reexport */ InspectorControls; },
- "LocalAutosaveMonitor": function() { return /* reexport */ local_autosave_monitor; },
- "MediaPlaceholder": function() { return /* reexport */ MediaPlaceholder; },
- "MediaUpload": function() { return /* reexport */ MediaUpload; },
- "MediaUploadCheck": function() { return /* reexport */ MediaUploadCheck; },
- "MultiSelectScrollIntoView": function() { return /* reexport */ MultiSelectScrollIntoView; },
- "NavigableToolbar": function() { return /* reexport */ NavigableToolbar; },
- "ObserveTyping": function() { return /* reexport */ ObserveTyping; },
- "PageAttributesCheck": function() { return /* reexport */ page_attributes_check; },
- "PageAttributesOrder": function() { return /* reexport */ order; },
- "PageAttributesParent": function() { return /* reexport */ page_attributes_parent; },
- "PageTemplate": function() { return /* reexport */ post_template; },
- "PanelColorSettings": function() { return /* reexport */ PanelColorSettings; },
- "PlainText": function() { return /* reexport */ PlainText; },
- "PostAuthor": function() { return /* reexport */ post_author; },
- "PostAuthorCheck": function() { return /* reexport */ PostAuthorCheck; },
- "PostComments": function() { return /* reexport */ post_comments; },
- "PostExcerpt": function() { return /* reexport */ post_excerpt; },
- "PostExcerptCheck": function() { return /* reexport */ post_excerpt_check; },
- "PostFeaturedImage": function() { return /* reexport */ post_featured_image; },
- "PostFeaturedImageCheck": function() { return /* reexport */ post_featured_image_check; },
- "PostFormat": function() { return /* reexport */ PostFormat; },
- "PostFormatCheck": function() { return /* reexport */ post_format_check; },
- "PostLastRevision": function() { return /* reexport */ post_last_revision; },
- "PostLastRevisionCheck": function() { return /* reexport */ post_last_revision_check; },
- "PostLockedModal": function() { return /* reexport */ PostLockedModal; },
- "PostPendingStatus": function() { return /* reexport */ post_pending_status; },
- "PostPendingStatusCheck": function() { return /* reexport */ post_pending_status_check; },
- "PostPingbacks": function() { return /* reexport */ post_pingbacks; },
- "PostPreviewButton": function() { return /* reexport */ post_preview_button; },
- "PostPublishButton": function() { return /* reexport */ post_publish_button; },
- "PostPublishButtonLabel": function() { return /* reexport */ label; },
- "PostPublishPanel": function() { return /* reexport */ post_publish_panel; },
- "PostSavedState": function() { return /* reexport */ PostSavedState; },
- "PostSchedule": function() { return /* reexport */ PostSchedule; },
- "PostScheduleCheck": function() { return /* reexport */ post_schedule_check; },
- "PostScheduleLabel": function() { return /* reexport */ PostScheduleLabel; },
- "PostSlug": function() { return /* reexport */ post_slug; },
- "PostSlugCheck": function() { return /* reexport */ PostSlugCheck; },
- "PostSticky": function() { return /* reexport */ post_sticky; },
- "PostStickyCheck": function() { return /* reexport */ post_sticky_check; },
- "PostSwitchToDraftButton": function() { return /* reexport */ post_switch_to_draft_button; },
- "PostTaxonomies": function() { return /* reexport */ post_taxonomies; },
- "PostTaxonomiesCheck": function() { return /* reexport */ post_taxonomies_check; },
- "PostTaxonomiesFlatTermSelector": function() { return /* reexport */ FlatTermSelector; },
- "PostTaxonomiesHierarchicalTermSelector": function() { return /* reexport */ HierarchicalTermSelector; },
- "PostTextEditor": function() { return /* reexport */ PostTextEditor; },
- "PostTitle": function() { return /* reexport */ post_title; },
- "PostTrash": function() { return /* reexport */ PostTrash; },
- "PostTrashCheck": function() { return /* reexport */ post_trash_check; },
- "PostTypeSupportCheck": function() { return /* reexport */ post_type_support_check; },
- "PostURL": function() { return /* reexport */ PostURL; },
- "PostURLCheck": function() { return /* reexport */ PostURLCheck; },
- "PostURLLabel": function() { return /* reexport */ PostURLLabel; },
- "PostVisibility": function() { return /* reexport */ PostVisibility; },
- "PostVisibilityCheck": function() { return /* reexport */ post_visibility_check; },
- "PostVisibilityLabel": function() { return /* reexport */ PostVisibilityLabel; },
- "RichText": function() { return /* reexport */ RichText; },
- "RichTextShortcut": function() { return /* reexport */ RichTextShortcut; },
- "RichTextToolbarButton": function() { return /* reexport */ RichTextToolbarButton; },
- "ServerSideRender": function() { return /* reexport */ (external_wp_serverSideRender_default()); },
- "SkipToSelectedBlock": function() { return /* reexport */ SkipToSelectedBlock; },
- "TableOfContents": function() { return /* reexport */ table_of_contents; },
- "TextEditorGlobalKeyboardShortcuts": function() { return /* reexport */ TextEditorGlobalKeyboardShortcuts; },
- "ThemeSupportCheck": function() { return /* reexport */ theme_support_check; },
- "URLInput": function() { return /* reexport */ URLInput; },
- "URLInputButton": function() { return /* reexport */ URLInputButton; },
- "URLPopover": function() { return /* reexport */ URLPopover; },
- "UnsavedChangesWarning": function() { return /* reexport */ UnsavedChangesWarning; },
- "VisualEditorGlobalKeyboardShortcuts": function() { return /* reexport */ visual_editor_shortcuts; },
- "Warning": function() { return /* reexport */ Warning; },
- "WordCount": function() { return /* reexport */ WordCount; },
- "WritingFlow": function() { return /* reexport */ WritingFlow; },
- "__unstableRichTextInputEvent": function() { return /* reexport */ __unstableRichTextInputEvent; },
- "cleanForSlug": function() { return /* reexport */ cleanForSlug; },
- "createCustomColorsHOC": function() { return /* reexport */ createCustomColorsHOC; },
- "getColorClassName": function() { return /* reexport */ getColorClassName; },
- "getColorObjectByAttributeValues": function() { return /* reexport */ getColorObjectByAttributeValues; },
- "getColorObjectByColorValue": function() { return /* reexport */ getColorObjectByColorValue; },
- "getFontSize": function() { return /* reexport */ getFontSize; },
- "getFontSizeClass": function() { return /* reexport */ getFontSizeClass; },
- "getTemplatePartIcon": function() { return /* reexport */ getTemplatePartIcon; },
- "mediaUpload": function() { return /* reexport */ mediaUpload; },
- "store": function() { return /* reexport */ store_store; },
- "storeConfig": function() { return /* reexport */ storeConfig; },
- "transformStyles": function() { return /* reexport */ external_wp_blockEditor_namespaceObject.transformStyles; },
- "usePostScheduleLabel": function() { return /* reexport */ usePostScheduleLabel; },
- "usePostURLLabel": function() { return /* reexport */ usePostURLLabel; },
- "usePostVisibilityLabel": function() { return /* reexport */ usePostVisibilityLabel; },
- "userAutocompleter": function() { return /* reexport */ user; },
- "withColorContext": function() { return /* reexport */ withColorContext; },
- "withColors": function() { return /* reexport */ withColors; },
- "withFontSizes": function() { return /* reexport */ withFontSizes; }
- });
- // NAMESPACE OBJECT: ./node_modules/@wordpress/editor/build-module/store/selectors.js
- var selectors_namespaceObject = {};
- __webpack_require__.r(selectors_namespaceObject);
- __webpack_require__.d(selectors_namespaceObject, {
- "__experimentalGetDefaultTemplatePartAreas": function() { return __experimentalGetDefaultTemplatePartAreas; },
- "__experimentalGetDefaultTemplateType": function() { return __experimentalGetDefaultTemplateType; },
- "__experimentalGetDefaultTemplateTypes": function() { return __experimentalGetDefaultTemplateTypes; },
- "__experimentalGetTemplateInfo": function() { return __experimentalGetTemplateInfo; },
- "__unstableIsEditorReady": function() { return __unstableIsEditorReady; },
- "canInsertBlockType": function() { return canInsertBlockType; },
- "canUserUseUnfilteredHTML": function() { return canUserUseUnfilteredHTML; },
- "didPostSaveRequestFail": function() { return didPostSaveRequestFail; },
- "didPostSaveRequestSucceed": function() { return didPostSaveRequestSucceed; },
- "getActivePostLock": function() { return getActivePostLock; },
- "getAdjacentBlockClientId": function() { return getAdjacentBlockClientId; },
- "getAutosaveAttribute": function() { return getAutosaveAttribute; },
- "getBlock": function() { return getBlock; },
- "getBlockAttributes": function() { return getBlockAttributes; },
- "getBlockCount": function() { return getBlockCount; },
- "getBlockHierarchyRootClientId": function() { return getBlockHierarchyRootClientId; },
- "getBlockIndex": function() { return getBlockIndex; },
- "getBlockInsertionPoint": function() { return getBlockInsertionPoint; },
- "getBlockListSettings": function() { return getBlockListSettings; },
- "getBlockMode": function() { return getBlockMode; },
- "getBlockName": function() { return getBlockName; },
- "getBlockOrder": function() { return getBlockOrder; },
- "getBlockRootClientId": function() { return getBlockRootClientId; },
- "getBlockSelectionEnd": function() { return getBlockSelectionEnd; },
- "getBlockSelectionStart": function() { return getBlockSelectionStart; },
- "getBlocks": function() { return getBlocks; },
- "getBlocksByClientId": function() { return getBlocksByClientId; },
- "getClientIdsOfDescendants": function() { return getClientIdsOfDescendants; },
- "getClientIdsWithDescendants": function() { return getClientIdsWithDescendants; },
- "getCurrentPost": function() { return getCurrentPost; },
- "getCurrentPostAttribute": function() { return getCurrentPostAttribute; },
- "getCurrentPostId": function() { return getCurrentPostId; },
- "getCurrentPostLastRevisionId": function() { return getCurrentPostLastRevisionId; },
- "getCurrentPostRevisionsCount": function() { return getCurrentPostRevisionsCount; },
- "getCurrentPostType": function() { return getCurrentPostType; },
- "getEditedPostAttribute": function() { return getEditedPostAttribute; },
- "getEditedPostContent": function() { return getEditedPostContent; },
- "getEditedPostPreviewLink": function() { return getEditedPostPreviewLink; },
- "getEditedPostSlug": function() { return getEditedPostSlug; },
- "getEditedPostVisibility": function() { return getEditedPostVisibility; },
- "getEditorBlocks": function() { return getEditorBlocks; },
- "getEditorSelection": function() { return getEditorSelection; },
- "getEditorSelectionEnd": function() { return getEditorSelectionEnd; },
- "getEditorSelectionStart": function() { return getEditorSelectionStart; },
- "getEditorSettings": function() { return getEditorSettings; },
- "getFirstMultiSelectedBlockClientId": function() { return getFirstMultiSelectedBlockClientId; },
- "getGlobalBlockCount": function() { return getGlobalBlockCount; },
- "getInserterItems": function() { return getInserterItems; },
- "getLastMultiSelectedBlockClientId": function() { return getLastMultiSelectedBlockClientId; },
- "getMultiSelectedBlockClientIds": function() { return getMultiSelectedBlockClientIds; },
- "getMultiSelectedBlocks": function() { return getMultiSelectedBlocks; },
- "getMultiSelectedBlocksEndClientId": function() { return getMultiSelectedBlocksEndClientId; },
- "getMultiSelectedBlocksStartClientId": function() { return getMultiSelectedBlocksStartClientId; },
- "getNextBlockClientId": function() { return getNextBlockClientId; },
- "getPermalink": function() { return getPermalink; },
- "getPermalinkParts": function() { return getPermalinkParts; },
- "getPostEdits": function() { return getPostEdits; },
- "getPostLockUser": function() { return getPostLockUser; },
- "getPostTypeLabel": function() { return getPostTypeLabel; },
- "getPreviousBlockClientId": function() { return getPreviousBlockClientId; },
- "getSelectedBlock": function() { return getSelectedBlock; },
- "getSelectedBlockClientId": function() { return getSelectedBlockClientId; },
- "getSelectedBlockCount": function() { return getSelectedBlockCount; },
- "getSelectedBlocksInitialCaretPosition": function() { return getSelectedBlocksInitialCaretPosition; },
- "getStateBeforeOptimisticTransaction": function() { return getStateBeforeOptimisticTransaction; },
- "getSuggestedPostFormat": function() { return getSuggestedPostFormat; },
- "getTemplate": function() { return getTemplate; },
- "getTemplateLock": function() { return getTemplateLock; },
- "hasChangedContent": function() { return hasChangedContent; },
- "hasEditorRedo": function() { return hasEditorRedo; },
- "hasEditorUndo": function() { return hasEditorUndo; },
- "hasInserterItems": function() { return hasInserterItems; },
- "hasMultiSelection": function() { return hasMultiSelection; },
- "hasNonPostEntityChanges": function() { return hasNonPostEntityChanges; },
- "hasSelectedBlock": function() { return hasSelectedBlock; },
- "hasSelectedInnerBlock": function() { return hasSelectedInnerBlock; },
- "inSomeHistory": function() { return inSomeHistory; },
- "isAncestorMultiSelected": function() { return isAncestorMultiSelected; },
- "isAutosavingPost": function() { return isAutosavingPost; },
- "isBlockInsertionPointVisible": function() { return isBlockInsertionPointVisible; },
- "isBlockMultiSelected": function() { return isBlockMultiSelected; },
- "isBlockSelected": function() { return isBlockSelected; },
- "isBlockValid": function() { return isBlockValid; },
- "isBlockWithinSelection": function() { return isBlockWithinSelection; },
- "isCaretWithinFormattedText": function() { return isCaretWithinFormattedText; },
- "isCleanNewPost": function() { return isCleanNewPost; },
- "isCurrentPostPending": function() { return isCurrentPostPending; },
- "isCurrentPostPublished": function() { return isCurrentPostPublished; },
- "isCurrentPostScheduled": function() { return isCurrentPostScheduled; },
- "isDeletingPost": function() { return isDeletingPost; },
- "isEditedPostAutosaveable": function() { return isEditedPostAutosaveable; },
- "isEditedPostBeingScheduled": function() { return isEditedPostBeingScheduled; },
- "isEditedPostDateFloating": function() { return isEditedPostDateFloating; },
- "isEditedPostDirty": function() { return isEditedPostDirty; },
- "isEditedPostEmpty": function() { return isEditedPostEmpty; },
- "isEditedPostNew": function() { return isEditedPostNew; },
- "isEditedPostPublishable": function() { return isEditedPostPublishable; },
- "isEditedPostSaveable": function() { return isEditedPostSaveable; },
- "isFirstMultiSelectedBlock": function() { return isFirstMultiSelectedBlock; },
- "isMultiSelecting": function() { return isMultiSelecting; },
- "isPermalinkEditable": function() { return isPermalinkEditable; },
- "isPostAutosavingLocked": function() { return isPostAutosavingLocked; },
- "isPostLockTakeover": function() { return isPostLockTakeover; },
- "isPostLocked": function() { return isPostLocked; },
- "isPostSavingLocked": function() { return isPostSavingLocked; },
- "isPreviewingPost": function() { return isPreviewingPost; },
- "isPublishSidebarEnabled": function() { return isPublishSidebarEnabled; },
- "isPublishingPost": function() { return isPublishingPost; },
- "isSavingNonPostEntityChanges": function() { return isSavingNonPostEntityChanges; },
- "isSavingPost": function() { return isSavingPost; },
- "isSelectionEnabled": function() { return isSelectionEnabled; },
- "isTyping": function() { return isTyping; },
- "isValidTemplate": function() { return isValidTemplate; }
- });
- // NAMESPACE OBJECT: ./node_modules/@wordpress/editor/build-module/store/actions.js
- var actions_namespaceObject = {};
- __webpack_require__.r(actions_namespaceObject);
- __webpack_require__.d(actions_namespaceObject, {
- "__experimentalTearDownEditor": function() { return __experimentalTearDownEditor; },
- "autosave": function() { return autosave; },
- "clearSelectedBlock": function() { return clearSelectedBlock; },
- "createUndoLevel": function() { return createUndoLevel; },
- "disablePublishSidebar": function() { return disablePublishSidebar; },
- "editPost": function() { return editPost; },
- "enablePublishSidebar": function() { return enablePublishSidebar; },
- "enterFormattedText": function() { return enterFormattedText; },
- "exitFormattedText": function() { return exitFormattedText; },
- "hideInsertionPoint": function() { return hideInsertionPoint; },
- "insertBlock": function() { return insertBlock; },
- "insertBlocks": function() { return insertBlocks; },
- "insertDefaultBlock": function() { return insertDefaultBlock; },
- "lockPostAutosaving": function() { return lockPostAutosaving; },
- "lockPostSaving": function() { return lockPostSaving; },
- "mergeBlocks": function() { return mergeBlocks; },
- "moveBlockToPosition": function() { return moveBlockToPosition; },
- "moveBlocksDown": function() { return moveBlocksDown; },
- "moveBlocksUp": function() { return moveBlocksUp; },
- "multiSelect": function() { return multiSelect; },
- "receiveBlocks": function() { return receiveBlocks; },
- "redo": function() { return redo; },
- "refreshPost": function() { return refreshPost; },
- "removeBlock": function() { return removeBlock; },
- "removeBlocks": function() { return removeBlocks; },
- "replaceBlock": function() { return replaceBlock; },
- "replaceBlocks": function() { return replaceBlocks; },
- "resetBlocks": function() { return resetBlocks; },
- "resetEditorBlocks": function() { return resetEditorBlocks; },
- "resetPost": function() { return resetPost; },
- "savePost": function() { return savePost; },
- "selectBlock": function() { return selectBlock; },
- "setTemplateValidity": function() { return setTemplateValidity; },
- "setupEditor": function() { return setupEditor; },
- "setupEditorState": function() { return setupEditorState; },
- "showInsertionPoint": function() { return showInsertionPoint; },
- "startMultiSelect": function() { return startMultiSelect; },
- "startTyping": function() { return startTyping; },
- "stopMultiSelect": function() { return stopMultiSelect; },
- "stopTyping": function() { return stopTyping; },
- "synchronizeTemplate": function() { return synchronizeTemplate; },
- "toggleBlockMode": function() { return toggleBlockMode; },
- "toggleSelection": function() { return toggleSelection; },
- "trashPost": function() { return trashPost; },
- "undo": function() { return undo; },
- "unlockPostAutosaving": function() { return unlockPostAutosaving; },
- "unlockPostSaving": function() { return unlockPostSaving; },
- "updateBlock": function() { return updateBlock; },
- "updateBlockAttributes": function() { return updateBlockAttributes; },
- "updateBlockListSettings": function() { return updateBlockListSettings; },
- "updateEditorSettings": function() { return updateEditorSettings; },
- "updatePost": function() { return updatePost; },
- "updatePostLock": function() { return updatePostLock; }
- });
- ;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
- function _extends() {
- _extends = Object.assign ? Object.assign.bind() : function (target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
- }
- }
- }
- return target;
- };
- return _extends.apply(this, arguments);
- }
- ;// CONCATENATED MODULE: external ["wp","element"]
- var external_wp_element_namespaceObject = window["wp"]["element"];
- ;// CONCATENATED MODULE: external "lodash"
- var external_lodash_namespaceObject = window["lodash"];
- ;// CONCATENATED MODULE: external ["wp","blocks"]
- var external_wp_blocks_namespaceObject = window["wp"]["blocks"];
- ;// CONCATENATED MODULE: external ["wp","data"]
- var external_wp_data_namespaceObject = window["wp"]["data"];
- ;// CONCATENATED MODULE: external ["wp","coreData"]
- var external_wp_coreData_namespaceObject = window["wp"]["coreData"];
- ;// CONCATENATED MODULE: external ["wp","compose"]
- var external_wp_compose_namespaceObject = window["wp"]["compose"];
- ;// CONCATENATED MODULE: external ["wp","hooks"]
- var external_wp_hooks_namespaceObject = window["wp"]["hooks"];
- ;// CONCATENATED MODULE: external ["wp","blockEditor"]
- var external_wp_blockEditor_namespaceObject = window["wp"]["blockEditor"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/defaults.js
- /**
- * WordPress dependencies
- */
- /**
- * The default post editor settings.
- *
- * @property {boolean|Array} allowedBlockTypes Allowed block types
- * @property {boolean} richEditingEnabled Whether rich editing is enabled or not
- * @property {boolean} codeEditingEnabled Whether code editing is enabled or not
- * @property {boolean} enableCustomFields Whether the WordPress custom fields are enabled or not.
- * true = the user has opted to show the Custom Fields panel at the bottom of the editor.
- * false = the user has opted to hide the Custom Fields panel at the bottom of the editor.
- * undefined = the current environment does not support Custom Fields, so the option toggle in Preferences -> Panels to enable the Custom Fields panel is not displayed.
- * @property {number} autosaveInterval How often in seconds the post will be auto-saved via the REST API.
- * @property {number} localAutosaveInterval How often in seconds the post will be backed up to sessionStorage.
- * @property {Array?} availableTemplates The available post templates
- * @property {boolean} disablePostFormats Whether or not the post formats are disabled
- * @property {Array?} allowedMimeTypes List of allowed mime types and file extensions
- * @property {number} maxUploadFileSize Maximum upload file size
- * @property {boolean} supportsLayout Whether the editor supports layouts.
- */
- const EDITOR_SETTINGS_DEFAULTS = { ...external_wp_blockEditor_namespaceObject.SETTINGS_DEFAULTS,
- richEditingEnabled: true,
- codeEditingEnabled: true,
- enableCustomFields: undefined,
- supportsLayout: true
- };
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/reducer.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Returns a post attribute value, flattening nested rendered content using its
- * raw value in place of its original object form.
- *
- * @param {*} value Original value.
- *
- * @return {*} Raw value.
- */
- function getPostRawValue(value) {
- if (value && 'object' === typeof value && 'raw' in value) {
- return value.raw;
- }
- return value;
- }
- /**
- * Returns true if the two object arguments have the same keys, or false
- * otherwise.
- *
- * @param {Object} a First object.
- * @param {Object} b Second object.
- *
- * @return {boolean} Whether the two objects have the same keys.
- */
- function hasSameKeys(a, b) {
- const keysA = Object.keys(a).sort();
- const keysB = Object.keys(b).sort();
- return keysA.length === keysB.length && keysA.every((key, index) => keysB[index] === key);
- }
- /**
- * Returns true if, given the currently dispatching action and the previously
- * dispatched action, the two actions are editing the same post property, or
- * false otherwise.
- *
- * @param {Object} action Currently dispatching action.
- * @param {Object} previousAction Previously dispatched action.
- *
- * @return {boolean} Whether actions are updating the same post property.
- */
- function isUpdatingSamePostProperty(action, previousAction) {
- return action.type === 'EDIT_POST' && hasSameKeys(action.edits, previousAction.edits);
- }
- /**
- * Returns true if, given the currently dispatching action and the previously
- * dispatched action, the two actions are modifying the same property such that
- * undo history should be batched.
- *
- * @param {Object} action Currently dispatching action.
- * @param {Object} previousAction Previously dispatched action.
- *
- * @return {boolean} Whether to overwrite present state.
- */
- function shouldOverwriteState(action, previousAction) {
- if (action.type === 'RESET_EDITOR_BLOCKS') {
- return !action.shouldCreateUndoLevel;
- }
- if (!previousAction || action.type !== previousAction.type) {
- return false;
- }
- return isUpdatingSamePostProperty(action, previousAction);
- }
- function postId() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'SETUP_EDITOR_STATE':
- return action.post.id;
- }
- return state;
- }
- function postType() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'SETUP_EDITOR_STATE':
- return action.post.type;
- }
- return state;
- }
- /**
- * Reducer returning whether the post blocks match the defined template or not.
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {boolean} Updated state.
- */
- function template() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
- isValid: true
- };
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'SET_TEMPLATE_VALIDITY':
- return { ...state,
- isValid: action.isValid
- };
- }
- return state;
- }
- /**
- * Reducer returning current network request state (whether a request to
- * the WP REST API is in progress, successful, or failed).
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
- function saving() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'REQUEST_POST_UPDATE_START':
- case 'REQUEST_POST_UPDATE_FINISH':
- return {
- pending: action.type === 'REQUEST_POST_UPDATE_START',
- options: action.options || {}
- };
- }
- return state;
- }
- /**
- * Reducer returning deleting post request state.
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
- function deleting() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'REQUEST_POST_DELETE_START':
- case 'REQUEST_POST_DELETE_FINISH':
- return {
- pending: action.type === 'REQUEST_POST_DELETE_START'
- };
- }
- return state;
- }
- /**
- * Post Lock State.
- *
- * @typedef {Object} PostLockState
- *
- * @property {boolean} isLocked Whether the post is locked.
- * @property {?boolean} isTakeover Whether the post editing has been taken over.
- * @property {?boolean} activePostLock Active post lock value.
- * @property {?Object} user User that took over the post.
- */
- /**
- * Reducer returning the post lock status.
- *
- * @param {PostLockState} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {PostLockState} Updated state.
- */
- function postLock() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
- isLocked: false
- };
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'UPDATE_POST_LOCK':
- return action.lock;
- }
- return state;
- }
- /**
- * Post saving lock.
- *
- * When post saving is locked, the post cannot be published or updated.
- *
- * @param {PostLockState} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {PostLockState} Updated state.
- */
- function postSavingLock() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'LOCK_POST_SAVING':
- return { ...state,
- [action.lockName]: true
- };
- case 'UNLOCK_POST_SAVING':
- {
- const {
- [action.lockName]: removedLockName,
- ...restState
- } = state;
- return restState;
- }
- }
- return state;
- }
- /**
- * Post autosaving lock.
- *
- * When post autosaving is locked, the post will not autosave.
- *
- * @param {PostLockState} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {PostLockState} Updated state.
- */
- function postAutosavingLock() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'LOCK_POST_AUTOSAVING':
- return { ...state,
- [action.lockName]: true
- };
- case 'UNLOCK_POST_AUTOSAVING':
- {
- const {
- [action.lockName]: removedLockName,
- ...restState
- } = state;
- return restState;
- }
- }
- return state;
- }
- /**
- * Reducer returning whether the editor is ready to be rendered.
- * The editor is considered ready to be rendered once
- * the post object is loaded properly and the initial blocks parsed.
- *
- * @param {boolean} state
- * @param {Object} action
- *
- * @return {boolean} Updated state.
- */
- function isReady() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'SETUP_EDITOR_STATE':
- return true;
- case 'TEAR_DOWN_EDITOR':
- return false;
- }
- return state;
- }
- /**
- * Reducer returning the post editor setting.
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
- function editorSettings() {
- let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EDITOR_SETTINGS_DEFAULTS;
- let action = arguments.length > 1 ? arguments[1] : undefined;
- switch (action.type) {
- case 'UPDATE_EDITOR_SETTINGS':
- return { ...state,
- ...action.settings
- };
- }
- return state;
- }
- /* harmony default export */ var reducer = ((0,external_wp_data_namespaceObject.combineReducers)({
- postId,
- postType,
- saving,
- deleting,
- postLock,
- template,
- postSavingLock,
- isReady,
- editorSettings,
- postAutosavingLock
- }));
- ;// CONCATENATED MODULE: ./node_modules/rememo/rememo.js
- /** @typedef {(...args: any[]) => *[]} GetDependants */
- /** @typedef {() => void} Clear */
- /**
- * @typedef {{
- * getDependants: GetDependants,
- * clear: Clear
- * }} EnhancedSelector
- */
- /**
- * Internal cache entry.
- *
- * @typedef CacheNode
- *
- * @property {?CacheNode|undefined} [prev] Previous node.
- * @property {?CacheNode|undefined} [next] Next node.
- * @property {*[]} args Function arguments for cache entry.
- * @property {*} val Function result.
- */
- /**
- * @typedef Cache
- *
- * @property {Clear} clear Function to clear cache.
- * @property {boolean} [isUniqueByDependants] Whether dependants are valid in
- * considering cache uniqueness. A cache is unique if dependents are all arrays
- * or objects.
- * @property {CacheNode?} [head] Cache head.
- * @property {*[]} [lastDependants] Dependants from previous invocation.
- */
- /**
- * Arbitrary value used as key for referencing cache object in WeakMap tree.
- *
- * @type {{}}
- */
- var LEAF_KEY = {};
- /**
- * Returns the first argument as the sole entry in an array.
- *
- * @template T
- *
- * @param {T} value Value to return.
- *
- * @return {[T]} Value returned as entry in array.
- */
- function arrayOf(value) {
- return [value];
- }
- /**
- * Returns true if the value passed is object-like, or false otherwise. A value
- * is object-like if it can support property assignment, e.g. object or array.
- *
- * @param {*} value Value to test.
- *
- * @return {boolean} Whether value is object-like.
- */
- function isObjectLike(value) {
- return !!value && 'object' === typeof value;
- }
- /**
- * Creates and returns a new cache object.
- *
- * @return {Cache} Cache object.
- */
- function createCache() {
- /** @type {Cache} */
- var cache = {
- clear: function () {
- cache.head = null;
- },
- };
- return cache;
- }
- /**
- * Returns true if entries within the two arrays are strictly equal by
- * reference from a starting index.
- *
- * @param {*[]} a First array.
- * @param {*[]} b Second array.
- * @param {number} fromIndex Index from which to start comparison.
- *
- * @return {boolean} Whether arrays are shallowly equal.
- */
- function isShallowEqual(a, b, fromIndex) {
- var i;
- if (a.length !== b.length) {
- return false;
- }
- for (i = fromIndex; i < a.length; i++) {
- if (a[i] !== b[i]) {
- return false;
- }
- }
- return true;
- }
- /**
- * Returns a memoized selector function. The getDependants function argument is
- * called before the memoized selector and is expected to return an immutable
- * reference or array of references on which the selector depends for computing
- * its own return value. The memoize cache is preserved only as long as those
- * dependant references remain the same. If getDependants returns a different
- * reference(s), the cache is cleared and the selector value regenerated.
- *
- * @template {(...args: *[]) => *} S
- *
- * @param {S} selector Selector function.
- * @param {GetDependants=} getDependants Dependant getter returning an array of
- * references used in cache bust consideration.
- */
- /* harmony default export */ function rememo(selector, getDependants) {
- /** @type {WeakMap<*,*>} */
- var rootCache;
- /** @type {GetDependants} */
- var normalizedGetDependants = getDependants ? getDependants : arrayOf;
- /**
- * Returns the cache for a given dependants array. When possible, a WeakMap
- * will be used to create a unique cache for each set of dependants. This
- * is feasible due to the nature of WeakMap in allowing garbage collection
- * to occur on entries where the key object is no longer referenced. Since
- * WeakMap requires the key to be an object, this is only possible when the
- * dependant is object-like. The root cache is created as a hierarchy where
- * each top-level key is the first entry in a dependants set, the value a
- * WeakMap where each key is the next dependant, and so on. This continues
- * so long as the dependants are object-like. If no dependants are object-
- * like, then the cache is shared across all invocations.
- *
- * @see isObjectLike
- *
- * @param {*[]} dependants Selector dependants.
- *
- * @return {Cache} Cache object.
- */
- function getCache(dependants) {
- var caches = rootCache,
- isUniqueByDependants = true,
- i,
- dependant,
- map,
- cache;
- for (i = 0; i < dependants.length; i++) {
- dependant = dependants[i];
- // Can only compose WeakMap from object-like key.
- if (!isObjectLike(dependant)) {
- isUniqueByDependants = false;
- break;
- }
- // Does current segment of cache already have a WeakMap?
- if (caches.has(dependant)) {
- // Traverse into nested WeakMap.
- caches = caches.get(dependant);
- } else {
- // Create, set, and traverse into a new one.
- map = new WeakMap();
- caches.set(dependant, map);
- caches = map;
- }
- }
- // We use an arbitrary (but consistent) object as key for the last item
- // in the WeakMap to serve as our running cache.
- if (!caches.has(LEAF_KEY)) {
- cache = createCache();
- cache.isUniqueByDependants = isUniqueByDependants;
- caches.set(LEAF_KEY, cache);
- }
- return caches.get(LEAF_KEY);
- }
- /**
- * Resets root memoization cache.
- */
- function clear() {
- rootCache = new WeakMap();
- }
- /* eslint-disable jsdoc/check-param-names */
- /**
- * The augmented selector call, considering first whether dependants have
- * changed before passing it to underlying memoize function.
- *
- * @param {*} source Source object for derivation.
- * @param {...*} extraArgs Additional arguments to pass to selector.
- *
- * @return {*} Selector result.
- */
- /* eslint-enable jsdoc/check-param-names */
- function callSelector(/* source, ...extraArgs */) {
- var len = arguments.length,
- cache,
- node,
- i,
- args,
- dependants;
- // Create copy of arguments (avoid leaking deoptimization).
- args = new Array(len);
- for (i = 0; i < len; i++) {
- args[i] = arguments[i];
- }
- dependants = normalizedGetDependants.apply(null, args);
- cache = getCache(dependants);
- // If not guaranteed uniqueness by dependants (primitive type), shallow
- // compare against last dependants and, if references have changed,
- // destroy cache to recalculate result.
- if (!cache.isUniqueByDependants) {
- if (
- cache.lastDependants &&
- !isShallowEqual(dependants, cache.lastDependants, 0)
- ) {
- cache.clear();
- }
- cache.lastDependants = dependants;
- }
- node = cache.head;
- while (node) {
- // Check whether node arguments match arguments
- if (!isShallowEqual(node.args, args, 1)) {
- node = node.next;
- continue;
- }
- // At this point we can assume we've found a match
- // Surface matched node to head if not already
- if (node !== cache.head) {
- // Adjust siblings to point to each other.
- /** @type {CacheNode} */ (node.prev).next = node.next;
- if (node.next) {
- node.next.prev = node.prev;
- }
- node.next = cache.head;
- node.prev = null;
- /** @type {CacheNode} */ (cache.head).prev = node;
- cache.head = node;
- }
- // Return immediately
- return node.val;
- }
- // No cached value found. Continue to insertion phase:
- node = /** @type {CacheNode} */ ({
- // Generate the result from original function
- val: selector.apply(null, args),
- });
- // Avoid including the source object in the cache.
- args[0] = null;
- node.args = args;
- // Don't need to check whether node is already head, since it would
- // have been returned above already if it was
- // Shift existing head down list
- if (cache.head) {
- cache.head.prev = node;
- node.next = cache.head;
- }
- cache.head = node;
- return node.val;
- }
- callSelector.getDependants = normalizedGetDependants;
- callSelector.clear = clear;
- clear();
- return /** @type {S & EnhancedSelector} */ (callSelector);
- }
- ;// CONCATENATED MODULE: external ["wp","date"]
- var external_wp_date_namespaceObject = window["wp"]["date"];
- ;// CONCATENATED MODULE: external ["wp","url"]
- var external_wp_url_namespaceObject = window["wp"]["url"];
- ;// CONCATENATED MODULE: external ["wp","deprecated"]
- var external_wp_deprecated_namespaceObject = window["wp"]["deprecated"];
- var external_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_wp_deprecated_namespaceObject);
- ;// CONCATENATED MODULE: external ["wp","primitives"]
- var external_wp_primitives_namespaceObject = window["wp"]["primitives"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/layout.js
- /**
- * WordPress dependencies
- */
- const layout = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
- }));
- /* harmony default export */ var library_layout = (layout);
- ;// CONCATENATED MODULE: external ["wp","preferences"]
- var external_wp_preferences_namespaceObject = window["wp"]["preferences"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/constants.js
- /**
- * Set of post properties for which edits should assume a merging behavior,
- * assuming an object value.
- *
- * @type {Set}
- */
- const EDIT_MERGE_PROPERTIES = new Set(['meta']);
- /**
- * Constant for the store module (or reducer) key.
- *
- * @type {string}
- */
- const STORE_NAME = 'core/editor';
- const SAVE_POST_NOTICE_ID = 'SAVE_POST_NOTICE_ID';
- const TRASH_POST_NOTICE_ID = 'TRASH_POST_NOTICE_ID';
- const PERMALINK_POSTNAME_REGEX = /%(?:postname|pagename)%/;
- const ONE_MINUTE_IN_MS = 60 * 1000;
- const AUTOSAVE_PROPERTIES = ['title', 'excerpt', 'content'];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/header.js
- /**
- * WordPress dependencies
- */
- const header = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M18.5 10.5H10v8h8a.5.5 0 00.5-.5v-7.5zm-10 0h-3V18a.5.5 0 00.5.5h2.5v-8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
- }));
- /* harmony default export */ var library_header = (header);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/footer.js
- /**
- * WordPress dependencies
- */
- const footer = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- fillRule: "evenodd",
- d: "M18 5.5h-8v8h8.5V6a.5.5 0 00-.5-.5zm-9.5 8h-3V6a.5.5 0 01.5-.5h2.5v8zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
- }));
- /* harmony default export */ var library_footer = (footer);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/sidebar.js
- /**
- * WordPress dependencies
- */
- const sidebar = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M18 5.5H6a.5.5 0 00-.5.5v3h13V6a.5.5 0 00-.5-.5zm.5 5H10v8h8a.5.5 0 00.5-.5v-7.5zM6 4h12a2 2 0 012 2v12a2 2 0 01-2 2H6a2 2 0 01-2-2V6a2 2 0 012-2z"
- }));
- /* harmony default export */ var library_sidebar = (sidebar);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/symbol-filled.js
- /**
- * WordPress dependencies
- */
- const symbolFilled = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M21.3 10.8l-5.6-5.6c-.7-.7-1.8-.7-2.5 0l-5.6 5.6c-.7.7-.7 1.8 0 2.5l5.6 5.6c.3.3.8.5 1.2.5s.9-.2 1.2-.5l5.6-5.6c.8-.7.8-1.9.1-2.5zm-17.6 1L10 5.5l-1-1-6.3 6.3c-.7.7-.7 1.8 0 2.5L9 19.5l1.1-1.1-6.3-6.3c-.2 0-.2-.2-.1-.3z"
- }));
- /* harmony default export */ var symbol_filled = (symbolFilled);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/get-template-part-icon.js
- /**
- * WordPress dependencies
- */
- /**
- * Helper function to retrieve the corresponding icon by name.
- *
- * @param {string} iconName The name of the icon.
- *
- * @return {Object} The corresponding icon.
- */
- function getTemplatePartIcon(iconName) {
- if ('header' === iconName) {
- return library_header;
- } else if ('footer' === iconName) {
- return library_footer;
- } else if ('sidebar' === iconName) {
- return library_sidebar;
- }
- return symbol_filled;
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/selectors.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Shared reference to an empty object for cases where it is important to avoid
- * returning a new object reference on every invocation, as in a connected or
- * other pure component which performs `shouldComponentUpdate` check on props.
- * This should be used as a last resort, since the normalized data should be
- * maintained by the reducer result in state.
- */
- const EMPTY_OBJECT = {};
- /**
- * Shared reference to an empty array for cases where it is important to avoid
- * returning a new array reference on every invocation, as in a connected or
- * other pure component which performs `shouldComponentUpdate` check on props.
- * This should be used as a last resort, since the normalized data should be
- * maintained by the reducer result in state.
- */
- const EMPTY_ARRAY = [];
- /**
- * Returns true if any past editor history snapshots exist, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether undo history exists.
- */
- const hasEditorUndo = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
- return select(external_wp_coreData_namespaceObject.store).hasUndo();
- });
- /**
- * Returns true if any future editor history snapshots exist, or false
- * otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether redo history exists.
- */
- const hasEditorRedo = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => {
- return select(external_wp_coreData_namespaceObject.store).hasRedo();
- });
- /**
- * Returns true if the currently edited post is yet to be saved, or false if
- * the post has been saved.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post is new.
- */
- function isEditedPostNew(state) {
- return getCurrentPost(state).status === 'auto-draft';
- }
- /**
- * Returns true if content includes unsaved changes, or false otherwise.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether content includes unsaved changes.
- */
- function hasChangedContent(state) {
- const edits = getPostEdits(state);
- return 'blocks' in edits || // `edits` is intended to contain only values which are different from
- // the saved post, so the mere presence of a property is an indicator
- // that the value is different than what is known to be saved. While
- // content in Visual mode is represented by the blocks state, in Text
- // mode it is tracked by `edits.content`.
- 'content' in edits;
- }
- /**
- * Returns true if there are unsaved values for the current edit session, or
- * false if the editing state matches the saved or new post.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether unsaved values exist.
- */
- const isEditedPostDirty = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- // Edits should contain only fields which differ from the saved post (reset
- // at initial load and save complete). Thus, a non-empty edits state can be
- // inferred to contain unsaved values.
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- if (select(external_wp_coreData_namespaceObject.store).hasEditsForEntityRecord('postType', postType, postId)) {
- return true;
- }
- return false;
- });
- /**
- * Returns true if there are unsaved edits for entities other than
- * the editor's post, and false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether there are edits or not.
- */
- const hasNonPostEntityChanges = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const dirtyEntityRecords = select(external_wp_coreData_namespaceObject.store).__experimentalGetDirtyEntityRecords();
- const {
- type,
- id
- } = getCurrentPost(state);
- return dirtyEntityRecords.some(entityRecord => entityRecord.kind !== 'postType' || entityRecord.name !== type || entityRecord.key !== id);
- });
- /**
- * Returns true if there are no unsaved values for the current edit session and
- * if the currently edited post is new (has never been saved before).
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether new post and unsaved values exist.
- */
- function isCleanNewPost(state) {
- return !isEditedPostDirty(state) && isEditedPostNew(state);
- }
- /**
- * Returns the post currently being edited in its last known saved state, not
- * including unsaved edits. Returns an object containing relevant default post
- * values if the post has not yet been saved.
- *
- * @param {Object} state Global application state.
- *
- * @return {Object} Post object.
- */
- const getCurrentPost = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postId = getCurrentPostId(state);
- const postType = getCurrentPostType(state);
- const post = select(external_wp_coreData_namespaceObject.store).getRawEntityRecord('postType', postType, postId);
- if (post) {
- return post;
- } // This exists for compatibility with the previous selector behavior
- // which would guarantee an object return based on the editor reducer's
- // default empty object state.
- return EMPTY_OBJECT;
- });
- /**
- * Returns the post type of the post currently being edited.
- *
- * @param {Object} state Global application state.
- *
- * @return {string} Post type.
- */
- function getCurrentPostType(state) {
- return state.postType;
- }
- /**
- * Returns the ID of the post currently being edited, or null if the post has
- * not yet been saved.
- *
- * @param {Object} state Global application state.
- *
- * @return {?number} ID of current post.
- */
- function getCurrentPostId(state) {
- return state.postId;
- }
- /**
- * Returns the number of revisions of the post currently being edited.
- *
- * @param {Object} state Global application state.
- *
- * @return {number} Number of revisions.
- */
- function getCurrentPostRevisionsCount(state) {
- var _getCurrentPost$_link, _getCurrentPost$_link2, _getCurrentPost$_link3, _getCurrentPost$_link4;
- return (_getCurrentPost$_link = (_getCurrentPost$_link2 = getCurrentPost(state)._links) === null || _getCurrentPost$_link2 === void 0 ? void 0 : (_getCurrentPost$_link3 = _getCurrentPost$_link2['version-history']) === null || _getCurrentPost$_link3 === void 0 ? void 0 : (_getCurrentPost$_link4 = _getCurrentPost$_link3[0]) === null || _getCurrentPost$_link4 === void 0 ? void 0 : _getCurrentPost$_link4.count) !== null && _getCurrentPost$_link !== void 0 ? _getCurrentPost$_link : 0;
- }
- /**
- * Returns the last revision ID of the post currently being edited,
- * or null if the post has no revisions.
- *
- * @param {Object} state Global application state.
- *
- * @return {?number} ID of the last revision.
- */
- function getCurrentPostLastRevisionId(state) {
- var _getCurrentPost$_link5, _getCurrentPost$_link6, _getCurrentPost$_link7, _getCurrentPost$_link8;
- return (_getCurrentPost$_link5 = (_getCurrentPost$_link6 = getCurrentPost(state)._links) === null || _getCurrentPost$_link6 === void 0 ? void 0 : (_getCurrentPost$_link7 = _getCurrentPost$_link6['predecessor-version']) === null || _getCurrentPost$_link7 === void 0 ? void 0 : (_getCurrentPost$_link8 = _getCurrentPost$_link7[0]) === null || _getCurrentPost$_link8 === void 0 ? void 0 : _getCurrentPost$_link8.id) !== null && _getCurrentPost$_link5 !== void 0 ? _getCurrentPost$_link5 : null;
- }
- /**
- * Returns any post values which have been changed in the editor but not yet
- * been saved.
- *
- * @param {Object} state Global application state.
- *
- * @return {Object} Object of key value pairs comprising unsaved edits.
- */
- const getPostEdits = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- return select(external_wp_coreData_namespaceObject.store).getEntityRecordEdits('postType', postType, postId) || EMPTY_OBJECT;
- });
- /**
- * Returns an attribute value of the saved post.
- *
- * @param {Object} state Global application state.
- * @param {string} attributeName Post attribute name.
- *
- * @return {*} Post attribute value.
- */
- function getCurrentPostAttribute(state, attributeName) {
- switch (attributeName) {
- case 'type':
- return getCurrentPostType(state);
- case 'id':
- return getCurrentPostId(state);
- default:
- const post = getCurrentPost(state);
- if (!post.hasOwnProperty(attributeName)) {
- break;
- }
- return getPostRawValue(post[attributeName]);
- }
- }
- /**
- * Returns a single attribute of the post being edited, preferring the unsaved
- * edit if one exists, but merging with the attribute value for the last known
- * saved state of the post (this is needed for some nested attributes like meta).
- *
- * @param {Object} state Global application state.
- * @param {string} attributeName Post attribute name.
- *
- * @return {*} Post attribute value.
- */
- const getNestedEditedPostProperty = (state, attributeName) => {
- const edits = getPostEdits(state);
- if (!edits.hasOwnProperty(attributeName)) {
- return getCurrentPostAttribute(state, attributeName);
- }
- return { ...getCurrentPostAttribute(state, attributeName),
- ...edits[attributeName]
- };
- };
- /**
- * Returns a single attribute of the post being edited, preferring the unsaved
- * edit if one exists, but falling back to the attribute for the last known
- * saved state of the post.
- *
- * @param {Object} state Global application state.
- * @param {string} attributeName Post attribute name.
- *
- * @return {*} Post attribute value.
- */
- function getEditedPostAttribute(state, attributeName) {
- // Special cases.
- switch (attributeName) {
- case 'content':
- return getEditedPostContent(state);
- } // Fall back to saved post value if not edited.
- const edits = getPostEdits(state);
- if (!edits.hasOwnProperty(attributeName)) {
- return getCurrentPostAttribute(state, attributeName);
- } // Merge properties are objects which contain only the patch edit in state,
- // and thus must be merged with the current post attribute.
- if (EDIT_MERGE_PROPERTIES.has(attributeName)) {
- return getNestedEditedPostProperty(state, attributeName);
- }
- return edits[attributeName];
- }
- /**
- * Returns an attribute value of the current autosave revision for a post, or
- * null if there is no autosave for the post.
- *
- * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` selector
- * from the '@wordpress/core-data' package and access properties on the returned
- * autosave object using getPostRawValue.
- *
- * @param {Object} state Global application state.
- * @param {string} attributeName Autosave attribute name.
- *
- * @return {*} Autosave attribute value.
- */
- const getAutosaveAttribute = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => (state, attributeName) => {
- var _select$getCurrentUse;
- if (!AUTOSAVE_PROPERTIES.includes(attributeName) && attributeName !== 'preview_link') {
- return;
- }
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- const currentUserId = (_select$getCurrentUse = select(external_wp_coreData_namespaceObject.store).getCurrentUser()) === null || _select$getCurrentUse === void 0 ? void 0 : _select$getCurrentUse.id;
- const autosave = select(external_wp_coreData_namespaceObject.store).getAutosave(postType, postId, currentUserId);
- if (autosave) {
- return getPostRawValue(autosave[attributeName]);
- }
- });
- /**
- * Returns the current visibility of the post being edited, preferring the
- * unsaved value if different than the saved post. The return value is one of
- * "private", "password", or "public".
- *
- * @param {Object} state Global application state.
- *
- * @return {string} Post visibility.
- */
- function getEditedPostVisibility(state) {
- const status = getEditedPostAttribute(state, 'status');
- if (status === 'private') {
- return 'private';
- }
- const password = getEditedPostAttribute(state, 'password');
- if (password) {
- return 'password';
- }
- return 'public';
- }
- /**
- * Returns true if post is pending review.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether current post is pending review.
- */
- function isCurrentPostPending(state) {
- return getCurrentPost(state).status === 'pending';
- }
- /**
- * Return true if the current post has already been published.
- *
- * @param {Object} state Global application state.
- * @param {Object?} currentPost Explicit current post for bypassing registry selector.
- *
- * @return {boolean} Whether the post has been published.
- */
- function isCurrentPostPublished(state, currentPost) {
- const post = currentPost || getCurrentPost(state);
- return ['publish', 'private'].indexOf(post.status) !== -1 || post.status === 'future' && !(0,external_wp_date_namespaceObject.isInTheFuture)(new Date(Number((0,external_wp_date_namespaceObject.getDate)(post.date)) - ONE_MINUTE_IN_MS));
- }
- /**
- * Returns true if post is already scheduled.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether current post is scheduled to be posted.
- */
- function isCurrentPostScheduled(state) {
- return getCurrentPost(state).status === 'future' && !isCurrentPostPublished(state);
- }
- /**
- * Return true if the post being edited can be published.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post can been published.
- */
- function isEditedPostPublishable(state) {
- const post = getCurrentPost(state); // TODO: Post being publishable should be superset of condition of post
- // being saveable. Currently this restriction is imposed at UI.
- //
- // See: <PostPublishButton /> (`isButtonEnabled` assigned by `isSaveable`).
- return isEditedPostDirty(state) || ['publish', 'private', 'future'].indexOf(post.status) === -1;
- }
- /**
- * Returns true if the post can be saved, or false otherwise. A post must
- * contain a title, an excerpt, or non-empty content to be valid for save.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post can be saved.
- */
- function isEditedPostSaveable(state) {
- if (isSavingPost(state)) {
- return false;
- } // TODO: Post should not be saveable if not dirty. Cannot be added here at
- // this time since posts where meta boxes are present can be saved even if
- // the post is not dirty. Currently this restriction is imposed at UI, but
- // should be moved here.
- //
- // See: `isEditedPostPublishable` (includes `isEditedPostDirty` condition)
- // See: <PostSavedState /> (`forceIsDirty` prop)
- // See: <PostPublishButton /> (`forceIsDirty` prop)
- // See: https://github.com/WordPress/gutenberg/pull/4184.
- return !!getEditedPostAttribute(state, 'title') || !!getEditedPostAttribute(state, 'excerpt') || !isEditedPostEmpty(state) || external_wp_element_namespaceObject.Platform.OS === 'native';
- }
- /**
- * Returns true if the edited post has content. A post has content if it has at
- * least one saveable block or otherwise has a non-empty content property
- * assigned.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether post has content.
- */
- function isEditedPostEmpty(state) {
- // While the condition of truthy content string is sufficient to determine
- // emptiness, testing saveable blocks length is a trivial operation. Since
- // this function can be called frequently, optimize for the fast case as a
- // condition of the mere existence of blocks. Note that the value of edited
- // content takes precedent over block content, and must fall through to the
- // default logic.
- const blocks = getEditorBlocks(state);
- if (blocks.length) {
- // Pierce the abstraction of the serializer in knowing that blocks are
- // joined with newlines such that even if every individual block
- // produces an empty save result, the serialized content is non-empty.
- if (blocks.length > 1) {
- return false;
- } // There are two conditions under which the optimization cannot be
- // assumed, and a fallthrough to getEditedPostContent must occur:
- //
- // 1. getBlocksForSerialization has special treatment in omitting a
- // single unmodified default block.
- // 2. Comment delimiters are omitted for a freeform or unregistered
- // block in its serialization. The freeform block specifically may
- // produce an empty string in its saved output.
- //
- // For all other content, the single block is assumed to make a post
- // non-empty, if only by virtue of its own comment delimiters.
- const blockName = blocks[0].name;
- if (blockName !== (0,external_wp_blocks_namespaceObject.getDefaultBlockName)() && blockName !== (0,external_wp_blocks_namespaceObject.getFreeformContentHandlerName)()) {
- return false;
- }
- }
- return !getEditedPostContent(state);
- }
- /**
- * Returns true if the post can be autosaved, or false otherwise.
- *
- * @param {Object} state Global application state.
- * @param {Object} autosave A raw autosave object from the REST API.
- *
- * @return {boolean} Whether the post can be autosaved.
- */
- const isEditedPostAutosaveable = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- var _select$getCurrentUse2;
- // A post must contain a title, an excerpt, or non-empty content to be valid for autosaving.
- if (!isEditedPostSaveable(state)) {
- return false;
- } // A post is not autosavable when there is a post autosave lock.
- if (isPostAutosavingLocked(state)) {
- return false;
- }
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- const hasFetchedAutosave = select(external_wp_coreData_namespaceObject.store).hasFetchedAutosaves(postType, postId);
- const currentUserId = (_select$getCurrentUse2 = select(external_wp_coreData_namespaceObject.store).getCurrentUser()) === null || _select$getCurrentUse2 === void 0 ? void 0 : _select$getCurrentUse2.id; // Disable reason - this line causes the side-effect of fetching the autosave
- // via a resolver, moving below the return would result in the autosave never
- // being fetched.
- // eslint-disable-next-line @wordpress/no-unused-vars-before-return
- const autosave = select(external_wp_coreData_namespaceObject.store).getAutosave(postType, postId, currentUserId); // If any existing autosaves have not yet been fetched, this function is
- // unable to determine if the post is autosaveable, so return false.
- if (!hasFetchedAutosave) {
- return false;
- } // If we don't already have an autosave, the post is autosaveable.
- if (!autosave) {
- return true;
- } // To avoid an expensive content serialization, use the content dirtiness
- // flag in place of content field comparison against the known autosave.
- // This is not strictly accurate, and relies on a tolerance toward autosave
- // request failures for unnecessary saves.
- if (hasChangedContent(state)) {
- return true;
- } // If the title or excerpt has changed, the post is autosaveable.
- return ['title', 'excerpt'].some(field => getPostRawValue(autosave[field]) !== getEditedPostAttribute(state, field));
- });
- /**
- * Return true if the post being edited is being scheduled. Preferring the
- * unsaved status values.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post has been published.
- */
- function isEditedPostBeingScheduled(state) {
- const date = getEditedPostAttribute(state, 'date'); // Offset the date by one minute (network latency).
- const checkedDate = new Date(Number((0,external_wp_date_namespaceObject.getDate)(date)) - ONE_MINUTE_IN_MS);
- return (0,external_wp_date_namespaceObject.isInTheFuture)(checkedDate);
- }
- /**
- * Returns whether the current post should be considered to have a "floating"
- * date (i.e. that it would publish "Immediately" rather than at a set time).
- *
- * Unlike in the PHP backend, the REST API returns a full date string for posts
- * where the 0000-00-00T00:00:00 placeholder is present in the database. To
- * infer that a post is set to publish "Immediately" we check whether the date
- * and modified date are the same.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether the edited post has a floating date value.
- */
- function isEditedPostDateFloating(state) {
- const date = getEditedPostAttribute(state, 'date');
- const modified = getEditedPostAttribute(state, 'modified'); // This should be the status of the persisted post
- // It shouldn't use the "edited" status otherwise it breaks the
- // inferred post data floating status
- // See https://github.com/WordPress/gutenberg/issues/28083.
- const status = getCurrentPost(state).status;
- if (status === 'draft' || status === 'auto-draft' || status === 'pending') {
- return date === modified || date === null;
- }
- return false;
- }
- /**
- * Returns true if the post is currently being deleted, or false otherwise.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether post is being deleted.
- */
- function isDeletingPost(state) {
- return !!state.deleting.pending;
- }
- /**
- * Returns true if the post is currently being saved, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether post is being saved.
- */
- const isSavingPost = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- return select(external_wp_coreData_namespaceObject.store).isSavingEntityRecord('postType', postType, postId);
- });
- /**
- * Returns true if non-post entities are currently being saved, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether non-post entities are being saved.
- */
- const isSavingNonPostEntityChanges = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const entitiesBeingSaved = select(external_wp_coreData_namespaceObject.store).__experimentalGetEntitiesBeingSaved();
- const {
- type,
- id
- } = getCurrentPost(state);
- return entitiesBeingSaved.some(entityRecord => entityRecord.kind !== 'postType' || entityRecord.name !== type || entityRecord.key !== id);
- });
- /**
- * Returns true if a previous post save was attempted successfully, or false
- * otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post was saved successfully.
- */
- const didPostSaveRequestSucceed = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- return !select(external_wp_coreData_namespaceObject.store).getLastEntitySaveError('postType', postType, postId);
- });
- /**
- * Returns true if a previous post save was attempted but failed, or false
- * otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post save failed.
- */
- const didPostSaveRequestFail = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postType = getCurrentPostType(state);
- const postId = getCurrentPostId(state);
- return !!select(external_wp_coreData_namespaceObject.store).getLastEntitySaveError('postType', postType, postId);
- });
- /**
- * Returns true if the post is autosaving, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post is autosaving.
- */
- function isAutosavingPost(state) {
- var _state$saving$options;
- if (!isSavingPost(state)) {
- return false;
- }
- return Boolean((_state$saving$options = state.saving.options) === null || _state$saving$options === void 0 ? void 0 : _state$saving$options.isAutosave);
- }
- /**
- * Returns true if the post is being previewed, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the post is being previewed.
- */
- function isPreviewingPost(state) {
- var _state$saving$options2;
- if (!isSavingPost(state)) {
- return false;
- }
- return Boolean((_state$saving$options2 = state.saving.options) === null || _state$saving$options2 === void 0 ? void 0 : _state$saving$options2.isPreview);
- }
- /**
- * Returns the post preview link
- *
- * @param {Object} state Global application state.
- *
- * @return {string?} Preview Link.
- */
- function getEditedPostPreviewLink(state) {
- if (state.saving.pending || isSavingPost(state)) {
- return;
- }
- let previewLink = getAutosaveAttribute(state, 'preview_link'); // Fix for issue: https://github.com/WordPress/gutenberg/issues/33616
- // If the post is draft, ignore the preview link from the autosave record,
- // because the preview could be a stale autosave if the post was switched from
- // published to draft.
- // See: https://github.com/WordPress/gutenberg/pull/37952.
- if (!previewLink || 'draft' === getCurrentPost(state).status) {
- previewLink = getEditedPostAttribute(state, 'link');
- if (previewLink) {
- previewLink = (0,external_wp_url_namespaceObject.addQueryArgs)(previewLink, {
- preview: true
- });
- }
- }
- const featuredImageId = getEditedPostAttribute(state, 'featured_media');
- if (previewLink && featuredImageId) {
- return (0,external_wp_url_namespaceObject.addQueryArgs)(previewLink, {
- _thumbnail_id: featuredImageId
- });
- }
- return previewLink;
- }
- /**
- * Returns a suggested post format for the current post, inferred only if there
- * is a single block within the post and it is of a type known to match a
- * default post format. Returns null if the format cannot be determined.
- *
- * @param {Object} state Global application state.
- *
- * @return {?string} Suggested post format.
- */
- function getSuggestedPostFormat(state) {
- const blocks = getEditorBlocks(state);
- if (blocks.length > 2) return null;
- let name; // If there is only one block in the content of the post grab its name
- // so we can derive a suitable post format from it.
- if (blocks.length === 1) {
- name = blocks[0].name; // Check for core/embed `video` and `audio` eligible suggestions.
- if (name === 'core/embed') {
- var _blocks$0$attributes;
- const provider = (_blocks$0$attributes = blocks[0].attributes) === null || _blocks$0$attributes === void 0 ? void 0 : _blocks$0$attributes.providerNameSlug;
- if (['youtube', 'vimeo'].includes(provider)) {
- name = 'core/video';
- } else if (['spotify', 'soundcloud'].includes(provider)) {
- name = 'core/audio';
- }
- }
- } // If there are two blocks in the content and the last one is a text blocks
- // grab the name of the first one to also suggest a post format from it.
- if (blocks.length === 2 && blocks[1].name === 'core/paragraph') {
- name = blocks[0].name;
- } // We only convert to default post formats in core.
- switch (name) {
- case 'core/image':
- return 'image';
- case 'core/quote':
- case 'core/pullquote':
- return 'quote';
- case 'core/gallery':
- return 'gallery';
- case 'core/video':
- return 'video';
- case 'core/audio':
- return 'audio';
- default:
- return null;
- }
- }
- /**
- * Returns the content of the post being edited.
- *
- * @param {Object} state Global application state.
- *
- * @return {string} Post content.
- */
- const getEditedPostContent = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- const postId = getCurrentPostId(state);
- const postType = getCurrentPostType(state);
- const record = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', postType, postId);
- if (record) {
- if (typeof record.content === 'function') {
- return record.content(record);
- } else if (record.blocks) {
- return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(record.blocks);
- } else if (record.content) {
- return record.content;
- }
- }
- return '';
- });
- /**
- * Returns true if the post is being published, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether post is being published.
- */
- function isPublishingPost(state) {
- return isSavingPost(state) && !isCurrentPostPublished(state) && getEditedPostAttribute(state, 'status') === 'publish';
- }
- /**
- * Returns whether the permalink is editable or not.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether or not the permalink is editable.
- */
- function isPermalinkEditable(state) {
- const permalinkTemplate = getEditedPostAttribute(state, 'permalink_template');
- return PERMALINK_POSTNAME_REGEX.test(permalinkTemplate);
- }
- /**
- * Returns the permalink for the post.
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} The permalink, or null if the post is not viewable.
- */
- function getPermalink(state) {
- const permalinkParts = getPermalinkParts(state);
- if (!permalinkParts) {
- return null;
- }
- const {
- prefix,
- postName,
- suffix
- } = permalinkParts;
- if (isPermalinkEditable(state)) {
- return prefix + postName + suffix;
- }
- return prefix;
- }
- /**
- * Returns the slug for the post being edited, preferring a manually edited
- * value if one exists, then a sanitized version of the current post title, and
- * finally the post ID.
- *
- * @param {Object} state Editor state.
- *
- * @return {string} The current slug to be displayed in the editor
- */
- function getEditedPostSlug(state) {
- return getEditedPostAttribute(state, 'slug') || (0,external_wp_url_namespaceObject.cleanForSlug)(getEditedPostAttribute(state, 'title')) || getCurrentPostId(state);
- }
- /**
- * Returns the permalink for a post, split into it's three parts: the prefix,
- * the postName, and the suffix.
- *
- * @param {Object} state Editor state.
- *
- * @return {Object} An object containing the prefix, postName, and suffix for
- * the permalink, or null if the post is not viewable.
- */
- function getPermalinkParts(state) {
- const permalinkTemplate = getEditedPostAttribute(state, 'permalink_template');
- if (!permalinkTemplate) {
- return null;
- }
- const postName = getEditedPostAttribute(state, 'slug') || getEditedPostAttribute(state, 'generated_slug');
- const [prefix, suffix] = permalinkTemplate.split(PERMALINK_POSTNAME_REGEX);
- return {
- prefix,
- postName,
- suffix
- };
- }
- /**
- * Returns whether the post is locked.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Is locked.
- */
- function isPostLocked(state) {
- return state.postLock.isLocked;
- }
- /**
- * Returns whether post saving is locked.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Is locked.
- */
- function isPostSavingLocked(state) {
- return Object.keys(state.postSavingLock).length > 0;
- }
- /**
- * Returns whether post autosaving is locked.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Is locked.
- */
- function isPostAutosavingLocked(state) {
- return Object.keys(state.postAutosavingLock).length > 0;
- }
- /**
- * Returns whether the edition of the post has been taken over.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Is post lock takeover.
- */
- function isPostLockTakeover(state) {
- return state.postLock.isTakeover;
- }
- /**
- * Returns details about the post lock user.
- *
- * @param {Object} state Global application state.
- *
- * @return {Object} A user object.
- */
- function getPostLockUser(state) {
- return state.postLock.user;
- }
- /**
- * Returns the active post lock.
- *
- * @param {Object} state Global application state.
- *
- * @return {Object} The lock object.
- */
- function getActivePostLock(state) {
- return state.postLock.activePostLock;
- }
- /**
- * Returns whether or not the user has the unfiltered_html capability.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether the user can or can't post unfiltered HTML.
- */
- function canUserUseUnfilteredHTML(state) {
- var _getCurrentPost$_link9;
- return Boolean((_getCurrentPost$_link9 = getCurrentPost(state)._links) === null || _getCurrentPost$_link9 === void 0 ? void 0 : _getCurrentPost$_link9.hasOwnProperty('wp:action-unfiltered-html'));
- }
- /**
- * Returns whether the pre-publish panel should be shown
- * or skipped when the user clicks the "publish" button.
- *
- * @return {boolean} Whether the pre-publish panel should be shown or not.
- */
- const isPublishSidebarEnabled = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => () => !!select(external_wp_preferences_namespaceObject.store).get('core/edit-post', 'isPublishSidebarEnabled'));
- /**
- * Return the current block list.
- *
- * @param {Object} state
- * @return {Array} Block list.
- */
- function getEditorBlocks(state) {
- return getEditedPostAttribute(state, 'blocks') || EMPTY_ARRAY;
- }
- /**
- * A block selection object.
- *
- * @typedef {Object} WPBlockSelection
- *
- * @property {string} clientId A block client ID.
- * @property {string} attributeKey A block attribute key.
- * @property {number} offset An attribute value offset, based on the rich
- * text value. See `wp.richText.create`.
- */
- /**
- * Returns the current selection start.
- *
- * @param {Object} state
- * @return {WPBlockSelection} The selection start.
- *
- * @deprecated since Gutenberg 10.0.0.
- */
- function getEditorSelectionStart(state) {
- var _getEditedPostAttribu;
- external_wp_deprecated_default()("select('core/editor').getEditorSelectionStart", {
- since: '5.8',
- alternative: "select('core/editor').getEditorSelection"
- });
- return (_getEditedPostAttribu = getEditedPostAttribute(state, 'selection')) === null || _getEditedPostAttribu === void 0 ? void 0 : _getEditedPostAttribu.selectionStart;
- }
- /**
- * Returns the current selection end.
- *
- * @param {Object} state
- * @return {WPBlockSelection} The selection end.
- *
- * @deprecated since Gutenberg 10.0.0.
- */
- function getEditorSelectionEnd(state) {
- var _getEditedPostAttribu2;
- external_wp_deprecated_default()("select('core/editor').getEditorSelectionStart", {
- since: '5.8',
- alternative: "select('core/editor').getEditorSelection"
- });
- return (_getEditedPostAttribu2 = getEditedPostAttribute(state, 'selection')) === null || _getEditedPostAttribu2 === void 0 ? void 0 : _getEditedPostAttribu2.selectionEnd;
- }
- /**
- * Returns the current selection.
- *
- * @param {Object} state
- * @return {WPBlockSelection} The selection end.
- */
- function getEditorSelection(state) {
- return getEditedPostAttribute(state, 'selection');
- }
- /**
- * Is the editor ready
- *
- * @param {Object} state
- * @return {boolean} is Ready.
- */
- function __unstableIsEditorReady(state) {
- return state.isReady;
- }
- /**
- * Returns the post editor settings.
- *
- * @param {Object} state Editor state.
- *
- * @return {Object} The editor settings object.
- */
- function getEditorSettings(state) {
- return state.editorSettings;
- }
- /*
- * Backward compatibility
- */
- /**
- * Returns state object prior to a specified optimist transaction ID, or `null`
- * if the transaction corresponding to the given ID cannot be found.
- *
- * @deprecated since Gutenberg 9.7.0.
- */
- function getStateBeforeOptimisticTransaction() {
- external_wp_deprecated_default()("select('core/editor').getStateBeforeOptimisticTransaction", {
- since: '5.7',
- hint: 'No state history is kept on this store anymore'
- });
- return null;
- }
- /**
- * Returns true if an optimistic transaction is pending commit, for which the
- * before state satisfies the given predicate function.
- *
- * @deprecated since Gutenberg 9.7.0.
- */
- function inSomeHistory() {
- external_wp_deprecated_default()("select('core/editor').inSomeHistory", {
- since: '5.7',
- hint: 'No state history is kept on this store anymore'
- });
- return false;
- }
- function getBlockEditorSelector(name) {
- return (0,external_wp_data_namespaceObject.createRegistrySelector)(select => function (state) {
- external_wp_deprecated_default()("`wp.data.select( 'core/editor' )." + name + '`', {
- since: '5.3',
- alternative: "`wp.data.select( 'core/block-editor' )." + name + '`',
- version: '6.2'
- });
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- return select(external_wp_blockEditor_namespaceObject.store)[name](...args);
- });
- }
- /**
- * @see getBlockName in core/block-editor store.
- */
- const getBlockName = getBlockEditorSelector('getBlockName');
- /**
- * @see isBlockValid in core/block-editor store.
- */
- const isBlockValid = getBlockEditorSelector('isBlockValid');
- /**
- * @see getBlockAttributes in core/block-editor store.
- */
- const getBlockAttributes = getBlockEditorSelector('getBlockAttributes');
- /**
- * @see getBlock in core/block-editor store.
- */
- const getBlock = getBlockEditorSelector('getBlock');
- /**
- * @see getBlocks in core/block-editor store.
- */
- const getBlocks = getBlockEditorSelector('getBlocks');
- /**
- * @see getClientIdsOfDescendants in core/block-editor store.
- */
- const getClientIdsOfDescendants = getBlockEditorSelector('getClientIdsOfDescendants');
- /**
- * @see getClientIdsWithDescendants in core/block-editor store.
- */
- const getClientIdsWithDescendants = getBlockEditorSelector('getClientIdsWithDescendants');
- /**
- * @see getGlobalBlockCount in core/block-editor store.
- */
- const getGlobalBlockCount = getBlockEditorSelector('getGlobalBlockCount');
- /**
- * @see getBlocksByClientId in core/block-editor store.
- */
- const getBlocksByClientId = getBlockEditorSelector('getBlocksByClientId');
- /**
- * @see getBlockCount in core/block-editor store.
- */
- const getBlockCount = getBlockEditorSelector('getBlockCount');
- /**
- * @see getBlockSelectionStart in core/block-editor store.
- */
- const getBlockSelectionStart = getBlockEditorSelector('getBlockSelectionStart');
- /**
- * @see getBlockSelectionEnd in core/block-editor store.
- */
- const getBlockSelectionEnd = getBlockEditorSelector('getBlockSelectionEnd');
- /**
- * @see getSelectedBlockCount in core/block-editor store.
- */
- const getSelectedBlockCount = getBlockEditorSelector('getSelectedBlockCount');
- /**
- * @see hasSelectedBlock in core/block-editor store.
- */
- const hasSelectedBlock = getBlockEditorSelector('hasSelectedBlock');
- /**
- * @see getSelectedBlockClientId in core/block-editor store.
- */
- const getSelectedBlockClientId = getBlockEditorSelector('getSelectedBlockClientId');
- /**
- * @see getSelectedBlock in core/block-editor store.
- */
- const getSelectedBlock = getBlockEditorSelector('getSelectedBlock');
- /**
- * @see getBlockRootClientId in core/block-editor store.
- */
- const getBlockRootClientId = getBlockEditorSelector('getBlockRootClientId');
- /**
- * @see getBlockHierarchyRootClientId in core/block-editor store.
- */
- const getBlockHierarchyRootClientId = getBlockEditorSelector('getBlockHierarchyRootClientId');
- /**
- * @see getAdjacentBlockClientId in core/block-editor store.
- */
- const getAdjacentBlockClientId = getBlockEditorSelector('getAdjacentBlockClientId');
- /**
- * @see getPreviousBlockClientId in core/block-editor store.
- */
- const getPreviousBlockClientId = getBlockEditorSelector('getPreviousBlockClientId');
- /**
- * @see getNextBlockClientId in core/block-editor store.
- */
- const getNextBlockClientId = getBlockEditorSelector('getNextBlockClientId');
- /**
- * @see getSelectedBlocksInitialCaretPosition in core/block-editor store.
- */
- const getSelectedBlocksInitialCaretPosition = getBlockEditorSelector('getSelectedBlocksInitialCaretPosition');
- /**
- * @see getMultiSelectedBlockClientIds in core/block-editor store.
- */
- const getMultiSelectedBlockClientIds = getBlockEditorSelector('getMultiSelectedBlockClientIds');
- /**
- * @see getMultiSelectedBlocks in core/block-editor store.
- */
- const getMultiSelectedBlocks = getBlockEditorSelector('getMultiSelectedBlocks');
- /**
- * @see getFirstMultiSelectedBlockClientId in core/block-editor store.
- */
- const getFirstMultiSelectedBlockClientId = getBlockEditorSelector('getFirstMultiSelectedBlockClientId');
- /**
- * @see getLastMultiSelectedBlockClientId in core/block-editor store.
- */
- const getLastMultiSelectedBlockClientId = getBlockEditorSelector('getLastMultiSelectedBlockClientId');
- /**
- * @see isFirstMultiSelectedBlock in core/block-editor store.
- */
- const isFirstMultiSelectedBlock = getBlockEditorSelector('isFirstMultiSelectedBlock');
- /**
- * @see isBlockMultiSelected in core/block-editor store.
- */
- const isBlockMultiSelected = getBlockEditorSelector('isBlockMultiSelected');
- /**
- * @see isAncestorMultiSelected in core/block-editor store.
- */
- const isAncestorMultiSelected = getBlockEditorSelector('isAncestorMultiSelected');
- /**
- * @see getMultiSelectedBlocksStartClientId in core/block-editor store.
- */
- const getMultiSelectedBlocksStartClientId = getBlockEditorSelector('getMultiSelectedBlocksStartClientId');
- /**
- * @see getMultiSelectedBlocksEndClientId in core/block-editor store.
- */
- const getMultiSelectedBlocksEndClientId = getBlockEditorSelector('getMultiSelectedBlocksEndClientId');
- /**
- * @see getBlockOrder in core/block-editor store.
- */
- const getBlockOrder = getBlockEditorSelector('getBlockOrder');
- /**
- * @see getBlockIndex in core/block-editor store.
- */
- const getBlockIndex = getBlockEditorSelector('getBlockIndex');
- /**
- * @see isBlockSelected in core/block-editor store.
- */
- const isBlockSelected = getBlockEditorSelector('isBlockSelected');
- /**
- * @see hasSelectedInnerBlock in core/block-editor store.
- */
- const hasSelectedInnerBlock = getBlockEditorSelector('hasSelectedInnerBlock');
- /**
- * @see isBlockWithinSelection in core/block-editor store.
- */
- const isBlockWithinSelection = getBlockEditorSelector('isBlockWithinSelection');
- /**
- * @see hasMultiSelection in core/block-editor store.
- */
- const hasMultiSelection = getBlockEditorSelector('hasMultiSelection');
- /**
- * @see isMultiSelecting in core/block-editor store.
- */
- const isMultiSelecting = getBlockEditorSelector('isMultiSelecting');
- /**
- * @see isSelectionEnabled in core/block-editor store.
- */
- const isSelectionEnabled = getBlockEditorSelector('isSelectionEnabled');
- /**
- * @see getBlockMode in core/block-editor store.
- */
- const getBlockMode = getBlockEditorSelector('getBlockMode');
- /**
- * @see isTyping in core/block-editor store.
- */
- const isTyping = getBlockEditorSelector('isTyping');
- /**
- * @see isCaretWithinFormattedText in core/block-editor store.
- */
- const isCaretWithinFormattedText = getBlockEditorSelector('isCaretWithinFormattedText');
- /**
- * @see getBlockInsertionPoint in core/block-editor store.
- */
- const getBlockInsertionPoint = getBlockEditorSelector('getBlockInsertionPoint');
- /**
- * @see isBlockInsertionPointVisible in core/block-editor store.
- */
- const isBlockInsertionPointVisible = getBlockEditorSelector('isBlockInsertionPointVisible');
- /**
- * @see isValidTemplate in core/block-editor store.
- */
- const isValidTemplate = getBlockEditorSelector('isValidTemplate');
- /**
- * @see getTemplate in core/block-editor store.
- */
- const getTemplate = getBlockEditorSelector('getTemplate');
- /**
- * @see getTemplateLock in core/block-editor store.
- */
- const getTemplateLock = getBlockEditorSelector('getTemplateLock');
- /**
- * @see canInsertBlockType in core/block-editor store.
- */
- const canInsertBlockType = getBlockEditorSelector('canInsertBlockType');
- /**
- * @see getInserterItems in core/block-editor store.
- */
- const getInserterItems = getBlockEditorSelector('getInserterItems');
- /**
- * @see hasInserterItems in core/block-editor store.
- */
- const hasInserterItems = getBlockEditorSelector('hasInserterItems');
- /**
- * @see getBlockListSettings in core/block-editor store.
- */
- const getBlockListSettings = getBlockEditorSelector('getBlockListSettings');
- /**
- * Returns the default template types.
- *
- * @param {Object} state Global application state.
- *
- * @return {Object} The template types.
- */
- function __experimentalGetDefaultTemplateTypes(state) {
- var _getEditorSettings;
- return (_getEditorSettings = getEditorSettings(state)) === null || _getEditorSettings === void 0 ? void 0 : _getEditorSettings.defaultTemplateTypes;
- }
- /**
- * Returns the default template part areas.
- *
- * @param {Object} state Global application state.
- *
- * @return {Array} The template part areas.
- */
- const __experimentalGetDefaultTemplatePartAreas = rememo(state => {
- var _getEditorSettings2;
- const areas = ((_getEditorSettings2 = getEditorSettings(state)) === null || _getEditorSettings2 === void 0 ? void 0 : _getEditorSettings2.defaultTemplatePartAreas) || [];
- return areas === null || areas === void 0 ? void 0 : areas.map(item => {
- return { ...item,
- icon: getTemplatePartIcon(item.icon)
- };
- });
- }, state => {
- var _getEditorSettings3;
- return [(_getEditorSettings3 = getEditorSettings(state)) === null || _getEditorSettings3 === void 0 ? void 0 : _getEditorSettings3.defaultTemplatePartAreas];
- });
- /**
- * Returns a default template type searched by slug.
- *
- * @param {Object} state Global application state.
- * @param {string} slug The template type slug.
- *
- * @return {Object} The template type.
- */
- const __experimentalGetDefaultTemplateType = rememo((state, slug) => {
- var _Object$values$find;
- const templateTypes = __experimentalGetDefaultTemplateTypes(state);
- if (!templateTypes) {
- return EMPTY_OBJECT;
- }
- return (_Object$values$find = Object.values(templateTypes).find(type => type.slug === slug)) !== null && _Object$values$find !== void 0 ? _Object$values$find : EMPTY_OBJECT;
- }, (state, slug) => [__experimentalGetDefaultTemplateTypes(state), slug]);
- /**
- * Given a template entity, return information about it which is ready to be
- * rendered, such as the title, description, and icon.
- *
- * @param {Object} state Global application state.
- * @param {Object} template The template for which we need information.
- * @return {Object} Information about the template, including title, description, and icon.
- */
- function __experimentalGetTemplateInfo(state, template) {
- var _experimentalGetDefa;
- if (!template) {
- return EMPTY_OBJECT;
- }
- const {
- description,
- slug,
- title,
- area
- } = template;
- const {
- title: defaultTitle,
- description: defaultDescription
- } = __experimentalGetDefaultTemplateType(state, slug);
- const templateTitle = typeof title === 'string' ? title : title === null || title === void 0 ? void 0 : title.rendered;
- const templateDescription = typeof description === 'string' ? description : description === null || description === void 0 ? void 0 : description.raw;
- const templateIcon = ((_experimentalGetDefa = __experimentalGetDefaultTemplatePartAreas(state).find(item => area === item.area)) === null || _experimentalGetDefa === void 0 ? void 0 : _experimentalGetDefa.icon) || library_layout;
- return {
- title: templateTitle && templateTitle !== slug ? templateTitle : defaultTitle || slug,
- description: templateDescription || defaultDescription,
- icon: templateIcon
- };
- }
- /**
- * Returns a post type label depending on the current post.
- *
- * @param {Object} state Global application state.
- *
- * @return {string|undefined} The post type label if available, otherwise undefined.
- */
- const getPostTypeLabel = (0,external_wp_data_namespaceObject.createRegistrySelector)(select => state => {
- var _postType$labels;
- const currentPostType = getCurrentPostType(state);
- const postType = select(external_wp_coreData_namespaceObject.store).getPostType(currentPostType); // Disable reason: Post type labels object is shaped like this.
- // eslint-disable-next-line camelcase
- return postType === null || postType === void 0 ? void 0 : (_postType$labels = postType.labels) === null || _postType$labels === void 0 ? void 0 : _postType$labels.singular_name;
- });
- ;// CONCATENATED MODULE: external ["wp","apiFetch"]
- var external_wp_apiFetch_namespaceObject = window["wp"]["apiFetch"];
- var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_namespaceObject);
- ;// CONCATENATED MODULE: external ["wp","notices"]
- var external_wp_notices_namespaceObject = window["wp"]["notices"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/local-autosave.js
- /**
- * Function returning a sessionStorage key to set or retrieve a given post's
- * automatic session backup.
- *
- * Keys are crucially prefixed with 'wp-autosave-' so that wp-login.php's
- * `loggedout` handler can clear sessionStorage of any user-private content.
- *
- * @see https://github.com/WordPress/wordpress-develop/blob/6dad32d2aed47e6c0cf2aee8410645f6d7aba6bd/src/wp-login.php#L103
- *
- * @param {string} postId Post ID.
- * @param {boolean} isPostNew Whether post new.
- *
- * @return {string} sessionStorage key
- */
- function postKey(postId, isPostNew) {
- return `wp-autosave-block-editor-post-${isPostNew ? 'auto-draft' : postId}`;
- }
- function localAutosaveGet(postId, isPostNew) {
- return window.sessionStorage.getItem(postKey(postId, isPostNew));
- }
- function localAutosaveSet(postId, isPostNew, title, content, excerpt) {
- window.sessionStorage.setItem(postKey(postId, isPostNew), JSON.stringify({
- post_title: title,
- content,
- excerpt
- }));
- }
- function localAutosaveClear(postId, isPostNew) {
- window.sessionStorage.removeItem(postKey(postId, isPostNew));
- }
- ;// CONCATENATED MODULE: external ["wp","i18n"]
- var external_wp_i18n_namespaceObject = window["wp"]["i18n"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/utils/notice-builder.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * External dependencies
- */
- /**
- * Builds the arguments for a success notification dispatch.
- *
- * @param {Object} data Incoming data to build the arguments from.
- *
- * @return {Array} Arguments for dispatch. An empty array signals no
- * notification should be sent.
- */
- function getNotificationArgumentsForSaveSuccess(data) {
- const {
- previousPost,
- post,
- postType
- } = data; // Autosaves are neither shown a notice nor redirected.
- if ((0,external_lodash_namespaceObject.get)(data.options, ['isAutosave'])) {
- return [];
- } // No notice is shown after trashing a post
- if (post.status === 'trash' && previousPost.status !== 'trash') {
- return [];
- }
- const publishStatus = ['publish', 'private', 'future'];
- const isPublished = (0,external_lodash_namespaceObject.includes)(publishStatus, previousPost.status);
- const willPublish = (0,external_lodash_namespaceObject.includes)(publishStatus, post.status);
- let noticeMessage;
- let shouldShowLink = (0,external_lodash_namespaceObject.get)(postType, ['viewable'], false);
- let isDraft; // Always should a notice, which will be spoken for accessibility.
- if (!isPublished && !willPublish) {
- // If saving a non-published post, don't show notice.
- noticeMessage = (0,external_wp_i18n_namespaceObject.__)('Draft saved.');
- isDraft = true;
- } else if (isPublished && !willPublish) {
- // If undoing publish status, show specific notice.
- noticeMessage = postType.labels.item_reverted_to_draft;
- shouldShowLink = false;
- } else if (!isPublished && willPublish) {
- // If publishing or scheduling a post, show the corresponding
- // publish message.
- noticeMessage = {
- publish: postType.labels.item_published,
- private: postType.labels.item_published_privately,
- future: postType.labels.item_scheduled
- }[post.status];
- } else {
- // Generic fallback notice.
- noticeMessage = postType.labels.item_updated;
- }
- const actions = [];
- if (shouldShowLink) {
- actions.push({
- label: isDraft ? (0,external_wp_i18n_namespaceObject.__)('View Preview') : postType.labels.view_item,
- url: post.link
- });
- }
- return [noticeMessage, {
- id: SAVE_POST_NOTICE_ID,
- type: 'snackbar',
- actions
- }];
- }
- /**
- * Builds the fail notification arguments for dispatch.
- *
- * @param {Object} data Incoming data to build the arguments with.
- *
- * @return {Array} Arguments for dispatch. An empty array signals no
- * notification should be sent.
- */
- function getNotificationArgumentsForSaveFail(data) {
- const {
- post,
- edits,
- error
- } = data;
- if (error && 'rest_autosave_no_changes' === error.code) {
- // Autosave requested a new autosave, but there were no changes. This shouldn't
- // result in an error notice for the user.
- return [];
- }
- const publishStatus = ['publish', 'private', 'future'];
- const isPublished = publishStatus.indexOf(post.status) !== -1; // If the post was being published, we show the corresponding publish error message
- // Unless we publish an "updating failed" message.
- const messages = {
- publish: (0,external_wp_i18n_namespaceObject.__)('Publishing failed.'),
- private: (0,external_wp_i18n_namespaceObject.__)('Publishing failed.'),
- future: (0,external_wp_i18n_namespaceObject.__)('Scheduling failed.')
- };
- let noticeMessage = !isPublished && publishStatus.indexOf(edits.status) !== -1 ? messages[edits.status] : (0,external_wp_i18n_namespaceObject.__)('Updating failed.'); // Check if message string contains HTML. Notice text is currently only
- // supported as plaintext, and stripping the tags may muddle the meaning.
- if (error.message && !/<\/?[^>]*>/.test(error.message)) {
- noticeMessage = [noticeMessage, error.message].join(' ');
- }
- return [noticeMessage, {
- id: SAVE_POST_NOTICE_ID
- }];
- }
- /**
- * Builds the trash fail notification arguments for dispatch.
- *
- * @param {Object} data
- *
- * @return {Array} Arguments for dispatch.
- */
- function getNotificationArgumentsForTrashFail(data) {
- return [data.error.message && data.error.code !== 'unknown_error' ? data.error.message : (0,external_wp_i18n_namespaceObject.__)('Trashing failed'), {
- id: TRASH_POST_NOTICE_ID
- }];
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/actions.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Returns an action generator used in signalling that editor has initialized with
- * the specified post object and editor settings.
- *
- * @param {Object} post Post object.
- * @param {Object} edits Initial edited attributes object.
- * @param {Array?} template Block Template.
- */
- const setupEditor = (post, edits, template) => _ref => {
- let {
- dispatch
- } = _ref;
- dispatch.setupEditorState(post); // Apply a template for new posts only, if exists.
- const isNewPost = post.status === 'auto-draft';
- if (isNewPost && template) {
- // In order to ensure maximum of a single parse during setup, edits are
- // included as part of editor setup action. Assume edited content as
- // canonical if provided, falling back to post.
- let content;
- if ('content' in edits) {
- content = edits.content;
- } else {
- content = post.content.raw;
- }
- let blocks = (0,external_wp_blocks_namespaceObject.parse)(content);
- blocks = (0,external_wp_blocks_namespaceObject.synchronizeBlocksWithTemplate)(blocks, template);
- dispatch.resetEditorBlocks(blocks, {
- __unstableShouldCreateUndoLevel: false
- });
- }
- if (edits && Object.values(edits).some(_ref2 => {
- var _post$key$raw, _post$key;
- let [key, edit] = _ref2;
- return edit !== ((_post$key$raw = (_post$key = post[key]) === null || _post$key === void 0 ? void 0 : _post$key.raw) !== null && _post$key$raw !== void 0 ? _post$key$raw : post[key]);
- })) {
- dispatch.editPost(edits);
- }
- };
- /**
- * Returns an action object signalling that the editor is being destroyed and
- * that any necessary state or side-effect cleanup should occur.
- *
- * @return {Object} Action object.
- */
- function __experimentalTearDownEditor() {
- return {
- type: 'TEAR_DOWN_EDITOR'
- };
- }
- /**
- * Returns an action object used in signalling that the latest version of the
- * post has been received, either by initialization or save.
- *
- * @deprecated Since WordPress 6.0.
- */
- function resetPost() {
- external_wp_deprecated_default()("wp.data.dispatch( 'core/editor' ).resetPost", {
- since: '6.0',
- version: '6.3',
- alternative: 'Initialize the editor with the setupEditorState action'
- });
- return {
- type: 'DO_NOTHING'
- };
- }
- /**
- * Returns an action object used in signalling that a patch of updates for the
- * latest version of the post have been received.
- *
- * @return {Object} Action object.
- * @deprecated since Gutenberg 9.7.0.
- */
- function updatePost() {
- external_wp_deprecated_default()("wp.data.dispatch( 'core/editor' ).updatePost", {
- since: '5.7',
- alternative: 'Use the core entities store instead'
- });
- return {
- type: 'DO_NOTHING'
- };
- }
- /**
- * Returns an action object used to setup the editor state when first opening
- * an editor.
- *
- * @param {Object} post Post object.
- *
- * @return {Object} Action object.
- */
- function setupEditorState(post) {
- return {
- type: 'SETUP_EDITOR_STATE',
- post
- };
- }
- /**
- * Returns an action object used in signalling that attributes of the post have
- * been edited.
- *
- * @param {Object} edits Post attributes to edit.
- * @param {Object} options Options for the edit.
- */
- const editPost = (edits, options) => _ref3 => {
- let {
- select,
- registry
- } = _ref3;
- const {
- id,
- type
- } = select.getCurrentPost();
- registry.dispatch(external_wp_coreData_namespaceObject.store).editEntityRecord('postType', type, id, edits, options);
- };
- /**
- * Action for saving the current post in the editor.
- *
- * @param {Object} options
- */
- const savePost = function () {
- let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- return async _ref4 => {
- let {
- select,
- dispatch,
- registry
- } = _ref4;
- if (!select.isEditedPostSaveable()) {
- return;
- }
- const content = select.getEditedPostContent();
- if (!options.isAutosave) {
- dispatch.editPost({
- content
- }, {
- undoIgnore: true
- });
- }
- const previousRecord = select.getCurrentPost();
- const edits = {
- id: previousRecord.id,
- ...registry.select(external_wp_coreData_namespaceObject.store).getEntityRecordNonTransientEdits('postType', previousRecord.type, previousRecord.id),
- content
- };
- dispatch({
- type: 'REQUEST_POST_UPDATE_START',
- options
- });
- await registry.dispatch(external_wp_coreData_namespaceObject.store).saveEntityRecord('postType', previousRecord.type, edits, options);
- dispatch({
- type: 'REQUEST_POST_UPDATE_FINISH',
- options
- });
- const error = registry.select(external_wp_coreData_namespaceObject.store).getLastEntitySaveError('postType', previousRecord.type, previousRecord.id);
- if (error) {
- const args = getNotificationArgumentsForSaveFail({
- post: previousRecord,
- edits,
- error
- });
- if (args.length) {
- registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(...args);
- }
- } else {
- const updatedRecord = select.getCurrentPost();
- const args = getNotificationArgumentsForSaveSuccess({
- previousPost: previousRecord,
- post: updatedRecord,
- postType: await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getPostType(updatedRecord.type),
- options
- });
- if (args.length) {
- registry.dispatch(external_wp_notices_namespaceObject.store).createSuccessNotice(...args);
- } // Make sure that any edits after saving create an undo level and are
- // considered for change detection.
- if (!options.isAutosave) {
- registry.dispatch(external_wp_blockEditor_namespaceObject.store).__unstableMarkLastChangeAsPersistent();
- }
- }
- };
- };
- /**
- * Action for refreshing the current post.
- *
- * @deprecated Since WordPress 6.0.
- */
- function refreshPost() {
- external_wp_deprecated_default()("wp.data.dispatch( 'core/editor' ).refreshPost", {
- since: '6.0',
- version: '6.3',
- alternative: 'Use the core entities store instead'
- });
- return {
- type: 'DO_NOTHING'
- };
- }
- /**
- * Action for trashing the current post in the editor.
- */
- const trashPost = () => async _ref5 => {
- let {
- select,
- dispatch,
- registry
- } = _ref5;
- const postTypeSlug = select.getCurrentPostType();
- const postType = await registry.resolveSelect(external_wp_coreData_namespaceObject.store).getPostType(postTypeSlug);
- registry.dispatch(external_wp_notices_namespaceObject.store).removeNotice(TRASH_POST_NOTICE_ID);
- const {
- rest_base: restBase,
- rest_namespace: restNamespace = 'wp/v2'
- } = postType;
- dispatch({
- type: 'REQUEST_POST_DELETE_START'
- });
- try {
- const post = select.getCurrentPost();
- await external_wp_apiFetch_default()({
- path: `/${restNamespace}/${restBase}/${post.id}`,
- method: 'DELETE'
- });
- await dispatch.savePost();
- } catch (error) {
- registry.dispatch(external_wp_notices_namespaceObject.store).createErrorNotice(...getNotificationArgumentsForTrashFail({
- error
- }));
- }
- dispatch({
- type: 'REQUEST_POST_DELETE_FINISH'
- });
- };
- /**
- * Action that autosaves the current post. This
- * includes server-side autosaving (default) and client-side (a.k.a. local)
- * autosaving (e.g. on the Web, the post might be committed to Session
- * Storage).
- *
- * @param {Object?} options Extra flags to identify the autosave.
- */
- const autosave = function () {
- let {
- local = false,
- ...options
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- return async _ref6 => {
- let {
- select,
- dispatch
- } = _ref6;
- if (local) {
- const post = select.getCurrentPost();
- const isPostNew = select.isEditedPostNew();
- const title = select.getEditedPostAttribute('title');
- const content = select.getEditedPostAttribute('content');
- const excerpt = select.getEditedPostAttribute('excerpt');
- localAutosaveSet(post.id, isPostNew, title, content, excerpt);
- } else {
- await dispatch.savePost({
- isAutosave: true,
- ...options
- });
- }
- };
- };
- /**
- * Action that restores last popped state in undo history.
- */
- const redo = () => _ref7 => {
- let {
- registry
- } = _ref7;
- registry.dispatch(external_wp_coreData_namespaceObject.store).redo();
- };
- /**
- * Action that pops a record from undo history and undoes the edit.
- */
- const undo = () => _ref8 => {
- let {
- registry
- } = _ref8;
- registry.dispatch(external_wp_coreData_namespaceObject.store).undo();
- };
- /**
- * Action that creates an undo history record.
- *
- * @deprecated Since WordPress 6.0
- */
- function createUndoLevel() {
- external_wp_deprecated_default()("wp.data.dispatch( 'core/editor' ).createUndoLevel", {
- since: '6.0',
- version: '6.3',
- alternative: 'Use the core entities store instead'
- });
- return {
- type: 'DO_NOTHING'
- };
- }
- /**
- * Action that locks the editor.
- *
- * @param {Object} lock Details about the post lock status, user, and nonce.
- * @return {Object} Action object.
- */
- function updatePostLock(lock) {
- return {
- type: 'UPDATE_POST_LOCK',
- lock
- };
- }
- /**
- * Enable the publish sidebar.
- */
- const enablePublishSidebar = () => _ref9 => {
- let {
- registry
- } = _ref9;
- registry.dispatch(external_wp_preferences_namespaceObject.store).set('core/edit-post', 'isPublishSidebarEnabled', true);
- };
- /**
- * Disables the publish sidebar.
- */
- const disablePublishSidebar = () => _ref10 => {
- let {
- registry
- } = _ref10;
- registry.dispatch(external_wp_preferences_namespaceObject.store).set('core/edit-post', 'isPublishSidebarEnabled', false);
- };
- /**
- * Action that locks post saving.
- *
- * @param {string} lockName The lock name.
- *
- * @example
- * ```
- * const { subscribe } = wp.data;
- *
- * const initialPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' );
- *
- * // Only allow publishing posts that are set to a future date.
- * if ( 'publish' !== initialPostStatus ) {
- *
- * // Track locking.
- * let locked = false;
- *
- * // Watch for the publish event.
- * let unssubscribe = subscribe( () => {
- * const currentPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' );
- * if ( 'publish' !== currentPostStatus ) {
- *
- * // Compare the post date to the current date, lock the post if the date isn't in the future.
- * const postDate = new Date( wp.data.select( 'core/editor' ).getEditedPostAttribute( 'date' ) );
- * const currentDate = new Date();
- * if ( postDate.getTime() <= currentDate.getTime() ) {
- * if ( ! locked ) {
- * locked = true;
- * wp.data.dispatch( 'core/editor' ).lockPostSaving( 'futurelock' );
- * }
- * } else {
- * if ( locked ) {
- * locked = false;
- * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'futurelock' );
- * }
- * }
- * }
- * } );
- * }
- * ```
- *
- * @return {Object} Action object
- */
- function lockPostSaving(lockName) {
- return {
- type: 'LOCK_POST_SAVING',
- lockName
- };
- }
- /**
- * Action that unlocks post saving.
- *
- * @param {string} lockName The lock name.
- *
- * @example
- * ```
- * // Unlock post saving with the lock key `mylock`:
- * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'mylock' );
- * ```
- *
- * @return {Object} Action object
- */
- function unlockPostSaving(lockName) {
- return {
- type: 'UNLOCK_POST_SAVING',
- lockName
- };
- }
- /**
- * Action that locks post autosaving.
- *
- * @param {string} lockName The lock name.
- *
- * @example
- * ```
- * // Lock post autosaving with the lock key `mylock`:
- * wp.data.dispatch( 'core/editor' ).lockPostAutosaving( 'mylock' );
- * ```
- *
- * @return {Object} Action object
- */
- function lockPostAutosaving(lockName) {
- return {
- type: 'LOCK_POST_AUTOSAVING',
- lockName
- };
- }
- /**
- * Action that unlocks post autosaving.
- *
- * @param {string} lockName The lock name.
- *
- * @example
- * ```
- * // Unlock post saving with the lock key `mylock`:
- * wp.data.dispatch( 'core/editor' ).unlockPostAutosaving( 'mylock' );
- * ```
- *
- * @return {Object} Action object
- */
- function unlockPostAutosaving(lockName) {
- return {
- type: 'UNLOCK_POST_AUTOSAVING',
- lockName
- };
- }
- /**
- * Returns an action object used to signal that the blocks have been updated.
- *
- * @param {Array} blocks Block Array.
- * @param {?Object} options Optional options.
- */
- const resetEditorBlocks = function (blocks) {
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- return _ref11 => {
- let {
- select,
- dispatch,
- registry
- } = _ref11;
- const {
- __unstableShouldCreateUndoLevel,
- selection
- } = options;
- const edits = {
- blocks,
- selection
- };
- if (__unstableShouldCreateUndoLevel !== false) {
- const {
- id,
- type
- } = select.getCurrentPost();
- const noChange = registry.select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord('postType', type, id).blocks === edits.blocks;
- if (noChange) {
- registry.dispatch(external_wp_coreData_namespaceObject.store).__unstableCreateUndoLevel('postType', type, id);
- return;
- } // We create a new function here on every persistent edit
- // to make sure the edit makes the post dirty and creates
- // a new undo level.
- edits.content = _ref12 => {
- let {
- blocks: blocksForSerialization = []
- } = _ref12;
- return (0,external_wp_blocks_namespaceObject.__unstableSerializeAndClean)(blocksForSerialization);
- };
- }
- dispatch.editPost(edits);
- };
- };
- /*
- * Returns an action object used in signalling that the post editor settings have been updated.
- *
- * @param {Object} settings Updated settings
- *
- * @return {Object} Action object
- */
- function updateEditorSettings(settings) {
- return {
- type: 'UPDATE_EDITOR_SETTINGS',
- settings
- };
- }
- /**
- * Backward compatibility
- */
- const getBlockEditorAction = name => function () {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- return _ref13 => {
- let {
- registry
- } = _ref13;
- external_wp_deprecated_default()("`wp.data.dispatch( 'core/editor' )." + name + '`', {
- since: '5.3',
- alternative: "`wp.data.dispatch( 'core/block-editor' )." + name + '`',
- version: '6.2'
- });
- registry.dispatch(external_wp_blockEditor_namespaceObject.store)[name](...args);
- };
- };
- /**
- * @see resetBlocks in core/block-editor store.
- */
- const resetBlocks = getBlockEditorAction('resetBlocks');
- /**
- * @see receiveBlocks in core/block-editor store.
- */
- const receiveBlocks = getBlockEditorAction('receiveBlocks');
- /**
- * @see updateBlock in core/block-editor store.
- */
- const updateBlock = getBlockEditorAction('updateBlock');
- /**
- * @see updateBlockAttributes in core/block-editor store.
- */
- const updateBlockAttributes = getBlockEditorAction('updateBlockAttributes');
- /**
- * @see selectBlock in core/block-editor store.
- */
- const selectBlock = getBlockEditorAction('selectBlock');
- /**
- * @see startMultiSelect in core/block-editor store.
- */
- const startMultiSelect = getBlockEditorAction('startMultiSelect');
- /**
- * @see stopMultiSelect in core/block-editor store.
- */
- const stopMultiSelect = getBlockEditorAction('stopMultiSelect');
- /**
- * @see multiSelect in core/block-editor store.
- */
- const multiSelect = getBlockEditorAction('multiSelect');
- /**
- * @see clearSelectedBlock in core/block-editor store.
- */
- const clearSelectedBlock = getBlockEditorAction('clearSelectedBlock');
- /**
- * @see toggleSelection in core/block-editor store.
- */
- const toggleSelection = getBlockEditorAction('toggleSelection');
- /**
- * @see replaceBlocks in core/block-editor store.
- */
- const replaceBlocks = getBlockEditorAction('replaceBlocks');
- /**
- * @see replaceBlock in core/block-editor store.
- */
- const replaceBlock = getBlockEditorAction('replaceBlock');
- /**
- * @see moveBlocksDown in core/block-editor store.
- */
- const moveBlocksDown = getBlockEditorAction('moveBlocksDown');
- /**
- * @see moveBlocksUp in core/block-editor store.
- */
- const moveBlocksUp = getBlockEditorAction('moveBlocksUp');
- /**
- * @see moveBlockToPosition in core/block-editor store.
- */
- const moveBlockToPosition = getBlockEditorAction('moveBlockToPosition');
- /**
- * @see insertBlock in core/block-editor store.
- */
- const insertBlock = getBlockEditorAction('insertBlock');
- /**
- * @see insertBlocks in core/block-editor store.
- */
- const insertBlocks = getBlockEditorAction('insertBlocks');
- /**
- * @see showInsertionPoint in core/block-editor store.
- */
- const showInsertionPoint = getBlockEditorAction('showInsertionPoint');
- /**
- * @see hideInsertionPoint in core/block-editor store.
- */
- const hideInsertionPoint = getBlockEditorAction('hideInsertionPoint');
- /**
- * @see setTemplateValidity in core/block-editor store.
- */
- const setTemplateValidity = getBlockEditorAction('setTemplateValidity');
- /**
- * @see synchronizeTemplate in core/block-editor store.
- */
- const synchronizeTemplate = getBlockEditorAction('synchronizeTemplate');
- /**
- * @see mergeBlocks in core/block-editor store.
- */
- const mergeBlocks = getBlockEditorAction('mergeBlocks');
- /**
- * @see removeBlocks in core/block-editor store.
- */
- const removeBlocks = getBlockEditorAction('removeBlocks');
- /**
- * @see removeBlock in core/block-editor store.
- */
- const removeBlock = getBlockEditorAction('removeBlock');
- /**
- * @see toggleBlockMode in core/block-editor store.
- */
- const toggleBlockMode = getBlockEditorAction('toggleBlockMode');
- /**
- * @see startTyping in core/block-editor store.
- */
- const startTyping = getBlockEditorAction('startTyping');
- /**
- * @see stopTyping in core/block-editor store.
- */
- const stopTyping = getBlockEditorAction('stopTyping');
- /**
- * @see enterFormattedText in core/block-editor store.
- */
- const enterFormattedText = getBlockEditorAction('enterFormattedText');
- /**
- * @see exitFormattedText in core/block-editor store.
- */
- const exitFormattedText = getBlockEditorAction('exitFormattedText');
- /**
- * @see insertDefaultBlock in core/block-editor store.
- */
- const insertDefaultBlock = getBlockEditorAction('insertDefaultBlock');
- /**
- * @see updateBlockListSettings in core/block-editor store.
- */
- const updateBlockListSettings = getBlockEditorAction('updateBlockListSettings');
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Post editor data store configuration.
- *
- * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore
- *
- * @type {Object}
- */
- const storeConfig = {
- reducer: reducer,
- selectors: selectors_namespaceObject,
- actions: actions_namespaceObject
- };
- /**
- * Store definition for the editor namespace.
- *
- * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
- *
- * @type {Object}
- */
- const store_store = (0,external_wp_data_namespaceObject.createReduxStore)(STORE_NAME, { ...storeConfig
- });
- (0,external_wp_data_namespaceObject.register)(store_store);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/custom-sources-backwards-compatibility.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /** @typedef {import('@wordpress/compose').WPHigherOrderComponent} WPHigherOrderComponent */
- /** @typedef {import('@wordpress/blocks').WPBlockSettings} WPBlockSettings */
- /**
- * Object whose keys are the names of block attributes, where each value
- * represents the meta key to which the block attribute is intended to save.
- *
- * @see https://developer.wordpress.org/reference/functions/register_meta/
- *
- * @typedef {Object<string,string>} WPMetaAttributeMapping
- */
- /**
- * Given a mapping of attribute names (meta source attributes) to their
- * associated meta key, returns a higher order component that overrides its
- * `attributes` and `setAttributes` props to sync any changes with the edited
- * post's meta keys.
- *
- * @param {WPMetaAttributeMapping} metaAttributes Meta attribute mapping.
- *
- * @return {WPHigherOrderComponent} Higher-order component.
- */
- const createWithMetaAttributeSource = metaAttributes => (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(BlockEdit => _ref => {
- let {
- attributes,
- setAttributes,
- ...props
- } = _ref;
- const postType = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getCurrentPostType(), []);
- const [meta, setMeta] = (0,external_wp_coreData_namespaceObject.useEntityProp)('postType', postType, 'meta');
- const mergedAttributes = (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...attributes,
- ...(0,external_lodash_namespaceObject.mapValues)(metaAttributes, metaKey => meta[metaKey])
- }), [attributes, meta]);
- return (0,external_wp_element_namespaceObject.createElement)(BlockEdit, _extends({
- attributes: mergedAttributes,
- setAttributes: nextAttributes => {
- const nextMeta = Object.fromEntries(Object.entries( // Filter to intersection of keys between the updated
- // attributes and those with an associated meta key.
- (0,external_lodash_namespaceObject.pickBy)(nextAttributes, (value, key) => metaAttributes[key])).map(_ref2 => {
- let [attributeKey, value] = _ref2;
- return [// Rename the keys to the expected meta key name.
- metaAttributes[attributeKey], value];
- }));
- if (!(0,external_lodash_namespaceObject.isEmpty)(nextMeta)) {
- setMeta(nextMeta);
- }
- setAttributes(nextAttributes);
- }
- }, props));
- }, 'withMetaAttributeSource');
- /**
- * Filters a registered block's settings to enhance a block's `edit` component
- * to upgrade meta-sourced attributes to use the post's meta entity property.
- *
- * @param {WPBlockSettings} settings Registered block settings.
- *
- * @return {WPBlockSettings} Filtered block settings.
- */
- function shimAttributeSource(settings) {
- /** @type {WPMetaAttributeMapping} */
- const metaAttributes = (0,external_lodash_namespaceObject.mapValues)((0,external_lodash_namespaceObject.pickBy)(settings.attributes, {
- source: 'meta'
- }), 'meta');
- if (!(0,external_lodash_namespaceObject.isEmpty)(metaAttributes)) {
- settings.edit = createWithMetaAttributeSource(metaAttributes)(settings.edit);
- }
- return settings;
- }
- (0,external_wp_hooks_namespaceObject.addFilter)('blocks.registerBlockType', 'core/editor/custom-sources-backwards-compatibility/shim-attribute-source', shimAttributeSource); // The above filter will only capture blocks registered after the filter was
- // added. There may already be blocks registered by this point, and those must
- // be updated to apply the shim.
- //
- // The following implementation achieves this, albeit with a couple caveats:
- // - Only blocks registered on the global store will be modified.
- // - The block settings are directly mutated, since there is currently no
- // mechanism to update an existing block registration. This is the reason for
- // `getBlockType` separate from `getBlockTypes`, since the latter returns a
- // _copy_ of the block registration (i.e. the mutation would not affect the
- // actual registered block settings).
- //
- // `getBlockTypes` or `getBlockType` implementation could change in the future
- // in regards to creating settings clones, but the corresponding end-to-end
- // tests for meta blocks should cover against any potential regressions.
- //
- // In the future, we could support updating block settings, at which point this
- // implementation could use that mechanism instead.
- (0,external_wp_data_namespaceObject.select)(external_wp_blocks_namespaceObject.store).getBlockTypes().map(_ref3 => {
- let {
- name
- } = _ref3;
- return (0,external_wp_data_namespaceObject.select)(external_wp_blocks_namespaceObject.store).getBlockType(name);
- }).forEach(shimAttributeSource);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/user.js
- /**
- * WordPress dependencies
- */
- /** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */
- function getUserLabel(user) {
- const avatar = user.avatar_urls && user.avatar_urls[24] ? (0,external_wp_element_namespaceObject.createElement)("img", {
- className: "editor-autocompleters__user-avatar",
- alt: "",
- src: user.avatar_urls[24]
- }) : (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-autocompleters__no-avatar"
- });
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, avatar, (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-autocompleters__user-name"
- }, user.name), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-autocompleters__user-slug"
- }, user.slug));
- }
- /**
- * A user mentions completer.
- *
- * @type {WPCompleter}
- */
- /* harmony default export */ var user = ({
- name: 'users',
- className: 'editor-autocompleters__user',
- triggerPrefix: '@',
- useItems(filterValue) {
- const users = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getUsers
- } = select(external_wp_coreData_namespaceObject.store);
- return getUsers({
- context: 'view',
- search: encodeURIComponent(filterValue)
- });
- }, [filterValue]);
- const options = (0,external_wp_element_namespaceObject.useMemo)(() => users ? users.map(user => ({
- key: `user-${user.slug}`,
- value: user,
- label: getUserLabel(user)
- })) : [], [users]);
- return [options];
- },
- getOptionCompletion(user) {
- return `@${user.slug}`;
- }
- });
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/default-autocompleters.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function setDefaultCompleters() {
- let completers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- // Provide copies so filters may directly modify them.
- completers.push((0,external_lodash_namespaceObject.clone)(user));
- return completers;
- }
- (0,external_wp_hooks_namespaceObject.addFilter)('editor.Autocomplete.completers', 'editor/autocompleters/set-default-completers', setDefaultCompleters);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/index.js
- /**
- * Internal dependencies
- */
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/index.js
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autosave-monitor/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * AutosaveMonitor invokes `props.autosave()` within at most `interval` seconds after an unsaved change is detected.
- *
- * The logic is straightforward: a check is performed every `props.interval` seconds. If any changes are detected, `props.autosave()` is called.
- * The time between the change and the autosave varies but is no larger than `props.interval` seconds. Refer to the code below for more details, such as
- * the specific way of detecting changes.
- *
- * There are two caveats:
- * * If `props.isAutosaveable` happens to be false at a time of checking for changes, the check is retried every second.
- * * The timer may be disabled by setting `props.disableIntervalChecks` to `true`. In that mode, any change will immediately trigger `props.autosave()`.
- */
- class AutosaveMonitor extends external_wp_element_namespaceObject.Component {
- constructor(props) {
- super(props);
- this.needsAutosave = !!(props.isDirty && props.isAutosaveable);
- }
- componentDidMount() {
- if (!this.props.disableIntervalChecks) {
- this.setAutosaveTimer();
- }
- }
- componentDidUpdate(prevProps) {
- if (this.props.disableIntervalChecks) {
- if (this.props.editsReference !== prevProps.editsReference) {
- this.props.autosave();
- }
- return;
- }
- if (this.props.interval !== prevProps.interval) {
- clearTimeout(this.timerId);
- this.setAutosaveTimer();
- }
- if (!this.props.isDirty) {
- this.needsAutosave = false;
- return;
- }
- if (this.props.isAutosaving && !prevProps.isAutosaving) {
- this.needsAutosave = false;
- return;
- }
- if (this.props.editsReference !== prevProps.editsReference) {
- this.needsAutosave = true;
- }
- }
- componentWillUnmount() {
- clearTimeout(this.timerId);
- }
- setAutosaveTimer() {
- let timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.interval * 1000;
- this.timerId = setTimeout(() => {
- this.autosaveTimerHandler();
- }, timeout);
- }
- autosaveTimerHandler() {
- if (!this.props.isAutosaveable) {
- this.setAutosaveTimer(1000);
- return;
- }
- if (this.needsAutosave) {
- this.needsAutosave = false;
- this.props.autosave();
- }
- this.setAutosaveTimer();
- }
- render() {
- return null;
- }
- }
- /* harmony default export */ var autosave_monitor = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)((select, ownProps) => {
- const {
- getReferenceByDistinctEdits
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- isEditedPostDirty,
- isEditedPostAutosaveable,
- isAutosavingPost,
- getEditorSettings
- } = select(store_store);
- const {
- interval = getEditorSettings().autosaveInterval
- } = ownProps;
- return {
- editsReference: getReferenceByDistinctEdits(),
- isDirty: isEditedPostDirty(),
- isAutosaveable: isEditedPostAutosaveable(),
- isAutosaving: isAutosavingPost(),
- interval
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)((dispatch, ownProps) => ({
- autosave() {
- const {
- autosave = dispatch(store_store).autosave
- } = ownProps;
- autosave();
- }
- }))])(AutosaveMonitor));
- ;// CONCATENATED MODULE: external ["wp","richText"]
- var external_wp_richText_namespaceObject = window["wp"]["richText"];
- // EXTERNAL MODULE: ./node_modules/classnames/index.js
- var classnames = __webpack_require__(4403);
- var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/item.js
- /**
- * External dependencies
- */
- const TableOfContentsItem = _ref => {
- let {
- children,
- isValid,
- level,
- href,
- onSelect
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)("li", {
- className: classnames_default()('document-outline__item', `is-${level.toLowerCase()}`, {
- 'is-invalid': !isValid
- })
- }, (0,external_wp_element_namespaceObject.createElement)("a", {
- href: href,
- className: "document-outline__button",
- onClick: onSelect
- }, (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "document-outline__emdash",
- "aria-hidden": "true"
- }), (0,external_wp_element_namespaceObject.createElement)("strong", {
- className: "document-outline__level"
- }, level), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "document-outline__item-content"
- }, children)));
- };
- /* harmony default export */ var document_outline_item = (TableOfContentsItem);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Module constants
- */
- const emptyHeadingContent = (0,external_wp_element_namespaceObject.createElement)("em", null, (0,external_wp_i18n_namespaceObject.__)('(Empty heading)'));
- const incorrectLevelContent = [(0,external_wp_element_namespaceObject.createElement)("br", {
- key: "incorrect-break"
- }), (0,external_wp_element_namespaceObject.createElement)("em", {
- key: "incorrect-message"
- }, (0,external_wp_i18n_namespaceObject.__)('(Incorrect heading level)'))];
- const singleH1Headings = [(0,external_wp_element_namespaceObject.createElement)("br", {
- key: "incorrect-break-h1"
- }), (0,external_wp_element_namespaceObject.createElement)("em", {
- key: "incorrect-message-h1"
- }, (0,external_wp_i18n_namespaceObject.__)('(Your theme may already use a H1 for the post title)'))];
- const multipleH1Headings = [(0,external_wp_element_namespaceObject.createElement)("br", {
- key: "incorrect-break-multiple-h1"
- }), (0,external_wp_element_namespaceObject.createElement)("em", {
- key: "incorrect-message-multiple-h1"
- }, (0,external_wp_i18n_namespaceObject.__)('(Multiple H1 headings are not recommended)'))];
- /**
- * Returns an array of heading blocks enhanced with the following properties:
- * level - An integer with the heading level.
- * isEmpty - Flag indicating if the heading has no content.
- *
- * @param {?Array} blocks An array of blocks.
- *
- * @return {Array} An array of heading blocks enhanced with the properties described above.
- */
- const computeOutlineHeadings = function () {
- let blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- return blocks.flatMap(function () {
- let block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- if (block.name === 'core/heading') {
- return { ...block,
- level: block.attributes.level,
- isEmpty: isEmptyHeading(block)
- };
- }
- return computeOutlineHeadings(block.innerBlocks);
- });
- };
- const isEmptyHeading = heading => !heading.attributes.content || heading.attributes.content.length === 0;
- const DocumentOutline = _ref => {
- let {
- blocks = [],
- title,
- onSelect,
- isTitleSupported,
- hasOutlineItemsDisabled
- } = _ref;
- const headings = computeOutlineHeadings(blocks);
- if (headings.length < 1) {
- return null;
- }
- let prevHeadingLevel = 1; // Not great but it's the simplest way to locate the title right now.
- const titleNode = document.querySelector('.editor-post-title__input');
- const hasTitle = isTitleSupported && title && titleNode;
- const countByLevel = headings.reduce((acc, heading) => ({ ...acc,
- [heading.level]: (acc[heading.level] || 0) + 1
- }), {});
- const hasMultipleH1 = countByLevel[1] > 1;
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "document-outline"
- }, (0,external_wp_element_namespaceObject.createElement)("ul", null, hasTitle && (0,external_wp_element_namespaceObject.createElement)(document_outline_item, {
- level: (0,external_wp_i18n_namespaceObject.__)('Title'),
- isValid: true,
- onSelect: onSelect,
- href: `#${titleNode.id}`,
- isDisabled: hasOutlineItemsDisabled
- }, title), headings.map((item, index) => {
- // Headings remain the same, go up by one, or down by any amount.
- // Otherwise there are missing levels.
- const isIncorrectLevel = item.level > prevHeadingLevel + 1;
- const isValid = !item.isEmpty && !isIncorrectLevel && !!item.level && (item.level !== 1 || !hasMultipleH1 && !hasTitle);
- prevHeadingLevel = item.level;
- return (0,external_wp_element_namespaceObject.createElement)(document_outline_item, {
- key: index,
- level: `H${item.level}`,
- isValid: isValid,
- isDisabled: hasOutlineItemsDisabled,
- href: `#block-${item.clientId}`,
- onSelect: onSelect
- }, item.isEmpty ? emptyHeadingContent : (0,external_wp_richText_namespaceObject.getTextContent)((0,external_wp_richText_namespaceObject.create)({
- html: item.attributes.content
- })), isIncorrectLevel && incorrectLevelContent, item.level === 1 && hasMultipleH1 && multipleH1Headings, hasTitle && item.level === 1 && !hasMultipleH1 && singleH1Headings);
- })));
- };
- /* harmony default export */ var document_outline = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_data_namespaceObject.withSelect)(select => {
- var _postType$supports$ti, _postType$supports;
- const {
- getBlocks
- } = select(external_wp_blockEditor_namespaceObject.store);
- const {
- getEditedPostAttribute
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- const postType = getPostType(getEditedPostAttribute('type'));
- return {
- title: getEditedPostAttribute('title'),
- blocks: getBlocks(),
- isTitleSupported: (_postType$supports$ti = postType === null || postType === void 0 ? void 0 : (_postType$supports = postType.supports) === null || _postType$supports === void 0 ? void 0 : _postType$supports.title) !== null && _postType$supports$ti !== void 0 ? _postType$supports$ti : false
- };
- }))(DocumentOutline));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- function DocumentOutlineCheck(_ref) {
- let {
- blocks,
- children
- } = _ref;
- const headings = (0,external_lodash_namespaceObject.filter)(blocks, block => block.name === 'core/heading');
- if (headings.length < 1) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var check = ((0,external_wp_data_namespaceObject.withSelect)(select => ({
- blocks: select(external_wp_blockEditor_namespaceObject.store).getBlocks()
- }))(DocumentOutlineCheck));
- ;// CONCATENATED MODULE: external ["wp","keyboardShortcuts"]
- var external_wp_keyboardShortcuts_namespaceObject = window["wp"]["keyboardShortcuts"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/save-shortcut.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function SaveShortcut(_ref) {
- let {
- resetBlocksOnSave
- } = _ref;
- const {
- resetEditorBlocks,
- savePost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- isEditedPostDirty,
- getPostEdits,
- isPostSavingLocked
- } = (0,external_wp_data_namespaceObject.useSelect)(store_store);
- (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/editor/save', event => {
- event.preventDefault();
- /**
- * Do not save the post if post saving is locked.
- */
- if (isPostSavingLocked()) {
- return;
- } // TODO: This should be handled in the `savePost` effect in
- // considering `isSaveable`. See note on `isEditedPostSaveable`
- // selector about dirtiness and meta-boxes.
- //
- // See: `isEditedPostSaveable`
- if (!isEditedPostDirty()) {
- return;
- } // The text editor requires that editor blocks are updated for a
- // save to work correctly. Usually this happens when the textarea
- // for the code editors blurs, but the shortcut can be used without
- // blurring the textarea.
- if (resetBlocksOnSave) {
- const postEdits = getPostEdits();
- if (postEdits.content && typeof postEdits.content === 'string') {
- const blocks = (0,external_wp_blocks_namespaceObject.parse)(postEdits.content);
- resetEditorBlocks(blocks);
- }
- }
- savePost();
- });
- return null;
- }
- /* harmony default export */ var save_shortcut = (SaveShortcut);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function VisualEditorGlobalKeyboardShortcuts() {
- const {
- redo,
- undo
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/editor/undo', event => {
- undo();
- event.preventDefault();
- });
- (0,external_wp_keyboardShortcuts_namespaceObject.useShortcut)('core/editor/redo', event => {
- redo();
- event.preventDefault();
- });
- return (0,external_wp_element_namespaceObject.createElement)(save_shortcut, null);
- }
- /* harmony default export */ var visual_editor_shortcuts = (VisualEditorGlobalKeyboardShortcuts);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/text-editor-shortcuts.js
- /**
- * Internal dependencies
- */
- function TextEditorGlobalKeyboardShortcuts() {
- return (0,external_wp_element_namespaceObject.createElement)(save_shortcut, {
- resetBlocksOnSave: true
- });
- }
- ;// CONCATENATED MODULE: external ["wp","keycodes"]
- var external_wp_keycodes_namespaceObject = window["wp"]["keycodes"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/register-shortcuts.js
- /**
- * WordPress dependencies
- */
- function EditorKeyboardShortcutsRegister() {
- // Registering the shortcuts.
- const {
- registerShortcut
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_keyboardShortcuts_namespaceObject.store);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- registerShortcut({
- name: 'core/editor/save',
- category: 'global',
- description: (0,external_wp_i18n_namespaceObject.__)('Save your changes.'),
- keyCombination: {
- modifier: 'primary',
- character: 's'
- }
- });
- registerShortcut({
- name: 'core/editor/undo',
- category: 'global',
- description: (0,external_wp_i18n_namespaceObject.__)('Undo your last changes.'),
- keyCombination: {
- modifier: 'primary',
- character: 'z'
- }
- });
- registerShortcut({
- name: 'core/editor/redo',
- category: 'global',
- description: (0,external_wp_i18n_namespaceObject.__)('Redo your last undo.'),
- keyCombination: {
- modifier: 'primaryShift',
- character: 'z'
- },
- // Disable on Apple OS because it conflicts with the browser's
- // history shortcut. It's a fine alias for both Windows and Linux.
- // Since there's no conflict for Ctrl+Shift+Z on both Windows and
- // Linux, we keep it as the default for consistency.
- aliases: (0,external_wp_keycodes_namespaceObject.isAppleOS)() ? [] : [{
- modifier: 'primary',
- character: 'y'
- }]
- });
- }, [registerShortcut]);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorKeyboardShortcuts.Register, null);
- }
- /* harmony default export */ var register_shortcuts = (EditorKeyboardShortcutsRegister);
- ;// CONCATENATED MODULE: external ["wp","components"]
- var external_wp_components_namespaceObject = window["wp"]["components"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/redo.js
- /**
- * WordPress dependencies
- */
- const redo_redo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M15.6 6.5l-1.1 1 2.9 3.3H8c-.9 0-1.7.3-2.3.9-1.4 1.5-1.4 4.2-1.4 5.6v.2h1.5v-.3c0-1.1 0-3.5 1-4.5.3-.3.7-.5 1.3-.5h9.2L14.5 15l1.1 1.1 4.6-4.6-4.6-5z"
- }));
- /* harmony default export */ var library_redo = (redo_redo);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/undo.js
- /**
- * WordPress dependencies
- */
- const undo_undo = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M18.3 11.7c-.6-.6-1.4-.9-2.3-.9H6.7l2.9-3.3-1.1-1-4.5 5L8.5 16l1-1-2.7-2.7H16c.5 0 .9.2 1.3.5 1 1 1 3.4 1 4.5v.3h1.5v-.2c0-1.5 0-4.3-1.5-5.7z"
- }));
- /* harmony default export */ var library_undo = (undo_undo);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/redo.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function EditorHistoryRedo(props, ref) {
- const shortcut = (0,external_wp_keycodes_namespaceObject.isAppleOS)() ? external_wp_keycodes_namespaceObject.displayShortcut.primaryShift('z') : external_wp_keycodes_namespaceObject.displayShortcut.primary('y');
- const hasRedo = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).hasEditorRedo(), []);
- const {
- redo
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, _extends({}, props, {
- ref: ref,
- icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_redo : library_undo
- /* translators: button label text should, if possible, be under 16 characters. */
- ,
- label: (0,external_wp_i18n_namespaceObject.__)('Redo'),
- shortcut: shortcut // If there are no redo levels we don't want to actually disable this
- // button, because it will remove focus for keyboard users.
- // See: https://github.com/WordPress/gutenberg/issues/3486
- ,
- "aria-disabled": !hasRedo,
- onClick: hasRedo ? redo : undefined,
- className: "editor-history__redo"
- }));
- }
- /* harmony default export */ var editor_history_redo = ((0,external_wp_element_namespaceObject.forwardRef)(EditorHistoryRedo));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/undo.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function EditorHistoryUndo(props, ref) {
- const hasUndo = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).hasEditorUndo(), []);
- const {
- undo
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, _extends({}, props, {
- ref: ref,
- icon: !(0,external_wp_i18n_namespaceObject.isRTL)() ? library_undo : library_redo
- /* translators: button label text should, if possible, be under 16 characters. */
- ,
- label: (0,external_wp_i18n_namespaceObject.__)('Undo'),
- shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('z') // If there are no undo levels we don't want to actually disable this
- // button, because it will remove focus for keyboard users.
- // See: https://github.com/WordPress/gutenberg/issues/3486
- ,
- "aria-disabled": !hasUndo,
- onClick: hasUndo ? undo : undefined,
- className: "editor-history__undo"
- }));
- }
- /* harmony default export */ var editor_history_undo = ((0,external_wp_element_namespaceObject.forwardRef)(EditorHistoryUndo));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/template-validation-notice/index.js
- /**
- * WordPress dependencies
- */
- function TemplateValidationNotice(_ref) {
- let {
- isValid,
- ...props
- } = _ref;
- if (isValid) {
- return null;
- }
- const confirmSynchronization = () => {
- if ( // eslint-disable-next-line no-alert
- window.confirm((0,external_wp_i18n_namespaceObject.__)('Resetting the template may result in loss of content, do you want to continue?'))) {
- props.synchronizeTemplate();
- }
- };
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Notice, {
- className: "editor-template-validation-notice",
- isDismissible: false,
- status: "warning",
- actions: [{
- label: (0,external_wp_i18n_namespaceObject.__)('Keep it as is'),
- onClick: props.resetTemplateValidity
- }, {
- label: (0,external_wp_i18n_namespaceObject.__)('Reset the template'),
- onClick: confirmSynchronization
- }]
- }, (0,external_wp_i18n_namespaceObject.__)('The content of your post doesn’t match the template assigned to your post type.'));
- }
- /* harmony default export */ var template_validation_notice = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => ({
- isValid: select(external_wp_blockEditor_namespaceObject.store).isValidTemplate()
- })), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => {
- const {
- setTemplateValidity,
- synchronizeTemplate
- } = dispatch(external_wp_blockEditor_namespaceObject.store);
- return {
- resetTemplateValidity: () => setTemplateValidity(true),
- synchronizeTemplate
- };
- })])(TemplateValidationNotice));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-notices/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function EditorNotices(_ref) {
- let {
- notices,
- onRemove
- } = _ref;
- const dismissibleNotices = (0,external_lodash_namespaceObject.filter)(notices, {
- isDismissible: true,
- type: 'default'
- });
- const nonDismissibleNotices = (0,external_lodash_namespaceObject.filter)(notices, {
- isDismissible: false,
- type: 'default'
- });
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.NoticeList, {
- notices: nonDismissibleNotices,
- className: "components-editor-notices__pinned"
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.NoticeList, {
- notices: dismissibleNotices,
- className: "components-editor-notices__dismissible",
- onRemove: onRemove
- }, (0,external_wp_element_namespaceObject.createElement)(template_validation_notice, null)));
- }
- /* harmony default export */ var editor_notices = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => ({
- notices: select(external_wp_notices_namespaceObject.store).getNotices()
- })), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- onRemove: dispatch(external_wp_notices_namespaceObject.store).removeNotice
- }))])(EditorNotices));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-snackbars/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- function EditorSnackbars() {
- const notices = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_notices_namespaceObject.store).getNotices(), []);
- const {
- removeNotice
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
- const snackbarNotices = (0,external_lodash_namespaceObject.filter)(notices, {
- type: 'snackbar'
- });
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SnackbarList, {
- notices: snackbarNotices,
- className: "components-editor-notices__snackbar",
- onRemove: removeNotice
- });
- }
- ;// CONCATENATED MODULE: external ["wp","htmlEntities"]
- var external_wp_htmlEntities_namespaceObject = window["wp"]["htmlEntities"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/entity-record-item.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function EntityRecordItem(_ref) {
- let {
- record,
- checked,
- onChange,
- closePanel
- } = _ref;
- const {
- name,
- kind,
- title,
- key
- } = record;
- const parentBlockId = (0,external_wp_data_namespaceObject.useSelect)(select => {
- var _blocks$;
- // Get entity's blocks.
- const {
- blocks = []
- } = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord(kind, name, key); // Get parents of the entity's first block.
- const parents = select(external_wp_blockEditor_namespaceObject.store).getBlockParents((_blocks$ = blocks[0]) === null || _blocks$ === void 0 ? void 0 : _blocks$.clientId); // Return closest parent block's clientId.
- return parents[parents.length - 1];
- }, []); // Handle templates that might use default descriptive titles.
- const entityRecordTitle = (0,external_wp_data_namespaceObject.useSelect)(select => {
- if ('postType' !== kind || 'wp_template' !== name) {
- return title;
- }
- const template = select(external_wp_coreData_namespaceObject.store).getEditedEntityRecord(kind, name, key);
- return select(store_store).__experimentalGetTemplateInfo(template).title;
- }, [name, kind, title, key]);
- const isSelected = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const selectedBlockId = select(external_wp_blockEditor_namespaceObject.store).getSelectedBlockClientId();
- return selectedBlockId === parentBlockId;
- }, [parentBlockId]);
- const isSelectedText = isSelected ? (0,external_wp_i18n_namespaceObject.__)('Selected') : (0,external_wp_i18n_namespaceObject.__)('Select');
- const {
- selectBlock
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
- const selectParentBlock = (0,external_wp_element_namespaceObject.useCallback)(() => selectBlock(parentBlockId), [parentBlockId]);
- const selectAndDismiss = (0,external_wp_element_namespaceObject.useCallback)(() => {
- selectBlock(parentBlockId);
- closePanel();
- }, [parentBlockId]);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelRow, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_element_namespaceObject.createElement)("strong", null, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(entityRecordTitle) || (0,external_wp_i18n_namespaceObject.__)('Untitled')),
- checked: checked,
- onChange: onChange
- }), parentBlockId ? (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: selectParentBlock,
- className: "entities-saved-states__find-entity",
- disabled: isSelected
- }, isSelectedText), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: selectAndDismiss,
- className: "entities-saved-states__find-entity-small",
- disabled: isSelected
- }, isSelectedText)) : null);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/entity-type-list.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function getEntityDescription(entity, count) {
- switch (entity) {
- case 'site':
- return 1 === count ? (0,external_wp_i18n_namespaceObject.__)('This change will affect your whole site.') : (0,external_wp_i18n_namespaceObject.__)('These changes will affect your whole site.');
- case 'wp_template':
- return (0,external_wp_i18n_namespaceObject.__)('This change will affect pages and posts that use this template.');
- case 'page':
- case 'post':
- return (0,external_wp_i18n_namespaceObject.__)('The following content has been modified.');
- }
- }
- function EntityTypeList(_ref) {
- let {
- list,
- unselectedEntities,
- setUnselectedEntities,
- closePanel
- } = _ref;
- const count = list.length;
- const firstRecord = list[0];
- const entityConfig = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityConfig(firstRecord.kind, firstRecord.name), [firstRecord.kind, firstRecord.name]);
- const {
- name
- } = firstRecord;
- let entityLabel = entityConfig.label;
- if (name === 'wp_template_part') {
- entityLabel = 1 === count ? (0,external_wp_i18n_namespaceObject.__)('Template Part') : (0,external_wp_i18n_namespaceObject.__)('Template Parts');
- } // Set description based on type of entity.
- const description = getEntityDescription(name, count);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- title: entityLabel,
- initialOpen: true
- }, description && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelRow, null, description), list.map(record => {
- return (0,external_wp_element_namespaceObject.createElement)(EntityRecordItem, {
- key: record.key || record.property,
- record: record,
- checked: !(0,external_lodash_namespaceObject.some)(unselectedEntities, elt => elt.kind === record.kind && elt.name === record.name && elt.key === record.key && elt.property === record.property),
- onChange: value => setUnselectedEntities(record, value),
- closePanel: closePanel
- });
- }));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/entities-saved-states/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const TRANSLATED_SITE_PROPERTIES = {
- title: (0,external_wp_i18n_namespaceObject.__)('Title'),
- description: (0,external_wp_i18n_namespaceObject.__)('Tagline'),
- site_logo: (0,external_wp_i18n_namespaceObject.__)('Logo'),
- site_icon: (0,external_wp_i18n_namespaceObject.__)('Icon'),
- show_on_front: (0,external_wp_i18n_namespaceObject.__)('Show on front'),
- page_on_front: (0,external_wp_i18n_namespaceObject.__)('Page on front')
- };
- const PUBLISH_ON_SAVE_ENTITIES = [{
- kind: 'postType',
- name: 'wp_navigation'
- }];
- function EntitiesSavedStates(_ref) {
- let {
- close
- } = _ref;
- const saveButtonRef = (0,external_wp_element_namespaceObject.useRef)();
- const {
- dirtyEntityRecords
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const dirtyRecords = select(external_wp_coreData_namespaceObject.store).__experimentalGetDirtyEntityRecords(); // Remove site object and decouple into its edited pieces.
- const dirtyRecordsWithoutSite = dirtyRecords.filter(record => !(record.kind === 'root' && record.name === 'site'));
- const siteEdits = select(external_wp_coreData_namespaceObject.store).getEntityRecordEdits('root', 'site');
- const siteEditsAsEntities = [];
- for (const property in siteEdits) {
- siteEditsAsEntities.push({
- kind: 'root',
- name: 'site',
- title: TRANSLATED_SITE_PROPERTIES[property] || property,
- property
- });
- }
- const dirtyRecordsWithSiteItems = [...dirtyRecordsWithoutSite, ...siteEditsAsEntities];
- return {
- dirtyEntityRecords: dirtyRecordsWithSiteItems
- };
- }, []);
- const {
- editEntityRecord,
- saveEditedEntityRecord,
- __experimentalSaveSpecifiedEntityEdits: saveSpecifiedEntityEdits
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
- const {
- __unstableMarkLastChangeAsPersistent
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
- const {
- createSuccessNotice,
- createErrorNotice
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); // To group entities by type.
- const partitionedSavables = (0,external_lodash_namespaceObject.groupBy)(dirtyEntityRecords, 'name'); // Sort entity groups.
- const {
- site: siteSavables,
- wp_template: templateSavables,
- wp_template_part: templatePartSavables,
- ...contentSavables
- } = partitionedSavables;
- const sortedPartitionedSavables = [siteSavables, templateSavables, templatePartSavables, ...Object.values(contentSavables)].filter(Array.isArray); // Unchecked entities to be ignored by save function.
- const [unselectedEntities, _setUnselectedEntities] = (0,external_wp_element_namespaceObject.useState)([]);
- const setUnselectedEntities = (_ref2, checked) => {
- let {
- kind,
- name,
- key,
- property
- } = _ref2;
- if (checked) {
- _setUnselectedEntities(unselectedEntities.filter(elt => elt.kind !== kind || elt.name !== name || elt.key !== key || elt.property !== property));
- } else {
- _setUnselectedEntities([...unselectedEntities, {
- kind,
- name,
- key,
- property
- }]);
- }
- };
- const saveCheckedEntities = () => {
- const entitiesToSave = dirtyEntityRecords.filter(_ref3 => {
- let {
- kind,
- name,
- key,
- property
- } = _ref3;
- return !(0,external_lodash_namespaceObject.some)(unselectedEntities, elt => elt.kind === kind && elt.name === name && elt.key === key && elt.property === property);
- });
- close(entitiesToSave);
- const siteItemsToSave = [];
- const pendingSavedRecords = [];
- entitiesToSave.forEach(_ref4 => {
- let {
- kind,
- name,
- key,
- property
- } = _ref4;
- if ('root' === kind && 'site' === name) {
- siteItemsToSave.push(property);
- } else {
- if (PUBLISH_ON_SAVE_ENTITIES.some(typeToPublish => typeToPublish.kind === kind && typeToPublish.name === name)) {
- editEntityRecord(kind, name, key, {
- status: 'publish'
- });
- }
- pendingSavedRecords.push(saveEditedEntityRecord(kind, name, key));
- }
- });
- if (siteItemsToSave.length) {
- pendingSavedRecords.push(saveSpecifiedEntityEdits('root', 'site', undefined, siteItemsToSave));
- }
- __unstableMarkLastChangeAsPersistent();
- Promise.all(pendingSavedRecords).then(values => {
- if (values.some(value => typeof value === 'undefined')) {
- createErrorNotice((0,external_wp_i18n_namespaceObject.__)('Saving failed.'));
- } else {
- createSuccessNotice((0,external_wp_i18n_namespaceObject.__)('Site updated.'), {
- type: 'snackbar'
- });
- }
- }).catch(error => createErrorNotice(`${(0,external_wp_i18n_namespaceObject.__)('Saving failed.')} ${error}`));
- }; // Explicitly define this with no argument passed. Using `close` on
- // its own will use the event object in place of the expected saved entities.
- const dismissPanel = (0,external_wp_element_namespaceObject.useCallback)(() => close(), [close]);
- const [saveDialogRef, saveDialogProps] = (0,external_wp_compose_namespaceObject.__experimentalUseDialog)({
- onClose: () => dismissPanel()
- });
- return (0,external_wp_element_namespaceObject.createElement)("div", _extends({
- ref: saveDialogRef
- }, saveDialogProps, {
- className: "entities-saved-states__panel"
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
- className: "entities-saved-states__panel-header",
- gap: 2
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
- isBlock: true,
- as: external_wp_components_namespaceObject.Button,
- ref: saveButtonRef,
- variant: "primary",
- disabled: dirtyEntityRecords.length - unselectedEntities.length === 0,
- onClick: saveCheckedEntities,
- className: "editor-entities-saved-states__save-button"
- }, (0,external_wp_i18n_namespaceObject.__)('Save')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, {
- isBlock: true,
- as: external_wp_components_namespaceObject.Button,
- variant: "secondary",
- onClick: dismissPanel
- }, (0,external_wp_i18n_namespaceObject.__)('Cancel'))), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "entities-saved-states__text-prompt"
- }, (0,external_wp_element_namespaceObject.createElement)("strong", null, (0,external_wp_i18n_namespaceObject.__)('Are you ready to save?')), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('The following changes have been made to your site, templates, and content.'))), sortedPartitionedSavables.map(list => {
- return (0,external_wp_element_namespaceObject.createElement)(EntityTypeList, {
- key: list[0].name,
- list: list,
- closePanel: dismissPanel,
- unselectedEntities: unselectedEntities,
- setUnselectedEntities: setUnselectedEntities
- });
- }));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/error-boundary/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function CopyButton(_ref) {
- let {
- text,
- children
- } = _ref;
- const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "secondary",
- ref: ref
- }, children);
- }
- class ErrorBoundary extends external_wp_element_namespaceObject.Component {
- constructor() {
- super(...arguments);
- this.reboot = this.reboot.bind(this);
- this.getContent = this.getContent.bind(this);
- this.state = {
- error: null
- };
- }
- componentDidCatch(error) {
- this.setState({
- error
- });
- (0,external_wp_hooks_namespaceObject.doAction)('editor.ErrorBoundary.errorLogged', error);
- }
- reboot() {
- this.props.onError();
- }
- getContent() {
- try {
- // While `select` in a component is generally discouraged, it is
- // used here because it (a) reduces the chance of data loss in the
- // case of additional errors by performing a direct retrieval and
- // (b) avoids the performance cost associated with unnecessary
- // content serialization throughout the lifetime of a non-erroring
- // application.
- return (0,external_wp_data_namespaceObject.select)(store_store).getEditedPostContent();
- } catch (error) {}
- }
- render() {
- const {
- error
- } = this.state;
- if (!error) {
- return this.props.children;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.Warning, {
- className: "editor-error-boundary",
- actions: [(0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- key: "recovery",
- onClick: this.reboot,
- variant: "secondary"
- }, (0,external_wp_i18n_namespaceObject.__)('Attempt Recovery')), (0,external_wp_element_namespaceObject.createElement)(CopyButton, {
- key: "copy-post",
- text: this.getContent
- }, (0,external_wp_i18n_namespaceObject.__)('Copy Post Text')), (0,external_wp_element_namespaceObject.createElement)(CopyButton, {
- key: "copy-error",
- text: error.stack
- }, (0,external_wp_i18n_namespaceObject.__)('Copy Error'))]
- }, (0,external_wp_i18n_namespaceObject.__)('The editor has encountered an unexpected error.'));
- }
- }
- /* harmony default export */ var error_boundary = (ErrorBoundary);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/local-autosave-monitor/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const requestIdleCallback = window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame;
- let hasStorageSupport;
- let uniqueId = 0;
- /**
- * Function which returns true if the current environment supports browser
- * sessionStorage, or false otherwise. The result of this function is cached and
- * reused in subsequent invocations.
- */
- const hasSessionStorageSupport = () => {
- if (typeof hasStorageSupport === 'undefined') {
- try {
- // Private Browsing in Safari 10 and earlier will throw an error when
- // attempting to set into sessionStorage. The test here is intentional in
- // causing a thrown error as condition bailing from local autosave.
- window.sessionStorage.setItem('__wpEditorTestSessionStorage', '');
- window.sessionStorage.removeItem('__wpEditorTestSessionStorage');
- hasStorageSupport = true;
- } catch (error) {
- hasStorageSupport = false;
- }
- }
- return hasStorageSupport;
- };
- /**
- * Custom hook which manages the creation of a notice prompting the user to
- * restore a local autosave, if one exists.
- */
- function useAutosaveNotice() {
- const {
- postId,
- isEditedPostNew,
- hasRemoteAutosave
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- postId: select(store_store).getCurrentPostId(),
- isEditedPostNew: select(store_store).isEditedPostNew(),
- hasRemoteAutosave: !!select(store_store).getEditorSettings().autosave
- }), []);
- const {
- getEditedPostAttribute
- } = (0,external_wp_data_namespaceObject.useSelect)(store_store);
- const {
- createWarningNotice,
- removeNotice
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store);
- const {
- editPost,
- resetEditorBlocks
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- let localAutosave = localAutosaveGet(postId, isEditedPostNew);
- if (!localAutosave) {
- return;
- }
- try {
- localAutosave = JSON.parse(localAutosave);
- } catch (error) {
- // Not usable if it can't be parsed.
- return;
- }
- const {
- post_title: title,
- content,
- excerpt
- } = localAutosave;
- const edits = {
- title,
- content,
- excerpt
- };
- {
- // Only display a notice if there is a difference between what has been
- // saved and that which is stored in sessionStorage.
- const hasDifference = Object.keys(edits).some(key => {
- return edits[key] !== getEditedPostAttribute(key);
- });
- if (!hasDifference) {
- // If there is no difference, it can be safely ejected from storage.
- localAutosaveClear(postId, isEditedPostNew);
- return;
- }
- }
- if (hasRemoteAutosave) {
- return;
- }
- const noticeId = `wpEditorAutosaveRestore${++uniqueId}`;
- createWarningNotice((0,external_wp_i18n_namespaceObject.__)('The backup of this post in your browser is different from the version below.'), {
- id: noticeId,
- actions: [{
- label: (0,external_wp_i18n_namespaceObject.__)('Restore the backup'),
- onClick() {
- const {
- content: editsContent,
- ...editsWithoutContent
- } = edits;
- editPost(editsWithoutContent);
- resetEditorBlocks((0,external_wp_blocks_namespaceObject.parse)(edits.content));
- removeNotice(noticeId);
- }
- }]
- });
- }, [isEditedPostNew, postId]);
- }
- /**
- * Custom hook which ejects a local autosave after a successful save occurs.
- */
- function useAutosavePurge() {
- const {
- postId,
- isEditedPostNew,
- isDirty,
- isAutosaving,
- didError
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- postId: select(store_store).getCurrentPostId(),
- isEditedPostNew: select(store_store).isEditedPostNew(),
- isDirty: select(store_store).isEditedPostDirty(),
- isAutosaving: select(store_store).isAutosavingPost(),
- didError: select(store_store).didPostSaveRequestFail()
- }), []);
- const lastIsDirty = (0,external_wp_element_namespaceObject.useRef)(isDirty);
- const lastIsAutosaving = (0,external_wp_element_namespaceObject.useRef)(isAutosaving);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- if (!didError && (lastIsAutosaving.current && !isAutosaving || lastIsDirty.current && !isDirty)) {
- localAutosaveClear(postId, isEditedPostNew);
- }
- lastIsDirty.current = isDirty;
- lastIsAutosaving.current = isAutosaving;
- }, [isDirty, isAutosaving, didError]); // Once the isEditedPostNew changes from true to false, let's clear the auto-draft autosave.
- const wasEditedPostNew = (0,external_wp_compose_namespaceObject.usePrevious)(isEditedPostNew);
- const prevPostId = (0,external_wp_compose_namespaceObject.usePrevious)(postId);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- if (prevPostId === postId && wasEditedPostNew && !isEditedPostNew) {
- localAutosaveClear(postId, true);
- }
- }, [isEditedPostNew, postId]);
- }
- function LocalAutosaveMonitor() {
- const {
- autosave
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const deferredAutosave = (0,external_wp_element_namespaceObject.useCallback)(() => {
- requestIdleCallback(() => autosave({
- local: true
- }));
- }, []);
- useAutosaveNotice();
- useAutosavePurge();
- const {
- localAutosaveInterval
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- localAutosaveInterval: select(store_store).getEditorSettings().localAutosaveInterval
- }), []);
- return (0,external_wp_element_namespaceObject.createElement)(autosave_monitor, {
- interval: localAutosaveInterval,
- autosave: deferredAutosave
- });
- }
- /* harmony default export */ var local_autosave_monitor = ((0,external_wp_compose_namespaceObject.ifCondition)(hasSessionStorageSupport)(LocalAutosaveMonitor));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PageAttributesCheck(_ref) {
- let {
- children
- } = _ref;
- const postType = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEditedPostAttribute
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- return getPostType(getEditedPostAttribute('type'));
- }, []);
- const supportsPageAttributes = (0,external_lodash_namespaceObject.get)(postType, ['supports', 'page-attributes'], false); // Only render fields if post type supports page attributes or available templates exist.
- if (!supportsPageAttributes) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var page_attributes_check = (PageAttributesCheck);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-type-support-check/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * A component which renders its own children only if the current editor post
- * type supports one of the given `supportKeys` prop.
- *
- * @param {Object} props Props.
- * @param {string} [props.postType] Current post type.
- * @param {WPElement} props.children Children to be rendered if post
- * type supports.
- * @param {(string|string[])} props.supportKeys String or string array of keys
- * to test.
- *
- * @return {WPComponent} The component to be rendered.
- */
- function PostTypeSupportCheck(_ref) {
- let {
- postType,
- children,
- supportKeys
- } = _ref;
- let isSupported = true;
- if (postType) {
- isSupported = (0,external_lodash_namespaceObject.some)((0,external_lodash_namespaceObject.castArray)(supportKeys), key => !!postType.supports[key]);
- }
- if (!isSupported) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_type_support_check = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getEditedPostAttribute
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- return {
- postType: getPostType(getEditedPostAttribute('type'))
- };
- })(PostTypeSupportCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/order.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const PageAttributesOrder = _ref => {
- let {
- onUpdateOrder,
- order = 0
- } = _ref;
- const [orderInput, setOrderInput] = (0,external_wp_element_namespaceObject.useState)(null);
- const setUpdatedOrder = value => {
- var _value$trim;
- setOrderInput(value);
- const newOrder = Number(value);
- if (Number.isInteger(newOrder) && ((_value$trim = value.trim) === null || _value$trim === void 0 ? void 0 : _value$trim.call(value)) !== '') {
- onUpdateOrder(Number(value));
- }
- };
- const value = orderInput === null ? order : orderInput;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- className: "editor-page-attributes__order",
- type: "number",
- label: (0,external_wp_i18n_namespaceObject.__)('Order'),
- value: value,
- onChange: setUpdatedOrder,
- size: 6,
- onBlur: () => {
- setOrderInput(null);
- }
- });
- };
- function PageAttributesOrderWithChecks(props) {
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, {
- supportKeys: "page-attributes"
- }, (0,external_wp_element_namespaceObject.createElement)(PageAttributesOrder, props));
- }
- /* harmony default export */ var order = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- order: select(store_store).getEditedPostAttribute('menu_order')
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- onUpdateOrder(order) {
- dispatch(store_store).editPost({
- menu_order: order
- });
- }
- }))])(PageAttributesOrderWithChecks));
- // EXTERNAL MODULE: ./node_modules/remove-accents/index.js
- var remove_accents = __webpack_require__(4793);
- var remove_accents_default = /*#__PURE__*/__webpack_require__.n(remove_accents);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/terms.js
- /**
- * External dependencies
- */
- /**
- * Returns terms in a tree form.
- *
- * @param {Array} flatTerms Array of terms in flat format.
- *
- * @return {Array} Array of terms in tree format.
- */
- function buildTermsTree(flatTerms) {
- const flatTermsWithParentAndChildren = flatTerms.map(term => {
- return {
- children: [],
- parent: null,
- ...term
- };
- });
- const termsByParent = (0,external_lodash_namespaceObject.groupBy)(flatTermsWithParentAndChildren, 'parent');
- if (termsByParent.null && termsByParent.null.length) {
- return flatTermsWithParentAndChildren;
- }
- const fillWithChildren = terms => {
- return terms.map(term => {
- const children = termsByParent[term.id];
- return { ...term,
- children: children && children.length ? fillWithChildren(children) : []
- };
- });
- };
- return fillWithChildren(termsByParent['0'] || []);
- } // Lodash unescape function handles ' but not ' which may be return in some API requests.
- const unescapeString = arg => {
- return (0,external_lodash_namespaceObject.unescape)(arg.replace(''', "'"));
- };
- /**
- * Returns a term object with name unescaped.
- * The unescape of the name property is done using lodash unescape function.
- *
- * @param {Object} term The term object to unescape.
- *
- * @return {Object} Term object with name property unescaped.
- */
- const unescapeTerm = term => {
- return { ...term,
- name: unescapeString(term.name)
- };
- };
- /**
- * Returns an array of term objects with names unescaped.
- * The unescape of each term is performed using the unescapeTerm function.
- *
- * @param {Object[]} terms Array of term objects to unescape.
- *
- * @return {Object[]} Array of term objects unescaped.
- */
- const unescapeTerms = terms => {
- return (0,external_lodash_namespaceObject.map)(terms, unescapeTerm);
- };
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/parent.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function getTitle(post) {
- var _post$title;
- return post !== null && post !== void 0 && (_post$title = post.title) !== null && _post$title !== void 0 && _post$title.rendered ? (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(post.title.rendered) : `#${post.id} (${(0,external_wp_i18n_namespaceObject.__)('no title')})`;
- }
- const getItemPriority = (name, searchValue) => {
- const normalizedName = remove_accents_default()(name || '').toLowerCase();
- const normalizedSearch = remove_accents_default()(searchValue || '').toLowerCase();
- if (normalizedName === normalizedSearch) {
- return 0;
- }
- if (normalizedName.startsWith(normalizedSearch)) {
- return normalizedName.length;
- }
- return Infinity;
- };
- function PageAttributesParent() {
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const [fieldValue, setFieldValue] = (0,external_wp_element_namespaceObject.useState)(false);
- const {
- parentPost,
- parentPostId,
- items,
- postType
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getPostType,
- getEntityRecords,
- getEntityRecord
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- getCurrentPostId,
- getEditedPostAttribute
- } = select(store_store);
- const postTypeSlug = getEditedPostAttribute('type');
- const pageId = getEditedPostAttribute('parent');
- const pType = getPostType(postTypeSlug);
- const postId = getCurrentPostId();
- const isHierarchical = (0,external_lodash_namespaceObject.get)(pType, ['hierarchical'], false);
- const query = {
- per_page: 100,
- exclude: postId,
- parent_exclude: postId,
- orderby: 'menu_order',
- order: 'asc',
- _fields: 'id,title,parent'
- }; // Perform a search when the field is changed.
- if (!!fieldValue) {
- query.search = fieldValue;
- }
- return {
- parentPostId: pageId,
- parentPost: pageId ? getEntityRecord('postType', postTypeSlug, pageId) : null,
- items: isHierarchical ? getEntityRecords('postType', postTypeSlug, query) : [],
- postType: pType
- };
- }, [fieldValue]);
- const isHierarchical = (0,external_lodash_namespaceObject.get)(postType, ['hierarchical'], false);
- const parentPageLabel = (0,external_lodash_namespaceObject.get)(postType, ['labels', 'parent_item_colon']);
- const pageItems = items || [];
- const parentOptions = (0,external_wp_element_namespaceObject.useMemo)(() => {
- const getOptionsFromTree = function (tree) {
- let level = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
- const mappedNodes = tree.map(treeNode => [{
- value: treeNode.id,
- label: '— '.repeat(level) + (0,external_lodash_namespaceObject.unescape)(treeNode.name),
- rawName: treeNode.name
- }, ...getOptionsFromTree(treeNode.children || [], level + 1)]);
- const sortedNodes = mappedNodes.sort((_ref, _ref2) => {
- let [a] = _ref;
- let [b] = _ref2;
- const priorityA = getItemPriority(a.rawName, fieldValue);
- const priorityB = getItemPriority(b.rawName, fieldValue);
- return priorityA >= priorityB ? 1 : -1;
- });
- return sortedNodes.flat();
- };
- let tree = pageItems.map(item => ({
- id: item.id,
- parent: item.parent,
- name: getTitle(item)
- })); // Only build a hierarchical tree when not searching.
- if (!fieldValue) {
- tree = buildTermsTree(tree);
- }
- const opts = getOptionsFromTree(tree); // Ensure the current parent is in the options list.
- const optsHasParent = (0,external_lodash_namespaceObject.find)(opts, item => item.value === parentPostId);
- if (parentPost && !optsHasParent) {
- opts.unshift({
- value: parentPostId,
- label: getTitle(parentPost)
- });
- }
- return opts;
- }, [pageItems, fieldValue]);
- if (!isHierarchical || !parentPageLabel) {
- return null;
- }
- /**
- * Handle user input.
- *
- * @param {string} inputValue The current value of the input field.
- */
- const handleKeydown = inputValue => {
- setFieldValue(inputValue);
- };
- /**
- * Handle author selection.
- *
- * @param {Object} selectedPostId The selected Author.
- */
- const handleChange = selectedPostId => {
- editPost({
- parent: selectedPostId
- });
- };
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ComboboxControl, {
- className: "editor-page-attributes__parent",
- label: parentPageLabel,
- value: parentPostId,
- options: parentOptions,
- onFilterValueChange: (0,external_lodash_namespaceObject.debounce)(handleKeydown, 300),
- onChange: handleChange
- });
- }
- /* harmony default export */ var page_attributes_parent = (PageAttributesParent);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-template/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostTemplate() {
- const {
- availableTemplates,
- selectedTemplate,
- isViewable
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- var _getPostType$viewable, _getPostType;
- const {
- getEditedPostAttribute,
- getEditorSettings,
- getCurrentPostType
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- return {
- selectedTemplate: getEditedPostAttribute('template'),
- availableTemplates: getEditorSettings().availableTemplates,
- isViewable: (_getPostType$viewable = (_getPostType = getPostType(getCurrentPostType())) === null || _getPostType === void 0 ? void 0 : _getPostType.viewable) !== null && _getPostType$viewable !== void 0 ? _getPostType$viewable : false
- };
- }, []);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- if (!isViewable || (0,external_lodash_namespaceObject.isEmpty)(availableTemplates)) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SelectControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Template:'),
- value: selectedTemplate,
- onChange: templateSlug => {
- editPost({
- template: templateSlug || ''
- });
- },
- options: (0,external_lodash_namespaceObject.map)(availableTemplates, (templateName, templateSlug) => ({
- value: templateSlug,
- label: templateName
- }))
- });
- }
- /* harmony default export */ var post_template = (PostTemplate);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/constants.js
- const AUTHORS_QUERY = {
- who: 'authors',
- per_page: 50,
- _fields: 'id,name',
- context: 'view' // Allows non-admins to perform requests.
- };
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/combobox.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostAuthorCombobox() {
- const [fieldValue, setFieldValue] = (0,external_wp_element_namespaceObject.useState)();
- const {
- authorId,
- isLoading,
- authors,
- postAuthor
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getUser,
- getUsers,
- isResolving
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- getEditedPostAttribute
- } = select(store_store);
- const author = getUser(getEditedPostAttribute('author'), {
- context: 'view'
- });
- const query = { ...AUTHORS_QUERY
- };
- if (fieldValue) {
- query.search = fieldValue;
- }
- return {
- authorId: getEditedPostAttribute('author'),
- postAuthor: author,
- authors: getUsers(query),
- isLoading: isResolving('core', 'getUsers', [query])
- };
- }, [fieldValue]);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const authorOptions = (0,external_wp_element_namespaceObject.useMemo)(() => {
- const fetchedAuthors = (authors !== null && authors !== void 0 ? authors : []).map(author => {
- return {
- value: author.id,
- label: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(author.name)
- };
- }); // Ensure the current author is included in the dropdown list.
- const foundAuthor = fetchedAuthors.findIndex(_ref => {
- let {
- value
- } = _ref;
- return (postAuthor === null || postAuthor === void 0 ? void 0 : postAuthor.id) === value;
- });
- if (foundAuthor < 0 && postAuthor) {
- return [{
- value: postAuthor.id,
- label: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(postAuthor.name)
- }, ...fetchedAuthors];
- }
- return fetchedAuthors;
- }, [authors, postAuthor]);
- /**
- * Handle author selection.
- *
- * @param {number} postAuthorId The selected Author.
- */
- const handleSelect = postAuthorId => {
- if (!postAuthorId) {
- return;
- }
- editPost({
- author: postAuthorId
- });
- };
- /**
- * Handle user input.
- *
- * @param {string} inputValue The current value of the input field.
- */
- const handleKeydown = inputValue => {
- setFieldValue(inputValue);
- };
- if (!postAuthor) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ComboboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Author'),
- options: authorOptions,
- value: authorId,
- onFilterValueChange: (0,external_lodash_namespaceObject.debounce)(handleKeydown, 300),
- onChange: handleSelect,
- isLoading: isLoading,
- allowReset: false
- });
- }
- /* harmony default export */ var combobox = (PostAuthorCombobox);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/select.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostAuthorSelect() {
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- postAuthor,
- authors
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- return {
- postAuthor: select(store_store).getEditedPostAttribute('author'),
- authors: select(external_wp_coreData_namespaceObject.store).getUsers(AUTHORS_QUERY)
- };
- }, []);
- const authorOptions = (0,external_wp_element_namespaceObject.useMemo)(() => {
- return (authors !== null && authors !== void 0 ? authors : []).map(author => {
- return {
- value: author.id,
- label: (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(author.name)
- };
- });
- }, [authors]);
- const setAuthorId = value => {
- const author = Number(value);
- editPost({
- author
- });
- };
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SelectControl, {
- className: "post-author-selector",
- label: (0,external_wp_i18n_namespaceObject.__)('Author'),
- options: authorOptions,
- onChange: setAuthorId,
- value: postAuthor
- });
- }
- /* harmony default export */ var post_author_select = (PostAuthorSelect);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const minimumUsersForCombobox = 25;
- function PostAuthor() {
- const showCombobox = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const authors = select(external_wp_coreData_namespaceObject.store).getUsers(AUTHORS_QUERY);
- return (authors === null || authors === void 0 ? void 0 : authors.length) >= minimumUsersForCombobox;
- }, []);
- if (showCombobox) {
- return (0,external_wp_element_namespaceObject.createElement)(combobox, null);
- }
- return (0,external_wp_element_namespaceObject.createElement)(post_author_select, null);
- }
- /* harmony default export */ var post_author = (PostAuthor);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostAuthorCheck(_ref) {
- let {
- children
- } = _ref;
- const {
- hasAssignAuthorAction,
- hasAuthors
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const post = select(store_store).getCurrentPost();
- const authors = select(external_wp_coreData_namespaceObject.store).getUsers(AUTHORS_QUERY);
- return {
- hasAssignAuthorAction: (0,external_lodash_namespaceObject.get)(post, ['_links', 'wp:action-assign-author'], false),
- hasAuthors: (authors === null || authors === void 0 ? void 0 : authors.length) >= 1
- };
- }, []);
- if (!hasAssignAuthorAction || !hasAuthors) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, {
- supportKeys: "author"
- }, children);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-comments/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostComments(_ref) {
- let {
- commentStatus = 'open',
- ...props
- } = _ref;
- const onToggleComments = () => props.editPost({
- comment_status: commentStatus === 'open' ? 'closed' : 'open'
- });
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Allow comments'),
- checked: commentStatus === 'open',
- onChange: onToggleComments
- });
- }
- /* harmony default export */ var post_comments = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- commentStatus: select(store_store).getEditedPostAttribute('comment_status')
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- editPost: dispatch(store_store).editPost
- }))])(PostComments));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostExcerpt(_ref) {
- let {
- excerpt,
- onUpdateExcerpt
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-excerpt"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextareaControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Write an excerpt (optional)'),
- className: "editor-post-excerpt__textarea",
- onChange: value => onUpdateExcerpt(value),
- value: excerpt
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
- href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/settings-sidebar/#excerpt')
- }, (0,external_wp_i18n_namespaceObject.__)('Learn more about manual excerpts')));
- }
- /* harmony default export */ var post_excerpt = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- excerpt: select(store_store).getEditedPostAttribute('excerpt')
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- onUpdateExcerpt(excerpt) {
- dispatch(store_store).editPost({
- excerpt
- });
- }
- }))])(PostExcerpt));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/check.js
- /**
- * Internal dependencies
- */
- function PostExcerptCheck(props) {
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, _extends({}, props, {
- supportKeys: "excerpt"
- }));
- }
- /* harmony default export */ var post_excerpt_check = (PostExcerptCheck);
- ;// CONCATENATED MODULE: external ["wp","blob"]
- var external_wp_blob_namespaceObject = window["wp"]["blob"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/theme-support-check/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function ThemeSupportCheck(_ref) {
- let {
- themeSupports,
- children,
- postType,
- supportKeys
- } = _ref;
- const isSupported = (0,external_lodash_namespaceObject.some)((0,external_lodash_namespaceObject.castArray)(supportKeys), key => {
- const supported = (0,external_lodash_namespaceObject.get)(themeSupports, [key], false); // 'post-thumbnails' can be boolean or an array of post types.
- // In the latter case, we need to verify `postType` exists
- // within `supported`. If `postType` isn't passed, then the check
- // should fail.
- if ('post-thumbnails' === key && Array.isArray(supported)) {
- return (0,external_lodash_namespaceObject.includes)(supported, postType);
- }
- return supported;
- });
- if (!isSupported) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var theme_support_check = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getThemeSupports
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- getEditedPostAttribute
- } = select(store_store);
- return {
- postType: getEditedPostAttribute('type'),
- themeSupports: getThemeSupports()
- };
- })(ThemeSupportCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/check.js
- /**
- * Internal dependencies
- */
- function PostFeaturedImageCheck(props) {
- return (0,external_wp_element_namespaceObject.createElement)(theme_support_check, {
- supportKeys: "post-thumbnails"
- }, (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, _extends({}, props, {
- supportKeys: "thumbnail"
- })));
- }
- /* harmony default export */ var post_featured_image_check = (PostFeaturedImageCheck);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const ALLOWED_MEDIA_TYPES = ['image']; // Used when labels from post type were not yet loaded or when they are not present.
- const DEFAULT_FEATURE_IMAGE_LABEL = (0,external_wp_i18n_namespaceObject.__)('Featured image');
- const DEFAULT_SET_FEATURE_IMAGE_LABEL = (0,external_wp_i18n_namespaceObject.__)('Set featured image');
- const DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = (0,external_wp_i18n_namespaceObject.__)('Remove image');
- const instructions = (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('To edit the featured image, you need permission to upload media.'));
- function getMediaDetails(media, postId) {
- var _media$media_details$, _media$media_details, _media$media_details$2, _media$media_details2;
- if (!media) {
- return {};
- }
- const defaultSize = (0,external_wp_hooks_namespaceObject.applyFilters)('editor.PostFeaturedImage.imageSize', 'large', media.id, postId);
- if (defaultSize in ((_media$media_details$ = media === null || media === void 0 ? void 0 : (_media$media_details = media.media_details) === null || _media$media_details === void 0 ? void 0 : _media$media_details.sizes) !== null && _media$media_details$ !== void 0 ? _media$media_details$ : {})) {
- return {
- mediaWidth: media.media_details.sizes[defaultSize].width,
- mediaHeight: media.media_details.sizes[defaultSize].height,
- mediaSourceUrl: media.media_details.sizes[defaultSize].source_url
- };
- } // Use fallbackSize when defaultSize is not available.
- const fallbackSize = (0,external_wp_hooks_namespaceObject.applyFilters)('editor.PostFeaturedImage.imageSize', 'thumbnail', media.id, postId);
- if (fallbackSize in ((_media$media_details$2 = media === null || media === void 0 ? void 0 : (_media$media_details2 = media.media_details) === null || _media$media_details2 === void 0 ? void 0 : _media$media_details2.sizes) !== null && _media$media_details$2 !== void 0 ? _media$media_details$2 : {})) {
- return {
- mediaWidth: media.media_details.sizes[fallbackSize].width,
- mediaHeight: media.media_details.sizes[fallbackSize].height,
- mediaSourceUrl: media.media_details.sizes[fallbackSize].source_url
- };
- } // Use full image size when fallbackSize and defaultSize are not available.
- return {
- mediaWidth: media.media_details.width,
- mediaHeight: media.media_details.height,
- mediaSourceUrl: media.source_url
- };
- }
- function PostFeaturedImage(_ref) {
- var _media$media_details$3, _media$media_details$4;
- let {
- currentPostId,
- featuredImageId,
- onUpdateImage,
- onRemoveImage,
- media,
- postType,
- noticeUI,
- noticeOperations
- } = _ref;
- const [isLoading, setIsLoading] = (0,external_wp_element_namespaceObject.useState)(false);
- const mediaUpload = (0,external_wp_data_namespaceObject.useSelect)(select => {
- return select(external_wp_blockEditor_namespaceObject.store).getSettings().mediaUpload;
- }, []);
- const postLabel = (0,external_lodash_namespaceObject.get)(postType, ['labels'], {});
- const {
- mediaWidth,
- mediaHeight,
- mediaSourceUrl
- } = getMediaDetails(media, currentPostId);
- function onDropFiles(filesList) {
- mediaUpload({
- allowedTypes: ['image'],
- filesList,
- onFileChange(_ref2) {
- let [image] = _ref2;
- if ((0,external_wp_blob_namespaceObject.isBlobURL)(image === null || image === void 0 ? void 0 : image.url)) {
- setIsLoading(true);
- return;
- }
- onUpdateImage(image);
- setIsLoading(false);
- },
- onError(message) {
- noticeOperations.removeAllNotices();
- noticeOperations.createErrorNotice(message);
- }
- });
- }
- return (0,external_wp_element_namespaceObject.createElement)(post_featured_image_check, null, noticeUI, (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-featured-image"
- }, media && (0,external_wp_element_namespaceObject.createElement)("div", {
- id: `editor-post-featured-image-${featuredImageId}-describedby`,
- className: "hidden"
- }, media.alt_text && (0,external_wp_i18n_namespaceObject.sprintf)( // Translators: %s: The selected image alt text.
- (0,external_wp_i18n_namespaceObject.__)('Current image: %s'), media.alt_text), !media.alt_text && (0,external_wp_i18n_namespaceObject.sprintf)( // Translators: %s: The selected image filename.
- (0,external_wp_i18n_namespaceObject.__)('The current image has no alternative text. The file name is: %s'), ((_media$media_details$3 = media.media_details.sizes) === null || _media$media_details$3 === void 0 ? void 0 : (_media$media_details$4 = _media$media_details$3.full) === null || _media$media_details$4 === void 0 ? void 0 : _media$media_details$4.file) || media.slug)), (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.MediaUploadCheck, {
- fallback: instructions
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.MediaUpload, {
- title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL,
- onSelect: onUpdateImage,
- unstableFeaturedImageFlow: true,
- allowedTypes: ALLOWED_MEDIA_TYPES,
- modalClass: "editor-post-featured-image__media-modal",
- render: _ref3 => {
- let {
- open
- } = _ref3;
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-featured-image__container"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- className: !featuredImageId ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview',
- onClick: open,
- "aria-label": !featuredImageId ? null : (0,external_wp_i18n_namespaceObject.__)('Edit or update the image'),
- "aria-describedby": !featuredImageId ? null : `editor-post-featured-image-${featuredImageId}-describedby`
- }, !!featuredImageId && media && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ResponsiveWrapper, {
- naturalWidth: mediaWidth,
- naturalHeight: mediaHeight,
- isInline: true
- }, (0,external_wp_element_namespaceObject.createElement)("img", {
- src: mediaSourceUrl,
- alt: ""
- })), isLoading && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Spinner, null), !featuredImageId && !isLoading && (postLabel.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.DropZone, {
- onFilesDrop: onDropFiles
- }));
- },
- value: featuredImageId
- })), !!featuredImageId && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.MediaUploadCheck, null, media && (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.MediaUpload, {
- title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL,
- onSelect: onUpdateImage,
- unstableFeaturedImageFlow: true,
- allowedTypes: ALLOWED_MEDIA_TYPES,
- modalClass: "editor-post-featured-image__media-modal",
- render: _ref4 => {
- let {
- open
- } = _ref4;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: open,
- variant: "secondary"
- }, (0,external_wp_i18n_namespaceObject.__)('Replace Image'));
- }
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: onRemoveImage,
- variant: "link",
- isDestructive: true
- }, postLabel.remove_featured_image || DEFAULT_REMOVE_FEATURE_IMAGE_LABEL))));
- }
- const applyWithSelect = (0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getMedia,
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- getCurrentPostId,
- getEditedPostAttribute
- } = select(store_store);
- const featuredImageId = getEditedPostAttribute('featured_media');
- return {
- media: featuredImageId ? getMedia(featuredImageId, {
- context: 'view'
- }) : null,
- currentPostId: getCurrentPostId(),
- postType: getPostType(getEditedPostAttribute('type')),
- featuredImageId
- };
- });
- const applyWithDispatch = (0,external_wp_data_namespaceObject.withDispatch)((dispatch, _ref5, _ref6) => {
- let {
- noticeOperations
- } = _ref5;
- let {
- select
- } = _ref6;
- const {
- editPost
- } = dispatch(store_store);
- return {
- onUpdateImage(image) {
- editPost({
- featured_media: image.id
- });
- },
- onDropImage(filesList) {
- select(external_wp_blockEditor_namespaceObject.store).getSettings().mediaUpload({
- allowedTypes: ['image'],
- filesList,
- onFileChange(_ref7) {
- let [image] = _ref7;
- editPost({
- featured_media: image.id
- });
- },
- onError(message) {
- noticeOperations.removeAllNotices();
- noticeOperations.createErrorNotice(message);
- }
- });
- },
- onRemoveImage() {
- editPost({
- featured_media: 0
- });
- }
- };
- });
- /* harmony default export */ var post_featured_image = ((0,external_wp_compose_namespaceObject.compose)(external_wp_components_namespaceObject.withNotices, applyWithSelect, applyWithDispatch, (0,external_wp_components_namespaceObject.withFilters)('editor.PostFeaturedImage'))(PostFeaturedImage));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/check.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostFormatCheck(_ref) {
- let {
- disablePostFormats,
- ...props
- } = _ref;
- return !disablePostFormats && (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, _extends({}, props, {
- supportKeys: "post-formats"
- }));
- }
- /* harmony default export */ var post_format_check = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const editorSettings = select(store_store).getEditorSettings();
- return {
- disablePostFormats: editorSettings.disablePostFormats
- };
- })(PostFormatCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- // All WP post formats, sorted alphabetically by translated name.
- const POST_FORMATS = [{
- id: 'aside',
- caption: (0,external_wp_i18n_namespaceObject.__)('Aside')
- }, {
- id: 'audio',
- caption: (0,external_wp_i18n_namespaceObject.__)('Audio')
- }, {
- id: 'chat',
- caption: (0,external_wp_i18n_namespaceObject.__)('Chat')
- }, {
- id: 'gallery',
- caption: (0,external_wp_i18n_namespaceObject.__)('Gallery')
- }, {
- id: 'image',
- caption: (0,external_wp_i18n_namespaceObject.__)('Image')
- }, {
- id: 'link',
- caption: (0,external_wp_i18n_namespaceObject.__)('Link')
- }, {
- id: 'quote',
- caption: (0,external_wp_i18n_namespaceObject.__)('Quote')
- }, {
- id: 'standard',
- caption: (0,external_wp_i18n_namespaceObject.__)('Standard')
- }, {
- id: 'status',
- caption: (0,external_wp_i18n_namespaceObject.__)('Status')
- }, {
- id: 'video',
- caption: (0,external_wp_i18n_namespaceObject.__)('Video')
- }].sort((a, b) => {
- const normalizedA = a.caption.toUpperCase();
- const normalizedB = b.caption.toUpperCase();
- if (normalizedA < normalizedB) {
- return -1;
- }
- if (normalizedA > normalizedB) {
- return 1;
- }
- return 0;
- });
- function PostFormat() {
- const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(PostFormat);
- const postFormatSelectorId = `post-format-selector-${instanceId}`;
- const {
- postFormat,
- suggestedFormat,
- supportedFormats
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEditedPostAttribute,
- getSuggestedPostFormat
- } = select(store_store);
- const _postFormat = getEditedPostAttribute('format');
- const themeSupports = select(external_wp_coreData_namespaceObject.store).getThemeSupports();
- return {
- postFormat: _postFormat !== null && _postFormat !== void 0 ? _postFormat : 'standard',
- suggestedFormat: getSuggestedPostFormat(),
- supportedFormats: themeSupports.formats
- };
- }, []);
- const formats = POST_FORMATS.filter(format => {
- // Ensure current format is always in the set.
- // The current format may not be a format supported by the theme.
- return (0,external_lodash_namespaceObject.includes)(supportedFormats, format.id) || postFormat === format.id;
- });
- const suggestion = (0,external_lodash_namespaceObject.find)(formats, format => format.id === suggestedFormat);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const onUpdatePostFormat = format => editPost({
- format
- });
- return (0,external_wp_element_namespaceObject.createElement)(post_format_check, null, (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-format"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SelectControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Post Format'),
- value: postFormat,
- onChange: format => onUpdatePostFormat(format),
- id: postFormatSelectorId,
- options: formats.map(format => ({
- label: format.caption,
- value: format.id
- }))
- }), suggestion && suggestion.id !== postFormat && (0,external_wp_element_namespaceObject.createElement)("p", {
- className: "editor-post-format__suggestion"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "link",
- onClick: () => onUpdatePostFormat(suggestion.id)
- }, (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: post format */
- (0,external_wp_i18n_namespaceObject.__)('Apply suggested format: %s'), suggestion.caption)))));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/backup.js
- /**
- * WordPress dependencies
- */
- const backup = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M5.5 12h1.75l-2.5 3-2.5-3H4a8 8 0 113.134 6.35l.907-1.194A6.5 6.5 0 105.5 12zm9.53 1.97l-2.28-2.28V8.5a.75.75 0 00-1.5 0V12a.747.747 0 00.218.529l1.282-.84-1.28.842 2.5 2.5a.75.75 0 101.06-1.061z"
- }));
- /* harmony default export */ var library_backup = (backup);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-last-revision/check.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostLastRevisionCheck(_ref) {
- let {
- lastRevisionId,
- revisionsCount,
- children
- } = _ref;
- if (!lastRevisionId || revisionsCount < 2) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, {
- supportKeys: "revisions"
- }, children);
- }
- /* harmony default export */ var post_last_revision_check = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getCurrentPostLastRevisionId,
- getCurrentPostRevisionsCount
- } = select(store_store);
- return {
- lastRevisionId: getCurrentPostLastRevisionId(),
- revisionsCount: getCurrentPostRevisionsCount()
- };
- })(PostLastRevisionCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-last-revision/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function LastRevision(_ref) {
- let {
- lastRevisionId,
- revisionsCount
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)(post_last_revision_check, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- href: (0,external_wp_url_namespaceObject.addQueryArgs)('revision.php', {
- revision: lastRevisionId,
- gutenberg: true
- }),
- className: "editor-post-last-revision__title",
- icon: library_backup
- }, (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %d: number of revisions */
- (0,external_wp_i18n_namespaceObject._n)('%d Revision', '%d Revisions', revisionsCount), revisionsCount)));
- }
- /* harmony default export */ var post_last_revision = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getCurrentPostLastRevisionId,
- getCurrentPostRevisionsCount
- } = select(store_store);
- return {
- lastRevisionId: getCurrentPostLastRevisionId(),
- revisionsCount: getCurrentPostRevisionsCount()
- };
- })(LastRevision));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-locked-modal/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostLockedModal() {
- const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(PostLockedModal);
- const hookName = 'core/editor/post-locked-modal-' + instanceId;
- const {
- autosave,
- updatePostLock
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- isLocked,
- isTakeover,
- user,
- postId,
- postLockUtils,
- activePostLock,
- postType,
- previewLink
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- isPostLocked,
- isPostLockTakeover,
- getPostLockUser,
- getCurrentPostId,
- getActivePostLock,
- getEditedPostAttribute,
- getEditedPostPreviewLink,
- getEditorSettings
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- return {
- isLocked: isPostLocked(),
- isTakeover: isPostLockTakeover(),
- user: getPostLockUser(),
- postId: getCurrentPostId(),
- postLockUtils: getEditorSettings().postLockUtils,
- activePostLock: getActivePostLock(),
- postType: getPostType(getEditedPostAttribute('type')),
- previewLink: getEditedPostPreviewLink()
- };
- }, []);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- /**
- * Keep the lock refreshed.
- *
- * When the user does not send a heartbeat in a heartbeat-tick
- * the user is no longer editing and another user can start editing.
- *
- * @param {Object} data Data to send in the heartbeat request.
- */
- function sendPostLock(data) {
- if (isLocked) {
- return;
- }
- data['wp-refresh-post-lock'] = {
- lock: activePostLock,
- post_id: postId
- };
- }
- /**
- * Refresh post locks: update the lock string or show the dialog if somebody has taken over editing.
- *
- * @param {Object} data Data received in the heartbeat request
- */
- function receivePostLock(data) {
- if (!data['wp-refresh-post-lock']) {
- return;
- }
- const received = data['wp-refresh-post-lock'];
- if (received.lock_error) {
- // Auto save and display the takeover modal.
- autosave();
- updatePostLock({
- isLocked: true,
- isTakeover: true,
- user: {
- name: received.lock_error.name,
- avatar: received.lock_error.avatar_src_2x
- }
- });
- } else if (received.new_lock) {
- updatePostLock({
- isLocked: false,
- activePostLock: received.new_lock
- });
- }
- }
- /**
- * Unlock the post before the window is exited.
- */
- function releasePostLock() {
- if (isLocked || !activePostLock) {
- return;
- }
- const data = new window.FormData();
- data.append('action', 'wp-remove-post-lock');
- data.append('_wpnonce', postLockUtils.unlockNonce);
- data.append('post_ID', postId);
- data.append('active_post_lock', activePostLock);
- if (window.navigator.sendBeacon) {
- window.navigator.sendBeacon(postLockUtils.ajaxUrl, data);
- } else {
- const xhr = new window.XMLHttpRequest();
- xhr.open('POST', postLockUtils.ajaxUrl, false);
- xhr.send(data);
- }
- } // Details on these events on the Heartbeat API docs
- // https://developer.wordpress.org/plugins/javascript/heartbeat-api/
- (0,external_wp_hooks_namespaceObject.addAction)('heartbeat.send', hookName, sendPostLock);
- (0,external_wp_hooks_namespaceObject.addAction)('heartbeat.tick', hookName, receivePostLock);
- window.addEventListener('beforeunload', releasePostLock);
- return () => {
- (0,external_wp_hooks_namespaceObject.removeAction)('heartbeat.send', hookName);
- (0,external_wp_hooks_namespaceObject.removeAction)('heartbeat.tick', hookName);
- window.removeEventListener('beforeunload', releasePostLock);
- };
- }, []);
- if (!isLocked) {
- return null;
- }
- const userDisplayName = user.name;
- const userAvatar = user.avatar;
- const unlockUrl = (0,external_wp_url_namespaceObject.addQueryArgs)('post.php', {
- 'get-post-lock': '1',
- lockKey: true,
- post: postId,
- action: 'edit',
- _wpnonce: postLockUtils.nonce
- });
- const allPostsUrl = (0,external_wp_url_namespaceObject.addQueryArgs)('edit.php', {
- post_type: (0,external_lodash_namespaceObject.get)(postType, ['slug'])
- });
- const allPostsLabel = (0,external_wp_i18n_namespaceObject.__)('Exit editor');
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Modal, {
- title: isTakeover ? (0,external_wp_i18n_namespaceObject.__)('Someone else has taken over this post') : (0,external_wp_i18n_namespaceObject.__)('This post is already being edited'),
- focusOnMount: true,
- shouldCloseOnClickOutside: false,
- shouldCloseOnEsc: false,
- isDismissible: false,
- className: "editor-post-locked-modal"
- }, !!userAvatar && (0,external_wp_element_namespaceObject.createElement)("img", {
- src: userAvatar,
- alt: (0,external_wp_i18n_namespaceObject.__)('Avatar'),
- className: "editor-post-locked-modal__avatar",
- width: 64,
- height: 64
- }), (0,external_wp_element_namespaceObject.createElement)("div", null, !!isTakeover && (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_element_namespaceObject.createInterpolateElement)(userDisplayName ? (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: user's display name */
- (0,external_wp_i18n_namespaceObject.__)('<strong>%s</strong> now has editing control of this post (<PreviewLink />). Don’t worry, your changes up to this moment have been saved.'), userDisplayName) : (0,external_wp_i18n_namespaceObject.__)('Another user now has editing control of this post (<PreviewLink />). Don’t worry, your changes up to this moment have been saved.'), {
- strong: (0,external_wp_element_namespaceObject.createElement)("strong", null),
- PreviewLink: (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
- href: previewLink
- }, (0,external_wp_i18n_namespaceObject.__)('preview'))
- })), !isTakeover && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_element_namespaceObject.createInterpolateElement)(userDisplayName ? (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: user's display name */
- (0,external_wp_i18n_namespaceObject.__)('<strong>%s</strong> is currently working on this post (<PreviewLink />), which means you cannot make changes, unless you take over.'), userDisplayName) : (0,external_wp_i18n_namespaceObject.__)('Another user is currently working on this post (<PreviewLink />), which means you cannot make changes, unless you take over.'), {
- strong: (0,external_wp_element_namespaceObject.createElement)("strong", null),
- PreviewLink: (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
- href: previewLink
- }, (0,external_wp_i18n_namespaceObject.__)('preview'))
- })), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('If you take over, the other user will lose editing control to the post, but their changes will be saved.'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Flex, {
- className: "editor-post-locked-modal__buttons",
- justify: "flex-end",
- expanded: false
- }, !isTakeover && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "tertiary",
- href: unlockUrl
- }, (0,external_wp_i18n_namespaceObject.__)('Take over'))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FlexItem, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "primary",
- href: allPostsUrl
- }, allPostsLabel)))));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pending-status/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostPendingStatusCheck(_ref) {
- let {
- hasPublishAction,
- isPublished,
- children
- } = _ref;
- if (isPublished || !hasPublishAction) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_pending_status_check = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- isCurrentPostPublished,
- getCurrentPostType,
- getCurrentPost
- } = select(store_store);
- return {
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- isPublished: isCurrentPostPublished(),
- postType: getCurrentPostType()
- };
- }))(PostPendingStatusCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pending-status/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostPendingStatus(_ref) {
- let {
- status,
- onUpdateStatus
- } = _ref;
- const togglePendingStatus = () => {
- const updatedStatus = status === 'pending' ? 'draft' : 'pending';
- onUpdateStatus(updatedStatus);
- };
- return (0,external_wp_element_namespaceObject.createElement)(post_pending_status_check, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Pending review'),
- checked: status === 'pending',
- onChange: togglePendingStatus
- }));
- }
- /* harmony default export */ var post_pending_status = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_data_namespaceObject.withSelect)(select => ({
- status: select(store_store).getEditedPostAttribute('status')
- })), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- onUpdateStatus(status) {
- dispatch(store_store).editPost({
- status
- });
- }
- })))(PostPendingStatus));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pingbacks/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostPingbacks(_ref) {
- let {
- pingStatus = 'open',
- ...props
- } = _ref;
- const onTogglePingback = () => props.editPost({
- ping_status: pingStatus === 'open' ? 'closed' : 'open'
- });
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Allow pingbacks & trackbacks'),
- checked: pingStatus === 'open',
- onChange: onTogglePingback
- });
- }
- /* harmony default export */ var post_pingbacks = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- pingStatus: select(store_store).getEditedPostAttribute('ping_status')
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- editPost: dispatch(store_store).editPost
- }))])(PostPingbacks));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-preview-button/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function writeInterstitialMessage(targetDocument) {
- let markup = (0,external_wp_element_namespaceObject.renderToString)((0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-preview-button__interstitial-message"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 96 96"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Path, {
- className: "outer",
- d: "M48 12c19.9 0 36 16.1 36 36S67.9 84 48 84 12 67.9 12 48s16.1-36 36-36",
- fill: "none"
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Path, {
- className: "inner",
- d: "M69.5 46.4c0-3.9-1.4-6.7-2.6-8.8-1.6-2.6-3.1-4.9-3.1-7.5 0-2.9 2.2-5.7 5.4-5.7h.4C63.9 19.2 56.4 16 48 16c-11.2 0-21 5.7-26.7 14.4h2.1c3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3L40 67.5l7-20.9L42 33c-1.7-.1-3.3-.3-3.3-.3-1.7-.1-1.5-2.7.2-2.6 0 0 5.3.4 8.4.4 3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3l11.5 34.3 3.3-10.4c1.6-4.5 2.4-7.8 2.4-10.5zM16.1 48c0 12.6 7.3 23.5 18 28.7L18.8 35c-1.7 4-2.7 8.4-2.7 13zm32.5 2.8L39 78.6c2.9.8 5.9 1.3 9 1.3 3.7 0 7.3-.6 10.6-1.8-.1-.1-.2-.3-.2-.4l-9.8-26.9zM76.2 36c0 3.2-.6 6.9-2.4 11.4L64 75.6c9.5-5.5 15.9-15.8 15.9-27.6 0-5.5-1.4-10.8-3.9-15.3.1 1 .2 2.1.2 3.3z",
- fill: "none"
- })), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('Generating preview…'))));
- markup += `
- <style>
- body {
- margin: 0;
- }
- .editor-post-preview-button__interstitial-message {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100vh;
- width: 100vw;
- }
- @-webkit-keyframes paint {
- 0% {
- stroke-dashoffset: 0;
- }
- }
- @-moz-keyframes paint {
- 0% {
- stroke-dashoffset: 0;
- }
- }
- @-o-keyframes paint {
- 0% {
- stroke-dashoffset: 0;
- }
- }
- @keyframes paint {
- 0% {
- stroke-dashoffset: 0;
- }
- }
- .editor-post-preview-button__interstitial-message svg {
- width: 192px;
- height: 192px;
- stroke: #555d66;
- stroke-width: 0.75;
- }
- .editor-post-preview-button__interstitial-message svg .outer,
- .editor-post-preview-button__interstitial-message svg .inner {
- stroke-dasharray: 280;
- stroke-dashoffset: 280;
- -webkit-animation: paint 1.5s ease infinite alternate;
- -moz-animation: paint 1.5s ease infinite alternate;
- -o-animation: paint 1.5s ease infinite alternate;
- animation: paint 1.5s ease infinite alternate;
- }
- p {
- text-align: center;
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
- }
- </style>
- `;
- /**
- * Filters the interstitial message shown when generating previews.
- *
- * @param {string} markup The preview interstitial markup.
- */
- markup = (0,external_wp_hooks_namespaceObject.applyFilters)('editor.PostPreview.interstitialMarkup', markup);
- targetDocument.write(markup);
- targetDocument.title = (0,external_wp_i18n_namespaceObject.__)('Generating preview…');
- targetDocument.close();
- }
- class PostPreviewButton extends external_wp_element_namespaceObject.Component {
- constructor() {
- super(...arguments);
- this.buttonRef = (0,external_wp_element_namespaceObject.createRef)();
- this.openPreviewWindow = this.openPreviewWindow.bind(this);
- }
- componentDidUpdate(prevProps) {
- const {
- previewLink
- } = this.props; // This relies on the window being responsible to unset itself when
- // navigation occurs or a new preview window is opened, to avoid
- // unintentional forceful redirects.
- if (previewLink && !prevProps.previewLink) {
- this.setPreviewWindowLink(previewLink);
- }
- }
- /**
- * Sets the preview window's location to the given URL, if a preview window
- * exists and is not closed.
- *
- * @param {string} url URL to assign as preview window location.
- */
- setPreviewWindowLink(url) {
- const {
- previewWindow
- } = this;
- if (previewWindow && !previewWindow.closed) {
- previewWindow.location = url;
- if (this.buttonRef.current) {
- this.buttonRef.current.focus();
- }
- }
- }
- getWindowTarget() {
- const {
- postId
- } = this.props;
- return `wp-preview-${postId}`;
- }
- openPreviewWindow(event) {
- // Our Preview button has its 'href' and 'target' set correctly for a11y
- // purposes. Unfortunately, though, we can't rely on the default 'click'
- // handler since sometimes it incorrectly opens a new tab instead of reusing
- // the existing one.
- // https://github.com/WordPress/gutenberg/pull/8330
- event.preventDefault(); // Open up a Preview tab if needed. This is where we'll show the preview.
- if (!this.previewWindow || this.previewWindow.closed) {
- this.previewWindow = window.open('', this.getWindowTarget());
- } // Focus the Preview tab. This might not do anything, depending on the browser's
- // and user's preferences.
- // https://html.spec.whatwg.org/multipage/interaction.html#dom-window-focus
- this.previewWindow.focus();
- if ( // If we don't need to autosave the post before previewing, then we simply
- // load the Preview URL in the Preview tab.
- !this.props.isAutosaveable || // Do not save or overwrite the post, if the post is already locked.
- this.props.isPostLocked) {
- this.setPreviewWindowLink(event.target.href);
- return;
- } // Request an autosave. This happens asynchronously and causes the component
- // to update when finished.
- if (this.props.isDraft) {
- this.props.savePost({
- isPreview: true
- });
- } else {
- this.props.autosave({
- isPreview: true
- });
- } // Display a 'Generating preview' message in the Preview tab while we wait for the
- // autosave to finish.
- writeInterstitialMessage(this.previewWindow.document);
- }
- render() {
- const {
- previewLink,
- currentPostLink,
- isSaveable,
- role
- } = this.props; // Link to the `?preview=true` URL if we have it, since this lets us see
- // changes that were autosaved since the post was last published. Otherwise,
- // just link to the post's URL.
- const href = previewLink || currentPostLink;
- const classNames = classnames_default()({
- 'editor-post-preview': !this.props.className
- }, this.props.className);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: !this.props.className ? 'tertiary' : undefined,
- className: classNames,
- href: href,
- target: this.getWindowTarget(),
- disabled: !isSaveable,
- onClick: this.openPreviewWindow,
- ref: this.buttonRef,
- role: role
- }, this.props.textContent ? this.props.textContent : (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_i18n_namespaceObject._x)('Preview', 'imperative verb'), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
- as: "span"
- },
- /* translators: accessibility text */
- (0,external_wp_i18n_namespaceObject.__)('(opens in a new tab)'))));
- }
- }
- /* harmony default export */ var post_preview_button = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)((select, _ref) => {
- let {
- forcePreviewLink,
- forceIsAutosaveable
- } = _ref;
- const {
- getCurrentPostId,
- getCurrentPostAttribute,
- getEditedPostAttribute,
- isEditedPostSaveable,
- isEditedPostAutosaveable,
- getEditedPostPreviewLink,
- isPostLocked
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- const previewLink = getEditedPostPreviewLink();
- const postType = getPostType(getEditedPostAttribute('type'));
- return {
- postId: getCurrentPostId(),
- currentPostLink: getCurrentPostAttribute('link'),
- previewLink: forcePreviewLink !== undefined ? forcePreviewLink : previewLink,
- isSaveable: isEditedPostSaveable(),
- isAutosaveable: forceIsAutosaveable || isEditedPostAutosaveable(),
- isViewable: (0,external_lodash_namespaceObject.get)(postType, ['viewable'], false),
- isDraft: ['draft', 'auto-draft'].indexOf(getEditedPostAttribute('status')) !== -1,
- isPostLocked: isPostLocked()
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => ({
- autosave: dispatch(store_store).autosave,
- savePost: dispatch(store_store).savePost
- })), (0,external_wp_compose_namespaceObject.ifCondition)(_ref2 => {
- let {
- isViewable
- } = _ref2;
- return isViewable;
- })])(PostPreviewButton));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-button/label.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PublishButtonLabel(_ref) {
- let {
- isPublished,
- isBeingScheduled,
- isSaving,
- isPublishing,
- hasPublishAction,
- isAutosaving,
- hasNonPostEntityChanges
- } = _ref;
- if (isPublishing) {
- /* translators: button label text should, if possible, be under 16 characters. */
- return (0,external_wp_i18n_namespaceObject.__)('Publishing…');
- } else if (isPublished && isSaving && !isAutosaving) {
- /* translators: button label text should, if possible, be under 16 characters. */
- return (0,external_wp_i18n_namespaceObject.__)('Updating…');
- } else if (isBeingScheduled && isSaving && !isAutosaving) {
- /* translators: button label text should, if possible, be under 16 characters. */
- return (0,external_wp_i18n_namespaceObject.__)('Scheduling…');
- }
- if (!hasPublishAction) {
- return hasNonPostEntityChanges ? (0,external_wp_i18n_namespaceObject.__)('Submit for Review…') : (0,external_wp_i18n_namespaceObject.__)('Submit for Review');
- } else if (isPublished) {
- return hasNonPostEntityChanges ? (0,external_wp_i18n_namespaceObject.__)('Update…') : (0,external_wp_i18n_namespaceObject.__)('Update');
- } else if (isBeingScheduled) {
- return hasNonPostEntityChanges ? (0,external_wp_i18n_namespaceObject.__)('Schedule…') : (0,external_wp_i18n_namespaceObject.__)('Schedule');
- }
- return (0,external_wp_i18n_namespaceObject.__)('Publish');
- }
- /* harmony default export */ var label = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)((select, _ref2) => {
- let {
- forceIsSaving
- } = _ref2;
- const {
- isCurrentPostPublished,
- isEditedPostBeingScheduled,
- isSavingPost,
- isPublishingPost,
- getCurrentPost,
- getCurrentPostType,
- isAutosavingPost
- } = select(store_store);
- return {
- isPublished: isCurrentPostPublished(),
- isBeingScheduled: isEditedPostBeingScheduled(),
- isSaving: forceIsSaving || isSavingPost(),
- isPublishing: isPublishingPost(),
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- postType: getCurrentPostType(),
- isAutosaving: isAutosavingPost()
- };
- })])(PublishButtonLabel));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-button/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const noop = () => {};
- class PostPublishButton extends external_wp_element_namespaceObject.Component {
- constructor(props) {
- super(props);
- this.buttonNode = (0,external_wp_element_namespaceObject.createRef)();
- this.createOnClick = this.createOnClick.bind(this);
- this.closeEntitiesSavedStates = this.closeEntitiesSavedStates.bind(this);
- this.state = {
- entitiesSavedStatesCallback: false
- };
- }
- componentDidMount() {
- if (this.props.focusOnMount) {
- this.buttonNode.current.focus();
- }
- }
- createOnClick(callback) {
- var _this = this;
- return function () {
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
- const {
- hasNonPostEntityChanges,
- setEntitiesSavedStatesCallback
- } = _this.props; // If a post with non-post entities is published, but the user
- // elects to not save changes to the non-post entities, those
- // entities will still be dirty when the Publish button is clicked.
- // We also need to check that the `setEntitiesSavedStatesCallback`
- // prop was passed. See https://github.com/WordPress/gutenberg/pull/37383
- if (hasNonPostEntityChanges && setEntitiesSavedStatesCallback) {
- // The modal for multiple entity saving will open,
- // hold the callback for saving/publishing the post
- // so that we can call it if the post entity is checked.
- _this.setState({
- entitiesSavedStatesCallback: () => callback(...args)
- }); // Open the save panel by setting its callback.
- // To set a function on the useState hook, we must set it
- // with another function (() => myFunction). Passing the
- // function on its own will cause an error when called.
- setEntitiesSavedStatesCallback(() => _this.closeEntitiesSavedStates);
- return noop;
- }
- return callback(...args);
- };
- }
- closeEntitiesSavedStates(savedEntities) {
- const {
- postType,
- postId
- } = this.props;
- const {
- entitiesSavedStatesCallback
- } = this.state;
- this.setState({
- entitiesSavedStatesCallback: false
- }, () => {
- if (savedEntities && (0,external_lodash_namespaceObject.some)(savedEntities, elt => elt.kind === 'postType' && elt.name === postType && elt.key === postId)) {
- // The post entity was checked, call the held callback from `createOnClick`.
- entitiesSavedStatesCallback();
- }
- });
- }
- render() {
- const {
- forceIsDirty,
- forceIsSaving,
- hasPublishAction,
- isBeingScheduled,
- isOpen,
- isPostSavingLocked,
- isPublishable,
- isPublished,
- isSaveable,
- isSaving,
- isAutoSaving,
- isToggle,
- onSave,
- onStatusChange,
- onSubmit = noop,
- onToggle,
- visibility,
- hasNonPostEntityChanges,
- isSavingNonPostEntityChanges
- } = this.props;
- const isButtonDisabled = (isSaving || forceIsSaving || !isSaveable || isPostSavingLocked || !isPublishable && !forceIsDirty) && (!hasNonPostEntityChanges || isSavingNonPostEntityChanges);
- const isToggleDisabled = (isPublished || isSaving || forceIsSaving || !isSaveable || !isPublishable && !forceIsDirty) && (!hasNonPostEntityChanges || isSavingNonPostEntityChanges);
- let publishStatus;
- if (!hasPublishAction) {
- publishStatus = 'pending';
- } else if (visibility === 'private') {
- publishStatus = 'private';
- } else if (isBeingScheduled) {
- publishStatus = 'future';
- } else {
- publishStatus = 'publish';
- }
- const onClickButton = () => {
- if (isButtonDisabled) {
- return;
- }
- onSubmit();
- onStatusChange(publishStatus);
- onSave();
- };
- const onClickToggle = () => {
- if (isToggleDisabled) {
- return;
- }
- onToggle();
- };
- const buttonProps = {
- 'aria-disabled': isButtonDisabled,
- className: 'editor-post-publish-button',
- isBusy: !isAutoSaving && isSaving && isPublished,
- variant: 'primary',
- onClick: this.createOnClick(onClickButton)
- };
- const toggleProps = {
- 'aria-disabled': isToggleDisabled,
- 'aria-expanded': isOpen,
- className: 'editor-post-publish-panel__toggle',
- isBusy: isSaving && isPublished,
- variant: 'primary',
- onClick: this.createOnClick(onClickToggle)
- };
- const toggleChildren = isBeingScheduled ? (0,external_wp_i18n_namespaceObject.__)('Schedule…') : (0,external_wp_i18n_namespaceObject.__)('Publish');
- const buttonChildren = (0,external_wp_element_namespaceObject.createElement)(label, {
- forceIsSaving: forceIsSaving,
- hasNonPostEntityChanges: hasNonPostEntityChanges
- });
- const componentProps = isToggle ? toggleProps : buttonProps;
- const componentChildren = isToggle ? toggleChildren : buttonChildren;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, _extends({
- ref: this.buttonNode
- }, componentProps, {
- className: classnames_default()(componentProps.className, 'editor-post-publish-button__button', {
- 'has-changes-dot': hasNonPostEntityChanges
- })
- }), componentChildren));
- }
- }
- /* harmony default export */ var post_publish_button = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- isSavingPost,
- isAutosavingPost,
- isEditedPostBeingScheduled,
- getEditedPostVisibility,
- isCurrentPostPublished,
- isEditedPostSaveable,
- isEditedPostPublishable,
- isPostSavingLocked,
- getCurrentPost,
- getCurrentPostType,
- getCurrentPostId,
- hasNonPostEntityChanges,
- isSavingNonPostEntityChanges
- } = select(store_store);
- const _isAutoSaving = isAutosavingPost();
- return {
- isSaving: isSavingPost() || _isAutoSaving,
- isAutoSaving: _isAutoSaving,
- isBeingScheduled: isEditedPostBeingScheduled(),
- visibility: getEditedPostVisibility(),
- isSaveable: isEditedPostSaveable(),
- isPostSavingLocked: isPostSavingLocked(),
- isPublishable: isEditedPostPublishable(),
- isPublished: isCurrentPostPublished(),
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- postType: getCurrentPostType(),
- postId: getCurrentPostId(),
- hasNonPostEntityChanges: hasNonPostEntityChanges(),
- isSavingNonPostEntityChanges: isSavingNonPostEntityChanges()
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => {
- const {
- editPost,
- savePost
- } = dispatch(store_store);
- return {
- onStatusChange: status => editPost({
- status
- }, {
- undoIgnore: true
- }),
- onSave: savePost
- };
- })])(PostPublishButton));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/close-small.js
- /**
- * WordPress dependencies
- */
- const closeSmall = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M12 13.06l3.712 3.713 1.061-1.06L13.061 12l3.712-3.712-1.06-1.06L12 10.938 8.288 7.227l-1.061 1.06L10.939 12l-3.712 3.712 1.06 1.061L12 13.061z"
- }));
- /* harmony default export */ var close_small = (closeSmall);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/wordpress.js
- /**
- * WordPress dependencies
- */
- const wordpress = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "-2 -2 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M20 10c0-5.51-4.49-10-10-10C4.48 0 0 4.49 0 10c0 5.52 4.48 10 10 10 5.51 0 10-4.48 10-10zM7.78 15.37L4.37 6.22c.55-.02 1.17-.08 1.17-.08.5-.06.44-1.13-.06-1.11 0 0-1.45.11-2.37.11-.18 0-.37 0-.58-.01C4.12 2.69 6.87 1.11 10 1.11c2.33 0 4.45.87 6.05 2.34-.68-.11-1.65.39-1.65 1.58 0 .74.45 1.36.9 2.1.35.61.55 1.36.55 2.46 0 1.49-1.4 5-1.4 5l-3.03-8.37c.54-.02.82-.17.82-.17.5-.05.44-1.25-.06-1.22 0 0-1.44.12-2.38.12-.87 0-2.33-.12-2.33-.12-.5-.03-.56 1.2-.06 1.22l.92.08 1.26 3.41zM17.41 10c.24-.64.74-1.87.43-4.25.7 1.29 1.05 2.71 1.05 4.25 0 3.29-1.73 6.24-4.4 7.78.97-2.59 1.94-5.2 2.92-7.78zM6.1 18.09C3.12 16.65 1.11 13.53 1.11 10c0-1.3.23-2.48.72-3.59C3.25 10.3 4.67 14.2 6.1 18.09zm4.03-6.63l2.58 6.98c-.86.29-1.76.45-2.71.45-.79 0-1.57-.11-2.29-.33.81-2.38 1.62-4.74 2.42-7.1z"
- }));
- /* harmony default export */ var library_wordpress = (wordpress);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/utils.js
- /**
- * WordPress dependencies
- */
- const visibilityOptions = {
- public: {
- label: (0,external_wp_i18n_namespaceObject.__)('Public'),
- info: (0,external_wp_i18n_namespaceObject.__)('Visible to everyone.')
- },
- private: {
- label: (0,external_wp_i18n_namespaceObject.__)('Private'),
- info: (0,external_wp_i18n_namespaceObject.__)('Only visible to site admins and editors.')
- },
- password: {
- label: (0,external_wp_i18n_namespaceObject.__)('Password protected'),
- info: (0,external_wp_i18n_namespaceObject.__)('Only those with the password can view this post.')
- }
- };
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostVisibility(_ref) {
- let {
- onClose
- } = _ref;
- const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(PostVisibility);
- const {
- status,
- visibility,
- password
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- status: select(store_store).getEditedPostAttribute('status'),
- visibility: select(store_store).getEditedPostVisibility(),
- password: select(store_store).getEditedPostAttribute('password')
- }));
- const {
- editPost,
- savePost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const [hasPassword, setHasPassword] = (0,external_wp_element_namespaceObject.useState)(!!password);
- const [showPrivateConfirmDialog, setShowPrivateConfirmDialog] = (0,external_wp_element_namespaceObject.useState)(false);
- const setPublic = () => {
- editPost({
- status: visibility === 'private' ? 'draft' : status,
- password: ''
- });
- setHasPassword(false);
- };
- const setPrivate = () => {
- setShowPrivateConfirmDialog(true);
- };
- const confirmPrivate = () => {
- editPost({
- status: 'private',
- password: ''
- });
- setHasPassword(false);
- setShowPrivateConfirmDialog(false);
- savePost();
- };
- const handleDialogCancel = () => {
- setShowPrivateConfirmDialog(false);
- };
- const setPasswordProtected = () => {
- editPost({
- status: visibility === 'private' ? 'draft' : status,
- password: password || ''
- });
- setHasPassword(true);
- };
- const updatePassword = event => {
- editPost({
- password: event.target.value
- });
- };
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-visibility"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalInspectorPopoverHeader, {
- title: (0,external_wp_i18n_namespaceObject.__)('Visibility'),
- help: (0,external_wp_i18n_namespaceObject.__)('Control how this post is viewed.'),
- onClose: onClose
- }), (0,external_wp_element_namespaceObject.createElement)("fieldset", {
- className: "editor-post-visibility__fieldset"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
- as: "legend"
- }, (0,external_wp_i18n_namespaceObject.__)('Visibility')), (0,external_wp_element_namespaceObject.createElement)(PostVisibilityChoice, {
- instanceId: instanceId,
- value: "public",
- label: visibilityOptions["public"].label,
- info: visibilityOptions["public"].info,
- checked: visibility === 'public' && !hasPassword,
- onChange: setPublic
- }), (0,external_wp_element_namespaceObject.createElement)(PostVisibilityChoice, {
- instanceId: instanceId,
- value: "private",
- label: visibilityOptions["private"].label,
- info: visibilityOptions["private"].info,
- checked: visibility === 'private',
- onChange: setPrivate
- }), (0,external_wp_element_namespaceObject.createElement)(PostVisibilityChoice, {
- instanceId: instanceId,
- value: "password",
- label: visibilityOptions.password.label,
- info: visibilityOptions.password.info,
- checked: hasPassword,
- onChange: setPasswordProtected
- }), hasPassword && (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-visibility__password"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
- as: "label",
- htmlFor: `editor-post-visibility__password-input-${instanceId}`
- }, (0,external_wp_i18n_namespaceObject.__)('Create password')), (0,external_wp_element_namespaceObject.createElement)("input", {
- className: "editor-post-visibility__password-input",
- id: `editor-post-visibility__password-input-${instanceId}`,
- type: "text",
- onChange: updatePassword,
- value: password,
- placeholder: (0,external_wp_i18n_namespaceObject.__)('Use a secure password')
- }))), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
- isOpen: showPrivateConfirmDialog,
- onConfirm: confirmPrivate,
- onCancel: handleDialogCancel
- }, (0,external_wp_i18n_namespaceObject.__)('Would you like to privately publish this post now?')));
- }
- function PostVisibilityChoice(_ref2) {
- let {
- instanceId,
- value,
- label,
- info,
- ...props
- } = _ref2;
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-visibility__choice"
- }, (0,external_wp_element_namespaceObject.createElement)("input", _extends({
- type: "radio",
- name: `editor-post-visibility__setting-${instanceId}`,
- value: value,
- id: `editor-post-${value}-${instanceId}`,
- "aria-describedby": `editor-post-${value}-${instanceId}-description`,
- className: "editor-post-visibility__radio"
- }, props)), (0,external_wp_element_namespaceObject.createElement)("label", {
- htmlFor: `editor-post-${value}-${instanceId}`,
- className: "editor-post-visibility__label"
- }, label), (0,external_wp_element_namespaceObject.createElement)("p", {
- id: `editor-post-${value}-${instanceId}-description`,
- className: "editor-post-visibility__info"
- }, info));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/label.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostVisibilityLabel() {
- return usePostVisibilityLabel();
- }
- function usePostVisibilityLabel() {
- var _visibilityOptions$vi;
- const visibility = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getEditedPostVisibility());
- return (_visibilityOptions$vi = visibilityOptions[visibility]) === null || _visibilityOptions$vi === void 0 ? void 0 : _visibilityOptions$vi.label;
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function getDayOfTheMonth() {
- let date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
- let firstDay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
- const d = new Date(date);
- return new Date(d.getFullYear(), d.getMonth() + (firstDay ? 0 : 1), firstDay ? 1 : 0).toISOString();
- }
- function PostSchedule(_ref) {
- let {
- onClose
- } = _ref;
- const {
- postDate,
- postType
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- postDate: select(store_store).getEditedPostAttribute('date'),
- postType: select(store_store).getCurrentPostType()
- }), []);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const onUpdateDate = date => editPost({
- date
- });
- const [previewedMonth, setPreviewedMonth] = (0,external_wp_element_namespaceObject.useState)(getDayOfTheMonth(postDate)); // Pick up published and schduled site posts.
- const eventsByPostType = (0,external_wp_data_namespaceObject.useSelect)(select => select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', postType, {
- status: 'publish,future',
- after: getDayOfTheMonth(previewedMonth),
- before: getDayOfTheMonth(previewedMonth, false),
- exclude: [select(store_store).getCurrentPostId()]
- }), [previewedMonth, postType]);
- const events = (0,external_wp_element_namespaceObject.useMemo)(() => (eventsByPostType || []).map(_ref2 => {
- let {
- title,
- type,
- date: eventDate
- } = _ref2;
- return {
- title: title === null || title === void 0 ? void 0 : title.rendered,
- type,
- date: new Date(eventDate)
- };
- }), [eventsByPostType]);
- const settings = (0,external_wp_date_namespaceObject.getSettings)(); // To know if the current timezone is a 12 hour time with look for "a" in the time format
- // We also make sure this a is not escaped by a "/"
- const is12HourTime = /a(?!\\)/i.test(settings.formats.time.toLowerCase() // Test only the lower case a.
- .replace(/\\\\/g, '') // Replace "//" with empty strings.
- .split('').reverse().join('') // Reverse the string and test for "a" not followed by a slash.
- );
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalPublishDateTimePicker, {
- currentDate: postDate,
- onChange: onUpdateDate,
- is12Hour: is12HourTime,
- events: events,
- onMonthPreviewed: setPreviewedMonth,
- onClose: onClose
- });
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/label.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostScheduleLabel(props) {
- return usePostScheduleLabel(props);
- }
- function usePostScheduleLabel() {
- let {
- full = false
- } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- const {
- date,
- isFloating
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- date: select(store_store).getEditedPostAttribute('date'),
- isFloating: select(store_store).isEditedPostDateFloating()
- }), []);
- return full ? getFullPostScheduleLabel(date) : getPostScheduleLabel(date, {
- isFloating
- });
- }
- function getFullPostScheduleLabel(dateAttribute) {
- const date = (0,external_wp_date_namespaceObject.getDate)(dateAttribute);
- const timezoneAbbreviation = getTimezoneAbbreviation();
- const formattedDate = (0,external_wp_date_namespaceObject.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
- (0,external_wp_i18n_namespaceObject._x)('F j, Y g:i\xa0a', 'post schedule full date format'), date);
- return (0,external_wp_i18n_namespaceObject.isRTL)() ? `${timezoneAbbreviation} ${formattedDate}` : `${formattedDate} ${timezoneAbbreviation}`;
- }
- function getPostScheduleLabel(dateAttribute) {
- let {
- isFloating = false,
- now = new Date()
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
- if (!dateAttribute || isFloating) {
- return (0,external_wp_i18n_namespaceObject.__)('Immediately');
- } // If the user timezone does not equal the site timezone then using words
- // like 'tomorrow' is confusing, so show the full date.
- if (!isTimezoneSameAsSiteTimezone(now)) {
- return getFullPostScheduleLabel(dateAttribute);
- }
- const date = (0,external_wp_date_namespaceObject.getDate)(dateAttribute);
- if (isSameDay(date, now)) {
- return (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Time of day the post is scheduled for.
- (0,external_wp_i18n_namespaceObject.__)('Today at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
- (0,external_wp_date_namespaceObject.dateI18n)((0,external_wp_i18n_namespaceObject._x)('g:i\xa0a', 'post schedule time format'), date));
- }
- const tomorrow = new Date(now);
- tomorrow.setDate(tomorrow.getDate() + 1);
- if (isSameDay(date, tomorrow)) {
- return (0,external_wp_i18n_namespaceObject.sprintf)( // translators: %s: Time of day the post is scheduled for.
- (0,external_wp_i18n_namespaceObject.__)('Tomorrow at %s'), // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
- (0,external_wp_date_namespaceObject.dateI18n)((0,external_wp_i18n_namespaceObject._x)('g:i\xa0a', 'post schedule time format'), date));
- }
- if (date.getFullYear() === now.getFullYear()) {
- return (0,external_wp_date_namespaceObject.dateI18n)( // translators: If using a space between 'g:i' and 'a', use a non-breaking sapce.
- (0,external_wp_i18n_namespaceObject._x)('F j g:i\xa0a', 'post schedule date format without year'), date);
- }
- return (0,external_wp_date_namespaceObject.dateI18n)( // translators: Use a non-breaking space between 'g:i' and 'a' if appropriate.
- (0,external_wp_i18n_namespaceObject._x)('F j, Y g:i\xa0a', 'post schedule full date format'), date);
- }
- function getTimezoneAbbreviation() {
- const {
- timezone
- } = (0,external_wp_date_namespaceObject.getSettings)();
- if (timezone.abbr && isNaN(Number(timezone.abbr))) {
- return timezone.abbr;
- }
- const symbol = timezone.offset < 0 ? '' : '+';
- return `UTC${symbol}${timezone.offset}`;
- }
- function isTimezoneSameAsSiteTimezone(date) {
- const {
- timezone
- } = (0,external_wp_date_namespaceObject.getSettings)();
- const siteOffset = Number(timezone.offset);
- const dateOffset = -1 * (date.getTimezoneOffset() / 60);
- return siteOffset === dateOffset;
- }
- function isSameDay(left, right) {
- return left.getDate() === right.getDate() && left.getMonth() === right.getMonth() && left.getFullYear() === right.getFullYear();
- }
- ;// CONCATENATED MODULE: external ["wp","a11y"]
- var external_wp_a11y_namespaceObject = window["wp"]["a11y"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/most-used-terms.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const MIN_MOST_USED_TERMS = 3;
- const DEFAULT_QUERY = {
- per_page: 10,
- orderby: 'count',
- order: 'desc',
- hide_empty: true,
- _fields: 'id,name,count',
- context: 'view'
- };
- function MostUsedTerms(_ref) {
- let {
- onSelect,
- taxonomy
- } = _ref;
- const {
- _terms,
- showTerms
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const mostUsedTerms = select(external_wp_coreData_namespaceObject.store).getEntityRecords('taxonomy', taxonomy.slug, DEFAULT_QUERY);
- return {
- _terms: mostUsedTerms,
- showTerms: (mostUsedTerms === null || mostUsedTerms === void 0 ? void 0 : mostUsedTerms.length) >= MIN_MOST_USED_TERMS
- };
- }, []);
- if (!showTerms) {
- return null;
- }
- const terms = unescapeTerms(_terms);
- const label = (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'most_used']);
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-taxonomies__flat-term-most-used"
- }, (0,external_wp_element_namespaceObject.createElement)("h3", {
- className: "editor-post-taxonomies__flat-term-most-used-label"
- }, label), (0,external_wp_element_namespaceObject.createElement)("ul", {
- role: "list",
- className: "editor-post-taxonomies__flat-term-most-used-list"
- }, terms.map(term => (0,external_wp_element_namespaceObject.createElement)("li", {
- key: term.id
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "link",
- onClick: () => onSelect(term)
- }, term.name)))));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/flat-term-selector.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Shared reference to an empty array for cases where it is important to avoid
- * returning a new array reference on every invocation.
- *
- * @type {Array<any>}
- */
- const flat_term_selector_EMPTY_ARRAY = [];
- /**
- * Module constants
- */
- const MAX_TERMS_SUGGESTIONS = 20;
- const flat_term_selector_DEFAULT_QUERY = {
- per_page: MAX_TERMS_SUGGESTIONS,
- orderby: 'count',
- order: 'desc',
- _fields: 'id,name',
- context: 'view'
- };
- const isSameTermName = (termA, termB) => unescapeString(termA).toLowerCase() === unescapeString(termB).toLowerCase();
- const termNamesToIds = (names, terms) => {
- return names.map(termName => (0,external_lodash_namespaceObject.find)(terms, term => isSameTermName(term.name, termName)).id);
- }; // Tries to create a term or fetch it if it already exists.
- function findOrCreateTerm(termName, restBase, namespace) {
- const escapedTermName = (0,external_lodash_namespaceObject.escape)(termName);
- return external_wp_apiFetch_default()({
- path: `/${namespace}/${restBase}`,
- method: 'POST',
- data: {
- name: escapedTermName
- }
- }).catch(error => {
- if (error.code !== 'term_exists') {
- return Promise.reject(error);
- }
- return Promise.resolve({
- id: error.data.term_id,
- name: termName
- });
- }).then(unescapeTerm);
- }
- function FlatTermSelector(_ref) {
- let {
- slug
- } = _ref;
- const [values, setValues] = (0,external_wp_element_namespaceObject.useState)([]);
- const [search, setSearch] = (0,external_wp_element_namespaceObject.useState)('');
- const debouncedSearch = (0,external_wp_compose_namespaceObject.useDebounce)(setSearch, 500);
- const {
- terms,
- termIds,
- taxonomy,
- hasAssignAction,
- hasCreateAction,
- hasResolvedTerms
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getCurrentPost,
- getEditedPostAttribute
- } = select(store_store);
- const {
- getEntityRecords,
- getTaxonomy,
- hasFinishedResolution
- } = select(external_wp_coreData_namespaceObject.store);
- const post = getCurrentPost();
- const _taxonomy = getTaxonomy(slug);
- const _termIds = _taxonomy ? getEditedPostAttribute(_taxonomy.rest_base) : flat_term_selector_EMPTY_ARRAY;
- const query = { ...flat_term_selector_DEFAULT_QUERY,
- include: _termIds.join(','),
- per_page: -1
- };
- return {
- hasCreateAction: _taxonomy ? (0,external_lodash_namespaceObject.get)(post, ['_links', 'wp:action-create-' + _taxonomy.rest_base], false) : false,
- hasAssignAction: _taxonomy ? (0,external_lodash_namespaceObject.get)(post, ['_links', 'wp:action-assign-' + _taxonomy.rest_base], false) : false,
- taxonomy: _taxonomy,
- termIds: _termIds,
- terms: _termIds.length ? getEntityRecords('taxonomy', slug, query) : flat_term_selector_EMPTY_ARRAY,
- hasResolvedTerms: hasFinishedResolution('getEntityRecords', ['taxonomy', slug, query])
- };
- }, [slug]);
- const {
- searchResults
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEntityRecords
- } = select(external_wp_coreData_namespaceObject.store);
- return {
- searchResults: !!search ? getEntityRecords('taxonomy', slug, { ...flat_term_selector_DEFAULT_QUERY,
- search
- }) : flat_term_selector_EMPTY_ARRAY
- };
- }, [search]); // Update terms state only after the selectors are resolved.
- // We're using this to avoid terms temporarily disappearing on slow networks
- // while core data makes REST API requests.
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- if (hasResolvedTerms) {
- const newValues = (terms !== null && terms !== void 0 ? terms : []).map(term => unescapeString(term.name));
- setValues(newValues);
- }
- }, [terms, hasResolvedTerms]);
- const suggestions = (0,external_wp_element_namespaceObject.useMemo)(() => {
- return (searchResults !== null && searchResults !== void 0 ? searchResults : []).map(term => unescapeString(term.name));
- }, [searchResults]);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- if (!hasAssignAction) {
- return null;
- }
- function onUpdateTerms(newTermIds) {
- editPost({
- [taxonomy.rest_base]: newTermIds
- });
- }
- function onChange(termNames) {
- var _taxonomy$rest_namesp;
- const availableTerms = [...(terms !== null && terms !== void 0 ? terms : []), ...(searchResults !== null && searchResults !== void 0 ? searchResults : [])];
- const uniqueTerms = termNames.reduce((acc, name) => {
- if (!acc.some(n => n.toLowerCase() === name.toLowerCase())) {
- acc.push(name);
- }
- return acc;
- }, []);
- const newTermNames = uniqueTerms.filter(termName => !(0,external_lodash_namespaceObject.find)(availableTerms, term => isSameTermName(term.name, termName))); // Optimistically update term values.
- // The selector will always re-fetch terms later.
- setValues(uniqueTerms);
- if (newTermNames.length === 0) {
- return onUpdateTerms(termNamesToIds(uniqueTerms, availableTerms));
- }
- if (!hasCreateAction) {
- return;
- }
- const namespace = (_taxonomy$rest_namesp = taxonomy === null || taxonomy === void 0 ? void 0 : taxonomy.rest_namespace) !== null && _taxonomy$rest_namesp !== void 0 ? _taxonomy$rest_namesp : 'wp/v2';
- Promise.all(newTermNames.map(termName => findOrCreateTerm(termName, taxonomy.rest_base, namespace))).then(newTerms => {
- const newAvailableTerms = availableTerms.concat(newTerms);
- return onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms));
- });
- }
- function appendTerm(newTerm) {
- if (termIds.includes(newTerm.id)) {
- return;
- }
- const newTermIds = [...termIds, newTerm.id];
- const termAddedMessage = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: term name. */
- (0,external_wp_i18n_namespaceObject._x)('%s added', 'term'), (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'singular_name'], slug === 'post_tag' ? (0,external_wp_i18n_namespaceObject.__)('Tag') : (0,external_wp_i18n_namespaceObject.__)('Term')));
- (0,external_wp_a11y_namespaceObject.speak)(termAddedMessage, 'assertive');
- onUpdateTerms(newTermIds);
- }
- const newTermLabel = (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'add_new_item'], slug === 'post_tag' ? (0,external_wp_i18n_namespaceObject.__)('Add new tag') : (0,external_wp_i18n_namespaceObject.__)('Add new Term'));
- const singularName = (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'singular_name'], slug === 'post_tag' ? (0,external_wp_i18n_namespaceObject.__)('Tag') : (0,external_wp_i18n_namespaceObject.__)('Term'));
- const termAddedLabel = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: term name. */
- (0,external_wp_i18n_namespaceObject._x)('%s added', 'term'), singularName);
- const termRemovedLabel = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: term name. */
- (0,external_wp_i18n_namespaceObject._x)('%s removed', 'term'), singularName);
- const removeTermLabel = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: term name. */
- (0,external_wp_i18n_namespaceObject._x)('Remove %s', 'term'), singularName);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.FormTokenField, {
- value: values,
- suggestions: suggestions,
- onChange: onChange,
- onInputChange: debouncedSearch,
- maxSuggestions: MAX_TERMS_SUGGESTIONS,
- label: newTermLabel,
- messages: {
- added: termAddedLabel,
- removed: termRemovedLabel,
- remove: removeTermLabel
- }
- }), (0,external_wp_element_namespaceObject.createElement)(MostUsedTerms, {
- taxonomy: taxonomy,
- onSelect: appendTerm
- }));
- }
- /* harmony default export */ var flat_term_selector = ((0,external_wp_components_namespaceObject.withFilters)('editor.PostTaxonomyType')(FlatTermSelector));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/maybe-tags-panel.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const TagsPanel = () => {
- const panelBodyTitle = [(0,external_wp_i18n_namespaceObject.__)('Suggestion:'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-publish-panel__link",
- key: "label"
- }, (0,external_wp_i18n_namespaceObject.__)('Add tags'))];
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- initialOpen: false,
- title: panelBodyTitle
- }, (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('Tags help users and search engines navigate your site and find your content. Add a few keywords to describe your post.')), (0,external_wp_element_namespaceObject.createElement)(flat_term_selector, {
- slug: 'post_tag'
- }));
- };
- class MaybeTagsPanel extends external_wp_element_namespaceObject.Component {
- constructor(props) {
- super(props);
- this.state = {
- hadTagsWhenOpeningThePanel: props.hasTags
- };
- }
- /*
- * We only want to show the tag panel if the post didn't have
- * any tags when the user hit the Publish button.
- *
- * We can't use the prop.hasTags because it'll change to true
- * if the user adds a new tag within the pre-publish panel.
- * This would force a re-render and a new prop.hasTags check,
- * hiding this panel and keeping the user from adding
- * more than one tag.
- */
- render() {
- if (!this.state.hadTagsWhenOpeningThePanel) {
- return (0,external_wp_element_namespaceObject.createElement)(TagsPanel, null);
- }
- return null;
- }
- }
- /* harmony default export */ var maybe_tags_panel = ((0,external_wp_compose_namespaceObject.compose)((0,external_wp_data_namespaceObject.withSelect)(select => {
- const postType = select(store_store).getCurrentPostType();
- const tagsTaxonomy = select(external_wp_coreData_namespaceObject.store).getTaxonomy('post_tag');
- const tags = tagsTaxonomy && select(store_store).getEditedPostAttribute(tagsTaxonomy.rest_base);
- return {
- areTagsFetched: tagsTaxonomy !== undefined,
- isPostTypeSupported: tagsTaxonomy && (0,external_lodash_namespaceObject.some)(tagsTaxonomy.types, type => type === postType),
- hasTags: tags && tags.length
- };
- }), (0,external_wp_compose_namespaceObject.ifCondition)(_ref => {
- let {
- areTagsFetched,
- isPostTypeSupported
- } = _ref;
- return isPostTypeSupported && areTagsFetched;
- }))(MaybeTagsPanel));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/maybe-post-format-panel.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const getSuggestion = (supportedFormats, suggestedPostFormat) => {
- const formats = POST_FORMATS.filter(format => (0,external_lodash_namespaceObject.includes)(supportedFormats, format.id));
- return (0,external_lodash_namespaceObject.find)(formats, format => format.id === suggestedPostFormat);
- };
- const PostFormatSuggestion = _ref => {
- let {
- suggestedPostFormat,
- suggestionText,
- onUpdatePostFormat
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "link",
- onClick: () => onUpdatePostFormat(suggestedPostFormat)
- }, suggestionText);
- };
- function PostFormatPanel() {
- const {
- currentPostFormat,
- suggestion
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEditedPostAttribute,
- getSuggestedPostFormat
- } = select(store_store);
- const supportedFormats = (0,external_lodash_namespaceObject.get)(select(external_wp_coreData_namespaceObject.store).getThemeSupports(), ['formats'], []);
- return {
- currentPostFormat: getEditedPostAttribute('format'),
- suggestion: getSuggestion(supportedFormats, getSuggestedPostFormat())
- };
- }, []);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const onUpdatePostFormat = format => editPost({
- format
- });
- const panelBodyTitle = [(0,external_wp_i18n_namespaceObject.__)('Suggestion:'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-publish-panel__link",
- key: "label"
- }, (0,external_wp_i18n_namespaceObject.__)('Use a post format'))];
- if (!suggestion || suggestion.id === currentPostFormat) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- initialOpen: false,
- title: panelBodyTitle
- }, (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('Your theme uses post formats to highlight different kinds of content, like images or videos. Apply a post format to see this special styling.')), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_element_namespaceObject.createElement)(PostFormatSuggestion, {
- onUpdatePostFormat: onUpdatePostFormat,
- suggestedPostFormat: suggestion.id,
- suggestionText: (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: post format */
- (0,external_wp_i18n_namespaceObject.__)('Apply the "%1$s" format.'), suggestion.caption)
- })));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/hierarchical-term-selector.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Module Constants
- */
- const hierarchical_term_selector_DEFAULT_QUERY = {
- per_page: -1,
- orderby: 'name',
- order: 'asc',
- _fields: 'id,name,parent',
- context: 'view'
- };
- const MIN_TERMS_COUNT_FOR_FILTER = 8;
- const hierarchical_term_selector_EMPTY_ARRAY = [];
- /**
- * Sort Terms by Selected.
- *
- * @param {Object[]} termsTree Array of terms in tree format.
- * @param {number[]} terms Selected terms.
- *
- * @return {Object[]} Sorted array of terms.
- */
- function sortBySelected(termsTree, terms) {
- const treeHasSelection = termTree => {
- if (terms.indexOf(termTree.id) !== -1) {
- return true;
- }
- if (undefined === termTree.children) {
- return false;
- }
- return termTree.children.map(treeHasSelection).filter(child => child).length > 0;
- };
- const termOrChildIsSelected = (termA, termB) => {
- const termASelected = treeHasSelection(termA);
- const termBSelected = treeHasSelection(termB);
- if (termASelected === termBSelected) {
- return 0;
- }
- if (termASelected && !termBSelected) {
- return -1;
- }
- if (!termASelected && termBSelected) {
- return 1;
- }
- return 0;
- };
- const newTermTree = [...termsTree];
- newTermTree.sort(termOrChildIsSelected);
- return newTermTree;
- }
- /**
- * Find term by parent id or name.
- *
- * @param {Object[]} terms Array of Terms.
- * @param {number|string} parent id.
- * @param {string} name Term name.
- * @return {Object} Term object.
- */
- function findTerm(terms, parent, name) {
- return (0,external_lodash_namespaceObject.find)(terms, term => {
- return (!term.parent && !parent || parseInt(term.parent) === parseInt(parent)) && term.name.toLowerCase() === name.toLowerCase();
- });
- }
- /**
- * Get filter matcher function.
- *
- * @param {string} filterValue Filter value.
- * @return {(function(Object): (Object|boolean))} Matcher function.
- */
- function getFilterMatcher(filterValue) {
- const matchTermsForFilter = originalTerm => {
- if ('' === filterValue) {
- return originalTerm;
- } // Shallow clone, because we'll be filtering the term's children and
- // don't want to modify the original term.
- const term = { ...originalTerm
- }; // Map and filter the children, recursive so we deal with grandchildren
- // and any deeper levels.
- if (term.children.length > 0) {
- term.children = term.children.map(matchTermsForFilter).filter(child => child);
- } // If the term's name contains the filterValue, or it has children
- // (i.e. some child matched at some point in the tree) then return it.
- if (-1 !== term.name.toLowerCase().indexOf(filterValue.toLowerCase()) || term.children.length > 0) {
- return term;
- } // Otherwise, return false. After mapping, the list of terms will need
- // to have false values filtered out.
- return false;
- };
- return matchTermsForFilter;
- }
- /**
- * Hierarchical term selector.
- *
- * @param {Object} props Component props.
- * @param {string} props.slug Taxonomy slug.
- * @return {WPElement} Hierarchical term selector component.
- */
- function HierarchicalTermSelector(_ref) {
- let {
- slug
- } = _ref;
- const [adding, setAdding] = (0,external_wp_element_namespaceObject.useState)(false);
- const [formName, setFormName] = (0,external_wp_element_namespaceObject.useState)('');
- /**
- * @type {[number|'', Function]}
- */
- const [formParent, setFormParent] = (0,external_wp_element_namespaceObject.useState)('');
- const [showForm, setShowForm] = (0,external_wp_element_namespaceObject.useState)(false);
- const [filterValue, setFilterValue] = (0,external_wp_element_namespaceObject.useState)('');
- const [filteredTermsTree, setFilteredTermsTree] = (0,external_wp_element_namespaceObject.useState)([]);
- const debouncedSpeak = (0,external_wp_compose_namespaceObject.useDebounce)(external_wp_a11y_namespaceObject.speak, 500);
- const {
- hasCreateAction,
- hasAssignAction,
- terms,
- loading,
- availableTerms,
- taxonomy
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getCurrentPost,
- getEditedPostAttribute
- } = select(store_store);
- const {
- getTaxonomy,
- getEntityRecords,
- isResolving
- } = select(external_wp_coreData_namespaceObject.store);
- const _taxonomy = getTaxonomy(slug);
- return {
- hasCreateAction: _taxonomy ? (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-create-' + _taxonomy.rest_base], false) : false,
- hasAssignAction: _taxonomy ? (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-assign-' + _taxonomy.rest_base], false) : false,
- terms: _taxonomy ? getEditedPostAttribute(_taxonomy.rest_base) : hierarchical_term_selector_EMPTY_ARRAY,
- loading: isResolving('getEntityRecords', ['taxonomy', slug, hierarchical_term_selector_DEFAULT_QUERY]),
- availableTerms: getEntityRecords('taxonomy', slug, hierarchical_term_selector_DEFAULT_QUERY) || hierarchical_term_selector_EMPTY_ARRAY,
- taxonomy: _taxonomy
- };
- }, [slug]);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- saveEntityRecord
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
- const availableTermsTree = (0,external_wp_element_namespaceObject.useMemo)(() => sortBySelected(buildTermsTree(availableTerms), terms), // Remove `terms` from the dependency list to avoid reordering every time
- // checking or unchecking a term.
- [availableTerms]);
- if (!hasAssignAction) {
- return null;
- }
- /**
- * Append new term.
- *
- * @param {Object} term Term object.
- * @return {Promise} A promise that resolves to save term object.
- */
- const addTerm = term => {
- return saveEntityRecord('taxonomy', slug, term);
- };
- /**
- * Update terms for post.
- *
- * @param {number[]} termIds Term ids.
- */
- const onUpdateTerms = termIds => {
- editPost({
- [taxonomy.rest_base]: termIds
- });
- };
- /**
- * Handler for checking term.
- *
- * @param {number} termId
- */
- const onChange = termId => {
- const hasTerm = terms.includes(termId);
- const newTerms = hasTerm ? (0,external_lodash_namespaceObject.without)(terms, termId) : [...terms, termId];
- onUpdateTerms(newTerms);
- };
- const onChangeFormName = value => {
- setFormName(value);
- };
- /**
- * Handler for changing form parent.
- *
- * @param {number|''} parentId Parent post id.
- */
- const onChangeFormParent = parentId => {
- setFormParent(parentId);
- };
- const onToggleForm = () => {
- setShowForm(!showForm);
- };
- const onAddTerm = async event => {
- event.preventDefault();
- if (formName === '' || adding) {
- return;
- } // Check if the term we are adding already exists.
- const existingTerm = findTerm(availableTerms, formParent, formName);
- if (existingTerm) {
- // If the term we are adding exists but is not selected select it.
- if (!(0,external_lodash_namespaceObject.some)(terms, term => term === existingTerm.id)) {
- onUpdateTerms([...terms, existingTerm.id]);
- }
- setFormName('');
- setFormParent('');
- return;
- }
- setAdding(true);
- const newTerm = await addTerm({
- name: formName,
- parent: formParent ? formParent : undefined
- });
- const termAddedMessage = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: taxonomy name */
- (0,external_wp_i18n_namespaceObject._x)('%s added', 'term'), (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'singular_name'], slug === 'category' ? (0,external_wp_i18n_namespaceObject.__)('Category') : (0,external_wp_i18n_namespaceObject.__)('Term')));
- (0,external_wp_a11y_namespaceObject.speak)(termAddedMessage, 'assertive');
- setAdding(false);
- setFormName('');
- setFormParent('');
- onUpdateTerms([...terms, newTerm.id]);
- };
- const setFilter = value => {
- const newFilteredTermsTree = availableTermsTree.map(getFilterMatcher(value)).filter(term => term);
- const getResultCount = termsTree => {
- let count = 0;
- for (let i = 0; i < termsTree.length; i++) {
- count++;
- if (undefined !== termsTree[i].children) {
- count += getResultCount(termsTree[i].children);
- }
- }
- return count;
- };
- setFilterValue(value);
- setFilteredTermsTree(newFilteredTermsTree);
- const resultCount = getResultCount(newFilteredTermsTree);
- const resultsFoundMessage = (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %d: number of results */
- (0,external_wp_i18n_namespaceObject._n)('%d result found.', '%d results found.', resultCount), resultCount);
- debouncedSpeak(resultsFoundMessage, 'assertive');
- };
- const renderTerms = renderedTerms => {
- return renderedTerms.map(term => {
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- key: term.id,
- className: "editor-post-taxonomies__hierarchical-terms-choice"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- checked: terms.indexOf(term.id) !== -1,
- onChange: () => {
- const termId = parseInt(term.id, 10);
- onChange(termId);
- },
- label: (0,external_lodash_namespaceObject.unescape)(term.name)
- }), !!term.children.length && (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-taxonomies__hierarchical-terms-subchoices"
- }, renderTerms(term.children)));
- });
- };
- const labelWithFallback = (labelProperty, fallbackIsCategory, fallbackIsNotCategory) => (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', labelProperty], slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory);
- const newTermButtonLabel = labelWithFallback('add_new_item', (0,external_wp_i18n_namespaceObject.__)('Add new category'), (0,external_wp_i18n_namespaceObject.__)('Add new term'));
- const newTermLabel = labelWithFallback('new_item_name', (0,external_wp_i18n_namespaceObject.__)('Add new category'), (0,external_wp_i18n_namespaceObject.__)('Add new term'));
- const parentSelectLabel = labelWithFallback('parent_item', (0,external_wp_i18n_namespaceObject.__)('Parent Category'), (0,external_wp_i18n_namespaceObject.__)('Parent Term'));
- const noParentOption = `— ${parentSelectLabel} —`;
- const newTermSubmitLabel = newTermButtonLabel;
- const filterLabel = (0,external_lodash_namespaceObject.get)(taxonomy, ['labels', 'search_items'], (0,external_wp_i18n_namespaceObject.__)('Search Terms'));
- const groupLabel = (0,external_lodash_namespaceObject.get)(taxonomy, ['name'], (0,external_wp_i18n_namespaceObject.__)('Terms'));
- const showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, showFilter && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- className: "editor-post-taxonomies__hierarchical-terms-filter",
- label: filterLabel,
- value: filterValue,
- onChange: setFilter
- }), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-taxonomies__hierarchical-terms-list",
- tabIndex: "0",
- role: "group",
- "aria-label": groupLabel
- }, renderTerms('' !== filterValue ? filteredTermsTree : availableTermsTree)), !loading && hasCreateAction && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: onToggleForm,
- className: "editor-post-taxonomies__hierarchical-terms-add",
- "aria-expanded": showForm,
- variant: "link"
- }, newTermButtonLabel), showForm && (0,external_wp_element_namespaceObject.createElement)("form", {
- onSubmit: onAddTerm
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- className: "editor-post-taxonomies__hierarchical-terms-input",
- label: newTermLabel,
- value: formName,
- onChange: onChangeFormName,
- required: true
- }), !!availableTerms.length && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TreeSelect, {
- label: parentSelectLabel,
- noOptionLabel: noParentOption,
- onChange: onChangeFormParent,
- selectedId: formParent,
- tree: availableTermsTree
- }), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "secondary",
- type: "submit",
- className: "editor-post-taxonomies__hierarchical-terms-submit"
- }, newTermSubmitLabel)));
- }
- /* harmony default export */ var hierarchical_term_selector = ((0,external_wp_components_namespaceObject.withFilters)('editor.PostTaxonomyType')(HierarchicalTermSelector));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/maybe-category-panel.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function MaybeCategoryPanel() {
- const hasNoCategory = (0,external_wp_data_namespaceObject.useSelect)(select => {
- var _select$getEntityReco;
- const postType = select(store_store).getCurrentPostType();
- const categoriesTaxonomy = select(external_wp_coreData_namespaceObject.store).getTaxonomy('category');
- const defaultCategoryId = (_select$getEntityReco = select(external_wp_coreData_namespaceObject.store).getEntityRecord('root', 'site')) === null || _select$getEntityReco === void 0 ? void 0 : _select$getEntityReco.default_category;
- const defaultCategory = select(external_wp_coreData_namespaceObject.store).getEntityRecord('taxonomy', 'category', defaultCategoryId);
- const postTypeSupportsCategories = categoriesTaxonomy && (0,external_lodash_namespaceObject.some)(categoriesTaxonomy.types, type => type === postType);
- const categories = categoriesTaxonomy && select(store_store).getEditedPostAttribute(categoriesTaxonomy.rest_base); // This boolean should return true if everything is loaded
- // ( categoriesTaxonomy, defaultCategory )
- // and the post has not been assigned a category different than "uncategorized".
- return !!categoriesTaxonomy && !!defaultCategory && postTypeSupportsCategories && ((categories === null || categories === void 0 ? void 0 : categories.length) === 0 || (categories === null || categories === void 0 ? void 0 : categories.length) === 1 && defaultCategory.id === categories[0]);
- }, []);
- const [shouldShowPanel, setShouldShowPanel] = (0,external_wp_element_namespaceObject.useState)(false);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- // We use state to avoid hiding the panel if the user edits the categories
- // and adds one within the panel itself (while visible).
- if (hasNoCategory) {
- setShouldShowPanel(true);
- }
- }, [hasNoCategory]);
- if (!shouldShowPanel) {
- return null;
- }
- const panelBodyTitle = [(0,external_wp_i18n_namespaceObject.__)('Suggestion:'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-publish-panel__link",
- key: "label"
- }, (0,external_wp_i18n_namespaceObject.__)('Assign a category'))];
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- initialOpen: false,
- title: panelBodyTitle
- }, (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_i18n_namespaceObject.__)('Categories provide a helpful way to group related posts together and to quickly tell readers what a post is about.')), (0,external_wp_element_namespaceObject.createElement)(hierarchical_term_selector, {
- slug: "category"
- }));
- }
- /* harmony default export */ var maybe_category_panel = (MaybeCategoryPanel);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/prepublish.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostPublishPanelPrepublish(_ref) {
- let {
- children
- } = _ref;
- const {
- isBeingScheduled,
- isRequestingSiteIcon,
- hasPublishAction,
- siteIconUrl,
- siteTitle,
- siteHome
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getCurrentPost,
- isEditedPostBeingScheduled
- } = select(store_store);
- const {
- getEntityRecord,
- isResolving
- } = select(external_wp_coreData_namespaceObject.store);
- const siteData = getEntityRecord('root', '__unstableBase', undefined) || {};
- return {
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- isBeingScheduled: isEditedPostBeingScheduled(),
- isRequestingSiteIcon: isResolving('getEntityRecord', ['root', '__unstableBase', undefined]),
- siteIconUrl: siteData.site_icon_url,
- siteTitle: siteData.name,
- siteHome: siteData.home && (0,external_wp_url_namespaceObject.filterURLForDisplay)(siteData.home)
- };
- }, []);
- let siteIcon = (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Icon, {
- className: "components-site-icon",
- size: "36px",
- icon: library_wordpress
- });
- if (siteIconUrl) {
- siteIcon = (0,external_wp_element_namespaceObject.createElement)("img", {
- alt: (0,external_wp_i18n_namespaceObject.__)('Site Icon'),
- className: "components-site-icon",
- src: siteIconUrl
- });
- }
- if (isRequestingSiteIcon) {
- siteIcon = null;
- }
- let prePublishTitle, prePublishBodyText;
- if (!hasPublishAction) {
- prePublishTitle = (0,external_wp_i18n_namespaceObject.__)('Are you ready to submit for review?');
- prePublishBodyText = (0,external_wp_i18n_namespaceObject.__)('When you’re ready, submit your work for review, and an Editor will be able to approve it for you.');
- } else if (isBeingScheduled) {
- prePublishTitle = (0,external_wp_i18n_namespaceObject.__)('Are you ready to schedule?');
- prePublishBodyText = (0,external_wp_i18n_namespaceObject.__)('Your work will be published at the specified date and time.');
- } else {
- prePublishTitle = (0,external_wp_i18n_namespaceObject.__)('Are you ready to publish?');
- prePublishBodyText = (0,external_wp_i18n_namespaceObject.__)('Double-check your settings before publishing.');
- }
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__prepublish"
- }, (0,external_wp_element_namespaceObject.createElement)("div", null, (0,external_wp_element_namespaceObject.createElement)("strong", null, prePublishTitle)), (0,external_wp_element_namespaceObject.createElement)("p", null, prePublishBodyText), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "components-site-card"
- }, siteIcon, (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "components-site-info"
- }, (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "components-site-name"
- }, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(siteTitle) || (0,external_wp_i18n_namespaceObject.__)('(Untitled)')), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "components-site-home"
- }, siteHome))), hasPublishAction && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- initialOpen: false,
- title: [(0,external_wp_i18n_namespaceObject.__)('Visibility:'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-publish-panel__link",
- key: "label"
- }, (0,external_wp_element_namespaceObject.createElement)(PostVisibilityLabel, null))]
- }, (0,external_wp_element_namespaceObject.createElement)(PostVisibility, null)), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- initialOpen: false,
- title: [(0,external_wp_i18n_namespaceObject.__)('Publish:'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-publish-panel__link",
- key: "label"
- }, (0,external_wp_element_namespaceObject.createElement)(PostScheduleLabel, null))]
- }, (0,external_wp_element_namespaceObject.createElement)(PostSchedule, null))), (0,external_wp_element_namespaceObject.createElement)(PostFormatPanel, null), (0,external_wp_element_namespaceObject.createElement)(maybe_tags_panel, null), (0,external_wp_element_namespaceObject.createElement)(maybe_category_panel, null), children);
- }
- /* harmony default export */ var prepublish = (PostPublishPanelPrepublish);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/postpublish.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const POSTNAME = '%postname%';
- /**
- * Returns URL for a future post.
- *
- * @param {Object} post Post object.
- *
- * @return {string} PostPublish URL.
- */
- const getFuturePostUrl = post => {
- const {
- slug
- } = post;
- if (post.permalink_template.includes(POSTNAME)) {
- return post.permalink_template.replace(POSTNAME, slug);
- }
- return post.permalink_template;
- };
- function postpublish_CopyButton(_ref) {
- let {
- text,
- onCopy,
- children
- } = _ref;
- const ref = (0,external_wp_compose_namespaceObject.useCopyToClipboard)(text, onCopy);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "secondary",
- ref: ref
- }, children);
- }
- class PostPublishPanelPostpublish extends external_wp_element_namespaceObject.Component {
- constructor() {
- super(...arguments);
- this.state = {
- showCopyConfirmation: false
- };
- this.onCopy = this.onCopy.bind(this);
- this.onSelectInput = this.onSelectInput.bind(this);
- this.postLink = (0,external_wp_element_namespaceObject.createRef)();
- }
- componentDidMount() {
- if (this.props.focusOnMount) {
- this.postLink.current.focus();
- }
- }
- componentWillUnmount() {
- clearTimeout(this.dismissCopyConfirmation);
- }
- onCopy() {
- this.setState({
- showCopyConfirmation: true
- });
- clearTimeout(this.dismissCopyConfirmation);
- this.dismissCopyConfirmation = setTimeout(() => {
- this.setState({
- showCopyConfirmation: false
- });
- }, 4000);
- }
- onSelectInput(event) {
- event.target.select();
- }
- render() {
- const {
- children,
- isScheduled,
- post,
- postType
- } = this.props;
- const postLabel = (0,external_lodash_namespaceObject.get)(postType, ['labels', 'singular_name']);
- const viewPostLabel = (0,external_lodash_namespaceObject.get)(postType, ['labels', 'view_item']);
- const addNewPostLabel = (0,external_lodash_namespaceObject.get)(postType, ['labels', 'add_new_item']);
- const link = post.status === 'future' ? getFuturePostUrl(post) : post.link;
- const addLink = (0,external_wp_url_namespaceObject.addQueryArgs)('post-new.php', {
- post_type: post.type
- });
- const postPublishNonLinkHeader = isScheduled ? (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_i18n_namespaceObject.__)('is now scheduled. It will go live on'), ' ', (0,external_wp_element_namespaceObject.createElement)(PostScheduleLabel, null), ".") : (0,external_wp_i18n_namespaceObject.__)('is now live.');
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "post-publish-panel__postpublish"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, {
- className: "post-publish-panel__postpublish-header"
- }, (0,external_wp_element_namespaceObject.createElement)("a", {
- ref: this.postLink,
- href: link
- }, (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(post.title) || (0,external_wp_i18n_namespaceObject.__)('(no title)')), ' ', postPublishNonLinkHeader), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.PanelBody, null, (0,external_wp_element_namespaceObject.createElement)("p", {
- className: "post-publish-panel__postpublish-subheader"
- }, (0,external_wp_element_namespaceObject.createElement)("strong", null, (0,external_wp_i18n_namespaceObject.__)('What’s next?'))), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "post-publish-panel__postpublish-post-address-container"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- className: "post-publish-panel__postpublish-post-address",
- readOnly: true,
- label: (0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s: post type singular name */
- (0,external_wp_i18n_namespaceObject.__)('%s address'), postLabel),
- value: (0,external_wp_url_namespaceObject.safeDecodeURIComponent)(link),
- onFocus: this.onSelectInput
- }), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "post-publish-panel__postpublish-post-address__copy-button-wrap"
- }, (0,external_wp_element_namespaceObject.createElement)(postpublish_CopyButton, {
- text: link,
- onCopy: this.onCopy
- }, this.state.showCopyConfirmation ? (0,external_wp_i18n_namespaceObject.__)('Copied!') : (0,external_wp_i18n_namespaceObject.__)('Copy')))), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "post-publish-panel__postpublish-buttons"
- }, !isScheduled && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: "primary",
- href: link
- }, viewPostLabel), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- variant: isScheduled ? 'primary' : 'secondary',
- href: addLink
- }, addNewPostLabel))), children);
- }
- }
- /* harmony default export */ var postpublish = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getEditedPostAttribute,
- getCurrentPost,
- isCurrentPostScheduled
- } = select(store_store);
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- return {
- post: getCurrentPost(),
- postType: getPostType(getEditedPostAttribute('type')),
- isScheduled: isCurrentPostScheduled()
- };
- })(PostPublishPanelPostpublish));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- class PostPublishPanel extends external_wp_element_namespaceObject.Component {
- constructor() {
- super(...arguments);
- this.onSubmit = this.onSubmit.bind(this);
- }
- componentDidUpdate(prevProps) {
- // Automatically collapse the publish sidebar when a post
- // is published and the user makes an edit.
- if (prevProps.isPublished && !this.props.isSaving && this.props.isDirty) {
- this.props.onClose();
- }
- }
- onSubmit() {
- const {
- onClose,
- hasPublishAction,
- isPostTypeViewable
- } = this.props;
- if (!hasPublishAction || !isPostTypeViewable) {
- onClose();
- }
- }
- render() {
- const {
- forceIsDirty,
- forceIsSaving,
- isBeingScheduled,
- isPublished,
- isPublishSidebarEnabled,
- isScheduled,
- isSaving,
- isSavingNonPostEntityChanges,
- onClose,
- onTogglePublishSidebar,
- PostPublishExtension,
- PrePublishExtension,
- ...additionalProps
- } = this.props;
- const {
- hasPublishAction,
- isDirty,
- isPostTypeViewable,
- ...propsForPanel
- } = additionalProps;
- const isPublishedOrScheduled = isPublished || isScheduled && isBeingScheduled;
- const isPrePublish = !isPublishedOrScheduled && !isSaving;
- const isPostPublish = isPublishedOrScheduled && !isSaving;
- return (0,external_wp_element_namespaceObject.createElement)("div", _extends({
- className: "editor-post-publish-panel"
- }, propsForPanel), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__header"
- }, isPostPublish ? (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- onClick: onClose,
- icon: close_small,
- label: (0,external_wp_i18n_namespaceObject.__)('Close panel')
- }) : (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__header-publish-button"
- }, (0,external_wp_element_namespaceObject.createElement)(post_publish_button, {
- focusOnMount: true,
- onSubmit: this.onSubmit,
- forceIsDirty: forceIsDirty,
- forceIsSaving: forceIsSaving
- })), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__header-cancel-button"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- disabled: isSavingNonPostEntityChanges,
- onClick: onClose,
- variant: "secondary"
- }, (0,external_wp_i18n_namespaceObject.__)('Cancel'))))), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__content"
- }, isPrePublish && (0,external_wp_element_namespaceObject.createElement)(prepublish, null, PrePublishExtension && (0,external_wp_element_namespaceObject.createElement)(PrePublishExtension, null)), isPostPublish && (0,external_wp_element_namespaceObject.createElement)(postpublish, {
- focusOnMount: true
- }, PostPublishExtension && (0,external_wp_element_namespaceObject.createElement)(PostPublishExtension, null)), isSaving && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Spinner, null)), (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-publish-panel__footer"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Always show pre-publish checks.'),
- checked: isPublishSidebarEnabled,
- onChange: onTogglePublishSidebar
- })));
- }
- }
- /* harmony default export */ var post_publish_panel = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getPostType
- } = select(external_wp_coreData_namespaceObject.store);
- const {
- getCurrentPost,
- getEditedPostAttribute,
- isCurrentPostPublished,
- isCurrentPostScheduled,
- isEditedPostBeingScheduled,
- isEditedPostDirty,
- isSavingPost,
- isSavingNonPostEntityChanges
- } = select(store_store);
- const {
- isPublishSidebarEnabled
- } = select(store_store);
- const postType = getPostType(getEditedPostAttribute('type'));
- return {
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- isPostTypeViewable: (0,external_lodash_namespaceObject.get)(postType, ['viewable'], false),
- isBeingScheduled: isEditedPostBeingScheduled(),
- isDirty: isEditedPostDirty(),
- isPublished: isCurrentPostPublished(),
- isPublishSidebarEnabled: isPublishSidebarEnabled(),
- isSaving: isSavingPost(),
- isSavingNonPostEntityChanges: isSavingNonPostEntityChanges(),
- isScheduled: isCurrentPostScheduled()
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)((dispatch, _ref) => {
- let {
- isPublishSidebarEnabled
- } = _ref;
- const {
- disablePublishSidebar,
- enablePublishSidebar
- } = dispatch(store_store);
- return {
- onTogglePublishSidebar: () => {
- if (isPublishSidebarEnabled) {
- disablePublishSidebar();
- } else {
- enablePublishSidebar();
- }
- }
- };
- }), external_wp_components_namespaceObject.withFocusReturn, external_wp_components_namespaceObject.withConstrainedTabbing])(PostPublishPanel));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cloud-upload.js
- /**
- * WordPress dependencies
- */
- const cloudUpload = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M17.3 10.1c0-2.5-2.1-4.4-4.8-4.4-2.2 0-4.1 1.4-4.6 3.3h-.2C5.7 9 4 10.7 4 12.8c0 2.1 1.7 3.8 3.7 3.8h9c1.8 0 3.2-1.5 3.2-3.3.1-1.6-1.1-2.9-2.6-3.2zm-.5 5.1h-4v-2.4L14 14l1-1-3-3-3 3 1 1 1.2-1.2v2.4H7.7c-1.2 0-2.2-1.1-2.2-2.3s1-2.4 2.2-2.4H9l.3-1.1c.4-1.3 1.7-2.2 3.2-2.2 1.8 0 3.3 1.3 3.3 2.9v1.3l1.3.2c.8.1 1.4.9 1.4 1.8 0 1-.8 1.8-1.7 1.8z"
- }));
- /* harmony default export */ var cloud_upload = (cloudUpload);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js
- /**
- * WordPress dependencies
- */
- /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
- /**
- * Return an SVG icon.
- *
- * @param {IconProps} props icon is the SVG component to render
- * size is a number specifiying the icon size in pixels
- * Other props will be passed to wrapped SVG component
- *
- * @return {JSX.Element} Icon component
- */
- function Icon(_ref) {
- let {
- icon,
- size = 24,
- ...props
- } = _ref;
- return (0,external_wp_element_namespaceObject.cloneElement)(icon, {
- width: size,
- height: size,
- ...props
- });
- }
- /* harmony default export */ var icon = (Icon);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/check.js
- /**
- * WordPress dependencies
- */
- const check_check = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M16.7 7.1l-6.3 8.5-3.3-2.5-.9 1.2 4.5 3.4L17.9 8z"
- }));
- /* harmony default export */ var library_check = (check_check);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/cloud.js
- /**
- * WordPress dependencies
- */
- const cloud = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M17.3 10.1c0-2.5-2.1-4.4-4.8-4.4-2.2 0-4.1 1.4-4.6 3.3h-.2C5.7 9 4 10.7 4 12.8c0 2.1 1.7 3.8 3.7 3.8h9c1.8 0 3.2-1.5 3.2-3.3.1-1.6-1.1-2.9-2.6-3.2zm-.5 5.1h-9c-1.2 0-2.2-1.1-2.2-2.3s1-2.4 2.2-2.4h1.3l.3-1.1c.4-1.3 1.7-2.2 3.2-2.2 1.8 0 3.3 1.3 3.3 2.9v1.3l1.3.2c.8.1 1.4.9 1.4 1.8-.1 1-.9 1.8-1.8 1.8z"
- }));
- /* harmony default export */ var library_cloud = (cloud);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-switch-to-draft-button/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostSwitchToDraftButton(_ref) {
- let {
- isSaving,
- isPublished,
- isScheduled,
- onClick
- } = _ref;
- const isMobileViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small', '<');
- const [showConfirmDialog, setShowConfirmDialog] = (0,external_wp_element_namespaceObject.useState)(false);
- if (!isPublished && !isScheduled) {
- return null;
- }
- let alertMessage;
- if (isPublished) {
- alertMessage = (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to unpublish this post?');
- } else if (isScheduled) {
- alertMessage = (0,external_wp_i18n_namespaceObject.__)('Are you sure you want to unschedule this post?');
- }
- const handleConfirm = () => {
- setShowConfirmDialog(false);
- onClick();
- };
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- className: "editor-post-switch-to-draft",
- onClick: () => {
- setShowConfirmDialog(true);
- },
- disabled: isSaving,
- variant: "tertiary"
- }, isMobileViewport ? (0,external_wp_i18n_namespaceObject.__)('Draft') : (0,external_wp_i18n_namespaceObject.__)('Switch to draft')), (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.__experimentalConfirmDialog, {
- isOpen: showConfirmDialog,
- onConfirm: handleConfirm,
- onCancel: () => setShowConfirmDialog(false)
- }, alertMessage));
- }
- /* harmony default export */ var post_switch_to_draft_button = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- isSavingPost,
- isCurrentPostPublished,
- isCurrentPostScheduled
- } = select(store_store);
- return {
- isSaving: isSavingPost(),
- isPublished: isCurrentPostPublished(),
- isScheduled: isCurrentPostScheduled()
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => {
- const {
- editPost,
- savePost
- } = dispatch(store_store);
- return {
- onClick: () => {
- editPost({
- status: 'draft'
- });
- savePost();
- }
- };
- })])(PostSwitchToDraftButton));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-saved-state/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Component showing whether the post is saved or not and providing save
- * buttons.
- *
- * @param {Object} props Component props.
- * @param {?boolean} props.forceIsDirty Whether to force the post to be marked
- * as dirty.
- * @param {?boolean} props.forceIsSaving Whether to force the post to be marked
- * as being saved.
- * @param {?boolean} props.showIconLabels Whether interface buttons show labels instead of icons
- * @return {import('@wordpress/element').WPComponent} The component.
- */
- function PostSavedState(_ref) {
- let {
- forceIsDirty,
- forceIsSaving,
- showIconLabels = false
- } = _ref;
- const [forceSavedMessage, setForceSavedMessage] = (0,external_wp_element_namespaceObject.useState)(false);
- const isLargeViewport = (0,external_wp_compose_namespaceObject.useViewportMatch)('small');
- const {
- isAutosaving,
- isDirty,
- isNew,
- isPending,
- isPublished,
- isSaveable,
- isSaving,
- isScheduled,
- hasPublishAction
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- var _getCurrentPost$_link, _getCurrentPost, _getCurrentPost$_link2;
- const {
- isEditedPostNew,
- isCurrentPostPublished,
- isCurrentPostScheduled,
- isEditedPostDirty,
- isSavingPost,
- isEditedPostSaveable,
- getCurrentPost,
- isAutosavingPost,
- getEditedPostAttribute
- } = select(store_store);
- return {
- isAutosaving: isAutosavingPost(),
- isDirty: forceIsDirty || isEditedPostDirty(),
- isNew: isEditedPostNew(),
- isPending: 'pending' === getEditedPostAttribute('status'),
- isPublished: isCurrentPostPublished(),
- isSaving: forceIsSaving || isSavingPost(),
- isSaveable: isEditedPostSaveable(),
- isScheduled: isCurrentPostScheduled(),
- hasPublishAction: (_getCurrentPost$_link = (_getCurrentPost = getCurrentPost()) === null || _getCurrentPost === void 0 ? void 0 : (_getCurrentPost$_link2 = _getCurrentPost._links) === null || _getCurrentPost$_link2 === void 0 ? void 0 : _getCurrentPost$_link2['wp:action-publish']) !== null && _getCurrentPost$_link !== void 0 ? _getCurrentPost$_link : false
- };
- }, [forceIsDirty, forceIsSaving]);
- const {
- savePost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const wasSaving = (0,external_wp_compose_namespaceObject.usePrevious)(isSaving);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- let timeoutId;
- if (wasSaving && !isSaving) {
- setForceSavedMessage(true);
- timeoutId = setTimeout(() => {
- setForceSavedMessage(false);
- }, 1000);
- }
- return () => clearTimeout(timeoutId);
- }, [isSaving]); // Once the post has been submitted for review this button
- // is not needed for the contributor role.
- if (!hasPublishAction && isPending) {
- return null;
- }
- if (isPublished || isScheduled) {
- return (0,external_wp_element_namespaceObject.createElement)(post_switch_to_draft_button, null);
- }
- /* translators: button label text should, if possible, be under 16 characters. */
- const label = isPending ? (0,external_wp_i18n_namespaceObject.__)('Save as pending') : (0,external_wp_i18n_namespaceObject.__)('Save draft');
- /* translators: button label text should, if possible, be under 16 characters. */
- const shortLabel = (0,external_wp_i18n_namespaceObject.__)('Save');
- const isSaved = forceSavedMessage || !isNew && !isDirty;
- const isSavedState = isSaving || isSaved;
- const isDisabled = isSaving || isSaved || !isSaveable;
- let text;
- if (isSaving) {
- text = isAutosaving ? (0,external_wp_i18n_namespaceObject.__)('Autosaving') : (0,external_wp_i18n_namespaceObject.__)('Saving');
- } else if (isSaved) {
- text = (0,external_wp_i18n_namespaceObject.__)('Saved');
- } else if (isLargeViewport) {
- text = label;
- } else if (showIconLabels) {
- text = shortLabel;
- } // Use common Button instance for all saved states so that focus is not
- // lost.
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- className: isSaveable || isSaving ? classnames_default()({
- 'editor-post-save-draft': !isSavedState,
- 'editor-post-saved-state': isSavedState,
- 'is-saving': isSaving,
- 'is-autosaving': isAutosaving,
- 'is-saved': isSaved,
- [(0,external_wp_components_namespaceObject.__unstableGetAnimateClassName)({
- type: 'loading'
- })]: isSaving
- }) : undefined,
- onClick: isDisabled ? undefined : () => savePost(),
- shortcut: external_wp_keycodes_namespaceObject.displayShortcut.primary('s'),
- variant: isLargeViewport ? 'tertiary' : undefined,
- icon: isLargeViewport ? undefined : cloud_upload,
- label: showIconLabels ? undefined : label,
- "aria-disabled": isDisabled
- }, isSavedState && (0,external_wp_element_namespaceObject.createElement)(icon, {
- icon: isSaved ? library_check : library_cloud
- }), text);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostScheduleCheck(_ref) {
- let {
- hasPublishAction,
- children
- } = _ref;
- if (!hasPublishAction) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_schedule_check = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getCurrentPost,
- getCurrentPostType
- } = select(store_store);
- return {
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- postType: getCurrentPostType()
- };
- })])(PostScheduleCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-slug/check.js
- /**
- * Internal dependencies
- */
- function PostSlugCheck(_ref) {
- let {
- children
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, {
- supportKeys: "slug"
- }, children);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-slug/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- class PostSlug extends external_wp_element_namespaceObject.Component {
- constructor(_ref) {
- let {
- postSlug,
- postTitle,
- postID
- } = _ref;
- super(...arguments);
- this.state = {
- editedSlug: (0,external_wp_url_namespaceObject.safeDecodeURIComponent)(postSlug) || (0,external_wp_url_namespaceObject.cleanForSlug)(postTitle) || postID
- };
- this.setSlug = this.setSlug.bind(this);
- }
- setSlug(event) {
- const {
- postSlug,
- onUpdateSlug
- } = this.props;
- const {
- value
- } = event.target;
- const editedSlug = (0,external_wp_url_namespaceObject.cleanForSlug)(value);
- if (editedSlug === postSlug) {
- return;
- }
- onUpdateSlug(editedSlug);
- }
- render() {
- const {
- editedSlug
- } = this.state;
- return (0,external_wp_element_namespaceObject.createElement)(PostSlugCheck, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Slug'),
- autoComplete: "off",
- spellCheck: "false",
- value: editedSlug,
- onChange: slug => this.setState({
- editedSlug: slug
- }),
- onBlur: this.setSlug,
- className: "editor-post-slug"
- }));
- }
- }
- /* harmony default export */ var post_slug = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getCurrentPost,
- getEditedPostAttribute
- } = select(store_store);
- const {
- id
- } = getCurrentPost();
- return {
- postSlug: getEditedPostAttribute('slug'),
- postTitle: getEditedPostAttribute('title'),
- postID: id
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => {
- const {
- editPost
- } = dispatch(store_store);
- return {
- onUpdateSlug(slug) {
- editPost({
- slug
- });
- }
- };
- })])(PostSlug));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-sticky/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostStickyCheck(_ref) {
- let {
- hasStickyAction,
- postType,
- children
- } = _ref;
- if (postType !== 'post' || !hasStickyAction) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_sticky_check = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const post = select(store_store).getCurrentPost();
- return {
- hasStickyAction: (0,external_lodash_namespaceObject.get)(post, ['_links', 'wp:action-sticky'], false),
- postType: select(store_store).getCurrentPostType()
- };
- })])(PostStickyCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-sticky/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostSticky(_ref) {
- let {
- onUpdateSticky,
- postSticky = false
- } = _ref;
- return (0,external_wp_element_namespaceObject.createElement)(post_sticky_check, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.CheckboxControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Stick to the top of the blog'),
- checked: postSticky,
- onChange: () => onUpdateSticky(!postSticky)
- }));
- }
- /* harmony default export */ var post_sticky = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- postSticky: select(store_store).getEditedPostAttribute('sticky')
- };
- }), (0,external_wp_data_namespaceObject.withDispatch)(dispatch => {
- return {
- onUpdateSticky(postSticky) {
- dispatch(store_store).editPost({
- sticky: postSticky
- });
- }
- };
- })])(PostSticky));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const identity = x => x;
- function PostTaxonomies(_ref) {
- let {
- postType,
- taxonomies,
- taxonomyWrapper = identity
- } = _ref;
- const availableTaxonomies = (0,external_lodash_namespaceObject.filter)(taxonomies, taxonomy => (0,external_lodash_namespaceObject.includes)(taxonomy.types, postType));
- const visibleTaxonomies = (0,external_lodash_namespaceObject.filter)(availableTaxonomies, // In some circumstances .visibility can end up as undefined so optional chaining operator required.
- // https://github.com/WordPress/gutenberg/issues/40326
- taxonomy => {
- var _taxonomy$visibility;
- return (_taxonomy$visibility = taxonomy.visibility) === null || _taxonomy$visibility === void 0 ? void 0 : _taxonomy$visibility.show_ui;
- });
- return visibleTaxonomies.map(taxonomy => {
- const TaxonomyComponent = taxonomy.hierarchical ? hierarchical_term_selector : flat_term_selector;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, {
- key: `taxonomy-${taxonomy.slug}`
- }, taxonomyWrapper((0,external_wp_element_namespaceObject.createElement)(TaxonomyComponent, {
- slug: taxonomy.slug
- }), taxonomy));
- });
- }
- /* harmony default export */ var post_taxonomies = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- postType: select(store_store).getCurrentPostType(),
- taxonomies: select(external_wp_coreData_namespaceObject.store).getTaxonomies({
- per_page: -1
- })
- };
- })])(PostTaxonomies));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostTaxonomiesCheck(_ref) {
- let {
- postType,
- taxonomies,
- children
- } = _ref;
- const hasTaxonomies = (0,external_lodash_namespaceObject.some)(taxonomies, taxonomy => (0,external_lodash_namespaceObject.includes)(taxonomy.types, postType));
- if (!hasTaxonomies) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_taxonomies_check = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- return {
- postType: select(store_store).getCurrentPostType(),
- taxonomies: select(external_wp_coreData_namespaceObject.store).getTaxonomies({
- per_page: -1
- })
- };
- })])(PostTaxonomiesCheck));
- // EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js
- var lib = __webpack_require__(773);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-text-editor/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostTextEditor() {
- const postContent = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getEditedPostContent(), []);
- const {
- editPost,
- resetEditorBlocks
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const [value, setValue] = (0,external_wp_element_namespaceObject.useState)(postContent);
- const [isDirty, setIsDirty] = (0,external_wp_element_namespaceObject.useState)(false);
- const instanceId = (0,external_wp_compose_namespaceObject.useInstanceId)(PostTextEditor);
- const valueRef = (0,external_wp_element_namespaceObject.useRef)();
- if (!isDirty && value !== postContent) {
- setValue(postContent);
- }
- /**
- * Handles a textarea change event to notify the onChange prop callback and
- * reflect the new value in the component's own state. This marks the start
- * of the user's edits, if not already changed, preventing future props
- * changes to value from replacing the rendered value. This is expected to
- * be followed by a reset to dirty state via `stopEditing`.
- *
- * @see stopEditing
- *
- * @param {Event} event Change event.
- */
- const onChange = event => {
- const newValue = event.target.value;
- editPost({
- content: newValue
- });
- setValue(newValue);
- setIsDirty(true);
- valueRef.current = newValue;
- };
- /**
- * Function called when the user has completed their edits, responsible for
- * ensuring that changes, if made, are surfaced to the onPersist prop
- * callback and resetting dirty state.
- */
- const stopEditing = () => {
- if (isDirty) {
- const blocks = (0,external_wp_blocks_namespaceObject.parse)(value);
- resetEditorBlocks(blocks);
- setIsDirty(false);
- }
- }; // Ensure changes aren't lost when component unmounts.
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- return () => {
- if (valueRef.current) {
- const blocks = (0,external_wp_blocks_namespaceObject.parse)(valueRef.current);
- resetEditorBlocks(blocks);
- }
- };
- }, []);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.VisuallyHidden, {
- as: "label",
- htmlFor: `post-content-${instanceId}`
- }, (0,external_wp_i18n_namespaceObject.__)('Type text or HTML')), (0,external_wp_element_namespaceObject.createElement)(lib/* default */.Z, {
- autoComplete: "off",
- dir: "auto",
- value: value,
- onChange: onChange,
- onBlur: stopEditing,
- className: "editor-post-text-editor",
- id: `post-content-${instanceId}`,
- placeholder: (0,external_wp_i18n_namespaceObject.__)('Start writing with text or HTML')
- }));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-title/index.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Constants
- */
- const REGEXP_NEWLINES = /[\r\n]+/g;
- function PostTitle(_, forwardedRef) {
- const ref = (0,external_wp_element_namespaceObject.useRef)();
- const [isSelected, setIsSelected] = (0,external_wp_element_namespaceObject.useState)(false);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- insertDefaultBlock,
- clearSelectedBlock,
- insertBlocks
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_blockEditor_namespaceObject.store);
- const {
- isCleanNewPost,
- title,
- placeholder,
- isFocusMode,
- hasFixedToolbar
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEditedPostAttribute,
- isCleanNewPost: _isCleanNewPost
- } = select(store_store);
- const {
- getSettings
- } = select(external_wp_blockEditor_namespaceObject.store);
- const {
- titlePlaceholder,
- focusMode,
- hasFixedToolbar: _hasFixedToolbar
- } = getSettings();
- return {
- isCleanNewPost: _isCleanNewPost(),
- title: getEditedPostAttribute('title'),
- placeholder: titlePlaceholder,
- isFocusMode: focusMode,
- hasFixedToolbar: _hasFixedToolbar
- };
- }, []);
- (0,external_wp_element_namespaceObject.useImperativeHandle)(forwardedRef, () => ({
- focus: () => {
- var _ref$current;
- ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
- }
- }));
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- if (!ref.current) {
- return;
- }
- const {
- ownerDocument
- } = ref.current;
- const {
- activeElement,
- body
- } = ownerDocument; // Only autofocus the title when the post is entirely empty. This should
- // only happen for a new post, which means we focus the title on new
- // post so the author can start typing right away, without needing to
- // click anything.
- if (isCleanNewPost && (!activeElement || body === activeElement)) {
- ref.current.focus();
- }
- }, [isCleanNewPost]);
- function onEnterPress() {
- insertDefaultBlock(undefined, undefined, 0);
- }
- function onInsertBlockAfter(blocks) {
- insertBlocks(blocks, 0);
- }
- function onUpdate(newTitle) {
- editPost({
- title: newTitle
- });
- }
- const [selection, setSelection] = (0,external_wp_element_namespaceObject.useState)({});
- function onSelect() {
- setIsSelected(true);
- clearSelectedBlock();
- }
- function onUnselect() {
- setIsSelected(false);
- setSelection({});
- }
- function onChange(value) {
- onUpdate(value.replace(REGEXP_NEWLINES, ' '));
- }
- function onKeyDown(event) {
- if (event.keyCode === external_wp_keycodes_namespaceObject.ENTER) {
- event.preventDefault();
- onEnterPress();
- }
- }
- function onPaste(event) {
- const clipboardData = event.clipboardData;
- let plainText = '';
- let html = ''; // IE11 only supports `Text` as an argument for `getData` and will
- // otherwise throw an invalid argument error, so we try the standard
- // arguments first, then fallback to `Text` if they fail.
- try {
- plainText = clipboardData.getData('text/plain');
- html = clipboardData.getData('text/html');
- } catch (error1) {
- try {
- html = clipboardData.getData('Text');
- } catch (error2) {
- // Some browsers like UC Browser paste plain text by default and
- // don't support clipboardData at all, so allow default
- // behaviour.
- return;
- }
- } // Allows us to ask for this information when we get a report.
- window.console.log('Received HTML:\n\n', html);
- window.console.log('Received plain text:\n\n', plainText);
- const content = (0,external_wp_blocks_namespaceObject.pasteHandler)({
- HTML: html,
- plainText
- });
- event.preventDefault();
- if (!content.length) {
- return;
- }
- if (typeof content !== 'string') {
- const [firstBlock] = content;
- if (!title && (firstBlock.name === 'core/heading' || firstBlock.name === 'core/paragraph')) {
- onUpdate(firstBlock.attributes.content);
- onInsertBlockAfter(content.slice(1));
- } else {
- onInsertBlockAfter(content);
- }
- } else {
- const value = { ...(0,external_wp_richText_namespaceObject.create)({
- html: title
- }),
- ...selection
- };
- const newValue = (0,external_wp_richText_namespaceObject.insert)(value, (0,external_wp_richText_namespaceObject.create)({
- html: content
- }));
- onUpdate((0,external_wp_richText_namespaceObject.toHTMLString)({
- value: newValue
- }));
- setSelection({
- start: newValue.start,
- end: newValue.end
- });
- }
- } // The wp-block className is important for editor styles.
- // This same block is used in both the visual and the code editor.
- const className = classnames_default()('wp-block wp-block-post-title block-editor-block-list__block editor-post-title editor-post-title__input rich-text', {
- 'is-selected': isSelected,
- 'is-focus-mode': isFocusMode,
- 'has-fixed-toolbar': hasFixedToolbar
- });
- const decodedPlaceholder = (0,external_wp_htmlEntities_namespaceObject.decodeEntities)(placeholder) || (0,external_wp_i18n_namespaceObject.__)('Add title');
- const {
- ref: richTextRef
- } = (0,external_wp_richText_namespaceObject.__unstableUseRichText)({
- value: title,
- onChange,
- placeholder: decodedPlaceholder,
- selectionStart: selection.start,
- selectionEnd: selection.end,
- onSelectionChange(newStart, newEnd) {
- setSelection(sel => {
- const {
- start,
- end
- } = sel;
- if (start === newStart && end === newEnd) {
- return sel;
- }
- return {
- start: newStart,
- end: newEnd
- };
- });
- },
- __unstableDisableFormats: true,
- preserveWhiteSpace: true
- });
- /* eslint-disable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */
- return (0,external_wp_element_namespaceObject.createElement)(post_type_support_check, {
- supportKeys: "title"
- }, (0,external_wp_element_namespaceObject.createElement)("h1", {
- ref: (0,external_wp_compose_namespaceObject.useMergeRefs)([richTextRef, ref]),
- contentEditable: true,
- className: className,
- "aria-label": decodedPlaceholder,
- role: "textbox",
- "aria-multiline": "true",
- onFocus: onSelect,
- onBlur: onUnselect,
- onKeyDown: onKeyDown,
- onKeyPress: onUnselect,
- onPaste: onPaste
- }));
- /* eslint-enable jsx-a11y/heading-has-content, jsx-a11y/no-noninteractive-element-to-interactive-role */
- }
- /* harmony default export */ var post_title = ((0,external_wp_element_namespaceObject.forwardRef)(PostTitle));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-trash/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostTrash() {
- const {
- isNew,
- isDeleting,
- postId
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const store = select(store_store);
- return {
- isNew: store.isEditedPostNew(),
- isDeleting: store.isDeletingPost(),
- postId: store.getCurrentPostId()
- };
- }, []);
- const {
- trashPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- if (isNew || !postId) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, {
- className: "editor-post-trash",
- isDestructive: true,
- variant: "secondary",
- isBusy: isDeleting,
- "aria-disabled": isDeleting,
- onClick: isDeleting ? undefined : () => trashPost()
- }, (0,external_wp_i18n_namespaceObject.__)('Move to trash'));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-trash/check.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostTrashCheck(_ref) {
- let {
- isNew,
- postId,
- canUserDelete,
- children
- } = _ref;
- if (isNew || !postId || !canUserDelete) {
- return null;
- }
- return children;
- }
- /* harmony default export */ var post_trash_check = ((0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- isEditedPostNew,
- getCurrentPostId,
- getCurrentPostType
- } = select(store_store);
- const {
- getPostType,
- canUser
- } = select(external_wp_coreData_namespaceObject.store);
- const postId = getCurrentPostId();
- const postType = getPostType(getCurrentPostType());
- const resource = (postType === null || postType === void 0 ? void 0 : postType.rest_base) || ''; // eslint-disable-line camelcase
- return {
- isNew: isEditedPostNew(),
- postId,
- canUserDelete: postId && resource ? canUser('delete', resource, postId) : false
- };
- })(PostTrashCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-url/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostURL(_ref) {
- let {
- onClose
- } = _ref;
- const {
- isEditable,
- postSlug,
- viewPostLabel,
- postLink,
- permalinkPrefix,
- permalinkSuffix
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const postTypeSlug = select(store_store).getCurrentPostType();
- const postType = select(external_wp_coreData_namespaceObject.store).getPostType(postTypeSlug);
- const permalinkParts = select(store_store).getPermalinkParts();
- return {
- isEditable: select(store_store).isPermalinkEditable(),
- postSlug: (0,external_wp_url_namespaceObject.safeDecodeURIComponent)(select(store_store).getEditedPostSlug()),
- viewPostLabel: postType === null || postType === void 0 ? void 0 : postType.labels.view_item,
- postLink: select(store_store).getCurrentPost().link,
- permalinkPrefix: permalinkParts === null || permalinkParts === void 0 ? void 0 : permalinkParts.prefix,
- permalinkSuffix: permalinkParts === null || permalinkParts === void 0 ? void 0 : permalinkParts.suffix
- };
- }, []);
- const {
- editPost
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const [forceEmptyField, setForceEmptyField] = (0,external_wp_element_namespaceObject.useState)(false);
- return (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "editor-post-url"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.__experimentalInspectorPopoverHeader, {
- title: (0,external_wp_i18n_namespaceObject.__)('URL'),
- onClose: onClose
- }), isEditable && (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.TextControl, {
- label: (0,external_wp_i18n_namespaceObject.__)('Permalink'),
- value: forceEmptyField ? '' : postSlug,
- autoComplete: "off",
- spellCheck: "false",
- help: (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_i18n_namespaceObject.__)('The last part of the URL.'), ' ', (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
- href: (0,external_wp_i18n_namespaceObject.__)('https://wordpress.org/support/article/settings-sidebar/#permalink')
- }, (0,external_wp_i18n_namespaceObject.__)('Learn more.'))),
- onChange: newValue => {
- editPost({
- slug: newValue
- }); // When we delete the field the permalink gets
- // reverted to the original value.
- // The forceEmptyField logic allows the user to have
- // the field temporarily empty while typing.
- if (!newValue) {
- if (!forceEmptyField) {
- setForceEmptyField(true);
- }
- return;
- }
- if (forceEmptyField) {
- setForceEmptyField(false);
- }
- },
- onBlur: event => {
- editPost({
- slug: (0,external_wp_url_namespaceObject.cleanForSlug)(event.target.value)
- });
- if (forceEmptyField) {
- setForceEmptyField(false);
- }
- }
- }), isEditable && (0,external_wp_element_namespaceObject.createElement)("h3", {
- className: "editor-post-url__link-label"
- }, viewPostLabel !== null && viewPostLabel !== void 0 ? viewPostLabel : (0,external_wp_i18n_namespaceObject.__)('View post')), (0,external_wp_element_namespaceObject.createElement)("p", null, (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.ExternalLink, {
- className: "editor-post-url__link",
- href: postLink,
- target: "_blank"
- }, isEditable ? (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-url__link-prefix"
- }, permalinkPrefix), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-url__link-slug"
- }, postSlug), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "editor-post-url__link-suffix"
- }, permalinkSuffix)) : postLink)));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-url/check.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostURLCheck(_ref) {
- let {
- children
- } = _ref;
- const isVisible = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const postTypeSlug = select(store_store).getCurrentPostType();
- const postType = select(external_wp_coreData_namespaceObject.store).getPostType(postTypeSlug);
- if (!(postType !== null && postType !== void 0 && postType.viewable)) {
- return false;
- }
- const post = select(store_store).getCurrentPost();
- if (!post.link) {
- return false;
- }
- const permalinkParts = select(store_store).getPermalinkParts();
- if (!permalinkParts) {
- return false;
- }
- return true;
- }, []);
- if (!isVisible) {
- return null;
- }
- return children;
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-url/label.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostURLLabel() {
- return usePostURLLabel();
- }
- function usePostURLLabel() {
- const postLink = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getPermalink(), []);
- return (0,external_wp_url_namespaceObject.filterURLForDisplay)((0,external_wp_url_namespaceObject.safeDecodeURIComponent)(postLink));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/check.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function PostVisibilityCheck(_ref) {
- let {
- hasPublishAction,
- render
- } = _ref;
- const canEdit = hasPublishAction;
- return render({
- canEdit
- });
- }
- /* harmony default export */ var post_visibility_check = ((0,external_wp_compose_namespaceObject.compose)([(0,external_wp_data_namespaceObject.withSelect)(select => {
- const {
- getCurrentPost,
- getCurrentPostType
- } = select(store_store);
- return {
- hasPublishAction: (0,external_lodash_namespaceObject.get)(getCurrentPost(), ['_links', 'wp:action-publish'], false),
- postType: getCurrentPostType()
- };
- })])(PostVisibilityCheck));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/info.js
- /**
- * WordPress dependencies
- */
- const info = (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.SVG, {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_primitives_namespaceObject.Path, {
- d: "M12 3.2c-4.8 0-8.8 3.9-8.8 8.8 0 4.8 3.9 8.8 8.8 8.8 4.8 0 8.8-3.9 8.8-8.8 0-4.8-4-8.8-8.8-8.8zm0 16c-4 0-7.2-3.3-7.2-7.2C4.8 8 8 4.8 12 4.8s7.2 3.3 7.2 7.2c0 4-3.2 7.2-7.2 7.2zM11 17h2v-6h-2v6zm0-8h2V7h-2v2z"
- }));
- /* harmony default export */ var library_info = (info);
- ;// CONCATENATED MODULE: external ["wp","wordcount"]
- var external_wp_wordcount_namespaceObject = window["wp"]["wordcount"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/word-count/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function WordCount() {
- const content = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getEditedPostAttribute('content'), []);
- /*
- * translators: If your word count is based on single characters (e.g. East Asian characters),
- * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
- * Do not translate into your own language.
- */
- const wordCountType = (0,external_wp_i18n_namespaceObject._x)('words', 'Word count type. Do not translate!');
- return (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "word-count"
- }, (0,external_wp_wordcount_namespaceObject.count)(content, wordCountType));
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/time-to-read/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * Average reading rate - based on average taken from
- * https://irisreading.com/average-reading-speed-in-various-languages/
- * (Characters/minute used for Chinese rather than words).
- *
- * @type {number} A rough estimate of the average reading rate across multiple languages.
- */
- const AVERAGE_READING_RATE = 189;
- function TimeToRead() {
- const content = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getEditedPostAttribute('content'), []);
- /*
- * translators: If your word count is based on single characters (e.g. East Asian characters),
- * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
- * Do not translate into your own language.
- */
- const wordCountType = (0,external_wp_i18n_namespaceObject._x)('words', 'Word count type. Do not translate!');
- const minutesToRead = Math.round((0,external_wp_wordcount_namespaceObject.count)(content, wordCountType) / AVERAGE_READING_RATE);
- const minutesToReadString = minutesToRead === 0 ? (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.__)('<span>< 1</span> minute'), {
- span: (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- })
- }) : (0,external_wp_element_namespaceObject.createInterpolateElement)((0,external_wp_i18n_namespaceObject.sprintf)(
- /* translators: %s is the number of minutes the post will take to read. */
- (0,external_wp_i18n_namespaceObject._n)('<span>%d</span> minute', '<span>%d</span> minutes', minutesToRead), minutesToRead), {
- span: (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- })
- });
- return (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "time-to-read"
- }, minutesToReadString);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/character-count/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function CharacterCount() {
- const content = (0,external_wp_data_namespaceObject.useSelect)(select => select(store_store).getEditedPostAttribute('content'), []);
- return (0,external_wp_wordcount_namespaceObject.count)(content, 'characters_including_spaces');
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/table-of-contents/panel.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function TableOfContentsPanel(_ref) {
- let {
- hasOutlineItemsDisabled,
- onRequestClose
- } = _ref;
- const {
- headingCount,
- paragraphCount,
- numberOfBlocks
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getGlobalBlockCount
- } = select(external_wp_blockEditor_namespaceObject.store);
- return {
- headingCount: getGlobalBlockCount('core/heading'),
- paragraphCount: getGlobalBlockCount('core/paragraph'),
- numberOfBlocks: getGlobalBlockCount()
- };
- }, []);
- return (
- /*
- * Disable reason: The `list` ARIA role is redundant but
- * Safari+VoiceOver won't announce the list otherwise.
- */
- /* eslint-disable jsx-a11y/no-redundant-roles */
- (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("div", {
- className: "table-of-contents__wrapper",
- role: "note",
- "aria-label": (0,external_wp_i18n_namespaceObject.__)('Document Statistics'),
- tabIndex: "0"
- }, (0,external_wp_element_namespaceObject.createElement)("ul", {
- role: "list",
- className: "table-of-contents__counts"
- }, (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Words'), (0,external_wp_element_namespaceObject.createElement)(WordCount, null)), (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Characters'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- }, (0,external_wp_element_namespaceObject.createElement)(CharacterCount, null))), (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Time to read'), (0,external_wp_element_namespaceObject.createElement)(TimeToRead, null)), (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Headings'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- }, headingCount)), (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Paragraphs'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- }, paragraphCount)), (0,external_wp_element_namespaceObject.createElement)("li", {
- className: "table-of-contents__count"
- }, (0,external_wp_i18n_namespaceObject.__)('Blocks'), (0,external_wp_element_namespaceObject.createElement)("span", {
- className: "table-of-contents__number"
- }, numberOfBlocks)))), headingCount > 0 && (0,external_wp_element_namespaceObject.createElement)(external_wp_element_namespaceObject.Fragment, null, (0,external_wp_element_namespaceObject.createElement)("hr", null), (0,external_wp_element_namespaceObject.createElement)("h2", {
- className: "table-of-contents__title"
- }, (0,external_wp_i18n_namespaceObject.__)('Document Outline')), (0,external_wp_element_namespaceObject.createElement)(document_outline, {
- onSelect: onRequestClose,
- hasOutlineItemsDisabled: hasOutlineItemsDisabled
- })))
- /* eslint-enable jsx-a11y/no-redundant-roles */
- );
- }
- /* harmony default export */ var panel = (TableOfContentsPanel);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/table-of-contents/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function TableOfContents(_ref, ref) {
- let {
- hasOutlineItemsDisabled,
- repositionDropdown,
- ...props
- } = _ref;
- const hasBlocks = (0,external_wp_data_namespaceObject.useSelect)(select => !!select(external_wp_blockEditor_namespaceObject.store).getBlockCount(), []);
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Dropdown, {
- position: repositionDropdown ? 'middle right right' : 'bottom',
- className: "table-of-contents",
- contentClassName: "table-of-contents__popover",
- renderToggle: _ref2 => {
- let {
- isOpen,
- onToggle
- } = _ref2;
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_components_namespaceObject.Button, _extends({}, props, {
- ref: ref,
- onClick: hasBlocks ? onToggle : undefined,
- icon: library_info,
- "aria-expanded": isOpen,
- "aria-haspopup": "true"
- /* translators: button label text should, if possible, be under 16 characters. */
- ,
- label: (0,external_wp_i18n_namespaceObject.__)('Details'),
- tooltipPosition: "bottom",
- "aria-disabled": !hasBlocks
- }));
- },
- renderContent: _ref3 => {
- let {
- onClose
- } = _ref3;
- return (0,external_wp_element_namespaceObject.createElement)(panel, {
- onRequestClose: onClose,
- hasOutlineItemsDisabled: hasOutlineItemsDisabled
- });
- }
- });
- }
- /* harmony default export */ var table_of_contents = ((0,external_wp_element_namespaceObject.forwardRef)(TableOfContents));
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/unsaved-changes-warning/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Warns the user if there are unsaved changes before leaving the editor.
- * Compatible with Post Editor and Site Editor.
- *
- * @return {WPComponent} The component.
- */
- function UnsavedChangesWarning() {
- const isDirty = (0,external_wp_data_namespaceObject.useSelect)(select => {
- return () => {
- const {
- __experimentalGetDirtyEntityRecords
- } = select(external_wp_coreData_namespaceObject.store);
- const dirtyEntityRecords = __experimentalGetDirtyEntityRecords();
- return dirtyEntityRecords.length > 0;
- };
- }, []);
- /**
- * Warns the user if there are unsaved changes before leaving the editor.
- *
- * @param {Event} event `beforeunload` event.
- *
- * @return {?string} Warning prompt message, if unsaved changes exist.
- */
- const warnIfUnsavedChanges = event => {
- // We need to call the selector directly in the listener to avoid race
- // conditions with `BrowserURL` where `componentDidUpdate` gets the
- // new value of `isEditedPostDirty` before this component does,
- // causing this component to incorrectly think a trashed post is still dirty.
- if (isDirty()) {
- event.returnValue = (0,external_wp_i18n_namespaceObject.__)('You have unsaved changes. If you proceed, they will be lost.');
- return event.returnValue;
- }
- };
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- window.addEventListener('beforeunload', warnIfUnsavedChanges);
- return () => {
- window.removeEventListener('beforeunload', warnIfUnsavedChanges);
- };
- }, []);
- return null;
- }
- ;// CONCATENATED MODULE: external ["wp","reusableBlocks"]
- var external_wp_reusableBlocks_namespaceObject = window["wp"]["reusableBlocks"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/provider/with-registry-provider.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const withRegistryProvider = (0,external_wp_compose_namespaceObject.createHigherOrderComponent)(WrappedComponent => (0,external_wp_data_namespaceObject.withRegistry)(props => {
- const {
- useSubRegistry = true,
- registry,
- ...additionalProps
- } = props;
- if (!useSubRegistry) {
- return (0,external_wp_element_namespaceObject.createElement)(WrappedComponent, additionalProps);
- }
- const [subRegistry, setSubRegistry] = (0,external_wp_element_namespaceObject.useState)(null);
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- const newRegistry = (0,external_wp_data_namespaceObject.createRegistry)({
- 'core/block-editor': external_wp_blockEditor_namespaceObject.storeConfig
- }, registry);
- newRegistry.registerStore('core/editor', storeConfig);
- setSubRegistry(newRegistry);
- }, [registry]);
- if (!subRegistry) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_data_namespaceObject.RegistryProvider, {
- value: subRegistry
- }, (0,external_wp_element_namespaceObject.createElement)(WrappedComponent, additionalProps));
- }), 'withRegistryProvider');
- /* harmony default export */ var with_registry_provider = (withRegistryProvider);
- ;// CONCATENATED MODULE: external ["wp","mediaUtils"]
- var external_wp_mediaUtils_namespaceObject = window["wp"]["mediaUtils"];
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/media-upload/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- const media_upload_noop = () => {};
- /**
- * Upload a media file when the file upload button is activated.
- * Wrapper around mediaUpload() that injects the current post ID.
- *
- * @param {Object} $0 Parameters object passed to the function.
- * @param {?Object} $0.additionalData Additional data to include in the request.
- * @param {string} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.
- * @param {Array} $0.filesList List of files.
- * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site.
- * @param {Function} $0.onError Function called when an error happens.
- * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available.
- */
- function mediaUpload(_ref) {
- let {
- additionalData = {},
- allowedTypes,
- filesList,
- maxUploadFileSize,
- onError = media_upload_noop,
- onFileChange
- } = _ref;
- const {
- getCurrentPostId,
- getEditorSettings
- } = (0,external_wp_data_namespaceObject.select)(store_store);
- const wpAllowedMimeTypes = getEditorSettings().allowedMimeTypes;
- maxUploadFileSize = maxUploadFileSize || getEditorSettings().maxUploadFileSize;
- (0,external_wp_mediaUtils_namespaceObject.uploadMedia)({
- allowedTypes,
- filesList,
- onFileChange,
- additionalData: {
- post: getCurrentPostId(),
- ...additionalData
- },
- maxUploadFileSize,
- onError: _ref2 => {
- let {
- message
- } = _ref2;
- return onError(message);
- },
- wpAllowedMimeTypes
- });
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/provider/use-block-editor-settings.js
- /**
- * External dependencies
- */
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- /**
- * React hook used to compute the block editor settings to use for the post editor.
- *
- * @param {Object} settings EditorProvider settings prop.
- * @param {boolean} hasTemplate Whether template mode is enabled.
- *
- * @return {Object} Block Editor Settings.
- */
- function useBlockEditorSettings(settings, hasTemplate) {
- var _settings$__experimen, _settings$__experimen2;
- const {
- reusableBlocks,
- hasUploadPermissions,
- canUseUnfilteredHTML,
- userCanCreatePages,
- pageOnFront,
- postType
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- var _canUser;
- const {
- canUserUseUnfilteredHTML,
- getCurrentPostType
- } = select(store_store);
- const isWeb = external_wp_element_namespaceObject.Platform.OS === 'web';
- const {
- canUser,
- getEntityRecord
- } = select(external_wp_coreData_namespaceObject.store);
- const siteSettings = canUser('read', 'settings') ? getEntityRecord('root', 'site') : undefined;
- return {
- canUseUnfilteredHTML: canUserUseUnfilteredHTML(),
- reusableBlocks: isWeb ? select(external_wp_coreData_namespaceObject.store).getEntityRecords('postType', 'wp_block', {
- per_page: -1
- }) : [],
- // Reusable blocks are fetched in the native version of this hook.
- hasUploadPermissions: (_canUser = canUser('create', 'media')) !== null && _canUser !== void 0 ? _canUser : true,
- userCanCreatePages: canUser('create', 'pages'),
- pageOnFront: siteSettings === null || siteSettings === void 0 ? void 0 : siteSettings.page_on_front,
- postType: getCurrentPostType()
- };
- }, []);
- const settingsBlockPatterns = (_settings$__experimen = settings.__experimentalAdditionalBlockPatterns) !== null && _settings$__experimen !== void 0 ? _settings$__experimen : // WP 6.0
- settings.__experimentalBlockPatterns; // WP 5.9
- const settingsBlockPatternCategories = (_settings$__experimen2 = settings.__experimentalAdditionalBlockPatternCategories) !== null && _settings$__experimen2 !== void 0 ? _settings$__experimen2 : // WP 6.0
- settings.__experimentalBlockPatternCategories; // WP 5.9
- const {
- restBlockPatterns,
- restBlockPatternCategories
- } = (0,external_wp_data_namespaceObject.useSelect)(select => ({
- restBlockPatterns: select(external_wp_coreData_namespaceObject.store).getBlockPatterns(),
- restBlockPatternCategories: select(external_wp_coreData_namespaceObject.store).getBlockPatternCategories()
- }), []);
- const blockPatterns = (0,external_wp_element_namespaceObject.useMemo)(() => [...(settingsBlockPatterns || []), ...(restBlockPatterns || [])].filter((x, index, arr) => index === arr.findIndex(y => x.name === y.name)).filter(_ref => {
- let {
- postTypes
- } = _ref;
- return !postTypes || Array.isArray(postTypes) && postTypes.includes(postType);
- }), [settingsBlockPatterns, restBlockPatterns, postType]);
- const blockPatternCategories = (0,external_wp_element_namespaceObject.useMemo)(() => [...(settingsBlockPatternCategories || []), ...(restBlockPatternCategories || [])].filter((x, index, arr) => index === arr.findIndex(y => x.name === y.name)), [settingsBlockPatternCategories, restBlockPatternCategories]);
- const {
- undo
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- saveEntityRecord
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_coreData_namespaceObject.store);
- /**
- * Creates a Post entity.
- * This is utilised by the Link UI to allow for on-the-fly creation of Posts/Pages.
- *
- * @param {Object} options parameters for the post being created. These mirror those used on 3rd param of saveEntityRecord.
- * @return {Object} the post type object that was created.
- */
- const createPageEntity = options => {
- if (!userCanCreatePages) {
- return Promise.reject({
- message: (0,external_wp_i18n_namespaceObject.__)('You do not have permission to create Pages.')
- });
- }
- return saveEntityRecord('postType', 'page', options);
- };
- return (0,external_wp_element_namespaceObject.useMemo)(() => ({ ...(0,external_lodash_namespaceObject.pick)(settings, ['__experimentalBlockDirectory', '__experimentalDiscussionSettings', '__experimentalFeatures', '__experimentalPreferredStyleVariations', '__experimentalSetIsInserterOpened', '__unstableGalleryWithImageBlocks', 'alignWide', 'allowedBlockTypes', 'bodyPlaceholder', 'canLockBlocks', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomSpacingSizes', 'disableCustomGradients', 'disableLayoutStyles', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'focusMode', 'fontSizes', 'gradients', 'generateAnchors', 'hasFixedToolbar', 'hasReducedUI', 'hasInlineToolbar', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'keepCaretInsideBlock', 'maxWidth', 'onUpdateDefaultBlockStyles', 'styles', 'template', 'templateLock', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock', '__unstableResolvedAssets']),
- mediaUpload: hasUploadPermissions ? mediaUpload : undefined,
- __experimentalReusableBlocks: reusableBlocks,
- __experimentalBlockPatterns: blockPatterns,
- __experimentalBlockPatternCategories: blockPatternCategories,
- __experimentalFetchLinkSuggestions: (search, searchOptions) => (0,external_wp_coreData_namespaceObject.__experimentalFetchLinkSuggestions)(search, searchOptions, settings),
- __experimentalFetchRichUrlData: external_wp_coreData_namespaceObject.__experimentalFetchUrlData,
- __experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,
- __experimentalUndo: undo,
- outlineMode: hasTemplate,
- __experimentalCreatePageEntity: createPageEntity,
- __experimentalUserCanCreatePages: userCanCreatePages,
- pageOnFront,
- __experimentalPreferPatternsOnRoot: hasTemplate
- }), [settings, hasUploadPermissions, reusableBlocks, blockPatterns, blockPatternCategories, canUseUnfilteredHTML, undo, hasTemplate, userCanCreatePages, pageOnFront]);
- }
- /* harmony default export */ var use_block_editor_settings = (useBlockEditorSettings);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/provider/index.js
- /**
- * WordPress dependencies
- */
- /**
- * Internal dependencies
- */
- function EditorProvider(_ref) {
- let {
- __unstableTemplate,
- post,
- settings,
- recovery,
- initialEdits,
- children
- } = _ref;
- const defaultBlockContext = (0,external_wp_element_namespaceObject.useMemo)(() => {
- if (post.type === 'wp_template') {
- return {};
- }
- return {
- postId: post.id,
- postType: post.type
- };
- }, [post.id, post.type]);
- const {
- selection,
- isReady
- } = (0,external_wp_data_namespaceObject.useSelect)(select => {
- const {
- getEditorSelection,
- __unstableIsEditorReady
- } = select(store_store);
- return {
- isReady: __unstableIsEditorReady(),
- selection: getEditorSelection()
- };
- }, []);
- const {
- id,
- type
- } = __unstableTemplate !== null && __unstableTemplate !== void 0 ? __unstableTemplate : post;
- const [blocks, onInput, onChange] = (0,external_wp_coreData_namespaceObject.useEntityBlockEditor)('postType', type, {
- id
- });
- const editorSettings = use_block_editor_settings(settings, !!__unstableTemplate);
- const {
- updatePostLock,
- setupEditor,
- updateEditorSettings,
- __experimentalTearDownEditor
- } = (0,external_wp_data_namespaceObject.useDispatch)(store_store);
- const {
- createWarningNotice
- } = (0,external_wp_data_namespaceObject.useDispatch)(external_wp_notices_namespaceObject.store); // Initialize and tear down the editor.
- // Ideally this should be synced on each change and not just something you do once.
- (0,external_wp_element_namespaceObject.useLayoutEffect)(() => {
- // Assume that we don't need to initialize in the case of an error recovery.
- if (recovery) {
- return;
- }
- updatePostLock(settings.postLock);
- setupEditor(post, initialEdits, settings.template);
- if (settings.autosave) {
- createWarningNotice((0,external_wp_i18n_namespaceObject.__)('There is an autosave of this post that is more recent than the version below.'), {
- id: 'autosave-exists',
- actions: [{
- label: (0,external_wp_i18n_namespaceObject.__)('View the autosave'),
- url: settings.autosave.editLink
- }]
- });
- }
- return () => {
- __experimentalTearDownEditor();
- };
- }, []); // Synchronize the editor settings as they change.
- (0,external_wp_element_namespaceObject.useEffect)(() => {
- updateEditorSettings(settings);
- }, [settings]);
- if (!isReady) {
- return null;
- }
- return (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
- kind: "root",
- type: "site"
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_coreData_namespaceObject.EntityProvider, {
- kind: "postType",
- type: post.type,
- id: post.id
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockContextProvider, {
- value: defaultBlockContext
- }, (0,external_wp_element_namespaceObject.createElement)(external_wp_blockEditor_namespaceObject.BlockEditorProvider, {
- value: blocks,
- onChange: onChange,
- onInput: onInput,
- selection: selection,
- settings: editorSettings,
- useSubRegistry: false
- }, children, (0,external_wp_element_namespaceObject.createElement)(external_wp_reusableBlocks_namespaceObject.ReusableBlocksMenuItems, null)))));
- }
- /* harmony default export */ var provider = (with_registry_provider(EditorProvider));
- ;// CONCATENATED MODULE: external ["wp","serverSideRender"]
- var external_wp_serverSideRender_namespaceObject = window["wp"]["serverSideRender"];
- var external_wp_serverSideRender_default = /*#__PURE__*/__webpack_require__.n(external_wp_serverSideRender_namespaceObject);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/deprecated.js
- // Block Creation Components.
- /**
- * WordPress dependencies
- */
- function deprecateComponent(name, Wrapped) {
- let staticsToHoist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
- const Component = (0,external_wp_element_namespaceObject.forwardRef)((props, ref) => {
- external_wp_deprecated_default()('wp.editor.' + name, {
- since: '5.3',
- alternative: 'wp.blockEditor.' + name,
- version: '6.2'
- });
- return (0,external_wp_element_namespaceObject.createElement)(Wrapped, _extends({
- ref: ref
- }, props));
- });
- staticsToHoist.forEach(staticName => {
- Component[staticName] = deprecateComponent(name + '.' + staticName, Wrapped[staticName]);
- });
- return Component;
- }
- function deprecateFunction(name, func) {
- return function () {
- external_wp_deprecated_default()('wp.editor.' + name, {
- since: '5.3',
- alternative: 'wp.blockEditor.' + name,
- version: '6.2'
- });
- return func(...arguments);
- };
- }
- const RichText = deprecateComponent('RichText', external_wp_blockEditor_namespaceObject.RichText, ['Content']);
- RichText.isEmpty = deprecateFunction('RichText.isEmpty', external_wp_blockEditor_namespaceObject.RichText.isEmpty);
- const Autocomplete = deprecateComponent('Autocomplete', external_wp_blockEditor_namespaceObject.Autocomplete);
- const AlignmentToolbar = deprecateComponent('AlignmentToolbar', external_wp_blockEditor_namespaceObject.AlignmentToolbar);
- const BlockAlignmentToolbar = deprecateComponent('BlockAlignmentToolbar', external_wp_blockEditor_namespaceObject.BlockAlignmentToolbar);
- const BlockControls = deprecateComponent('BlockControls', external_wp_blockEditor_namespaceObject.BlockControls, ['Slot']);
- const BlockEdit = deprecateComponent('BlockEdit', external_wp_blockEditor_namespaceObject.BlockEdit);
- const BlockEditorKeyboardShortcuts = deprecateComponent('BlockEditorKeyboardShortcuts', external_wp_blockEditor_namespaceObject.BlockEditorKeyboardShortcuts);
- const BlockFormatControls = deprecateComponent('BlockFormatControls', external_wp_blockEditor_namespaceObject.BlockFormatControls, ['Slot']);
- const BlockIcon = deprecateComponent('BlockIcon', external_wp_blockEditor_namespaceObject.BlockIcon);
- const BlockInspector = deprecateComponent('BlockInspector', external_wp_blockEditor_namespaceObject.BlockInspector);
- const BlockList = deprecateComponent('BlockList', external_wp_blockEditor_namespaceObject.BlockList);
- const BlockMover = deprecateComponent('BlockMover', external_wp_blockEditor_namespaceObject.BlockMover);
- const BlockNavigationDropdown = deprecateComponent('BlockNavigationDropdown', external_wp_blockEditor_namespaceObject.BlockNavigationDropdown);
- const BlockSelectionClearer = deprecateComponent('BlockSelectionClearer', external_wp_blockEditor_namespaceObject.BlockSelectionClearer);
- const BlockSettingsMenu = deprecateComponent('BlockSettingsMenu', external_wp_blockEditor_namespaceObject.BlockSettingsMenu);
- const BlockTitle = deprecateComponent('BlockTitle', external_wp_blockEditor_namespaceObject.BlockTitle);
- const BlockToolbar = deprecateComponent('BlockToolbar', external_wp_blockEditor_namespaceObject.BlockToolbar);
- const ColorPalette = deprecateComponent('ColorPalette', external_wp_blockEditor_namespaceObject.ColorPalette);
- const ContrastChecker = deprecateComponent('ContrastChecker', external_wp_blockEditor_namespaceObject.ContrastChecker);
- const CopyHandler = deprecateComponent('CopyHandler', external_wp_blockEditor_namespaceObject.CopyHandler);
- const DefaultBlockAppender = deprecateComponent('DefaultBlockAppender', external_wp_blockEditor_namespaceObject.DefaultBlockAppender);
- const FontSizePicker = deprecateComponent('FontSizePicker', external_wp_blockEditor_namespaceObject.FontSizePicker);
- const Inserter = deprecateComponent('Inserter', external_wp_blockEditor_namespaceObject.Inserter);
- const InnerBlocks = deprecateComponent('InnerBlocks', external_wp_blockEditor_namespaceObject.InnerBlocks, ['ButtonBlockAppender', 'DefaultBlockAppender', 'Content']);
- const InspectorAdvancedControls = deprecateComponent('InspectorAdvancedControls', external_wp_blockEditor_namespaceObject.InspectorAdvancedControls, ['Slot']);
- const InspectorControls = deprecateComponent('InspectorControls', external_wp_blockEditor_namespaceObject.InspectorControls, ['Slot']);
- const PanelColorSettings = deprecateComponent('PanelColorSettings', external_wp_blockEditor_namespaceObject.PanelColorSettings);
- const PlainText = deprecateComponent('PlainText', external_wp_blockEditor_namespaceObject.PlainText);
- const RichTextShortcut = deprecateComponent('RichTextShortcut', external_wp_blockEditor_namespaceObject.RichTextShortcut);
- const RichTextToolbarButton = deprecateComponent('RichTextToolbarButton', external_wp_blockEditor_namespaceObject.RichTextToolbarButton);
- const __unstableRichTextInputEvent = deprecateComponent('__unstableRichTextInputEvent', external_wp_blockEditor_namespaceObject.__unstableRichTextInputEvent);
- const MediaPlaceholder = deprecateComponent('MediaPlaceholder', external_wp_blockEditor_namespaceObject.MediaPlaceholder);
- const MediaUpload = deprecateComponent('MediaUpload', external_wp_blockEditor_namespaceObject.MediaUpload);
- const MediaUploadCheck = deprecateComponent('MediaUploadCheck', external_wp_blockEditor_namespaceObject.MediaUploadCheck);
- const MultiSelectScrollIntoView = deprecateComponent('MultiSelectScrollIntoView', external_wp_blockEditor_namespaceObject.MultiSelectScrollIntoView);
- const NavigableToolbar = deprecateComponent('NavigableToolbar', external_wp_blockEditor_namespaceObject.NavigableToolbar);
- const ObserveTyping = deprecateComponent('ObserveTyping', external_wp_blockEditor_namespaceObject.ObserveTyping);
- const SkipToSelectedBlock = deprecateComponent('SkipToSelectedBlock', external_wp_blockEditor_namespaceObject.SkipToSelectedBlock);
- const URLInput = deprecateComponent('URLInput', external_wp_blockEditor_namespaceObject.URLInput);
- const URLInputButton = deprecateComponent('URLInputButton', external_wp_blockEditor_namespaceObject.URLInputButton);
- const URLPopover = deprecateComponent('URLPopover', external_wp_blockEditor_namespaceObject.URLPopover);
- const Warning = deprecateComponent('Warning', external_wp_blockEditor_namespaceObject.Warning);
- const WritingFlow = deprecateComponent('WritingFlow', external_wp_blockEditor_namespaceObject.WritingFlow);
- const createCustomColorsHOC = deprecateFunction('createCustomColorsHOC', external_wp_blockEditor_namespaceObject.createCustomColorsHOC);
- const getColorClassName = deprecateFunction('getColorClassName', external_wp_blockEditor_namespaceObject.getColorClassName);
- const getColorObjectByAttributeValues = deprecateFunction('getColorObjectByAttributeValues', external_wp_blockEditor_namespaceObject.getColorObjectByAttributeValues);
- const getColorObjectByColorValue = deprecateFunction('getColorObjectByColorValue', external_wp_blockEditor_namespaceObject.getColorObjectByColorValue);
- const getFontSize = deprecateFunction('getFontSize', external_wp_blockEditor_namespaceObject.getFontSize);
- const getFontSizeClass = deprecateFunction('getFontSizeClass', external_wp_blockEditor_namespaceObject.getFontSizeClass);
- const withColorContext = deprecateFunction('withColorContext', external_wp_blockEditor_namespaceObject.withColorContext);
- const withColors = deprecateFunction('withColors', external_wp_blockEditor_namespaceObject.withColors);
- const withFontSizes = deprecateFunction('withFontSizes', external_wp_blockEditor_namespaceObject.withFontSizes);
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/index.js
- // Block Creation Components.
- // Post Related Components.
- // State Related Components.
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/url.js
- /**
- * WordPress dependencies
- */
- /**
- * Performs some basic cleanup of a string for use as a post slug
- *
- * This replicates some of what sanitize_title() does in WordPress core, but
- * is only designed to approximate what the slug will be.
- *
- * Converts Latin-1 Supplement and Latin Extended-A letters to basic Latin letters.
- * Removes combining diacritical marks. Converts whitespace, periods,
- * and forward slashes to hyphens. Removes any remaining non-word characters
- * except hyphens and underscores. Converts remaining string to lowercase.
- * It does not account for octets, HTML entities, or other encoded characters.
- *
- * @param {string} string Title or slug to be processed
- *
- * @return {string} Processed string
- */
- function cleanForSlug(string) {
- external_wp_deprecated_default()('wp.editor.cleanForSlug', {
- since: '12.7',
- plugin: 'Gutenberg',
- alternative: 'wp.url.cleanForSlug'
- });
- return (0,external_wp_url_namespaceObject.cleanForSlug)(string);
- }
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/index.js
- /**
- * Internal dependencies
- */
- ;// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/index.js
- /**
- * Internal dependencies
- */
- /*
- * Backward compatibility
- */
- }();
- (window.wp = window.wp || {}).editor = __webpack_exports__;
- /******/ })()
- ;
|