@hrforte/react-pivottable 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/PivotTableUI.jsx"],"names":["AGG_KEY_RADIX","AGG_KEY_OFFSET","AGG_KEY_LENGTH","DraggableAttribute","props","state","open","filterText","value","valueFilter","removeValuesFromFilter","name","addValuesToFilter","x","toLowerCase","trim","includes","e","stopPropagation","setValuesInFilter","Object","keys","attrValues","filter","y","showMenu","length","menuLimit","values","shown","matchesFilter","bind","sort","sorter","display","cursor","zIndex","moveFilterBoxToTop","setState","target","map","toggleValue","selectOnly","filtered","toggleFilterBox","getFilterBox","React","Component","defaultProps","propTypes","PropTypes","string","isRequired","func","objectOf","number","bool","Dropdown","toggle","current","r","setValue","PureComponent","ConditionalFormattingUI","tableOptions","conditionalFormatting","rules","currentTableOptions","assign","onChange","$set","cf","getConditionalFormatting","newRule","condition","type","style","backgroundColor","updateConditionalFormatting","slice","concat","index","newRules","_","i","field","startsWith","conditionField","replace","newCondition","styleField","newStyle","moveToTop","conditionTypes","label","needsValue","marginTop","minWidth","position","fontStyle","color","rule","border","padding","marginBottom","justifyContent","removeRule","fontSize","newType","width","ct","val","numVal","isNaN","parseFloat","updateRule","fontWeight","addRule","object","CellFormattingUI","cellFormatting","getCellFormatting","format","thousandsSep","decimalSep","decimalPlaces","prefix","suffix","updateCellFormatting","formatField","newFormat","parseInt","alignItems","showOriginal","checked","marginRight","PivotTableUI","unusedOrder","zIndices","maxZIndex","openDropdown","materializedInput","materializeInput","data","nextData","newState","recordsProcessed","PivotData","forEachRecord","derivedAttributes","record","push","attr","null","command","key","sendPropUpdate","Array","isArray","aggregations","fallbackAggregator","aggregatorName","aggregators","fallbackVals","vals","aggregationsProvided","hasExternalAggregations","defaultAggregations","source","agg","idx","baseVals","defaultValsForAggregator","instance","numInputs","hiddenAttributes","hiddenFromAggregators","currentVals","required","numInputsForAggregator","options","getAttributeOptions","next","timestamp","Date","now","toString","randomPart","Math","random","nextAggregations","sanitized","primary","getCurrentAggregations","updateAggregations","valIndex","mode","allowedModes","normalizedMode","aggregationDisplayMode","defaultAggregator","generateAggregationKey","splice","attribute","reduce","v","$unset","sortDir","colSorts","rowSorts","dropdown","items","classes","group","ghostClass","preventOnFilter","sorters","primaryAggregation","aggregatorCellOutlet","outlet","rendererName","renderers","rendererCell","isOpen","propUpdater","sortIcons","key_a_to_z","rowSymbol","colSymbol","value_a_to_z","value_z_to_a","attributeOptions","aggregatorCell","aggDropdownKey","numValsAllowed","setAggregationAggregator","fill","n","valDropdownKey","setAggregationVal","removeAggregationRow","setAggregationDisplayMode","addAggregationRow","rowOrder","colOrder","unusedAttrs","rows","cols","hiddenFromDragDrop","unusedLength","horizUnused","unusedOrientationCutoff","unusedAttrsCell","makeDnDCell","order","colAttrs","colAttrsCell","rowAttrs","rowAttrsCell","outputCell","handleColSort","handleRowSort","PivotTable","arrayOf","oneOf"],"mappings":";;;;;;;;;;;AAAA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;AACA;;;;AACA;;;;;;;;;;;;;;AAEA,IAAMA,gBAAgB,EAAtB;AACA,IAAMC,iBAAiB,CAAvB;AACA,IAAMC,iBAAiB,CAAvB;;AAEA;AACA;;IAEaC,kB,WAAAA,kB;;;AACX,8BAAYC,KAAZ,EAAmB;AAAA;;AAAA,wIACXA,KADW;;AAEjB,UAAKC,KAAL,GAAa,EAACC,MAAM,KAAP,EAAcC,YAAY,EAA1B,EAAb;AAFiB;AAGlB;;;;gCAEWC,K,EAAO;AACjB,UAAIA,SAAS,KAAKJ,KAAL,CAAWK,WAAxB,EAAqC;AACnC,aAAKL,KAAL,CAAWM,sBAAX,CAAkC,KAAKN,KAAL,CAAWO,IAA7C,EAAmD,CAACH,KAAD,CAAnD;AACD,OAFD,MAEO;AACL,aAAKJ,KAAL,CAAWQ,iBAAX,CAA6B,KAAKR,KAAL,CAAWO,IAAxC,EAA8C,CAACH,KAAD,CAA9C;AACD;AACF;;;kCAEaK,C,EAAG;AACf,aAAOA,EACJC,WADI,GAEJC,IAFI,GAGJC,QAHI,CAGK,KAAKX,KAAL,CAAWE,UAAX,CAAsBO,WAAtB,GAAoCC,IAApC,EAHL,CAAP;AAID;;;+BAEUE,C,EAAGT,K,EAAO;AACnBS,QAAEC,eAAF;AACA,WAAKd,KAAL,CAAWe,iBAAX,CACE,KAAKf,KAAL,CAAWO,IADb,EAEES,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWkB,UAAvB,EAAmCC,MAAnC,CAA0C;AAAA,eAAKC,MAAMhB,KAAX;AAAA,OAA1C,CAFF;AAID;;;mCAEc;AAAA;;AACb,UAAMiB,WACJL,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWkB,UAAvB,EAAmCI,MAAnC,GAA4C,KAAKtB,KAAL,CAAWuB,SADzD;;AAGA,UAAMC,SAASR,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWkB,UAAvB,CAAf;AACA,UAAMO,QAAQD,OACXL,MADW,CACJ,KAAKO,aAAL,CAAmBC,IAAnB,CAAwB,IAAxB,CADI,EAEXC,IAFW,CAEN,KAAK5B,KAAL,CAAW6B,MAFL,CAAd;;AAIA,aACE;AAAC,gCAAD;AAAA,UAAW,QAAO,gBAAlB;AACE;AAAA;AAAA;AACE,uBAAU,cADZ;AAEE,mBAAO;AACLC,uBAAS,OADJ;AAELC,sBAAQ,SAFH;AAGLC,sBAAQ,KAAKhC,KAAL,CAAWgC;AAHd,aAFT;AAOE,qBAAS;AAAA,qBAAM,OAAKhC,KAAL,CAAWiC,kBAAX,CAA8B,OAAKjC,KAAL,CAAWO,IAAzC,CAAN;AAAA;AAPX;AASE;AAAA;AAAA,cAAG,SAAS;AAAA,uBAAM,OAAK2B,QAAL,CAAc,EAAChC,MAAM,KAAP,EAAd,CAAN;AAAA,eAAZ,EAAgD,WAAU,WAA1D;AAAA;AAAA,WATF;AAYE;AAAA;AAAA,cAAM,WAAU,eAAhB;AAAA;AAAA,WAZF;AAaE;AAAA;AAAA;AAAK,iBAAKF,KAAL,CAAWO;AAAhB,WAbF;AAeGc,sBAAY;AAAA;AAAA;AAAA;AAAA,WAff;AAiBGA,sBACC;AAAA;AAAA;AACE;AACE,oBAAK,MADP;AAEE,2BAAY,eAFd;AAGE,yBAAU,WAHZ;AAIE,qBAAO,KAAKpB,KAAL,CAAWE,UAJpB;AAKE,wBAAU;AAAA,uBACR,OAAK+B,QAAL,CAAc;AACZ/B,8BAAYU,EAAEsB,MAAF,CAAS/B;AADT,iBAAd,CADQ;AAAA;AALZ,cADF;AAYE,qDAZF;AAaE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,WAFZ;AAGE,yBAAS;AAAA,yBACP,OAAKJ,KAAL,CAAWM,sBAAX,CACE,OAAKN,KAAL,CAAWO,IADb,EAEES,OAAOC,IAAP,CAAY,OAAKjB,KAAL,CAAWkB,UAAvB,EAAmCC,MAAnC,CACE,OAAKO,aAAL,CAAmBC,IAAnB,CAAwB,MAAxB,CADF,CAFF,CADO;AAAA;AAHX;AAAA;AAYUH,qBAAOF,MAAP,KAAkBG,MAAMH,MAAxB,GAAiC,KAAjC,GAAyCG,MAAMH;AAZzD,aAbF;AA0BO,eA1BP;AA2BE;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,WAFZ;AAGE,yBAAS;AAAA,yBACP,OAAKtB,KAAL,CAAWQ,iBAAX,CACE,OAAKR,KAAL,CAAWO,IADb,EAEES,OAAOC,IAAP,CAAY,OAAKjB,KAAL,CAAWkB,UAAvB,EAAmCC,MAAnC,CACE,OAAKO,aAAL,CAAmBC,IAAnB,CAAwB,MAAxB,CADF,CAFF,CADO;AAAA;AAHX;AAAA;AAYYH,qBAAOF,MAAP,KAAkBG,MAAMH,MAAxB,GAAiC,KAAjC,GAAyCG,MAAMH;AAZ3D;AA3BF,WAlBJ;AA8DGD,sBACC;AAAA;AAAA,cAAK,WAAU,mBAAf;AACGI,kBAAMW,GAAN,CAAU;AAAA,qBACT;AAAA;AAAA;AACE,uBAAK3B,CADP;AAEE,2BAAS;AAAA,2BAAM,OAAK4B,WAAL,CAAiB5B,CAAjB,CAAN;AAAA,mBAFX;AAGE,6BAAWA,KAAK,OAAKT,KAAL,CAAWK,WAAhB,GAA8B,EAA9B,GAAmC;AAHhD;AAKE;AAAA;AAAA,oBAAG,WAAU,SAAb,EAAuB,SAAS;AAAA,6BAAK,OAAKiC,UAAL,CAAgBzB,CAAhB,EAAmBJ,CAAnB,CAAL;AAAA,qBAAhC;AAAA;AAAA,iBALF;AAQE;AAAA;AAAA,oBAAG,WAAU,eAAb;AAAA;AAAA,iBARF;AAUGA,sBAAM,EAAN,GAAW;AAAA;AAAA;AAAA;AAAA,iBAAX,GAA2BA;AAV9B,eADS;AAAA,aAAV;AADH;AA/DJ;AADF,OADF;AAqFD;;;sCAEiB;AAChB,WAAKyB,QAAL,CAAc,EAAChC,MAAM,CAAC,KAAKD,KAAL,CAAWC,IAAnB,EAAd;AACA,WAAKF,KAAL,CAAWiC,kBAAX,CAA8B,KAAKjC,KAAL,CAAWO,IAAzC;AACD;;;6BAEQ;AACP,UAAMgC,WACJvB,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWK,WAAvB,EAAoCiB,MAApC,KAA+C,CAA/C,GACI,sBADJ,GAEI,EAHN;AAIA,aACE;AAAA;AAAA,UAAI,WAAS,KAAKtB,KAAL,CAAWO,IAAxB;AACE;AAAA;AAAA,YAAM,WAAW,aAAagC,QAA9B;AACG,eAAKvC,KAAL,CAAWO,IADd;AAEE;AAAA;AAAA;AACE,yBAAU,aADZ;AAEE,uBAAS,KAAKiC,eAAL,CAAqBb,IAArB,CAA0B,IAA1B;AAFX;AAIG,eAJH;AAAA;AAAA;AAFF,SADF;AAYG,aAAK1B,KAAL,CAAWC,IAAX,GAAkB,KAAKuC,YAAL,EAAlB,GAAwC;AAZ3C,OADF;AAgBD;;;;EAvJqCC,gBAAMC,S;;AA0J9C5C,mBAAmB6C,YAAnB,GAAkC;AAChCvC,eAAa;AADmB,CAAlC;;AAIAN,mBAAmB8C,SAAnB,GAA+B;AAC7BtC,QAAMuC,oBAAUC,MAAV,CAAiBC,UADM;AAE7BxC,qBAAmBsC,oBAAUG,IAAV,CAAeD,UAFL;AAG7B1C,0BAAwBwC,oBAAUG,IAAV,CAAeD,UAHV;AAI7B9B,cAAY4B,oBAAUI,QAAV,CAAmBJ,oBAAUK,MAA7B,EAAqCH,UAJpB;AAK7B3C,eAAayC,oBAAUI,QAAV,CAAmBJ,oBAAUM,IAA7B,CALgB;AAM7BnB,sBAAoBa,oBAAUG,IAAV,CAAeD,UANN;AAO7BnB,UAAQiB,oBAAUG,IAAV,CAAeD,UAPM;AAQ7BzB,aAAWuB,oBAAUK,MARQ;AAS7BnB,UAAQc,oBAAUK;AATW,CAA/B;;IAYaE,Q,WAAAA,Q;;;;;;;;;;;6BACF;AAAA;;AACP,aACE;AAAA;AAAA,UAAK,WAAU,aAAf,EAA6B,OAAO,EAACrB,QAAQ,KAAKhC,KAAL,CAAWgC,MAApB,EAApC;AACE;AAAA;AAAA;AACE,qBAAS,oBAAK;AACZnB,gBAAEC,eAAF;AACA,qBAAKd,KAAL,CAAWsD,MAAX;AACD,aAJH;AAKE,uBACE,0CACC,KAAKtD,KAAL,CAAWE,IAAX,GAAkB,wBAAlB,GAA6C,EAD9C,CANJ;AASE,kBAAK;AATP;AAWE;AAAA;AAAA,cAAK,WAAU,iBAAf;AAAkC,iBAAKF,KAAL,CAAWE,IAAX,GAAkB,GAAlB,GAAwB;AAA1D,WAXF;AAYG,eAAKF,KAAL,CAAWuD,OAAX,IAAsB;AAAA;AAAA;AAAA;AAAA;AAZzB,SADF;AAgBG,aAAKvD,KAAL,CAAWE,IAAX,IACC;AAAA;AAAA,YAAK,WAAU,iBAAf;AACG,eAAKF,KAAL,CAAWwB,MAAX,CAAkBY,GAAlB,CAAsB;AAAA,mBACrB;AAAA;AAAA;AACE,qBAAKoB,CADP;AAEE,sBAAK,QAFP;AAGE,yBAAS,oBAAK;AACZ3C,oBAAEC,eAAF;AACA,sBAAI,OAAKd,KAAL,CAAWuD,OAAX,KAAuBC,CAA3B,EAA8B;AAC5B,2BAAKxD,KAAL,CAAWsD,MAAX;AACD,mBAFD,MAEO;AACL,2BAAKtD,KAAL,CAAWyD,QAAX,CAAoBD,CAApB;AACD;AACF,iBAVH;AAWE,2BACE,uBACCA,MAAM,OAAKxD,KAAL,CAAWuD,OAAjB,GAA2B,wBAA3B,GAAsD,EADvD;AAZJ;AAgBGC;AAhBH,aADqB;AAAA,WAAtB;AADH;AAjBJ,OADF;AA2CD;;;;EA7C2Bd,gBAAMgB,a;;IAgDvBC,uB,WAAAA,uB;;;AACX,mCAAY3D,KAAZ,EAAmB;AAAA;;AAAA,mJACXA,KADW;;AAEjB,WAAKC,KAAL,GAAa;AACXC,YAAM;AADK,KAAb;AAFiB;AAKlB;;;;+CAE0B;AACzB,UAAM0D,eAAe,KAAK5D,KAAL,CAAW4D,YAAX,IAA2B,EAAhD;AACA,aAAOA,aAAaC,qBAAb,GACHD,aAAaC,qBADV,GAEH,EAACC,OAAO,EAAR,EAFJ;AAGD;;;gDAE2BD,qB,EAAuB;AACjD,UAAME,sBAAsB,KAAK/D,KAAL,CAAW4D,YAAX,IAA2B,EAAvD;AACA,UAAMA,eAAe5C,OAAOgD,MAAP,CAAc,EAAd,EAAkBD,mBAAlB,EAAuC;AAC1DF;AAD0D,OAAvC,CAArB;AAGA,WAAK7D,KAAL,CAAWiE,QAAX,CAAoB;AAClBL,sBAAc,EAACM,MAAMN,YAAP;AADI,OAApB;AAGD;;;8BAES;AACR,UAAMO,KAAK,KAAKC,wBAAL,EAAX;AACA,UAAMC,UAAU;AACdC,mBAAW;AACTC,gBAAM,aADG;AAETnE,iBAAO;AAFE,SADG;AAKdoE,eAAO;AACLC,2BAAiB;AADZ;AALO,OAAhB;AASA,WAAKC,2BAAL,CAAiC;AAC/BZ,eAAOK,GAAGL,KAAH,CAASa,KAAT,GAAiBC,MAAjB,CAAwB,CAACP,OAAD,CAAxB;AADwB,OAAjC;AAGD;;;+BAEUQ,K,EAAO;AAChB,UAAMV,KAAK,KAAKC,wBAAL,EAAX;AACA,UAAMU,WAAWX,GAAGL,KAAH,CAAS3C,MAAT,CAAgB,UAAC4D,CAAD,EAAIC,CAAJ;AAAA,eAAUA,MAAMH,KAAhB;AAAA,OAAhB,CAAjB;AACA,WAAKH,2BAAL,CAAiC;AAC/BZ,eAAOgB;AADwB,OAAjC;AAGD;;;+BAEUD,K,EAAOI,K,EAAO7E,K,EAAO;AAC9B,UAAM+D,KAAK,KAAKC,wBAAL,EAAX;AACA,UAAMU,WAAWX,GAAGL,KAAH,CAASa,KAAT,EAAjB;AACA,UAAIM,MAAMC,UAAN,CAAiB,YAAjB,CAAJ,EAAoC;AAClC,YAAMC,iBAAiBF,MAAMG,OAAN,CAAc,YAAd,EAA4B,EAA5B,CAAvB;AACA,YAAMC,eAAerE,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,EAAgBP,SAAlC,CAArB;AACA,YAAIlE,UAAU,IAAd,EAAoB;AAClB,iBAAOiF,aAAaF,cAAb,CAAP;AACD,SAFD,MAEO;AACLE,uBAAaF,cAAb,IAA+B/E,KAA/B;AACD;AACD0E,iBAASD,KAAT,IAAkB7D,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,CAAlB,EAAmC;AACnDP,qBAAWe;AADwC,SAAnC,CAAlB;AAGD,OAXD,MAWO,IAAIJ,MAAMC,UAAN,CAAiB,QAAjB,CAAJ,EAAgC;AACrC,YAAMI,aAAaL,MAAMG,OAAN,CAAc,QAAd,EAAwB,EAAxB,CAAnB;AACA,YAAMG,WAAWvE,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,EAAgBL,KAAhB,IAAyB,EAA3C,CAAjB;AACA,YAAIpE,UAAU,IAAV,IAAkBA,UAAU,EAAhC,EAAoC;AAClC,iBAAOmF,SAASD,UAAT,CAAP;AACD,SAFD,MAEO;AACLC,mBAASD,UAAT,IAAuBlF,KAAvB;AACD;AACD0E,iBAASD,KAAT,IAAkB7D,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,CAAlB,EAAmC;AACnDL,iBAAOe;AAD4C,SAAnC,CAAlB;AAGD;AACD,WAAKb,2BAAL,CAAiC;AAC/BZ,eAAOgB;AADwB,OAAjC;AAGD;;;6BAEQ;AACP,WAAK5C,QAAL,CAAc,EAAChC,MAAM,CAAC,KAAKD,KAAL,CAAWC,IAAnB,EAAd;AACA,UAAI,KAAKF,KAAL,CAAWwF,SAAf,EAA0B;AACxB,aAAKxF,KAAL,CAAWwF,SAAX;AACD;AACF;;;6BAEQ;AAAA;;AACP,UAAMrB,KAAK,KAAKC,wBAAL,EAAX;AACA,UAAMqB,iBAAiB,CACrB,EAACrF,OAAO,aAAR,EAAuBsF,OAAO,cAA9B,EADqB,EAErB,EAACtF,OAAO,UAAR,EAAoBsF,OAAO,WAA3B,EAFqB,EAGrB,EAACtF,OAAO,oBAAR,EAA8BsF,OAAO,uBAArC,EAHqB,EAIrB,EAACtF,OAAO,iBAAR,EAA2BsF,OAAO,oBAAlC,EAJqB,EAKrB,EAACtF,OAAO,OAAR,EAAiBsF,OAAO,OAAxB,EALqB,EAMrB,EAACtF,OAAO,UAAR,EAAoBsF,OAAO,WAA3B,EANqB,EAOrB,EAACtF,OAAO,OAAR,EAAiBsF,OAAO,OAAxB,EAPqB,EAQrB,EAACtF,OAAO,UAAR,EAAoBsF,OAAO,WAA3B,EARqB,EASrB,EAACtF,OAAO,UAAR,EAAoBsF,OAAO,UAA3B,EATqB,EAUrB,EAACtF,OAAO,aAAR,EAAuBsF,OAAO,cAA9B,EAVqB,CAAvB;;AAaA,UAAMC,aAAa,SAAbA,UAAa,OAAQ;AACzB,eAAO,CAAC,CAAC,OAAD,EAAU,UAAV,EAAsB/E,QAAtB,CAA+B2D,IAA/B,CAAR;AACD,OAFD;;AAIA,aACE;AAAA;AAAA;AACE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,WAFZ;AAGE,qBAAS,oBAAK;AACZ1D,gBAAEC,eAAF;AACA,qBAAKwC,MAAL;AACD,aANH;AAOE,mBAAO,EAACsC,WAAW,KAAZ;AAPT;AASG,eAAK3F,KAAL,CAAWC,IAAX,GAAkB,GAAlB,GAAwB,GAT3B;AAAA;AAAA,SADF;AAaG,aAAKD,KAAL,CAAWC,IAAX,IACC;AAAA;AAAA;AACE,uBAAU,cADZ;AAEE,mBAAO;AACL4B,uBAAS,OADJ;AAELC,sBAAQ,SAFH;AAGLC,sBAAQ,KAAKhC,KAAL,CAAWgC,MAHd;AAIL4D,yBAAW,KAJN;AAKLC,wBAAU,OALL;AAMLC,wBAAU;AANL,aAFT;AAUE,qBAAS;AAAA,qBAAM,OAAK9F,KAAL,CAAWwF,SAAX,IAAwB,OAAKxF,KAAL,CAAWwF,SAAX,EAA9B;AAAA;AAVX;AAYE;AAAA;AAAA;AACE,uBAAS;AAAA,uBAAM,OAAKtD,QAAL,CAAc,EAAChC,MAAM,KAAP,EAAd,CAAN;AAAA,eADX;AAEE,yBAAU;AAFZ;AAAA;AAAA,WAZF;AAkBE;AAAA;AAAA;AAAA;AAAA,WAlBF;AAoBGiE,aAAGL,KAAH,CAASxC,MAAT,KAAoB,CAApB,IACC;AAAA;AAAA,cAAG,OAAO,EAACyE,WAAW,QAAZ,EAAsBC,OAAO,MAA7B,EAAV;AAAA;AAAA,WArBJ;AA2BG7B,aAAGL,KAAH,CAAS1B,GAAT,CAAa,UAAC6D,IAAD,EAAOpB,KAAP;AAAA,mBACZ;AAAA;AAAA;AACE,qBAAKA,KADP;AAEE,uBAAO;AACLqB,0BAAQ,mBADH;AAELC,2BAAS,MAFJ;AAGLC,gCAAc,MAHT;AAIL3B,mCAAiB;AAJZ;AAFT;AASE;AAAA;AAAA;AACE,yBAAO;AACL3C,6BAAS,MADJ;AAELuE,oCAAgB,eAFX;AAGLD,kCAAc;AAHT;AADT;AAOE;AAAA;AAAA;AAAA;AAAcvB,0BAAQ;AAAtB,iBAPF;AAQE;AAAA;AAAA;AACE,0BAAK,QADP;AAEE,+BAAU,WAFZ;AAGE,6BAAS,oBAAK;AACZhE,wBAAEC,eAAF;AACA,6BAAKwF,UAAL,CAAgBzB,KAAhB;AACD,qBANH;AAOE,2BAAO,EAAC0B,UAAU,MAAX,EAAmBJ,SAAS,SAA5B;AAPT;AAAA;AAAA;AARF,eATF;AA8BE;AAAA;AAAA;AACE,yBAAO,EAACC,cAAc,KAAf,EADT;AAEE,2BAAS;AAAA,2BAAKvF,EAAEC,eAAF,EAAL;AAAA,mBAFX;AAGE,+BAAa;AAAA,2BAAKD,EAAEC,eAAF,EAAL;AAAA;AAHf;AAKE;AAAA;AAAA;AACE,2BAAO;AACLgB,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBALF;AAcE;AAAA;AAAA;AACE,2BAAON,KAAK3B,SAAL,CAAeC,IAAf,IAAuB,aADhC;AAEE,8BAAU,qBAAK;AACb1D,wBAAEC,eAAF;AACA,0BAAM0F,UAAU3F,EAAEsB,MAAF,CAAS/B,KAAzB;AACA,0BAAM+D,KAAK,OAAKC,wBAAL,EAAX;AACA,0BAAMU,WAAWX,GAAGL,KAAH,CAASa,KAAT,EAAjB;AACA,0BAAMU,eAAerE,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,EAAgBP,SAAlC,EAA6C;AAChEC,8BAAMiC;AAD0D,uBAA7C,CAArB;AAGA;AACA,0BAAI,CAACb,WAAWa,OAAX,CAAL,EAA0B;AACxB,+BAAOnB,aAAajF,KAApB;AACD;AACD0E,+BAASD,KAAT,IAAkB7D,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,CAAlB,EAAmC;AACnDP,mCAAWe;AADwC,uBAAnC,CAAlB;AAGA,6BAAKX,2BAAL,CAAiC;AAC/BZ,+BAAOgB;AADwB,uBAAjC;AAGD,qBApBH;AAqBE,2BAAO,EAAC2B,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AArBT;AAuBGV,iCAAerD,GAAf,CAAmB;AAAA,2BAClB;AAAA;AAAA,wBAAQ,KAAKsE,GAAGtG,KAAhB,EAAuB,OAAOsG,GAAGtG,KAAjC;AACGsG,yBAAGhB;AADN,qBADkB;AAAA,mBAAnB;AAvBH;AAdF,eA9BF;AA2EGC,yBAAWM,KAAK3B,SAAL,CAAeC,IAA1B,KACC;AAAA;AAAA,kBAAK,OAAO,EAAC6B,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,MADP;AAEE,yBACE,OAAON,KAAK3B,SAAL,CAAelE,KAAtB,KAAgC,WAAhC,IACA6F,KAAK3B,SAAL,CAAelE,KAAf,KAAyB,IADzB,GAEI6F,KAAK3B,SAAL,CAAelE,KAFnB,GAGI,EANR;AAQE,4BAAU,qBAAK;AACbS,sBAAEC,eAAF;AACA,wBAAM6F,MAAM9F,EAAEsB,MAAF,CAAS/B,KAArB;AACA;AACA,wBAAMwG,SACJD,QAAQ,EAAR,GACI,IADJ,GAEIE,MAAMF,GAAN,IACAA,GADA,GAEAG,WAAWH,GAAX,CALN;AAMA,2BAAKI,UAAL,CAAgBlC,KAAhB,EAAuB,iBAAvB,EAA0C+B,MAA1C;AACD,mBAnBH;AAoBE,+BAAY,aApBd;AAqBE,yBAAO,EAACH,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AArBT;AAVF,eA5EJ;AAgHE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,OADP;AAEE,yBACEN,KAAKzB,KAAL,IAAcyB,KAAKzB,KAAL,CAAWC,eAAzB,GACIwB,KAAKzB,KAAL,CAAWC,eADf,GAEI,SALR;AAOE,4BAAU,qBAAK;AACb5D,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CACElC,KADF,EAEE,uBAFF,EAGEhE,EAAEsB,MAAF,CAAS/B,KAHX;AAKD,mBAdH;AAeE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAfT;AAVF,eAhHF;AA6IE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,OADP;AAEE,yBACEN,KAAKzB,KAAL,IAAcyB,KAAKzB,KAAL,CAAWwB,KAAzB,GACIC,KAAKzB,KAAL,CAAWwB,KADf,GAEI,SALR;AAOE,4BAAU,qBAAK;AACbnF,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CAAgBlC,KAAhB,EAAuB,aAAvB,EAAsChE,EAAEsB,MAAF,CAAS/B,KAA/C;AACD,mBAVH;AAWE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAXT;AAVF,eA7IF;AAsKE;AAAA;AAAA;AACE,yBAAO,EAACC,cAAc,KAAf,EADT;AAEE,2BAAS;AAAA,2BAAKvF,EAAEC,eAAF,EAAL;AAAA,mBAFX;AAGE,+BAAa;AAAA,2BAAKD,EAAEC,eAAF,EAAL;AAAA;AAHf;AAKE;AAAA;AAAA;AACE,2BAAO;AACLgB,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBALF;AAcE;AAAA;AAAA;AACE,2BACEN,KAAKzB,KAAL,IAAcyB,KAAKzB,KAAL,CAAWwC,UAAzB,GACIf,KAAKzB,KAAL,CAAWwC,UADf,GAEI,EAJR;AAME,8BAAU,qBAAK;AACbnG,wBAAEC,eAAF;AACA,6BAAKiG,UAAL,CACElC,KADF,EAEE,kBAFF,EAGEhE,EAAEsB,MAAF,CAAS/B,KAAT,IAAkB,IAHpB;AAKD,qBAbH;AAcE,2BAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAdT;AAgBE;AAAA;AAAA,sBAAQ,OAAM,EAAd;AAAA;AAAA,mBAhBF;AAiBE;AAAA;AAAA,sBAAQ,OAAM,MAAd;AAAA;AAAA,mBAjBF;AAkBE;AAAA;AAAA,sBAAQ,OAAM,SAAd;AAAA;AAAA;AAlBF;AAdF,eAtKF;AA0ME;AAAA;AAAA;AACE,yBAAO,EAACC,cAAc,KAAf,EADT;AAEE,2BAAS;AAAA,2BAAKvF,EAAEC,eAAF,EAAL;AAAA,mBAFX;AAGE,+BAAa;AAAA,2BAAKD,EAAEC,eAAF,EAAL;AAAA;AAHf;AAKE;AAAA;AAAA;AACE,2BAAO;AACLgB,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBALF;AAcE;AAAA;AAAA;AACE,2BACEN,KAAKzB,KAAL,IAAcyB,KAAKzB,KAAL,CAAWuB,SAAzB,GACIE,KAAKzB,KAAL,CAAWuB,SADf,GAEI,EAJR;AAME,8BAAU,qBAAK;AACblF,wBAAEC,eAAF;AACA,6BAAKiG,UAAL,CACElC,KADF,EAEE,iBAFF,EAGEhE,EAAEsB,MAAF,CAAS/B,KAAT,IAAkB,IAHpB;AAKD,qBAbH;AAcE,2BAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAdT;AAgBE;AAAA;AAAA,sBAAQ,OAAM,EAAd;AAAA;AAAA,mBAhBF;AAiBE;AAAA;AAAA,sBAAQ,OAAM,QAAd;AAAA;AAAA,mBAjBF;AAkBE;AAAA;AAAA,sBAAQ,OAAM,SAAd;AAAA;AAAA;AAlBF;AAdF;AA1MF,aADY;AAAA,WAAb,CA3BH;AA4QE;AAAA;AAAA;AACE,oBAAK,QADP;AAEE,yBAAU,WAFZ;AAGE,uBAAS,oBAAK;AACZtF,kBAAEC,eAAF;AACA,uBAAKmG,OAAL;AACD,eANH;AAOE,qBAAO,EAACR,OAAO,MAAR,EAAgBb,WAAW,MAA3B;AAPT;AAAA;AAAA;AA5QF;AAdJ,OADF;AA0SD;;;;EApZ0ClD,gBAAMC,S;;AAuZnDgB,wBAAwBd,SAAxB,GAAoC;AAClCe,gBAAcd,oBAAUoE,MADU;AAElCjD,YAAUnB,oBAAUG,IAAV,CAAeD,UAFS;AAGlCwC,aAAW1C,oBAAUG,IAHa;AAIlCjB,UAAQc,oBAAUK;AAJgB,CAApC;;AAOAQ,wBAAwBf,YAAxB,GAAuC;AACrCgB,gBAAc,EADuB;AAErC4B,aAAW,qBAAM,CAAE,CAFkB;AAGrCxD,UAAQ;AAH6B,CAAvC;;IAMamF,gB,WAAAA,gB;;;AACX,4BAAYnH,KAAZ,EAAmB;AAAA;;AAAA,qIACXA,KADW;;AAEjB,WAAKC,KAAL,GAAa;AACXC,YAAM;AADK,KAAb;AAFiB;AAKlB;;;;wCAEmB;AAClB,UAAM0D,eAAe,KAAK5D,KAAL,CAAW4D,YAAX,IAA2B,EAAhD;AACA,aAAOA,aAAawD,cAAb,GACHxD,aAAawD,cADV,GAEH,EAACtD,OAAO,EAAR,EAFJ;AAGD;;;yCAEoBsD,c,EAAgB;AACnC,UAAMrD,sBAAsB,KAAK/D,KAAL,CAAW4D,YAAX,IAA2B,EAAvD;AACA,UAAMA,eAAe5C,OAAOgD,MAAP,CAAc,EAAd,EAAkBD,mBAAlB,EAAuC;AAC1DqD;AAD0D,OAAvC,CAArB;AAGA,WAAKpH,KAAL,CAAWiE,QAAX,CAAoB;AAClBL,sBAAc,EAACM,MAAMN,YAAP;AADI,OAApB;AAGD;;;8BAES;AACR,UAAMO,KAAK,KAAKkD,iBAAL,EAAX;AACA,UAAMhD,UAAU;AACdiD,gBAAQ;AACNC,wBAAc,GADR;AAENC,sBAAY,GAFN;AAGNC,yBAAe,CAHT;AAINC,kBAAQ,EAJF;AAKNC,kBAAQ;AALF;AADM,OAAhB;AASA,WAAKC,oBAAL,CAA0B;AACxB9D,eAAOK,GAAGL,KAAH,CAASa,KAAT,GAAiBC,MAAjB,CAAwB,CAACP,OAAD,CAAxB;AADiB,OAA1B;AAGD;;;+BAEUQ,K,EAAO;AAChB,UAAMV,KAAK,KAAKkD,iBAAL,EAAX;AACA,UAAMvC,WAAWX,GAAGL,KAAH,CAAS3C,MAAT,CAAgB,UAAC4D,CAAD,EAAIC,CAAJ;AAAA,eAAUA,MAAMH,KAAhB;AAAA,OAAhB,CAAjB;AACA,WAAK+C,oBAAL,CAA0B;AACxB9D,eAAOgB;AADiB,OAA1B;AAGD;;;+BAEUD,K,EAAOI,K,EAAO7E,K,EAAO;AAC9B,UAAM+D,KAAK,KAAKkD,iBAAL,EAAX;AACA,UAAMvC,WAAWX,GAAGL,KAAH,CAASa,KAAT,EAAjB;AACA,UAAIM,MAAMC,UAAN,CAAiB,SAAjB,CAAJ,EAAiC;AAC/B,YAAM2C,cAAc5C,MAAMG,OAAN,CAAc,SAAd,EAAyB,EAAzB,CAApB;AACA,YAAM0C,YAAY9G,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,EAAgByC,MAAhB,IAA0B,EAA5C,CAAlB;AACA,YAAIlH,UAAU,IAAV,IAAkBA,UAAU,EAAhC,EAAoC;AAClC,iBAAO0H,UAAUD,WAAV,CAAP;AACD,SAFD,MAEO;AACLC,oBAAUD,WAAV,IAAyBzH,KAAzB;AACD;AACD0E,iBAASD,KAAT,IAAkB7D,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,CAAlB,EAAmC;AACnDyC,kBAAQQ;AAD2C,SAAnC,CAAlB;AAGD,OAXD,MAWO;AACLhD,iBAASD,KAAT,IAAkB7D,OAAOgD,MAAP,CAAc,EAAd,EAAkBc,SAASD,KAAT,CAAlB,sBACfI,KADe,EACP7E,KADO,EAAlB;AAGD;AACD,WAAKwH,oBAAL,CAA0B;AACxB9D,eAAOgB;AADiB,OAA1B;AAGD;;;6BAEQ;AACP,WAAK5C,QAAL,CAAc,EAAChC,MAAM,CAAC,KAAKD,KAAL,CAAWC,IAAnB,EAAd;AACA,UAAI,KAAKF,KAAL,CAAWwF,SAAf,EAA0B;AACxB,aAAKxF,KAAL,CAAWwF,SAAX;AACD;AACF;;;6BAEQ;AAAA;;AACP,UAAMrB,KAAK,KAAKkD,iBAAL,EAAX;;AAEA,aACE;AAAA;AAAA;AACE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,WAFZ;AAGE,qBAAS,oBAAK;AACZxG,gBAAEC,eAAF;AACA,qBAAKwC,MAAL;AACD,aANH;AAOE,mBAAO,EAACsC,WAAW,KAAZ;AAPT;AASG,eAAK3F,KAAL,CAAWC,IAAX,GAAkB,GAAlB,GAAwB,GAT3B;AAAA;AAAA,SADF;AAaG,aAAKD,KAAL,CAAWC,IAAX,IACC;AAAA;AAAA;AACE,uBAAU,cADZ;AAEE,mBAAO;AACL4B,uBAAS,OADJ;AAELC,sBAAQ,SAFH;AAGLC,sBAAQ,KAAKhC,KAAL,CAAWgC,MAHd;AAIL4D,yBAAW,KAJN;AAKLC,wBAAU,OALL;AAMLC,wBAAU;AANL,aAFT;AAUE,qBAAS;AAAA,qBAAM,OAAK9F,KAAL,CAAWwF,SAAX,IAAwB,OAAKxF,KAAL,CAAWwF,SAAX,EAA9B;AAAA;AAVX;AAYE;AAAA;AAAA;AACE,uBAAS;AAAA,uBAAM,OAAKtD,QAAL,CAAc,EAAChC,MAAM,KAAP,EAAd,CAAN;AAAA,eADX;AAEE,yBAAU;AAFZ;AAAA;AAAA,WAZF;AAkBE;AAAA;AAAA;AAAA;AAAA,WAlBF;AAoBGiE,aAAGL,KAAH,CAASxC,MAAT,KAAoB,CAApB,IACC;AAAA;AAAA,cAAG,OAAO,EAACyE,WAAW,QAAZ,EAAsBC,OAAO,MAA7B,EAAV;AAAA;AAAA,WArBJ;AA0BG7B,aAAGL,KAAH,CAAS1B,GAAT,CAAa,UAAC6D,IAAD,EAAOpB,KAAP;AAAA,mBACZ;AAAA;AAAA;AACE,qBAAKA,KADP;AAEE,uBAAO;AACLqB,0BAAQ,mBADH;AAELC,2BAAS,MAFJ;AAGLC,gCAAc,MAHT;AAIL3B,mCAAiB;AAJZ;AAFT;AASE;AAAA;AAAA;AACE,yBAAO;AACL3C,6BAAS,MADJ;AAELuE,oCAAgB,eAFX;AAGLD,kCAAc;AAHT;AADT;AAOE;AAAA;AAAA;AAAA;AAAcvB,0BAAQ;AAAtB,iBAPF;AAQE;AAAA;AAAA;AACE,0BAAK,QADP;AAEE,+BAAU,WAFZ;AAGE,6BAAS,oBAAK;AACZhE,wBAAEC,eAAF;AACA,6BAAKwF,UAAL,CAAgBzB,KAAhB;AACD,qBANH;AAOE,2BAAO,EAAC0B,UAAU,MAAX,EAAmBJ,SAAS,SAA5B;AAPT;AAAA;AAAA;AARF,eATF;AA8BE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,MADP;AAEE,yBACEN,KAAKqB,MAAL,IAAe,kBAAkBrB,KAAKqB,MAAtC,GACIrB,KAAKqB,MAAL,CAAYC,YADhB,GAEI,EALR;AAOE,4BAAU,qBAAK;AACb1G,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CACElC,KADF,EAEE,qBAFF,EAGEhE,EAAEsB,MAAF,CAAS/B,KAHX;AAKD,mBAdH;AAeE,+BAAY,GAfd;AAgBE,6BAAU,GAhBZ;AAiBE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAjBT;AAVF,eA9BF;AA6DE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,MADP;AAEE,yBACEN,KAAKqB,MAAL,IAAe,gBAAgBrB,KAAKqB,MAApC,GACIrB,KAAKqB,MAAL,CAAYE,UADhB,GAEI,GALR;AAOE,4BAAU,qBAAK;AACb3G,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CACElC,KADF,EAEE,mBAFF,EAGEhE,EAAEsB,MAAF,CAAS/B,KAHX;AAKD,mBAdH;AAeE,+BAAY,GAfd;AAgBE,6BAAU,GAhBZ;AAiBE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAjBT;AAVF,eA7DF;AA4FE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,QADP;AAEE,uBAAI,GAFN;AAGE,uBAAI,GAHN;AAIE,yBACEN,KAAKqB,MAAL,IAAe,mBAAmBrB,KAAKqB,MAAvC,GACIrB,KAAKqB,MAAL,CAAYG,aADhB,GAEI,CAPR;AASE,4BAAU,qBAAK;AACb5G,sBAAEC,eAAF;AACA,wBAAM6F,MAAMoB,SAASlH,EAAEsB,MAAF,CAAS/B,KAAlB,EAAyB,EAAzB,CAAZ;AACA,2BAAK2G,UAAL,CACElC,KADF,EAEE,sBAFF,EAGEgC,MAAMF,GAAN,IAAa,CAAb,GAAiBA,GAHnB;AAKD,mBAjBH;AAkBE,+BAAY,GAlBd;AAmBE,yBAAO,EAACF,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAnBT;AAVF,eA5FF;AA6HE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,MADP;AAEE,yBACEN,KAAKqB,MAAL,IAAe,YAAYrB,KAAKqB,MAAhC,GACIrB,KAAKqB,MAAL,CAAYI,MADhB,GAEI,EALR;AAOE,4BAAU,qBAAK;AACb7G,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CAAgBlC,KAAhB,EAAuB,eAAvB,EAAwChE,EAAEsB,MAAF,CAAS/B,KAAjD;AACD,mBAVH;AAWE,+BAAY,EAXd;AAYE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAZT;AAVF,eA7HF;AAuJE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,OADJ;AAELsE,oCAAc,KAFT;AAGLG,gCAAU;AAHL;AADT;AAAA;AAAA,iBADF;AAUE;AACE,wBAAK,MADP;AAEE,yBACEN,KAAKqB,MAAL,IAAe,YAAYrB,KAAKqB,MAAhC,GACIrB,KAAKqB,MAAL,CAAYK,MADhB,GAEI,EALR;AAOE,4BAAU,qBAAK;AACb9G,sBAAEC,eAAF;AACA,2BAAKiG,UAAL,CAAgBlC,KAAhB,EAAuB,eAAvB,EAAwChE,EAAEsB,MAAF,CAAS/B,KAAjD;AACD,mBAVH;AAWE,+BAAY,EAXd;AAYE,yBAAO,EAACqG,OAAO,MAAR,EAAgBN,SAAS,KAAzB;AAZT;AAVF,eAvJF;AAiLE;AAAA;AAAA,kBAAK,OAAO,EAACC,cAAc,KAAf,EAAZ;AACE;AAAA;AAAA;AACE,2BAAO;AACLtE,+BAAS,MADJ;AAELkG,kCAAY,QAFP;AAGL5B,oCAAc,KAHT;AAILG,gCAAU;AAJL;AADT;AAQE;AACE,0BAAK,UADP;AAEE,6BACEN,KAAKqB,MAAL,IAAe,kBAAkBrB,KAAKqB,MAAtC,GACIrB,KAAKqB,MAAL,CAAYW,YADhB,GAEI,KALR;AAOE,8BAAU,qBAAK;AACbpH,wBAAEC,eAAF;AACA,6BAAKiG,UAAL,CACElC,KADF,EAEE,qBAFF,EAGEhE,EAAEsB,MAAF,CAAS+F,OAHX;AAKD,qBAdH;AAeE,2BAAO,EAACC,aAAa,KAAd;AAfT,oBARF;AAAA;AAAA;AADF;AAjLF,aADY;AAAA,WAAb,CA1BH;AA4OE;AAAA;AAAA;AACE,oBAAK,QADP;AAEE,yBAAU,WAFZ;AAGE,uBAAS,oBAAK;AACZtH,kBAAEC,eAAF;AACA,uBAAKmG,OAAL;AACD,eANH;AAOE,qBAAO,EAACR,OAAO,MAAR,EAAgBb,WAAW,MAA3B;AAPT;AAAA;AAAA;AA5OF;AAdJ,OADF;AA0QD;;;;EA7VmClD,gBAAMC,S;;AAgW5CwE,iBAAiBtE,SAAjB,GAA6B;AAC3Be,gBAAcd,oBAAUoE,MADG;AAE3BjD,YAAUnB,oBAAUG,IAAV,CAAeD,UAFE;AAG3BwC,aAAW1C,oBAAUG,IAHM;AAI3BjB,UAAQc,oBAAUK;AAJS,CAA7B;;AAOAgE,iBAAiBvE,YAAjB,GAAgC;AAC9BgB,gBAAc,EADgB;AAE9B4B,aAAW,qBAAM,CAAE,CAFW;AAG9BxD,UAAQ;AAHsB,CAAhC;;IAMMoG,Y;;;AACJ,wBAAYpI,KAAZ,EAAmB;AAAA;;AAAA,6HACXA,KADW;;AAEjB,WAAKC,KAAL,GAAa;AACXoI,mBAAa,EADF;AAEXC,gBAAU,EAFC;AAGXC,iBAAW,IAHA;AAIXC,oBAAc,KAJH;AAKXtH,kBAAY,EALD;AAMXuH,yBAAmB;AANR,KAAb;AAFiB;AAUlB;;;;wCAEmB;AAClB,WAAKC,gBAAL,CAAsB,KAAK1I,KAAL,CAAW2I,IAAjC;AACD;;;yCAEoB;AACnB,WAAKD,gBAAL,CAAsB,KAAK1I,KAAL,CAAW2I,IAAjC;AACD;;;qCAEgBC,Q,EAAU;AACzB,UAAI,KAAK3I,KAAL,CAAW0I,IAAX,KAAoBC,QAAxB,EAAkC;AAChC;AACD;AACD,UAAMC,WAAW;AACfF,cAAMC,QADS;AAEf1H,oBAAY,EAFG;AAGfuH,2BAAmB;AAHJ,OAAjB;AAKA,UAAIK,mBAAmB,CAAvB;AACAC,2BAAUC,aAAV,CACEH,SAASF,IADX,EAEE,KAAK3I,KAAL,CAAWiJ,iBAFb,EAGE,UAASC,MAAT,EAAiB;AACfL,iBAASJ,iBAAT,CAA2BU,IAA3B,CAAgCD,MAAhC;AADe;AAAA;AAAA;;AAAA;AAEf,+BAAmBlI,OAAOC,IAAP,CAAYiI,MAAZ,CAAnB,8HAAwC;AAAA,gBAA7BE,IAA6B;;AACtC,gBAAI,EAAEA,QAAQP,SAAS3H,UAAnB,CAAJ,EAAoC;AAClC2H,uBAAS3H,UAAT,CAAoBkI,IAApB,IAA4B,EAA5B;AACA,kBAAIN,mBAAmB,CAAvB,EAA0B;AACxBD,yBAAS3H,UAAT,CAAoBkI,IAApB,EAA0BC,IAA1B,GAAiCP,gBAAjC;AACD;AACF;AACF;AATc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAUf,aAAK,IAAMM,KAAX,IAAmBP,SAAS3H,UAA5B,EAAwC;AACtC,cAAMd,QAAQgJ,SAAQF,MAAR,GAAiBA,OAAOE,KAAP,CAAjB,GAAgC,MAA9C;AACA,cAAI,EAAEhJ,SAASyI,SAAS3H,UAAT,CAAoBkI,KAApB,CAAX,CAAJ,EAA2C;AACzCP,qBAAS3H,UAAT,CAAoBkI,KAApB,EAA0BhJ,KAA1B,IAAmC,CAAnC;AACD;AACDyI,mBAAS3H,UAAT,CAAoBkI,KAApB,EAA0BhJ,KAA1B;AACD;AACD0I;AACD,OArBH;AAuBA,WAAK5G,QAAL,CAAc2G,QAAd;AACD;;;mCAEcS,O,EAAS;AACtB,WAAKtJ,KAAL,CAAWiE,QAAX,CAAoB,kCAAO,KAAKjE,KAAZ,EAAmBsJ,OAAnB,CAApB;AACD;;;gCAEWC,G,EAAK;AAAA;;AACf,aAAO;AAAA,eAAS,QAAKC,cAAL,qBAAsBD,GAAtB,EAA4B,EAACrF,MAAM9D,KAAP,EAA5B,EAAT;AAAA,OAAP;AACD;;;8CAEyB;AACxB,aAAOqJ,MAAMC,OAAN,CAAc,KAAK1J,KAAL,CAAW2J,YAAzB,CAAP;AACD;;;6CAEwB;AAAA;;AACvB,UAAMC,qBACJ,KAAK5J,KAAL,CAAW6J,cAAX,IAA6B7I,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAW8J,WAAvB,EAAoC,CAApC,CAD/B;AAEA,UAAMC,eAAeN,MAAMC,OAAN,CAAc,KAAK1J,KAAL,CAAWgK,IAAzB,IACjB,KAAKhK,KAAL,CAAWgK,IAAX,CAAgBrF,KAAhB,EADiB,GAEjB,EAFJ;AAGA,UAAMsF,uBAAuB,KAAKC,uBAAL,EAA7B;AACA,UAAMC,sBAAsB,CAC1B;AACEZ,aAAK,aADP;AAEEM,wBAAgBD,kBAFlB;AAGEI,cAAMD;AAHR,OAD0B,CAA5B;AAOA,UAAMK,SAASH,uBACX,KAAKjK,KAAL,CAAW2J,YADA,GAEXQ,mBAFJ;AAGA,aAAOC,OAAOhI,GAAP,CAAW,UAACiI,GAAD,EAAMC,GAAN,EAAc;AAC9B,YAAMT,iBAAiBQ,IAAIR,cAAJ,IAAsBD,kBAA7C;AACA,YAAMW,WAAWd,MAAMC,OAAN,CAAcW,IAAIL,IAAlB,IACbK,IAAIL,IAAJ,CAASrF,KAAT,EADa,GAEbsF,uBACA,EADA,GAEAF,YAJJ;AAKA,eAAO;AACLR,eAAKc,IAAId,GAAJ,aAAkBe,GADlB;AAELT,wCAFK;AAGLG,gBAAM,QAAKQ,wBAAL,CAA8BX,cAA9B,EAA8CU,QAA9C;AAHD,SAAP;AAKD,OAZM,CAAP;AAaD;;;2CAEsBhK,I,EAAM;AAC3B,UAAI,CAACA,IAAD,IAAS,EAAEA,QAAQ,KAAKP,KAAL,CAAW8J,WAArB,CAAb,EAAgD;AAC9C,eAAO,CAAP;AACD;AACD,UAAMW,WAAW,KAAKzK,KAAL,CAAW8J,WAAX,CAAuBvJ,IAAvB,EAA6B,EAA7B,GAAjB;AACA,aAAOkK,SAASC,SAAT,IAAsB,CAA7B;AACD;;;0CAEqB;AAAA;;AACpB,aAAO1J,OAAOC,IAAP,CAAY,KAAKhB,KAAL,CAAWiB,UAAvB,EAAmCC,MAAnC,CACL;AAAA,eACE,CAAC,QAAKnB,KAAL,CAAW2K,gBAAX,CAA4B/J,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,QAAKb,KAAL,CAAW4K,qBAAX,CAAiChK,QAAjC,CAA0CC,CAA1C,CAFH;AAAA,OADK,CAAP;AAKD;;;6CAEwBN,I,EAAwB;AAAA,UAAlBsK,WAAkB,uEAAJ,EAAI;;AAC/C,UAAMC,WAAW,KAAKC,sBAAL,CAA4BxK,IAA5B,CAAjB;AACA,UAAIuK,aAAa,CAAjB,EAAoB;AAClB,eAAO,EAAP;AACD;AACD,UAAME,UAAU,KAAKC,mBAAL,EAAhB;AACA,UAAMC,OAAOL,YAAYlG,KAAZ,CAAkB,CAAlB,EAAqBmG,QAArB,CAAb;AACA,WAAK,IAAI9F,IAAI,CAAb,EAAgBA,IAAI8F,QAApB,EAA8B9F,GAA9B,EAAmC;AACjC,YAAI,CAACkG,KAAKlG,CAAL,CAAL,EAAc;AACZkG,eAAKlG,CAAL,IAAUgG,QAAQhG,IAAIgG,QAAQ1J,MAApB,KAA+B,IAAzC;AACD;AACF;AACD,aAAO4J,IAAP;AACD;;;6CAEwB;AACvB,UAAMC,YAAYC,KAAKC,GAAL,GAAWC,QAAX,CAAoB1L,aAApB,CAAlB;AACA,UAAM2L,aAAaC,KAAKC,MAAL,GAChBH,QADgB,CACP1L,aADO,EAEhB+E,KAFgB,CAEV9E,cAFU,EAEMA,iBAAiBC,cAFvB,CAAnB;AAGA,sBAAcqL,SAAd,SAA2BI,UAA3B;AACD;;;uCAEkBG,gB,EAAkB;AAAA;;AACnC,UAAI,CAACA,iBAAiBpK,MAAtB,EAA8B;AAC5B;AACD;AACD,UAAMsI,qBACJ,KAAK5J,KAAL,CAAW6J,cAAX,IAA6B7I,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAW8J,WAAvB,EAAoC,CAApC,CAD/B;AAEA,UAAM6B,YAAYD,iBAAiBtJ,GAAjB,CAAqB,UAACiI,GAAD,EAAMC,GAAN,EAAc;AACnD,YAAMT,iBAAiBQ,IAAIR,cAAJ,IAAsBD,kBAA7C;AACA,eAAO;AACLL,eAAKc,IAAId,GAAJ,aAAkBe,GADlB;AAELT,wCAFK;AAGLG,gBAAM,QAAKQ,wBAAL,CACJX,cADI,EAEJJ,MAAMC,OAAN,CAAcW,IAAIL,IAAlB,IAA0BK,IAAIL,IAAJ,CAASrF,KAAT,EAA1B,GAA6C,EAFzC;AAHD,SAAP;AAQD,OAViB,CAAlB;AAWA,UAAMiH,UAAUD,UAAU,CAAV,CAAhB;AACA,UAAMrC,UAAU;AACdK,sBAAc,EAACzF,MAAMyH,SAAP;AADA,OAAhB;AAGA,UAAI,CAAC,KAAKzB,uBAAL,EAAL,EAAqC;AACnCZ,gBAAQO,cAAR,GAAyB,EAAC3F,MAAM0H,QAAQ/B,cAAf,EAAzB;AACAP,gBAAQU,IAAR,GAAe,EAAC9F,MAAM0H,QAAQ5B,IAAf,EAAf;AACD;AACD,WAAKR,cAAL,CAAoBF,OAApB;AACD;;;6CAEwBzE,K,EAAOgF,c,EAAgB;AAC9C,UAAMF,eAAe,KAAKkC,sBAAL,EAArB;AACA,UAAMX,OAAOlK,OAAOgD,MAAP,CAAc,EAAd,EAAkB2F,aAAa9E,KAAb,CAAlB,EAAuC;AAClDgF;AADkD,OAAvC,CAAb;AAGAqB,WAAKlB,IAAL,GAAY,KAAKQ,wBAAL,CAA8BX,cAA9B,EAA8CqB,KAAKlB,IAAnD,CAAZ;AACAL,mBAAa9E,KAAb,IAAsBqG,IAAtB;AACA,WAAKY,kBAAL,CAAwBnC,YAAxB;AACD;;;sCAEiB9E,K,EAAOkH,Q,EAAU3L,K,EAAO;AACxC,UAAMuJ,eAAe,KAAKkC,sBAAL,EAArB;AACA,UAAMX,OAAOlK,OAAOgD,MAAP,CAAc,EAAd,EAAkB2F,aAAa9E,KAAb,CAAlB,CAAb;AACA,UAAMmF,OAAOP,MAAMC,OAAN,CAAcwB,KAAKlB,IAAnB,IAA2BkB,KAAKlB,IAAL,CAAUrF,KAAV,EAA3B,GAA+C,EAA5D;AACAqF,WAAK+B,QAAL,IAAiB3L,KAAjB;AACA8K,WAAKlB,IAAL,GAAYA,IAAZ;AACAL,mBAAa9E,KAAb,IAAsBqG,IAAtB;AACA,WAAKY,kBAAL,CAAwBnC,YAAxB;AACD;;;8CAEyBqC,I,EAAM;AAC9B,UAAMC,eAAe,CAAC,KAAD,EAAQ,QAAR,CAArB;AACA,UAAMC,iBAAiBD,aAAarL,QAAb,CAAsBoL,IAAtB,IAA8BA,IAA9B,GAAqC,KAA5D;AACA,UAAMpI,eAAe5C,OAAOgD,MAAP,CAAc,EAAd,EAAkB,KAAKhE,KAAL,CAAW4D,YAAX,IAA2B,EAA7C,EAAiD;AACpEuI,gCAAwBD;AAD4C,OAAjD,CAArB;AAGA,WAAK1C,cAAL,CAAoB;AAClB5F,sBAAc,EAACM,MAAMN,YAAP;AADI,OAApB;AAGD;;;wCAEmB;AAClB,UAAM+F,eAAe,KAAKkC,sBAAL,EAArB;AACA,UAAMO,oBACJ,KAAKpM,KAAL,CAAW6J,cAAX,IAA6B7I,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAW8J,WAAvB,EAAoC,CAApC,CAD/B;AAEA,UAAMP,MAAM,KAAK8C,sBAAL,EAAZ;AACA1C,mBAAaR,IAAb,CAAkB;AAChBI,gBADgB;AAEhBM,wBAAgBuC,iBAFA;AAGhBpC,cAAM,KAAKQ,wBAAL,CAA8B4B,iBAA9B;AAHU,OAAlB;AAKA,WAAKN,kBAAL,CAAwBnC,YAAxB;AACD;;;yCAEoB9E,K,EAAO;AAC1B,UAAM8E,eAAe,KAAKkC,sBAAL,EAArB;AACA,UAAIlC,aAAarI,MAAb,KAAwB,CAA5B,EAA+B;AAC7B;AACD;AACDqI,mBAAa2C,MAAb,CAAoBzH,KAApB,EAA2B,CAA3B;AACA,WAAKiH,kBAAL,CAAwBnC,YAAxB;AACD;;;sCAEiB4C,S,EAAW/K,M,EAAQ;AACnC,WAAKgI,cAAL,CAAoB;AAClBnJ,yCACGkM,SADH,EACe;AACXrI,gBAAM1C,OAAOgL,MAAP,CAAc,UAAChJ,CAAD,EAAIiJ,CAAJ,EAAU;AAC5BjJ,cAAEiJ,CAAF,IAAO,IAAP;AACA,mBAAOjJ,CAAP;AACD,WAHK,EAGH,EAHG;AADK,SADf;AADkB,OAApB;AAUD;;;sCAEiB+I,S,EAAW/K,M,EAAQ;AACnC,UAAI+K,aAAa,KAAKvM,KAAL,CAAWK,WAA5B,EAAyC;AACvC,aAAKmJ,cAAL,CAAoB;AAClBnJ,2CACGkM,SADH,EACe/K,OAAOgL,MAAP,CAAc,UAAChJ,CAAD,EAAIiJ,CAAJ,EAAU;AACnCjJ,cAAEiJ,CAAF,IAAO,EAACvI,MAAM,IAAP,EAAP;AACA,mBAAOV,CAAP;AACD,WAHY,EAGV,EAHU,CADf;AADkB,SAApB;AAQD,OATD,MASO;AACL,aAAKzC,iBAAL,CAAuBwL,SAAvB,EAAkC/K,MAAlC;AACD;AACF;;;2CAEsB+K,S,EAAW/K,M,EAAQ;AACxC,WAAKgI,cAAL,CAAoB;AAClBnJ,yCAAekM,SAAf,EAA2B,EAACG,QAAQlL,MAAT,EAA3B;AADkB,OAApB;AAGD;;;uCAEkB+K,S,EAAW;AAC5B,WAAKrK,QAAL,CACE,kCAAO,KAAKjC,KAAZ,EAAmB;AACjBsI,mBAAW,EAACrE,MAAM,KAAKjE,KAAL,CAAWsI,SAAX,GAAuB,CAA9B,EADM;AAEjBD,sCAAYiE,SAAZ,EAAwB,EAACrI,MAAM,KAAKjE,KAAL,CAAWsI,SAAX,GAAuB,CAA9B,EAAxB;AAFiB,OAAnB,CADF;AAMD;;;kCAEaa,I,EAAMuD,O,EAAS;AAC3B;AACA,UAAMC,WAAW,EAAjB;AACA,UAAID,YAAY,IAAhB,EAAsB;AACpBC,iBAASxD,IAAT,IAAiBuD,OAAjB;AACD;AACD,WAAKnD,cAAL,CAAoB,EAACoD,UAAU,EAAC1I,MAAM0I,QAAP,EAAX,EAApB;AACD;;;kCAEaxD,I,EAAMuD,O,EAAS;AAC3B;AACA,UAAME,WAAW,EAAjB;AACA,UAAIF,YAAY,IAAhB,EAAsB;AACpBE,iBAASzD,IAAT,IAAiBuD,OAAjB;AACD;AACD,WAAKnD,cAAL,CAAoB,EAACqD,UAAU,EAAC3I,MAAM2I,QAAP,EAAX,EAApB;AACD;;;2BAEMC,Q,EAAU;AACf,aAAO,KAAK7M,KAAL,CAAWuI,YAAX,KAA4BsE,QAAnC;AACD;;;gCAEWC,K,EAAO9I,Q,EAAU+I,O,EAAS;AAAA;;AACpC,aACE;AAAC,iCAAD;AAAA;AACE,mBAAS;AACPC,mBAAO,QADA;AAEPC,wBAAY,gBAFL;AAGP/L,oBAAQ,eAHD;AAIPgM,6BAAiB;AAJV,WADX;AAOE,eAAI,IAPN;AAQE,qBAAWH,OARb;AASE,oBAAU/I;AATZ;AAWG8I,cAAM3K,GAAN,CAAU;AAAA,iBACT,8BAAC,kBAAD;AACE,kBAAM3B,CADR;AAEE,iBAAKA,CAFP;AAGE,wBAAY,QAAKR,KAAL,CAAWiB,UAAX,CAAsBT,CAAtB,CAHd;AAIE,yBAAa,QAAKT,KAAL,CAAWK,WAAX,CAAuBI,CAAvB,KAA6B,EAJ5C;AAKE,oBAAQ,wBAAQ,QAAKT,KAAL,CAAWoN,OAAnB,EAA4B3M,CAA5B,EAA+B,QAAKR,KAAL,CAAWiB,UAAX,CAAsBT,CAAtB,CAA/B,CALV;AAME,uBAAW,QAAKT,KAAL,CAAWuB,SANxB;AAOE,+BAAmB,QAAKR,iBAAL,CAAuBY,IAAvB,CAA4B,OAA5B,CAPrB;AAQE,+BAAmB,QAAKnB,iBAAL,CAAuBmB,IAAvB,CAA4B,OAA5B,CARrB;AASE,gCAAoB,QAAKM,kBAAL,CAAwBN,IAAxB,CAA6B,OAA7B,CATtB;AAUE,oCAAwB,QAAKrB,sBAAL,CAA4BqB,IAA5B,CAAiC,OAAjC,CAV1B;AAWE,oBAAQ,QAAK1B,KAAL,CAAWqI,QAAX,CAAoB7H,CAApB,KAA0B,QAAKR,KAAL,CAAWsI;AAX/C,YADS;AAAA,SAAV;AAXH,OADF;AA6BD;;;6BAEQ;AAAA;;AACP,UAAMoB,eAAe,KAAKkC,sBAAL,EAArB;AACA,UAAMwB,qBAAqB1D,aAAa,CAAb,CAA3B;AACA,UAAM/F,eAAe,KAAK5D,KAAL,CAAW4D,YAAX,IAA2B,EAAhD;AACA,UAAMuI,yBACJvI,aAAauI,sBAAb,KAAwC,QAAxC,GAAmD,QAAnD,GAA8D,KADhE;AAEA,UAAMmB,uBACJD,sBACA,KAAKrN,KAAL,CAAW8J,WAAX,CAAuBuD,mBAAmBxD,cAA1C,CADA,IAEA,KAAK7J,KAAL,CAAW8J,WAAX,CAAuBuD,mBAAmBxD,cAA1C,EAA0D,EAA1D,IAAgE0D,MAHlE;;AAKA,UAAMC,eACJ,KAAKxN,KAAL,CAAWwN,YAAX,IAA2B,KAAKxN,KAAL,CAAWyN,SAAtC,GACI,KAAKzN,KAAL,CAAWwN,YADf,GAEIxM,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWyN,SAAvB,EAAkC,CAAlC,CAHN;;AAKA,UAAMC,eACJ;AAAA;AAAA,UAAI,WAAU,cAAd;AACE,sCAAC,QAAD;AACE,mBAASF,YADX;AAEE,kBAAQxM,OAAOC,IAAP,CAAY,KAAKjB,KAAL,CAAWyN,SAAvB,CAFV;AAGE,gBAAM,KAAKE,MAAL,CAAY,UAAZ,CAHR;AAIE,kBAAQ,KAAKA,MAAL,CAAY,UAAZ,IAA0B,KAAK1N,KAAL,CAAWsI,SAAX,GAAuB,CAAjD,GAAqD,CAJ/D;AAKE,kBAAQ;AAAA,mBACN,QAAKrG,QAAL,CAAc;AACZsG,4BAAc,QAAKmF,MAAL,CAAY,UAAZ,IAA0B,KAA1B,GAAkC;AADpC,aAAd,CADM;AAAA,WALV;AAUE,oBAAU,KAAKC,WAAL,CAAiB,cAAjB;AAVZ;AADF,OADF;;AAiBA,UAAMC,YAAY;AAChBC,oBAAY;AACVC,qBAAW,GADD;AAEVC,qBAAW,GAFD;AAGV9C,gBAAM;AAHI,SADI;AAMhB+C,sBAAc;AACZF,qBAAW,GADC;AAEZC,qBAAW,GAFC;AAGZ9C,gBAAM;AAHM,SANE;AAWhBgD,sBAAc,EAACH,WAAW,GAAZ,EAAiBC,WAAW,GAA5B,EAAiC9C,MAAM,YAAvC;AAXE,OAAlB;;AAcA,UAAMiD,mBAAmB,KAAKlD,mBAAL,EAAzB;AACA,UAAMmD,iBACJ;AAAA;AAAA,UAAI,WAAU,SAAd;AACGzE,qBAAavH,GAAb,CAAiB,UAACiI,GAAD,EAAMC,GAAN,EAAc;AAC9B,cAAM+D,kCAAgChE,IAAId,GAApC,SAAN;AACA,cAAM+E,iBAAiB,QAAKvD,sBAAL,CACrBV,IAAIR,cADiB,CAAvB;AAGA,cAAMG,OAAO,QAAKQ,wBAAL,CACXH,IAAIR,cADO,EAEXQ,IAAIL,IAFO,CAAb;AAIA,iBACE;AAAA;AAAA,cAAK,WAAU,kBAAf,EAAkC,KAAKK,IAAId,GAAJ,IAAWe,GAAlD;AACE,0CAAC,QAAD;AACE,uBAASD,IAAIR,cADf;AAEE,sBAAQ7I,OAAOC,IAAP,CAAY,QAAKjB,KAAL,CAAW8J,WAAvB,CAFV;AAGE,oBAAM,QAAK6D,MAAL,CAAYU,cAAZ,CAHR;AAIE,sBACE,QAAKV,MAAL,CAAYU,cAAZ,IAA8B,QAAKpO,KAAL,CAAWsI,SAAX,GAAuB,CAArD,GAAyD,CAL7D;AAOE,sBAAQ;AAAA,uBACN,QAAKrG,QAAL,CAAc;AACZsG,gCAAc,QAAKmF,MAAL,CAAYU,cAAZ,IACV,KADU,GAEVA;AAHQ,iBAAd,CADM;AAAA,eAPV;AAcE,wBAAU;AAAA,uBAAS,QAAKE,wBAAL,CAA8BjE,GAA9B,EAAmClK,KAAnC,CAAT;AAAA;AAdZ,cADF;AAiBGkO,6BAAiB,CAAjB,IACC;AAAA;AAAA,gBAAK,WAAU,mBAAf;AACG,kBAAI7E,KAAJ,CAAU6E,cAAV,EAA0BE,IAA1B,GAAiCpM,GAAjC,CAAqC,UAACqM,CAAD,EAAIzJ,CAAJ,EAAU;AAC9C,oBAAM0J,kCAAgCrE,IAAId,GAApC,aAA+CvE,CAArD;AACA,uBACE,8BAAC,QAAD;AACE,oCAAgBqF,IAAId,GAApB,SAA2BvE,CAD7B;AAEE,2BAASgF,KAAKhF,CAAL,CAFX;AAGE,0BAAQmJ,gBAHV;AAIE,wBAAM,QAAKR,MAAL,CAAYe,cAAZ,CAJR;AAKE,0BACE,QAAKf,MAAL,CAAYe,cAAZ,IACI,QAAKzO,KAAL,CAAWsI,SAAX,GAAuB,CAD3B,GAEI,CARR;AAUE,0BAAQ;AAAA,2BACN,QAAKrG,QAAL,CAAc;AACZsG,oCAAc,QAAKmF,MAAL,CAAYe,cAAZ,IACV,KADU,GAEVA;AAHQ,qBAAd,CADM;AAAA,mBAVV;AAiBE,4BAAU;AAAA,2BACR,QAAKC,iBAAL,CAAuBrE,GAAvB,EAA4BtF,CAA5B,EAA+B5E,KAA/B,CADQ;AAAA;AAjBZ,kBADF;AAuBD,eAzBA;AADH,aAlBJ;AA+CGuJ,yBAAarI,MAAb,GAAsB,CAAtB,IACC;AAAA;AAAA;AACE,sBAAK,QADP;AAEE,2BAAU,+BAFZ;AAGE,yBAAS,oBAAK;AACZT,oBAAEC,eAAF;AACA,0BAAK8N,oBAAL,CAA0BtE,GAA1B;AACD;AANH;AAAA;AAAA;AAhDJ,WADF;AA8DD,SAvEA,CADH;AAyEE;AAAA;AAAA,YAAK,WAAU,0BAAf;AACE;AAAA;AAAA;AACE,uBAAQ,oBADV;AAEE,qBAAO,EAACnC,aAAa,KAAd,EAAqB5B,UAAU,MAA/B;AAFT;AAAA;AAAA,WADF;AAOE;AAAA;AAAA;AACE,kBAAG,oBADL;AAEE,qBAAO4F,sBAFT;AAGE,wBAAU;AAAA,uBAAK,QAAK0C,yBAAL,CAA+BhO,EAAEsB,MAAF,CAAS/B,KAAxC,CAAL;AAAA;AAHZ;AAKE;AAAA;AAAA,gBAAQ,OAAM,KAAd;AAAA;AAAA,aALF;AAME;AAAA;AAAA,gBAAQ,OAAM,QAAd;AAAA;AAAA;AANF;AAPF,SAzEF;AAyFE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,4BAFZ;AAGE,qBAAS,oBAAK;AACZS,gBAAEC,eAAF;AACA,sBAAKgO,iBAAL;AACD;AANH;AAAA;AAAA,SAzFF;AAmGE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,aAFZ;AAGE,qBAAS;AAAA,qBACP,QAAKlB,WAAL,CAAiB,UAAjB,EAA6BC,UAAU,QAAK7N,KAAL,CAAW+O,QAArB,EAA+B7D,IAA5D,CADO;AAAA;AAHX;AAOG2C,oBAAU,KAAK7N,KAAL,CAAW+O,QAArB,EAA+BhB;AAPlC,SAnGF;AA4GE;AAAA;AAAA;AACE,kBAAK,QADP;AAEE,uBAAU,aAFZ;AAGE,qBAAS;AAAA,qBACP,QAAKH,WAAL,CAAiB,UAAjB,EAA6BC,UAAU,QAAK7N,KAAL,CAAWgP,QAArB,EAA+B9D,IAA5D,CADO;AAAA;AAHX;AAOG2C,oBAAU,KAAK7N,KAAL,CAAWgP,QAArB,EAA+BhB;AAPlC,SA5GF;AAqHGV,gCAAwBA,qBAAqB,KAAKtN,KAAL,CAAW2I,IAAhC,CArH3B;AAsHE,sCAAC,uBAAD;AACE,wBAAc/E,YADhB;AAEE,oBAAU,KAAK4F,cAAL,CAAoB7H,IAApB,CAAyB,IAAzB,CAFZ;AAGE,qBAAW,KAAKM,kBAAL,CAAwBN,IAAxB,CACT,IADS,EAET,uBAFS,CAHb;AAOE,kBACE,KAAK1B,KAAL,CAAWqI,QAAX,CAAoBzE,qBAApB,IAA6C,KAAK5D,KAAL,CAAWsI;AAR5D,UAtHF;AAiIE,sCAAC,gBAAD;AACE,wBAAc3E,YADhB;AAEE,oBAAU,KAAK4F,cAAL,CAAoB7H,IAApB,CAAyB,IAAzB,CAFZ;AAGE,qBAAW,KAAKM,kBAAL,CAAwBN,IAAxB,CAA6B,IAA7B,EAAmC,gBAAnC,CAHb;AAIE,kBAAQ,KAAK1B,KAAL,CAAWqI,QAAX,CAAoBlB,cAApB,IAAsC,KAAKnH,KAAL,CAAWsI;AAJ3D;AAjIF,OADF;;AA2IA,UAAM0G,cAAcjO,OAAOC,IAAP,CAAY,KAAKhB,KAAL,CAAWiB,UAAvB,EACjBC,MADiB,CAEhB;AAAA,eACE,CAAC,QAAKnB,KAAL,CAAWkP,IAAX,CAAgBtO,QAAhB,CAAyBC,CAAzB,CAAD,IACA,CAAC,QAAKb,KAAL,CAAWmP,IAAX,CAAgBvO,QAAhB,CAAyBC,CAAzB,CADD,IAEA,CAAC,QAAKb,KAAL,CAAW2K,gBAAX,CAA4B/J,QAA5B,CAAqCC,CAArC,CAFD,IAGA,CAAC,QAAKb,KAAL,CAAWoP,kBAAX,CAA8BxO,QAA9B,CAAuCC,CAAvC,CAJH;AAAA,OAFgB,EAQjBe,IARiB,CAQZ,uBAAO,KAAK3B,KAAL,CAAWoI,WAAlB,CARY,CAApB;;AAUA,UAAMgH,eAAeJ,YAAYzC,MAAZ,CAAmB,UAAChJ,CAAD,EAAI3C,CAAJ;AAAA,eAAU2C,IAAI3C,EAAES,MAAhB;AAAA,OAAnB,EAA2C,CAA3C,CAArB;AACA,UAAMgO,cAAcD,eAAe,KAAKrP,KAAL,CAAWuP,uBAA9C;;AAEA,UAAMC,kBAAkB,KAAKC,WAAL,CACtBR,WADsB,EAEtB;AAAA,eAAS,QAAK/M,QAAL,CAAc,EAACmG,aAAaqH,KAAd,EAAd,CAAT;AAAA,OAFsB,mCAIpBJ,cAAc,cAAd,GAA+B,aAJX,EAAxB;;AAQA,UAAMK,WAAW,KAAK3P,KAAL,CAAWmP,IAAX,CAAgBhO,MAAhB,CACf;AAAA,eACE,CAAC,QAAKnB,KAAL,CAAW2K,gBAAX,CAA4B/J,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,QAAKb,KAAL,CAAWoP,kBAAX,CAA8BxO,QAA9B,CAAuCC,CAAvC,CAFH;AAAA,OADe,CAAjB;;AAMA,UAAM+O,eAAe,KAAKH,WAAL,CACnBE,QADmB,EAEnB,KAAK/B,WAAL,CAAiB,MAAjB,CAFmB,EAGnB,uCAHmB,CAArB;;AAMA,UAAMiC,WAAW,KAAK7P,KAAL,CAAWkP,IAAX,CAAgB/N,MAAhB,CACf;AAAA,eACE,CAAC,QAAKnB,KAAL,CAAW2K,gBAAX,CAA4B/J,QAA5B,CAAqCC,CAArC,CAAD,IACA,CAAC,QAAKb,KAAL,CAAWoP,kBAAX,CAA8BxO,QAA9B,CAAuCC,CAAvC,CAFH;AAAA,OADe,CAAjB;AAKA,UAAMiP,eAAe,KAAKL,WAAL,CACnBI,QADmB,EAEnB,KAAKjC,WAAL,CAAiB,MAAjB,CAFmB,EAGnB,sCAHmB,CAArB;AAKA,UAAMmC,aACJ;AAAA;AAAA,UAAI,WAAU,WAAd;AACE,sCAAC,oBAAD,eACM,kCAAO,KAAK/P,KAAZ,EAAmB;AACrB2I,gBAAM,EAACzE,MAAM,KAAKjE,KAAL,CAAWwI,iBAAlB;AADe,SAAnB,CADN;AAIE,oBAAU,KAAKzI,KAAL,CAAW4M,QAAX,IAAuB,EAJnC;AAKE,oBAAU,KAAK5M,KAAL,CAAW6M,QAAX,IAAuB,EALnC;AAME,qBAAW,KAAKmD,aAAL,CAAmBrO,IAAnB,CAAwB,IAAxB,CANb;AAOE,qBAAW,KAAKsO,aAAL,CAAmBtO,IAAnB,CAAwB,IAAxB;AAPb;AADF,OADF;;AAcA,UAAI2N,WAAJ,EAAiB;AACf,eACE;AAAA;AAAA,YAAO,WAAU,OAAjB;AACE;AAAA;AAAA,cAAO,SAAS;AAAA,uBAAM,QAAKpN,QAAL,CAAc,EAACsG,cAAc,KAAf,EAAd,CAAN;AAAA,eAAhB;AACE;AAAA;AAAA;AACGkF,0BADH;AAEG8B;AAFH,aADF;AAKE;AAAA;AAAA;AACGpB,4BADH;AAEGwB;AAFH,aALF;AASE;AAAA;AAAA;AACGE,0BADH;AAEGC;AAFH;AATF;AADF,SADF;AAkBD;;AAED,aACE;AAAA;AAAA,UAAO,WAAU,OAAjB;AACE;AAAA;AAAA,YAAO,SAAS;AAAA,qBAAM,QAAK7N,QAAL,CAAc,EAACsG,cAAc,KAAf,EAAd,CAAN;AAAA,aAAhB;AACE;AAAA;AAAA;AACGkF,wBADH;AAEGU,0BAFH;AAGGwB;AAHH,WADF;AAME;AAAA;AAAA;AACGJ,2BADH;AAEGM,wBAFH;AAGGC;AAHH;AANF;AADF,OADF;AAgBD;;;;EAvlBwBrN,gBAAMgB,a;;AA0lBjC0E,aAAavF,SAAb,GAAyB7B,OAAOgD,MAAP,CAAc,EAAd,EAAkBkM,qBAAWrN,SAA7B,EAAwC;AAC/DoB,YAAUnB,oBAAUG,IAAV,CAAeD,UADsC;AAE/D2H,oBAAkB7H,oBAAUqN,OAAV,CAAkBrN,oBAAUC,MAA5B,CAF6C;AAG/D6H,yBAAuB9H,oBAAUqN,OAAV,CAAkBrN,oBAAUC,MAA5B,CAHwC;AAI/DqM,sBAAoBtM,oBAAUqN,OAAV,CAAkBrN,oBAAUC,MAA5B,CAJ2C;AAK/DwM,2BAAyBzM,oBAAUK,MAL4B;AAM/D5B,aAAWuB,oBAAUK,MAN0C;AAO/DyJ,YAAU9J,oBAAUI,QAAV,CAAmBJ,oBAAUsN,KAAV,CAAgB,CAAC,KAAD,EAAQ,MAAR,CAAhB,CAAnB,CAPqD;AAQ/DvD,YAAU/J,oBAAUI,QAAV,CAAmBJ,oBAAUsN,KAAV,CAAgB,CAAC,KAAD,EAAQ,MAAR,CAAhB,CAAnB;AARqD,CAAxC,CAAzB;;AAWAhI,aAAaxF,YAAb,GAA4B5B,OAAOgD,MAAP,CAAc,EAAd,EAAkBkM,qBAAWtN,YAA7B,EAA2C;AACrE+H,oBAAkB,EADmD;AAErEC,yBAAuB,EAF8C;AAGrEwE,sBAAoB,EAHiD;AAIrEG,2BAAyB,EAJ4C;AAKrEhO,aAAW,GAL0D;AAMrEqL,YAAU,EAN2D;AAOrEC,YAAU;AAP2D,CAA3C,CAA5B;;kBAUezE,Y","file":"PivotTableUI.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport update from 'immutability-helper';\nimport {PivotData, sortAs, getSort} from './Utilities';\nimport PivotTable from './PivotTable';\nimport Sortable from 'react-sortablejs';\nimport Draggable from 'react-draggable';\n\nconst AGG_KEY_RADIX = 36;\nconst AGG_KEY_OFFSET = 2;\nconst AGG_KEY_LENGTH = 7;\n\n/* eslint-disable react/prop-types */\n// eslint can't see inherited propTypes!\n\nexport class DraggableAttribute extends React.Component {\n constructor(props) {\n super(props);\n this.state = {open: false, filterText: ''};\n }\n\n toggleValue(value) {\n if (value in this.props.valueFilter) {\n this.props.removeValuesFromFilter(this.props.name, [value]);\n } else {\n this.props.addValuesToFilter(this.props.name, [value]);\n }\n }\n\n matchesFilter(x) {\n return x\n .toLowerCase()\n .trim()\n .includes(this.state.filterText.toLowerCase().trim());\n }\n\n selectOnly(e, value) {\n e.stopPropagation();\n this.props.setValuesInFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(y => y !== value)\n );\n }\n\n getFilterBox() {\n const showMenu =\n Object.keys(this.props.attrValues).length < this.props.menuLimit;\n\n const values = Object.keys(this.props.attrValues);\n const shown = values\n .filter(this.matchesFilter.bind(this))\n .sort(this.props.sorter);\n\n return (\n <Draggable handle=\".pvtDragHandle\">\n <div\n className=\"pvtFilterBox\"\n style={{\n display: 'block',\n cursor: 'initial',\n zIndex: this.props.zIndex,\n }}\n onClick={() => this.props.moveFilterBoxToTop(this.props.name)}\n >\n <a onClick={() => this.setState({open: false})} className=\"pvtCloseX\">\n ×\n </a>\n <span className=\"pvtDragHandle\">☰</span>\n <h4>{this.props.name}</h4>\n\n {showMenu || <p>(too many values to show)</p>}\n\n {showMenu && (\n <p>\n <input\n type=\"text\"\n placeholder=\"Filter values\"\n className=\"pvtSearch\"\n value={this.state.filterText}\n onChange={e =>\n this.setState({\n filterText: e.target.value,\n })\n }\n />\n <br />\n <a\n role=\"button\"\n className=\"pvtButton\"\n onClick={() =>\n this.props.removeValuesFromFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(\n this.matchesFilter.bind(this)\n )\n )\n }\n >\n Select {values.length === shown.length ? 'All' : shown.length}\n </a>{' '}\n <a\n role=\"button\"\n className=\"pvtButton\"\n onClick={() =>\n this.props.addValuesToFilter(\n this.props.name,\n Object.keys(this.props.attrValues).filter(\n this.matchesFilter.bind(this)\n )\n )\n }\n >\n Deselect {values.length === shown.length ? 'All' : shown.length}\n </a>\n </p>\n )}\n\n {showMenu && (\n <div className=\"pvtCheckContainer\">\n {shown.map(x => (\n <p\n key={x}\n onClick={() => this.toggleValue(x)}\n className={x in this.props.valueFilter ? '' : 'selected'}\n >\n <a className=\"pvtOnly\" onClick={e => this.selectOnly(e, x)}>\n only\n </a>\n <a className=\"pvtOnlySpacer\">&nbsp;</a>\n\n {x === '' ? <em>null</em> : x}\n </p>\n ))}\n </div>\n )}\n </div>\n </Draggable>\n );\n }\n\n toggleFilterBox() {\n this.setState({open: !this.state.open});\n this.props.moveFilterBoxToTop(this.props.name);\n }\n\n render() {\n const filtered =\n Object.keys(this.props.valueFilter).length !== 0\n ? 'pvtFilteredAttribute'\n : '';\n return (\n <li data-id={this.props.name}>\n <span className={'pvtAttr ' + filtered}>\n {this.props.name}\n <span\n className=\"pvtTriangle\"\n onClick={this.toggleFilterBox.bind(this)}\n >\n {' '}\n ▾\n </span>\n </span>\n\n {this.state.open ? this.getFilterBox() : null}\n </li>\n );\n }\n}\n\nDraggableAttribute.defaultProps = {\n valueFilter: {},\n};\n\nDraggableAttribute.propTypes = {\n name: PropTypes.string.isRequired,\n addValuesToFilter: PropTypes.func.isRequired,\n removeValuesFromFilter: PropTypes.func.isRequired,\n attrValues: PropTypes.objectOf(PropTypes.number).isRequired,\n valueFilter: PropTypes.objectOf(PropTypes.bool),\n moveFilterBoxToTop: PropTypes.func.isRequired,\n sorter: PropTypes.func.isRequired,\n menuLimit: PropTypes.number,\n zIndex: PropTypes.number,\n};\n\nexport class Dropdown extends React.PureComponent {\n render() {\n return (\n <div className=\"pvtDropdown\" style={{zIndex: this.props.zIndex}}>\n <div\n onClick={e => {\n e.stopPropagation();\n this.props.toggle();\n }}\n className={\n 'pvtDropdownValue pvtDropdownCurrent ' +\n (this.props.open ? 'pvtDropdownCurrentOpen' : '')\n }\n role=\"button\"\n >\n <div className=\"pvtDropdownIcon\">{this.props.open ? '×' : '▾'}</div>\n {this.props.current || <span>&nbsp;</span>}\n </div>\n\n {this.props.open && (\n <div className=\"pvtDropdownMenu\">\n {this.props.values.map(r => (\n <div\n key={r}\n role=\"button\"\n onClick={e => {\n e.stopPropagation();\n if (this.props.current === r) {\n this.props.toggle();\n } else {\n this.props.setValue(r);\n }\n }}\n className={\n 'pvtDropdownValue ' +\n (r === this.props.current ? 'pvtDropdownActiveValue' : '')\n }\n >\n {r}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport class ConditionalFormattingUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n };\n }\n\n getConditionalFormatting() {\n const tableOptions = this.props.tableOptions || {};\n return tableOptions.conditionalFormatting\n ? tableOptions.conditionalFormatting\n : {rules: []};\n }\n\n updateConditionalFormatting(conditionalFormatting) {\n const currentTableOptions = this.props.tableOptions || {};\n const tableOptions = Object.assign({}, currentTableOptions, {\n conditionalFormatting,\n });\n this.props.onChange({\n tableOptions: {$set: tableOptions},\n });\n }\n\n addRule() {\n const cf = this.getConditionalFormatting();\n const newRule = {\n condition: {\n type: 'greaterThan',\n value: 0,\n },\n style: {\n backgroundColor: '#FFFFE0',\n },\n };\n this.updateConditionalFormatting({\n rules: cf.rules.slice().concat([newRule]),\n });\n }\n\n removeRule(index) {\n const cf = this.getConditionalFormatting();\n const newRules = cf.rules.filter((_, i) => i !== index);\n this.updateConditionalFormatting({\n rules: newRules,\n });\n }\n\n updateRule(index, field, value) {\n const cf = this.getConditionalFormatting();\n const newRules = cf.rules.slice();\n if (field.startsWith('condition.')) {\n const conditionField = field.replace('condition.', '');\n const newCondition = Object.assign({}, newRules[index].condition);\n if (value === null) {\n delete newCondition[conditionField];\n } else {\n newCondition[conditionField] = value;\n }\n newRules[index] = Object.assign({}, newRules[index], {\n condition: newCondition,\n });\n } else if (field.startsWith('style.')) {\n const styleField = field.replace('style.', '');\n const newStyle = Object.assign({}, newRules[index].style || {});\n if (value === null || value === '') {\n delete newStyle[styleField];\n } else {\n newStyle[styleField] = value;\n }\n newRules[index] = Object.assign({}, newRules[index], {\n style: newStyle,\n });\n }\n this.updateConditionalFormatting({\n rules: newRules,\n });\n }\n\n toggle() {\n this.setState({open: !this.state.open});\n if (this.props.moveToTop) {\n this.props.moveToTop();\n }\n }\n\n render() {\n const cf = this.getConditionalFormatting();\n const conditionTypes = [\n {value: 'greaterThan', label: 'Greater Than'},\n {value: 'lessThan', label: 'Less Than'},\n {value: 'greaterThanOrEqual', label: 'Greater Than Or Equal'},\n {value: 'lessThanOrEqual', label: 'Less Than Or Equal'},\n {value: 'equal', label: 'Equal'},\n {value: 'notEqual', label: 'Not Equal'},\n {value: 'empty', label: 'Empty'},\n {value: 'notEmpty', label: 'Not Empty'},\n {value: 'contains', label: 'Contains'},\n {value: 'notContains', label: 'Not Contains'},\n ];\n\n const needsValue = type => {\n return !['empty', 'notEmpty'].includes(type);\n };\n\n return (\n <div>\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.toggle();\n }}\n style={{marginTop: '5px'}}\n >\n {this.state.open ? '▼' : '▶'} Conditional Formatting\n </button>\n\n {this.state.open && (\n <div\n className=\"pvtFilterBox\"\n style={{\n display: 'block',\n cursor: 'initial',\n zIndex: this.props.zIndex,\n marginTop: '5px',\n minWidth: '400px',\n position: 'relative',\n }}\n onClick={() => this.props.moveToTop && this.props.moveToTop()}\n >\n <a\n onClick={() => this.setState({open: false})}\n className=\"pvtCloseX\"\n >\n ×\n </a>\n <h4>Conditional Formatting Rules</h4>\n\n {cf.rules.length === 0 && (\n <p style={{fontStyle: 'italic', color: '#666'}}>\n No rules defined. Add a rule to format cells based on\n conditions.\n </p>\n )}\n\n {cf.rules.map((rule, index) => (\n <div\n key={index}\n style={{\n border: '1px solid #c8d4e3',\n padding: '10px',\n marginBottom: '10px',\n backgroundColor: '#f9f9f9',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: '8px',\n }}\n >\n <strong>Rule {index + 1}</strong>\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.removeRule(index);\n }}\n style={{fontSize: '10px', padding: '2px 6px'}}\n >\n Remove\n </button>\n </div>\n\n <div\n style={{marginBottom: '8px'}}\n onClick={e => e.stopPropagation()}\n onMouseDown={e => e.stopPropagation()}\n >\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Condition Type:\n </label>\n <select\n value={rule.condition.type || 'greaterThan'}\n onChange={e => {\n e.stopPropagation();\n const newType = e.target.value;\n const cf = this.getConditionalFormatting();\n const newRules = cf.rules.slice();\n const newCondition = Object.assign({}, newRules[index].condition, {\n type: newType,\n });\n // Remove value field if condition type doesn't need it\n if (!needsValue(newType)) {\n delete newCondition.value;\n }\n newRules[index] = Object.assign({}, newRules[index], {\n condition: newCondition,\n });\n this.updateConditionalFormatting({\n rules: newRules,\n });\n }}\n style={{width: '100%', padding: '4px'}}\n >\n {conditionTypes.map(ct => (\n <option key={ct.value} value={ct.value}>\n {ct.label}\n </option>\n ))}\n </select>\n </div>\n\n {needsValue(rule.condition.type) && (\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Condition Value:\n </label>\n <input\n type=\"text\"\n value={\n typeof rule.condition.value !== 'undefined' &&\n rule.condition.value !== null\n ? rule.condition.value\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n const val = e.target.value;\n // Try to parse as number, otherwise use as string\n const numVal =\n val === ''\n ? null\n : isNaN(val)\n ? val\n : parseFloat(val);\n this.updateRule(index, 'condition.value', numVal);\n }}\n placeholder=\"Enter value\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n )}\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Background Color:\n </label>\n <input\n type=\"color\"\n value={\n rule.style && rule.style.backgroundColor\n ? rule.style.backgroundColor\n : '#FFFFFF'\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'style.backgroundColor',\n e.target.value\n );\n }}\n style={{width: '100%', padding: '2px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Text Color:\n </label>\n <input\n type=\"color\"\n value={\n rule.style && rule.style.color\n ? rule.style.color\n : '#000000'\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(index, 'style.color', e.target.value);\n }}\n style={{width: '100%', padding: '2px'}}\n />\n </div>\n\n <div\n style={{marginBottom: '8px'}}\n onClick={e => e.stopPropagation()}\n onMouseDown={e => e.stopPropagation()}\n >\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Font Weight:\n </label>\n <select\n value={\n rule.style && rule.style.fontWeight\n ? rule.style.fontWeight\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'style.fontWeight',\n e.target.value || null\n );\n }}\n style={{width: '100%', padding: '4px'}}\n >\n <option value=\"\">Normal</option>\n <option value=\"bold\">Bold</option>\n <option value=\"lighter\">Lighter</option>\n </select>\n </div>\n\n <div\n style={{marginBottom: '8px'}}\n onClick={e => e.stopPropagation()}\n onMouseDown={e => e.stopPropagation()}\n >\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Font Style:\n </label>\n <select\n value={\n rule.style && rule.style.fontStyle\n ? rule.style.fontStyle\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'style.fontStyle',\n e.target.value || null\n );\n }}\n style={{width: '100%', padding: '4px'}}\n >\n <option value=\"\">Normal</option>\n <option value=\"italic\">Italic</option>\n <option value=\"oblique\">Oblique</option>\n </select>\n </div>\n </div>\n ))}\n\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.addRule();\n }}\n style={{width: '100%', marginTop: '10px'}}\n >\n + Add Rule\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nConditionalFormattingUI.propTypes = {\n tableOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n moveToTop: PropTypes.func,\n zIndex: PropTypes.number,\n};\n\nConditionalFormattingUI.defaultProps = {\n tableOptions: {},\n moveToTop: () => {},\n zIndex: 1,\n};\n\nexport class CellFormattingUI extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n open: false,\n };\n }\n\n getCellFormatting() {\n const tableOptions = this.props.tableOptions || {};\n return tableOptions.cellFormatting\n ? tableOptions.cellFormatting\n : {rules: []};\n }\n\n updateCellFormatting(cellFormatting) {\n const currentTableOptions = this.props.tableOptions || {};\n const tableOptions = Object.assign({}, currentTableOptions, {\n cellFormatting,\n });\n this.props.onChange({\n tableOptions: {$set: tableOptions},\n });\n }\n\n addRule() {\n const cf = this.getCellFormatting();\n const newRule = {\n format: {\n thousandsSep: ',',\n decimalSep: '.',\n decimalPlaces: 2,\n prefix: '',\n suffix: '',\n },\n };\n this.updateCellFormatting({\n rules: cf.rules.slice().concat([newRule]),\n });\n }\n\n removeRule(index) {\n const cf = this.getCellFormatting();\n const newRules = cf.rules.filter((_, i) => i !== index);\n this.updateCellFormatting({\n rules: newRules,\n });\n }\n\n updateRule(index, field, value) {\n const cf = this.getCellFormatting();\n const newRules = cf.rules.slice();\n if (field.startsWith('format.')) {\n const formatField = field.replace('format.', '');\n const newFormat = Object.assign({}, newRules[index].format || {});\n if (value === null || value === '') {\n delete newFormat[formatField];\n } else {\n newFormat[formatField] = value;\n }\n newRules[index] = Object.assign({}, newRules[index], {\n format: newFormat,\n });\n } else {\n newRules[index] = Object.assign({}, newRules[index], {\n [field]: value,\n });\n }\n this.updateCellFormatting({\n rules: newRules,\n });\n }\n\n toggle() {\n this.setState({open: !this.state.open});\n if (this.props.moveToTop) {\n this.props.moveToTop();\n }\n }\n\n render() {\n const cf = this.getCellFormatting();\n\n return (\n <div>\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.toggle();\n }}\n style={{marginTop: '5px'}}\n >\n {this.state.open ? '▼' : '▶'} Cell Formatting\n </button>\n\n {this.state.open && (\n <div\n className=\"pvtFilterBox\"\n style={{\n display: 'block',\n cursor: 'initial',\n zIndex: this.props.zIndex,\n marginTop: '5px',\n minWidth: '400px',\n position: 'relative',\n }}\n onClick={() => this.props.moveToTop && this.props.moveToTop()}\n >\n <a\n onClick={() => this.setState({open: false})}\n className=\"pvtCloseX\"\n >\n ×\n </a>\n <h4>Cell Formatting Rules</h4>\n\n {cf.rules.length === 0 && (\n <p style={{fontStyle: 'italic', color: '#666'}}>\n No rules defined. Add a rule to format cell values.\n </p>\n )}\n\n {cf.rules.map((rule, index) => (\n <div\n key={index}\n style={{\n border: '1px solid #c8d4e3',\n padding: '10px',\n marginBottom: '10px',\n backgroundColor: '#f9f9f9',\n }}\n >\n <div\n style={{\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: '8px',\n }}\n >\n <strong>Rule {index + 1}</strong>\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.removeRule(index);\n }}\n style={{fontSize: '10px', padding: '2px 6px'}}\n >\n Remove\n </button>\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Thousand Separator (empty = no separator, decimal formatting still applies):\n </label>\n <input\n type=\"text\"\n value={\n rule.format && 'thousandsSep' in rule.format\n ? rule.format.thousandsSep\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'format.thousandsSep',\n e.target.value\n );\n }}\n placeholder=\",\"\n maxLength=\"1\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Decimal Separator:\n </label>\n <input\n type=\"text\"\n value={\n rule.format && 'decimalSep' in rule.format\n ? rule.format.decimalSep\n : '.'\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'format.decimalSep',\n e.target.value\n );\n }}\n placeholder=\".\"\n maxLength=\"1\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Decimal Places:\n </label>\n <input\n type=\"number\"\n min=\"0\"\n max=\"9\"\n value={\n rule.format && 'decimalPlaces' in rule.format\n ? rule.format.decimalPlaces\n : 2\n }\n onChange={e => {\n e.stopPropagation();\n const val = parseInt(e.target.value, 10);\n this.updateRule(\n index,\n 'format.decimalPlaces',\n isNaN(val) ? 2 : val\n );\n }}\n placeholder=\"2\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Prefix (e.g., $, €):\n </label>\n <input\n type=\"text\"\n value={\n rule.format && 'prefix' in rule.format\n ? rule.format.prefix\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(index, 'format.prefix', e.target.value);\n }}\n placeholder=\"\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'block',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n Suffix (e.g., %, units):\n </label>\n <input\n type=\"text\"\n value={\n rule.format && 'suffix' in rule.format\n ? rule.format.suffix\n : ''\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(index, 'format.suffix', e.target.value);\n }}\n placeholder=\"\"\n style={{width: '100%', padding: '4px'}}\n />\n </div>\n\n <div style={{marginBottom: '8px'}}>\n <label\n style={{\n display: 'flex',\n alignItems: 'center',\n marginBottom: '4px',\n fontSize: '11px',\n }}\n >\n <input\n type=\"checkbox\"\n checked={\n rule.format && 'showOriginal' in rule.format\n ? rule.format.showOriginal\n : false\n }\n onChange={e => {\n e.stopPropagation();\n this.updateRule(\n index,\n 'format.showOriginal',\n e.target.checked\n );\n }}\n style={{marginRight: '6px'}}\n />\n Show Original Value (no formatting)\n </label>\n </div>\n </div>\n ))}\n\n <button\n type=\"button\"\n className=\"pvtButton\"\n onClick={e => {\n e.stopPropagation();\n this.addRule();\n }}\n style={{width: '100%', marginTop: '10px'}}\n >\n + Add Rule\n </button>\n </div>\n )}\n </div>\n );\n }\n}\n\nCellFormattingUI.propTypes = {\n tableOptions: PropTypes.object,\n onChange: PropTypes.func.isRequired,\n moveToTop: PropTypes.func,\n zIndex: PropTypes.number,\n};\n\nCellFormattingUI.defaultProps = {\n tableOptions: {},\n moveToTop: () => {},\n zIndex: 1,\n};\n\nclass PivotTableUI extends React.PureComponent {\n constructor(props) {\n super(props);\n this.state = {\n unusedOrder: [],\n zIndices: {},\n maxZIndex: 1000,\n openDropdown: false,\n attrValues: {},\n materializedInput: [],\n };\n }\n\n componentDidMount() {\n this.materializeInput(this.props.data);\n }\n\n componentDidUpdate() {\n this.materializeInput(this.props.data);\n }\n\n materializeInput(nextData) {\n if (this.state.data === nextData) {\n return;\n }\n const newState = {\n data: nextData,\n attrValues: {},\n materializedInput: [],\n };\n let recordsProcessed = 0;\n PivotData.forEachRecord(\n newState.data,\n this.props.derivedAttributes,\n function(record) {\n newState.materializedInput.push(record);\n for (const attr of Object.keys(record)) {\n if (!(attr in newState.attrValues)) {\n newState.attrValues[attr] = {};\n if (recordsProcessed > 0) {\n newState.attrValues[attr].null = recordsProcessed;\n }\n }\n }\n for (const attr in newState.attrValues) {\n const value = attr in record ? record[attr] : 'null';\n if (!(value in newState.attrValues[attr])) {\n newState.attrValues[attr][value] = 0;\n }\n newState.attrValues[attr][value]++;\n }\n recordsProcessed++;\n }\n );\n this.setState(newState);\n }\n\n sendPropUpdate(command) {\n this.props.onChange(update(this.props, command));\n }\n\n propUpdater(key) {\n return value => this.sendPropUpdate({[key]: {$set: value}});\n }\n\n hasExternalAggregations() {\n return Array.isArray(this.props.aggregations);\n }\n\n getCurrentAggregations() {\n const fallbackAggregator =\n this.props.aggregatorName || Object.keys(this.props.aggregators)[0];\n const fallbackVals = Array.isArray(this.props.vals)\n ? this.props.vals.slice()\n : [];\n const aggregationsProvided = this.hasExternalAggregations();\n const defaultAggregations = [\n {\n key: 'agg-default',\n aggregatorName: fallbackAggregator,\n vals: fallbackVals,\n },\n ];\n const source = aggregationsProvided\n ? this.props.aggregations\n : defaultAggregations;\n return source.map((agg, idx) => {\n const aggregatorName = agg.aggregatorName || fallbackAggregator;\n const baseVals = Array.isArray(agg.vals)\n ? agg.vals.slice()\n : aggregationsProvided\n ? []\n : fallbackVals;\n return {\n key: agg.key || `agg-${idx}`,\n aggregatorName,\n vals: this.defaultValsForAggregator(aggregatorName, baseVals),\n };\n });\n }\n\n numInputsForAggregator(name) {\n if (!name || !(name in this.props.aggregators)) {\n return 0;\n }\n const instance = this.props.aggregators[name]([])();\n return instance.numInputs || 0;\n }\n\n getAttributeOptions() {\n return Object.keys(this.state.attrValues).filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromAggregators.includes(e)\n );\n }\n\n defaultValsForAggregator(name, currentVals = []) {\n const required = this.numInputsForAggregator(name);\n if (required === 0) {\n return [];\n }\n const options = this.getAttributeOptions();\n const next = currentVals.slice(0, required);\n for (let i = 0; i < required; i++) {\n if (!next[i]) {\n next[i] = options[i % options.length] || null;\n }\n }\n return next;\n }\n\n generateAggregationKey() {\n const timestamp = Date.now().toString(AGG_KEY_RADIX);\n const randomPart = Math.random()\n .toString(AGG_KEY_RADIX)\n .slice(AGG_KEY_OFFSET, AGG_KEY_OFFSET + AGG_KEY_LENGTH);\n return `agg-${timestamp}-${randomPart}`;\n }\n\n updateAggregations(nextAggregations) {\n if (!nextAggregations.length) {\n return;\n }\n const fallbackAggregator =\n this.props.aggregatorName || Object.keys(this.props.aggregators)[0];\n const sanitized = nextAggregations.map((agg, idx) => {\n const aggregatorName = agg.aggregatorName || fallbackAggregator;\n return {\n key: agg.key || `agg-${idx}`,\n aggregatorName,\n vals: this.defaultValsForAggregator(\n aggregatorName,\n Array.isArray(agg.vals) ? agg.vals.slice() : []\n ),\n };\n });\n const primary = sanitized[0];\n const command = {\n aggregations: {$set: sanitized},\n };\n if (!this.hasExternalAggregations()) {\n command.aggregatorName = {$set: primary.aggregatorName};\n command.vals = {$set: primary.vals};\n }\n this.sendPropUpdate(command);\n }\n\n setAggregationAggregator(index, aggregatorName) {\n const aggregations = this.getCurrentAggregations();\n const next = Object.assign({}, aggregations[index], {\n aggregatorName,\n });\n next.vals = this.defaultValsForAggregator(aggregatorName, next.vals);\n aggregations[index] = next;\n this.updateAggregations(aggregations);\n }\n\n setAggregationVal(index, valIndex, value) {\n const aggregations = this.getCurrentAggregations();\n const next = Object.assign({}, aggregations[index]);\n const vals = Array.isArray(next.vals) ? next.vals.slice() : [];\n vals[valIndex] = value;\n next.vals = vals;\n aggregations[index] = next;\n this.updateAggregations(aggregations);\n }\n\n setAggregationDisplayMode(mode) {\n const allowedModes = ['row', 'column'];\n const normalizedMode = allowedModes.includes(mode) ? mode : 'row';\n const tableOptions = Object.assign({}, this.props.tableOptions || {}, {\n aggregationDisplayMode: normalizedMode,\n });\n this.sendPropUpdate({\n tableOptions: {$set: tableOptions},\n });\n }\n\n addAggregationRow() {\n const aggregations = this.getCurrentAggregations();\n const defaultAggregator =\n this.props.aggregatorName || Object.keys(this.props.aggregators)[0];\n const key = this.generateAggregationKey();\n aggregations.push({\n key,\n aggregatorName: defaultAggregator,\n vals: this.defaultValsForAggregator(defaultAggregator),\n });\n this.updateAggregations(aggregations);\n }\n\n removeAggregationRow(index) {\n const aggregations = this.getCurrentAggregations();\n if (aggregations.length === 1) {\n return;\n }\n aggregations.splice(index, 1);\n this.updateAggregations(aggregations);\n }\n\n setValuesInFilter(attribute, values) {\n this.sendPropUpdate({\n valueFilter: {\n [attribute]: {\n $set: values.reduce((r, v) => {\n r[v] = true;\n return r;\n }, {}),\n },\n },\n });\n }\n\n addValuesToFilter(attribute, values) {\n if (attribute in this.props.valueFilter) {\n this.sendPropUpdate({\n valueFilter: {\n [attribute]: values.reduce((r, v) => {\n r[v] = {$set: true};\n return r;\n }, {}),\n },\n });\n } else {\n this.setValuesInFilter(attribute, values);\n }\n }\n\n removeValuesFromFilter(attribute, values) {\n this.sendPropUpdate({\n valueFilter: {[attribute]: {$unset: values}},\n });\n }\n\n moveFilterBoxToTop(attribute) {\n this.setState(\n update(this.state, {\n maxZIndex: {$set: this.state.maxZIndex + 1},\n zIndices: {[attribute]: {$set: this.state.maxZIndex + 1}},\n })\n );\n }\n\n handleColSort(attr, sortDir) {\n // Only allow sorting 1 column at a time - clear all other column sorts\n const colSorts = {};\n if (sortDir !== null) {\n colSorts[attr] = sortDir;\n }\n this.sendPropUpdate({colSorts: {$set: colSorts}});\n }\n\n handleRowSort(attr, sortDir) {\n // Only allow sorting 1 row at a time - clear all other row sorts\n const rowSorts = {};\n if (sortDir !== null) {\n rowSorts[attr] = sortDir;\n }\n this.sendPropUpdate({rowSorts: {$set: rowSorts}});\n }\n\n isOpen(dropdown) {\n return this.state.openDropdown === dropdown;\n }\n\n makeDnDCell(items, onChange, classes) {\n return (\n <Sortable\n options={{\n group: 'shared',\n ghostClass: 'pvtPlaceholder',\n filter: '.pvtFilterBox',\n preventOnFilter: false,\n }}\n tag=\"td\"\n className={classes}\n onChange={onChange}\n >\n {items.map(x => (\n <DraggableAttribute\n name={x}\n key={x}\n attrValues={this.state.attrValues[x]}\n valueFilter={this.props.valueFilter[x] || {}}\n sorter={getSort(this.props.sorters, x, this.state.attrValues[x])}\n menuLimit={this.props.menuLimit}\n setValuesInFilter={this.setValuesInFilter.bind(this)}\n addValuesToFilter={this.addValuesToFilter.bind(this)}\n moveFilterBoxToTop={this.moveFilterBoxToTop.bind(this)}\n removeValuesFromFilter={this.removeValuesFromFilter.bind(this)}\n zIndex={this.state.zIndices[x] || this.state.maxZIndex}\n />\n ))}\n </Sortable>\n );\n }\n\n render() {\n const aggregations = this.getCurrentAggregations();\n const primaryAggregation = aggregations[0];\n const tableOptions = this.props.tableOptions || {};\n const aggregationDisplayMode =\n tableOptions.aggregationDisplayMode === 'column' ? 'column' : 'row';\n const aggregatorCellOutlet =\n primaryAggregation &&\n this.props.aggregators[primaryAggregation.aggregatorName] &&\n this.props.aggregators[primaryAggregation.aggregatorName]([])().outlet;\n\n const rendererName =\n this.props.rendererName in this.props.renderers\n ? this.props.rendererName\n : Object.keys(this.props.renderers)[0];\n\n const rendererCell = (\n <td className=\"pvtRenderers\">\n <Dropdown\n current={rendererName}\n values={Object.keys(this.props.renderers)}\n open={this.isOpen('renderer')}\n zIndex={this.isOpen('renderer') ? this.state.maxZIndex + 1 : 1}\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen('renderer') ? false : 'renderer',\n })\n }\n setValue={this.propUpdater('rendererName')}\n />\n </td>\n );\n\n const sortIcons = {\n key_a_to_z: {\n rowSymbol: '↕',\n colSymbol: '↔',\n next: 'value_a_to_z',\n },\n value_a_to_z: {\n rowSymbol: '↓',\n colSymbol: '→',\n next: 'value_z_to_a',\n },\n value_z_to_a: {rowSymbol: '↑', colSymbol: '←', next: 'key_a_to_z'},\n };\n\n const attributeOptions = this.getAttributeOptions();\n const aggregatorCell = (\n <td className=\"pvtVals\">\n {aggregations.map((agg, idx) => {\n const aggDropdownKey = `aggregation-${agg.key}-agg`;\n const numValsAllowed = this.numInputsForAggregator(\n agg.aggregatorName\n );\n const vals = this.defaultValsForAggregator(\n agg.aggregatorName,\n agg.vals\n );\n return (\n <div className=\"pvtAggregatorRow\" key={agg.key || idx}>\n <Dropdown\n current={agg.aggregatorName}\n values={Object.keys(this.props.aggregators)}\n open={this.isOpen(aggDropdownKey)}\n zIndex={\n this.isOpen(aggDropdownKey) ? this.state.maxZIndex + 1 : 1\n }\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen(aggDropdownKey)\n ? false\n : aggDropdownKey,\n })\n }\n setValue={value => this.setAggregationAggregator(idx, value)}\n />\n {numValsAllowed > 0 && (\n <div className=\"pvtAggregatorVals\">\n {new Array(numValsAllowed).fill().map((n, i) => {\n const valDropdownKey = `aggregation-${agg.key}-val-${i}`;\n return (\n <Dropdown\n key={`agg-val-${agg.key}-${i}`}\n current={vals[i]}\n values={attributeOptions}\n open={this.isOpen(valDropdownKey)}\n zIndex={\n this.isOpen(valDropdownKey)\n ? this.state.maxZIndex + 1\n : 1\n }\n toggle={() =>\n this.setState({\n openDropdown: this.isOpen(valDropdownKey)\n ? false\n : valDropdownKey,\n })\n }\n setValue={value =>\n this.setAggregationVal(idx, i, value)\n }\n />\n );\n })}\n </div>\n )}\n {aggregations.length > 1 && (\n <button\n type=\"button\"\n className=\"pvtButton pvtRemoveAggregator\"\n onClick={e => {\n e.stopPropagation();\n this.removeAggregationRow(idx);\n }}\n >\n Remove\n </button>\n )}\n </div>\n );\n })}\n <div className=\"pvtAggregationModeToggle\">\n <label\n htmlFor=\"pvtAggregationMode\"\n style={{marginRight: '6px', fontSize: '12px'}}\n >\n Aggregation values on:\n </label>\n <select\n id=\"pvtAggregationMode\"\n value={aggregationDisplayMode}\n onChange={e => this.setAggregationDisplayMode(e.target.value)}\n >\n <option value=\"row\">Rows</option>\n <option value=\"column\">Columns</option>\n </select>\n </div>\n <button\n type=\"button\"\n className=\"pvtButton pvtAddAggregator\"\n onClick={e => {\n e.stopPropagation();\n this.addAggregationRow();\n }}\n >\n + Add Value\n </button>\n <a\n role=\"button\"\n className=\"pvtRowOrder\"\n onClick={() =>\n this.propUpdater('rowOrder')(sortIcons[this.props.rowOrder].next)\n }\n >\n {sortIcons[this.props.rowOrder].rowSymbol}\n </a>\n <a\n role=\"button\"\n className=\"pvtColOrder\"\n onClick={() =>\n this.propUpdater('colOrder')(sortIcons[this.props.colOrder].next)\n }\n >\n {sortIcons[this.props.colOrder].colSymbol}\n </a>\n {aggregatorCellOutlet && aggregatorCellOutlet(this.props.data)}\n <ConditionalFormattingUI\n tableOptions={tableOptions}\n onChange={this.sendPropUpdate.bind(this)}\n moveToTop={this.moveFilterBoxToTop.bind(\n this,\n 'conditionalFormatting'\n )}\n zIndex={\n this.state.zIndices.conditionalFormatting || this.state.maxZIndex\n }\n />\n <CellFormattingUI\n tableOptions={tableOptions}\n onChange={this.sendPropUpdate.bind(this)}\n moveToTop={this.moveFilterBoxToTop.bind(this, 'cellFormatting')}\n zIndex={this.state.zIndices.cellFormatting || this.state.maxZIndex}\n />\n </td>\n );\n\n const unusedAttrs = Object.keys(this.state.attrValues)\n .filter(\n e =>\n !this.props.rows.includes(e) &&\n !this.props.cols.includes(e) &&\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n )\n .sort(sortAs(this.state.unusedOrder));\n\n const unusedLength = unusedAttrs.reduce((r, e) => r + e.length, 0);\n const horizUnused = unusedLength < this.props.unusedOrientationCutoff;\n\n const unusedAttrsCell = this.makeDnDCell(\n unusedAttrs,\n order => this.setState({unusedOrder: order}),\n `pvtAxisContainer pvtUnused ${\n horizUnused ? 'pvtHorizList' : 'pvtVertList'\n }`\n );\n\n const colAttrs = this.props.cols.filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n );\n\n const colAttrsCell = this.makeDnDCell(\n colAttrs,\n this.propUpdater('cols'),\n 'pvtAxisContainer pvtHorizList pvtCols'\n );\n\n const rowAttrs = this.props.rows.filter(\n e =>\n !this.props.hiddenAttributes.includes(e) &&\n !this.props.hiddenFromDragDrop.includes(e)\n );\n const rowAttrsCell = this.makeDnDCell(\n rowAttrs,\n this.propUpdater('rows'),\n 'pvtAxisContainer pvtVertList pvtRows'\n );\n const outputCell = (\n <td className=\"pvtOutput\">\n <PivotTable\n {...update(this.props, {\n data: {$set: this.state.materializedInput},\n })}\n colSorts={this.props.colSorts || {}}\n rowSorts={this.props.rowSorts || {}}\n onColSort={this.handleColSort.bind(this)}\n onRowSort={this.handleRowSort.bind(this)}\n />\n </td>\n );\n\n if (horizUnused) {\n return (\n <table className=\"pvtUi\">\n <tbody onClick={() => this.setState({openDropdown: false})}>\n <tr>\n {rendererCell}\n {unusedAttrsCell}\n </tr>\n <tr>\n {aggregatorCell}\n {colAttrsCell}\n </tr>\n <tr>\n {rowAttrsCell}\n {outputCell}\n </tr>\n </tbody>\n </table>\n );\n }\n\n return (\n <table className=\"pvtUi\">\n <tbody onClick={() => this.setState({openDropdown: false})}>\n <tr>\n {rendererCell}\n {aggregatorCell}\n {colAttrsCell}\n </tr>\n <tr>\n {unusedAttrsCell}\n {rowAttrsCell}\n {outputCell}\n </tr>\n </tbody>\n </table>\n );\n }\n}\n\nPivotTableUI.propTypes = Object.assign({}, PivotTable.propTypes, {\n onChange: PropTypes.func.isRequired,\n hiddenAttributes: PropTypes.arrayOf(PropTypes.string),\n hiddenFromAggregators: PropTypes.arrayOf(PropTypes.string),\n hiddenFromDragDrop: PropTypes.arrayOf(PropTypes.string),\n unusedOrientationCutoff: PropTypes.number,\n menuLimit: PropTypes.number,\n colSorts: PropTypes.objectOf(PropTypes.oneOf(['ASC', 'DESC'])),\n rowSorts: PropTypes.objectOf(PropTypes.oneOf(['ASC', 'DESC'])),\n});\n\nPivotTableUI.defaultProps = Object.assign({}, PivotTable.defaultProps, {\n hiddenAttributes: [],\n hiddenFromAggregators: [],\n hiddenFromDragDrop: [],\n unusedOrientationCutoff: 85,\n menuLimit: 500,\n colSorts: {},\n rowSorts: {},\n});\n\nexport default PivotTableUI;\n"]}