@proveanything/smartlinks-utils-ui 0.1.1 → 0.1.3
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.
- package/README.md +4 -0
- package/dist/chunk-HLFNSOPD.js +518 -0
- package/dist/chunk-HLFNSOPD.js.map +1 -0
- package/dist/chunk-IVUFK6SS.js +780 -0
- package/dist/chunk-IVUFK6SS.js.map +1 -0
- package/dist/chunk-L7FQ52F5.js +11 -0
- package/dist/chunk-L7FQ52F5.js.map +1 -0
- package/dist/chunk-V7JHAER7.js +920 -0
- package/dist/chunk-V7JHAER7.js.map +1 -0
- package/dist/components/AssetPicker/index.js +4 -0
- package/dist/components/AssetPicker/index.js.map +1 -0
- package/dist/components/ConditionsEditor/index.js +4 -0
- package/dist/components/ConditionsEditor/index.js.map +1 -0
- package/dist/components/IconPicker/index.js +4 -0
- package/dist/components/IconPicker/index.js.map +1 -0
- package/dist/index.css +998 -0
- package/dist/index.css.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +13 -13
- package/dist/styles.d.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ConditionsEditor/conditionMeta.ts","../src/components/ConditionsEditor/ConditionTypePicker.tsx","../src/components/ConditionsEditor/ConditionConfig.tsx","../src/components/ConditionsEditor/ConditionCard.tsx","../src/components/ConditionsEditor/ConditionsEditor.tsx"],"names":["jsx","jsxs","ChevronRight","GitBranch","useState"],"mappings":";;;;;AAoBO,IAAM,eAAA,GAAuC;AAAA,EAClD,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,WAAA,EAAa,yBAAA,EAA2B,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,4DAAA,EAA6D;AAAA,EACrL,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,WAAA,EAAa,+BAAA,EAAiC,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,wCAAA,EAAyC;AAAA,EACxK,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,2BAAA,EAA6B,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mEAAA,EAAoE;AAAA,EAC1L,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,8BAAA,EAAgC,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mFAAA,EAAoF;AAAA,EAC3M,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,WAAA,EAAa,uBAAA,EAAyB,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,yCAAA,EAA0C;AAAA,EAC9J,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,WAAA,EAAa,uBAAA,EAAyB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,kDAAA,EAAmD;AAAA,EAC1K,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,WAAA,EAAa,yBAAA,EAA2B,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mCAAA,EAAoC;AAAA,EACrJ,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,UAAA,EAAY,WAAA,EAAa,qBAAA,EAAuB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,oDAAA,EAAqD;AAAA,EAC9K,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,YAAA,EAAc,WAAA,EAAa,sBAAA,EAAwB,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,gCAAA,EAAiC;AAAA,EAC5J,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,aAAA,EAAe,WAAA,EAAa,sBAAA,EAAwB,IAAA,EAAM,aAAA,EAAe,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,mEAAA,EAAoE;AAAA,EACvM,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,WAAA,EAAa,6BAAA,EAA+B,IAAA,EAAM,YAAA,EAAc,KAAA,EAAO,SAAA,EAAW,QAAA,EAAU,oEAAA;AACxI,CAAA;AAEA,IAAM,OAAA,GAA4D;AAAA,EAChE,IAAA,EAAM,IAAA;AAAA,EACN,KAAA,EAAO,KAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,IAAA,EAAM,IAAA;AAAA,EACN,QAAA,EAAU,QAAA;AAAA,EACV,OAAA,EAAS,OAAA;AAAA,EACT,GAAA,EAAK,GAAA;AAAA,EACL,SAAA,EAAW,MAAA;AAAA,EACX,OAAA,EAAS,OAAA;AAAA,EACT,aAAA,EAAe,UAAA;AAAA,EACf,YAAA,EAAc;AAChB,CAAA;AAEO,SAAS,iBAAiB,IAAA,EAAuE;AACtG,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,OAAO,eAAA,CAAgB,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,IAAI,CAAA;AACnD;AAEO,SAAS,iBAAiB,IAAA,EAA0E;AACzG,EAAA,MAAM,IAAA,GAAO,iBAAiB,IAAI,CAAA;AAClC,EAAA,OAAQ,IAAA,IAAQ,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,IAAM,IAAA;AACzC;AAEO,SAAS,mBAAA,CAAoB,MAAiB,OAAA,EAG1C;AACT,EAAA,IAAI,CAAC,IAAA,CAAK,IAAA,EAAM,OAAO,4BAAA;AACvB,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,IAAI,OAAA,GAAU,IAAA,EAAM,KAAA,IAAS,IAAA,CAAK,IAAA;AAElC,EAAA,QAAQ,KAAK,IAAA;AAAM,IACjB,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,QAAA,CAAS,GAAA,CAAI,OAAK,OAAO,CAAA,KAAM,WAAW,CAAA,GAAK,CAAA,CAAE,SAAS,CAAA,CAAE,KAAA,IAAS,EAAG,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MAClH;AACA,MAAA;AAAA,IACF,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,OAAA,EAAS,MAAA,EAAQ;AAC3C,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,OAAA,GAAU,WAAA;AACvC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAA,KAAK;AAClC,UAAA,MAAM,MAAM,cAAA,CAAe,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,UAAU,CAAC,CAAA;AAClD,UAAA,OAAO,KAAK,KAAA,IAAS,CAAA;AAAA,QACvB,CAAC,CAAA;AACD,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACzC,CAAA,MAAA,IAAW,IAAA,CAAK,SAAA,EAAW,MAAA,EAAQ;AACjC,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,SAAA,CAAU,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MAClD;AACA,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,IAAI,KAAK,KAAA,EAAO;AACd,QAAA,MAAM,GAAA,GAA8B,EAAE,KAAA,EAAO,GAAA,EAAK,KAAK,QAAA,EAAK,OAAA,EAAS,GAAA,EAAK,IAAA,EAAM,GAAA,EAAI;AACpF,QAAA,OAAA,IAAW,CAAA,EAAA,EAAK,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,GAAA,CAAI,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAA,IAAK,EAAE,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,GAAG,CAAA,CAAA;AAAA,MACzF;AACA,MAAA;AAAA,IACF,KAAK,KAAA;AACH,MAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAQ;AACrB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,KAAA,GAAQ,eAAA;AACrC,QAAA,OAAA,IAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,MAAM,CAAA,SAAA,CAAA;AAAA,MACzC;AACA,MAAA;AAAA,IACF,KAAK,QAAA;AACH,MAAA,IAAI,IAAA,CAAK,UAAU,MAAA,EAAQ;AACzB,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,IAAI,IAAI,CAAA,CAAA,EAAI,KAAK,QAAA,CAAS,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACjD;AACA,MAAA;AAAA,IACF,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,SAAA,GAAoC;AAAA,QACxC,KAAA,EAAO,cAAA;AAAA,QAAgB,OAAA,EAAS,eAAA;AAAA,QAAiB,KAAA,EAAO,eAAA;AAAA,QACxD,KAAA,EAAO,KAAK,QAAA,EAAU,MAAA,GAAS,MAAM,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,SAAA,CAAA,GAAc,WAAA;AAAA,QACvE,KAAA,EAAO;AAAA,OACT;AACA,MAAA,OAAA,IAAW,IAAI,SAAA,CAAU,IAAA,CAAK,QAAA,IAAY,EAAE,KAAK,EAAE,CAAA,CAAA;AACnD,MAAA;AAAA,IACF;AAAA,IACA,KAAK,SAAA;AACH,MAAA,IAAI,IAAA,CAAK,YAAY,MAAA,EAAQ;AAC3B,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,IAAA,GAAO,QAAA;AACpC,QAAA,OAAA,IAAW,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,WAAW,MAAM,CAAA,QAAA,CAAA;AAAA,MAC/C;AACA,MAAA;AAAA,IACF,KAAK,WAAA;AACH,MAAA,IAAI,KAAK,WAAA,EAAa;AACpB,QAAA,MAAM,OAAA,GAAU,SAAS,eAAA,EAAiB,IAAA,CAAK,OAAK,CAAA,CAAE,KAAA,KAAU,KAAK,WAAW,CAAA;AAChF,QAAA,OAAA,IAAW,CAAA,EAAA,EAAK,SAAS,KAAA,IAAS,IAAA,CAAK,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,MAAA,GAAS,QAAA,GAAW,OAAO,CAAA,CAAA;AAAA,MACxF;AACA,MAAA;AAAA,IACF,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,YAAoC,EAAE,MAAA,EAAQ,UAAU,KAAA,EAAO,OAAA,EAAS,SAAS,SAAA,EAAU;AACjG,MAAA,OAAA,IAAW,OAAO,SAAA,CAAU,IAAA,CAAK,QAAA,IAAY,EAAE,KAAK,EAAE,CAAA,CAAA;AACtD,MAAA,IAAI,IAAA,CAAK,UAAA,EAAY,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,UAAU,CAAA,CAAA;AACnD,MAAA,IAAI,IAAA,CAAK,SAAA,EAAW,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA;AACjD,MAAA,IAAI,IAAA,CAAK,SAAA,EAAW,OAAA,IAAW,CAAA,CAAA,EAAI,KAAK,SAAS,CAAA,CAAA;AACjD,MAAA;AAAA,IACF;AAAA,IACA,KAAK,UAAA,EAAY;AACf,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,QAAA,GAAW,QAAA,GAAW,SAAA;AACxC,MAAA,OAAA,IAAW,IAAI,IAAI,CAAA,OAAA,CAAA;AACnB,MAAA;AAAA,IACF;AAAA,IACA,KAAK,YAAA,EAAc;AACjB,MAAA,MAAM,WAAA,GAAsC;AAAA,QAC1C,QAAA,EAAU,WAAA;AAAA,QAAa,OAAA,EAAS,cAAA;AAAA,QAAgB,WAAA,EAAa,cAAA;AAAA,QAC7D,YAAA,EAAc,kBAAA;AAAA,QAAoB,QAAA,EAAU,WAAA;AAAA,QAAa,SAAA,EAAW;AAAA,OACtE;AACA,MAAA,OAAA,IAAW,IAAI,WAAA,CAAY,IAAA,CAAK,UAAA,IAAc,EAAE,KAAK,EAAE,CAAA,CAAA;AACvD,MAAA;AAAA,IACF;AAAA;AAGF,EAAA,OAAO,OAAA;AACT;AAEO,IAAM,eAAA,GAAkC;AAAA,EAC7C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,QAAA,EAAS;AAAA,EACnC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,EAC7B,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,KAAA,EAAM;AAAA,EACnC,EAAE,KAAA,EAAO,mBAAA,EAAqB,KAAA,EAAO,KAAA;AACvC,CAAA;AAEO,IAAM,cAAA,GAA8D;AAAA,EACzE,EAAE,KAAA,EAAO,qBAAA,EAAuB,KAAA,EAAO,IAAA,EAAM,aAAa,yBAAA,EAA0B;AAAA,EACpF,EAAE,KAAA,EAAO,8BAAA,EAAgC,KAAA,EAAO,KAAA,EAAO,aAAa,qCAAA,EAAsC;AAAA,EAC1G,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,IAAA,EAAM,aAAa,4CAAA,EAA6C;AAAA,EAClG,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,cAAA,EAAgB,aAAa,qBAAA,EAAsB;AAAA,EACpF,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,aAAA,EAAe,aAAa,4BAAA;AAC9D,CAAA;AAEO,IAAM,iBAAA,GAAoC;AAAA,EAC/C,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,OAAA,EAAQ;AAAA,EACxC,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC3C,EAAE,KAAA,EAAO,eAAA,EAAiB,KAAA,EAAO,OAAA,EAAQ;AAAA,EACzC,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,OAAA,EAAQ;AAAA,EAC3C,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,OAAA;AAC9B,CAAA;AAEO,IAAM,mBAAA,GAAsC;AAAA,EACjD,EAAE,KAAA,EAAO,uBAAA,EAAyB,KAAA,EAAO,UAAA,EAAW;AAAA,EACpD,EAAE,KAAA,EAAO,gBAAA,EAAkB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC5C,EAAE,KAAA,EAAO,qBAAA,EAAuB,KAAA,EAAO,aAAA,EAAc;AAAA,EACrD,EAAE,KAAA,EAAO,mBAAA,EAAqB,KAAA,EAAO,cAAA,EAAe;AAAA,EACpD,EAAE,KAAA,EAAO,iBAAA,EAAmB,KAAA,EAAO,WAAA,EAAY;AAAA,EAC/C,EAAE,KAAA,EAAO,uBAAA,EAAyB,KAAA,EAAO,YAAA;AAC3C,CAAA;AAEO,IAAM,eAAA,GAAkC;AAAA,EAC7C,EAAE,KAAA,EAAO,UAAA,EAAY,KAAA,EAAO,OAAA,EAAQ;AAAA,EACpC,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,KAAA,EAAM;AAAA,EACnC,EAAE,KAAA,EAAO,cAAA,EAAgB,KAAA,EAAO,SAAA,EAAU;AAAA,EAC1C,EAAE,KAAA,EAAO,WAAA,EAAa,KAAA,EAAO,MAAA;AAC/B,CAAA;AAEO,IAAM,WAAA,GAA8B;AAAA,EACzC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,EACrC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,MAAA;AAC1B,CAAA;ACtLO,IAAM,mBAAA,GAA0D,CAAC,EAAE,QAAA,EAAS,KAAM;AACvF,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,KAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2DAAA,EAA4D,QAAA,EAAA,0BAAA,EAAwB,CAAA;AAAA,wBAChG,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA,eAAA,CAAgB,IAAI,CAAA,EAAA,KAAM;AACzB,MAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,EAAA,CAAG,KAAK,CAAA;AACtC,MAAA,uBACE,IAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,OAAA,EAAS,MAAM,QAAA,CAAS,EAAA,CAAG,KAAK,CAAA;AAAA,UAChC,SAAA,EAAW,EAAA;AAAA,YACT,iGAAA;AAAA,YACA,gGAAA;AAAA,YACA;AAAA,WACF;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAA,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,uDAAA;AAAA,gBACV,KAAA,EAAO,EAAE,eAAA,EAAiB,CAAA,EAAG,GAAG,KAAK,CAAA,EAAA,CAAA,EAAM,KAAA,EAAO,EAAA,CAAG,KAAA,EAAM;AAAA,gBAE3D,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,aAC5B;AAAA,4BACA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0DAAA,EAA4D,aAAG,KAAA,EAAM;AAAA;AAAA,SAAA;AAAA,QAdhF,EAAA,CAAG;AAAA,OAeV;AAAA,IAEJ,CAAC,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;ACxBA,IAAM,cAAA,GAMD,CAAC,EAAE,KAAA,GAAQ,MAAM,QAAA,EAAU,SAAA,GAAY,WAAA,EAAa,UAAA,GAAa,eAAA,EAAiB,QAAA,EAAS,qBAC9FA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gEAAA,EACZ,QAAA,EAAA,CAAC,EAAE,CAAA,EAAG,IAAA,EAAM,KAAA,EAAO,WAAU,EAAG,EAAE,CAAA,EAAG,KAAA,EAAO,OAAO,UAAA,EAAY,CAAA,CAAE,GAAA,CAAI,yBACpEA,GAAAA;AAAA,EAAC,QAAA;AAAA,EAAA;AAAA,IAEC,OAAA,EAAS,MAAM,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA;AAAA,IAC7B,QAAA;AAAA,IACA,SAAA,EAAW,EAAA;AAAA,MACT,2DAAA;AAAA,MACA,KAAA,KAAU,GAAA,CAAI,CAAA,GACV,sEAAA,GACA;AAAA,KACN;AAAA,IAEC,QAAA,EAAA,GAAA,CAAI;AAAA,GAAA;AAAA,EAVA,MAAA,CAAO,IAAI,CAAC;AAWnB,CACD,CAAA,EACH,CAAA;AAIF,IAAM,UAAA,GAKD,CAAC,EAAE,OAAA,EAAS,UAAU,QAAA,EAAU,QAAA,EAAS,qBAC5CA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAA,GAAA,KAAO;AAClB,EAAA,MAAM,UAAA,GAAa,QAAA,CAAS,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAC9C,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,SAAS,MAAM;AACb,QAAA,IAAI,QAAA,EAAU;AACd,QAAA,QAAA,CAAS,UAAA,GAAa,QAAA,CAAS,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,KAAM,GAAA,CAAI,KAAK,CAAA,GAAI,CAAC,GAAG,QAAA,EAAU,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,MACxF,CAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAO,GAAA,CAAI,WAAA;AAAA,MACX,SAAA,EAAW,EAAA;AAAA,QACT,2DAAA;AAAA,QACA,aACI,uGAAA,GACA;AAAA,OACN;AAAA,MAEC,QAAA,EAAA,GAAA,CAAI;AAAA,KAAA;AAAA,IAdA,GAAA,CAAI;AAAA,GAeX;AAEJ,CAAC,CAAA,EACH,CAAA;AAGF,IAAM,UAAA,GAAa,wJAAA;AAEZ,IAAM,kBAAkD,CAAC;AAAA,EAC9D,SAAA,EAAW,IAAA;AAAA,EACX,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KAA8B,QAAA,CAAS,EAAE,GAAG,IAAA,EAAM,GAAG,KAAA,EAAO,CAAA;AAE5E,EAAA,QAAQ,KAAK,IAAA;AAAM;AAAA,IAEjB,KAAK,SAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,QAAA,EAAU,MAAA,mBACrBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA,CAAY,QAAA,CAAS,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,KAAA,EAAO,CAAA,CAAE,KAAA,IAAS,IAAG,CAAE,CAAA;AAAA,YACjF,QAAA,EAAA,CAAW,IAAA,CAAK,QAAA,IAAY,EAAC,EAAG,GAAA,CAAI,CAAA,CAAA,KAAK,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAK,CAAA,CAAE,SAAS,EAAG,CAAA;AAAA,YACpF,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,KAAK,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,YAAY,QAAA,EAAU,IAAA,CAAK,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,KAAU,CAAC,GAAG,KAAA,IAAS,CAAA,EAAE,CAAE,CAAA,EAAG,CAAA;AAAA,YACvI,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gCAA+B,QAAA,EAAA,uBAAA,EAAqB;AAAA,OAAA,EAErE,CAAA;AAAA;AAAA,IAIJ,KAAK,SAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,wBAClGC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,0CAAA,EAA2C,QAAA,EAAA,aAAA,EAAW,CAAA;AAAA,0BACvEA,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,OAAA,EAAS,MAAM,MAAA,CAAO,EAAE,YAAY,CAAC,IAAA,CAAK,YAAY,CAAA;AAAA,cACtD,QAAA,EAAU,QAAA;AAAA,cACV,SAAA,EAAW,EAAA;AAAA,gBACT,iDAAA;AAAA,gBACA,IAAA,CAAK,aAAa,aAAA,GAAgB;AAAA,eACpC;AAAA,cAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA;AAAA,gBACf,4EAAA;AAAA,gBACA,IAAA,CAAK,aAAa,iBAAA,GAAoB;AAAA,eACxC,EAAG;AAAA;AAAA;AACL,SAAA,EACF,CAAA;AAAA,QACC,IAAA,CAAK,6BACJA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,cAAA;AAAA,YACT,QAAA,EAAU,IAAA,CAAK,OAAA,IAAW,EAAC;AAAA,YAC3B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,OAAA,EAAS,MAAM,CAAA;AAAA,YAC1C,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,UAAA;AAAA,YACX,QAAQ,IAAA,CAAK,SAAA,IAAa,EAAC,EAAG,KAAK,IAAI,CAAA;AAAA,YACvC,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,MAAA,CAAO,MAAM,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAA,EAAM,EAAE,MAAA,CAAO,OAAO,GAAG,CAAA;AAAA,YACjG,WAAA,EAAY,oBAAA;AAAA,YACZ,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EAEJ,CAAA;AAAA;AAAA,IAIJ,KAAK,OAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,4BACpEA,IAAC,OAAA,EAAA,EAAM,SAAA,EAAW,YAAY,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,KAAA,EAAO,EAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,YAAA,EAAa,QAAA,EAAU,QAAA,EAAU;AAAA,WAAA,EACxJ,CAAA;AAAA,0BACAC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,4BACpEA,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,YAAY,KAAA,EAAO,IAAA,CAAK,SAAA,IAAa,MAAA,EAAQ,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,SAAA,EAAW,EAAE,MAAA,CAAO,KAAA,EAAc,CAAA,EAAG,UAAU,QAAA,EACpI,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAA,EAAA,qBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAsB,KAAA,EAAO,EAAA,CAAG,OAAQ,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAA/B,EAAA,CAAG,KAAkC,CAAS,CAAA,EACpF;AAAA,WAAA,EACF;AAAA,SAAA,EACF,CAAA;AAAA,wBACAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,UAAA,EAAQ,CAAA;AAAA,4BAClEA,GAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,YAAY,KAAA,EAAO,IAAA,CAAK,cAAA,IAAkB,OAAA,EAAS,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,cAAA,EAAgB,EAAE,MAAA,CAAO,KAAA,EAAc,CAAA,EAAG,UAAU,QAAA,EAC/I,QAAA,EAAA,eAAA,CAAgB,GAAA,CAAI,CAAA,EAAA,qBAAMA,GAAAA,CAAC,QAAA,EAAA,EAAsB,KAAA,EAAO,EAAA,CAAG,OAAQ,QAAA,EAAA,EAAA,CAAG,KAAA,EAAA,EAA/B,EAAA,CAAG,KAAkC,CAAS,CAAA,EACxF;AAAA,WAAA,EACF,CAAA;AAAA,0BACAC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,4BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAAyC,QAAA,EAAA,OAAA,EAAK,CAAA;AAAA,4BAC/DA,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,UAAA,EAAY,OAAO,MAAA,CAAO,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA,EAAG,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,OAAA,EAAQ,QAAA,EAAU,QAAA,EAAU;AAAA,WAAA,EAC3J;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,MAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,iBAAA;AAAA,YACT,UAAU,IAAA,CAAK,QAAA,GAAW,CAAC,IAAA,CAAK,QAAQ,IAAI,EAAC;AAAA,YAC7C,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,MAAA,EAAmB,CAAA;AAAA,YAClF,QAAA,EAAU;AAAA;AAAA,SACZ;AAAA,QACC,KAAK,QAAA,KAAa,OAAA,IAAW,WAAA,CAAY,UAAA,EAAY,yBACpDA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAS,WAAA,CAAY,UAAA;AAAA,YACrB,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAC;AAAA,YAC5B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,YAC3C,QAAA,EAAU;AAAA;AAAA,SACZ,GACE;AAAA,OAAA,EACN,CAAA;AAAA;AAAA,IAIJ,KAAK,MAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gEAAA,EACX,QAAA,EAAA,CAAC,QAAA,EAAU,OAAA,EAAS,SAAS,CAAA,CAAY,GAAA,CAAI,CAAA,EAAA,qBAC7CC,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,MAAA,CAAO,EAAE,QAAA,EAAU,IAAI,CAAA;AAAA,YACtC,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,sEAAA;AAAA,cACA,IAAA,CAAK,QAAA,KAAa,EAAA,GACd,sEAAA,GACA;AAAA,aACN;AAAA,YACD,QAAA,EAAA;AAAA,cAAA,KAAA;AAAA,cACK;AAAA;AAAA,WAAA;AAAA,UAVC;AAAA,SAYR,CAAA,EACH,CAAA;AAAA,QAAA,CACE,IAAA,CAAK,aAAa,QAAA,IAAY,IAAA,CAAK,aAAa,SAAA,qBAChDA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,WAAM,SAAA,EAAU,wCAAA,EAA0C,eAAK,QAAA,KAAa,SAAA,GAAY,eAAe,aAAA,EAAc,CAAA;AAAA,0BACtHA,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAO,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,UAAA,IAAc,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,UAAA,EAAY,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU;AAAA,SAAA,EACrJ,CAAA;AAAA,QAAA,CAEA,IAAA,CAAK,aAAa,OAAA,IAAW,IAAA,CAAK,aAAa,SAAA,qBAC/CC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,WAAM,SAAA,EAAU,wCAAA,EAA0C,eAAK,QAAA,KAAa,SAAA,GAAY,aAAa,YAAA,EAAa,CAAA;AAAA,0BACnHA,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,QAAO,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,SAAA,IAAa,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,SAAA,EAAW,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU;AAAA,SAAA,EACnJ;AAAA,OAAA,EAEJ,CAAA;AAAA;AAAA,IAIJ,KAAK,QAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,wBAClGA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,eAAA;AAAA,YACT,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAC;AAAA,YAC5B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,MAAM,CAAA;AAAA,YAC3C,QAAA,EAAU;AAAA;AAAA;AACZ,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,KAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,IAAA,EAAM,MAAA,mBACjBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA,CAAY,IAAA,CAAK,GAAA,CAAI,CAAA,CAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,CAAA,EAAE,CAAE,CAAA;AAAA,YAC3D,QAAA,EAAU,IAAA,CAAK,IAAA,IAAQ,EAAC;AAAA,YACxB,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,YACvC,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,YAAY,KAAA,EAAA,CAAQ,IAAA,CAAK,IAAA,IAAQ,IAAI,IAAA,CAAK,IAAI,GAAG,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,MAAM,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG,GAAG,WAAA,EAAY,oBAAA,EAAgB,UAAU,QAAA,EAAU;AAAA,OAAA,EAEtN,CAAA;AAAA;AAAA,IAIJ,KAAK,UAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,IAAC,cAAA,EAAA,EAAe,KAAA,EAAO,KAAK,QAAA,EAAU,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,SAAA,EAAU,gBAAe,UAAA,EAAW,eAAA,EAAgB,UAAU,QAAA,EAAU,CAAA;AAAA,wBACtJA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,UACC,EAAE,KAAA,EAAO,iBAAA,EAAmB,GAAA,EAAK,MAAA,EAAgB;AAAA,UACjD,EAAE,KAAA,EAAO,kBAAA,EAAoB,GAAA,EAAK,MAAA,EAAgB;AAAA,UAClD,EAAE,KAAA,EAAO,iBAAA,EAAmB,GAAA,EAAK,MAAA,EAAgB;AAAA,UACjD,EAAE,KAAA,EAAO,kBAAA,EAAoB,GAAA,EAAK,MAAA;AAAgB,SACpD,CAAE,GAAA,CAAI,CAAA,CAAA,qBACJC,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,wCAAA,EAA0C,YAAE,KAAA,EAAM,CAAA;AAAA,0BACnEA,GAAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,KAAA;AAAA,cACL,SAAA,EAAW,UAAA;AAAA,cACX,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,IAAK,EAAA;AAAA,cACtB,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,CAAC,EAAE,GAAG,GAAG,CAAA,CAAE,MAAA,CAAO,QAAQ,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA,GAAI,QAAW,CAAA;AAAA,cAC1F,QAAA,EAAU;AAAA;AAAA;AACZ,SAAA,EAAA,EATQ,CAAA,CAAE,GAUZ,CACD,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA;AAAA,IAIJ,KAAK,SAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,IAAA,CAAK,UAAU,QAAA,EAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,UAAU,QAAA,EAAU,CAAA;AAAA,QACjG,WAAA,CAAY,QAAA,EAAU,MAAA,mBACrBA,GAAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,SAAS,WAAA,CAAY,QAAA;AAAA,YACrB,QAAA,EAAU,IAAA,CAAK,UAAA,IAAc,EAAC;AAAA,YAC9B,UAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,UAAA,EAAY,MAAM,CAAA;AAAA,YAC7C,QAAA,EAAU;AAAA;AAAA,4BAGZA,GAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,YAAY,KAAA,EAAA,CAAQ,IAAA,CAAK,UAAA,IAAc,IAAI,IAAA,CAAK,IAAI,GAAG,QAAA,EAAU,CAAA,CAAA,KAAK,OAAO,EAAE,UAAA,EAAY,CAAA,CAAE,MAAA,CAAO,MAAM,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG,GAAG,WAAA,EAAY,oCAAA,EAAgC,UAAU,QAAA,EAAU;AAAA,OAAA,EAElP,CAAA;AAAA;AAAA,IAIJ,KAAK,YAAA;AACH,MAAA,uBACEA,GAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,mBAAA;AAAA,UACT,UAAU,IAAA,CAAK,UAAA,GAAa,CAAC,IAAA,CAAK,UAAU,IAAI,EAAC;AAAA,UACjD,QAAA,EAAU,CAAA,IAAA,KAAQ,MAAA,CAAO,EAAE,UAAA,EAAa,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,MAAA,EAAmB,CAAA;AAAA,UACpF,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA;AAAA,IAIJ,KAAK,WAAA;AACH,MAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA;AAAA,QAAA,WAAA,CAAY,eAAA,EAAiB,yBAC5BA,IAAAA,CAAC,YAAO,SAAA,EAAW,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,EAAA,EAAI,UAAU,CAAA,CAAA,KAAK,MAAA,CAAO,EAAE,WAAA,EAAa,CAAA,CAAE,OAAO,KAAA,EAAO,CAAA,EAAG,QAAA,EAAU,QAAA,EAC9H,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,0BAAA,EAAmB,CAAA;AAAA,UACnC,WAAA,CAAY,eAAA,CAAgB,GAAA,CAAI,CAAA,CAAA,qBAAKA,GAAAA,CAAC,QAAA,EAAA,EAAqB,KAAA,EAAO,CAAA,CAAE,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,KAAA,EAAA,EAA5B,CAAA,CAAE,KAAgC,CAAS;AAAA,SAAA,EAChG,CAAA,mBAEAA,GAAAA,CAAC,OAAA,EAAA,EAAM,WAAW,UAAA,EAAY,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,EAAA,EAAI,QAAA,EAAU,OAAK,MAAA,CAAO,EAAE,WAAA,EAAa,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,WAAA,EAAY,cAAA,EAAe,QAAA,EAAU,QAAA,EAAU,CAAA;AAAA,wBAEtKA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEACZ,QAAA,EAAA,CAAC,EAAE,GAAG,IAAA,EAAM,CAAA,EAAG,UAAS,EAAG,EAAE,GAAG,KAAA,EAAO,CAAA,EAAG,SAAS,CAAA,CAAE,GAAA,CAAI,CAAA,GAAA,qBACxDA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM,MAAA,CAAO,EAAE,MAAA,EAAQ,GAAA,CAAI,GAAG,CAAA;AAAA,YACvC,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,2DAAA;AAAA,cACA,IAAA,CAAK,MAAA,KAAW,GAAA,CAAI,CAAA,GAChB,sEAAA,GACA;AAAA,aACN;AAAA,YAEC,QAAA,EAAA,GAAA,CAAI;AAAA,WAAA;AAAA,UAVA,MAAA,CAAO,IAAI,CAAC;AAAA,SAYpB,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,IAGJ;AACE,MAAA,uBAAOA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gCAA+B,QAAA,EAAA,wBAAA,EAAsB,CAAA;AAAA;AAE/E,CAAA;ACnVO,IAAM,gBAA8C,CAAC;AAAA,EAC1D,SAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAI,QAAA,CAAS,CAAC,UAAU,IAAI,CAAA;AACxD,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,SAAA,CAAU,IAAI,CAAA;AAC5C,EAAA,MAAM,UAAU,mBAAA,CAAoB,SAAA,EAAW,EAAE,eAAA,EAAiB,WAAA,CAAY,iBAAiB,CAAA;AAE/F,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,KAAwB;AAChD,IAAA,QAAA,CAAS,EAAE,GAAG,SAAA,EAAW,IAAA,EAAM,CAAA;AAC/B,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,EAClB,CAAA;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oHAAA,EAEb,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,gFAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,OAAO,IAAA,GAAO;AAAA,UACZ,UAAA,EAAY,CAAA,uBAAA,EAA0B,IAAA,CAAK,KAAK,CAAA,wBAAA;AAAA,SAClD,GAAI,MAAA;AAAA,QACJ,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,QAGpC,QAAA,EAAA;AAAA,0BAAAD,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,qEAAA;AAAA,cACV,KAAA,EAAO,IAAA,GAAO,EAAE,eAAA,EAAiB,GAAG,IAAA,CAAK,KAAK,CAAA,EAAA,CAAA,EAAM,KAAA,EAAO,IAAA,CAAK,KAAA,EAAM,GAAI,EAAE,iBAAiB,SAAA,EAAU;AAAA,cAEvG,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA,WAC5B;AAAA,0BAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,EAAA;AAAA,4BAAAD,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+DAAA,EACV,QAAA,EAAA,IAAA,EAAM,SAAS,uBAAA,EAClB,CAAA;AAAA,4BACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yDAAyD,QAAA,EAAA,OAAA,EAAQ;AAAA,WAAA,EAChF,CAAA;AAAA,0BAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uCAAA,EACZ,QAAA,EAAA;AAAA,YAAA,SAAA,CAAU,IAAA,IAAQ,CAAC,QAAA,oBAClBD,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,kBAAA,QAAA,CAAS,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA;AAAA,gBAAG,CAAA;AAAA,gBACjE,SAAA,EAAU,wEAAA;AAAA,gBACV,KAAA,EAAM,aAAA;AAAA,gBAEN,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,2BAAA,EAA4B;AAAA;AAAA,aACnD;AAAA,YAED,CAAC,4BACAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAS,CAAC,CAAA,KAAM;AAAE,kBAAA,CAAA,CAAE,eAAA,EAAgB;AAAG,kBAAA,QAAA,EAAS;AAAA,gBAAG,CAAA;AAAA,gBACnD,SAAA,EAAU,yEAAA;AAAA,gBACV,KAAA,EAAM,QAAA;AAAA,gBAEN,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,0BAAA,EAA2B;AAAA;AAAA,aAC/C;AAAA,YAED,QAAA,mBAAWA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,uBAAA,EAAwB,CAAA,mBAAKA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,uBAAA,EAAwB;AAAA,WAAA,EAClH;AAAA;AAAA;AAAA,KACF;AAAA,IAGC,4BACCA,GAAAA,CAAC,SAAI,SAAA,EAAU,yDAAA,EACZ,WAAC,SAAA,CAAU,IAAA,mBACVA,GAAAA,CAAC,mBAAA,EAAA,EAAoB,UAAU,gBAAA,EAAkB,CAAA,mBAEjDC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACZ,QAAA,EAAA;AAAA,MAAA,IAAA,EAAM,4BACLD,GAAAA,CAAC,OAAE,SAAA,EAAU,qDAAA,EAAuD,eAAK,QAAA,EAAS,CAAA;AAAA,sBAEpFA,GAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,SAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EACF,CAAA,EAEJ;AAAA,GAAA,EAEJ,CAAA;AAEJ,CAAA;AClGA,IAAM,oBAA+G,CAAC;AAAA,EACpH,KAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,QAAQ,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,MAAA;AACnD,EAAA,IAAI,UAAU,CAAA,EAAG;AACf,IAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kEAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,sBAC5BA,GAAAA,CAAC,MAAA,EAAA,EAAK,QAAA,EAAA,mBAAA,EAAiB,CAAA;AAAA,sBACvBA,GAAAA,CAACE,YAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA,KAAA,EAC5C,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8EAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,MAC/B,KAAA;AAAA,MAAM,YAAA;AAAA,MAAW,KAAA,KAAU,IAAI,GAAA,GAAM,EAAA;AAAA,MAAG,QAAA;AAAA,MAAI,KAAA,CAAM,IAAA,KAAS,KAAA,GAAQ,WAAA,GAAc,WAAA;AAAA,sBAClFA,GAAAA,CAACE,YAAAA,EAAA,EAAa,WAAU,iBAAA,EAAkB;AAAA,KAAA,EAC5C,CAAA;AAAA,oBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,wBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAA,CAAA,KAAK,CAAA,CAAE,IAAI,CAAA,CAAE,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,MAAM,CAAA,KAAM;AACjE,QAAA,MAAM,IAAA,GAAO,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AACvC,QAAA,uBACED,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,iFAAA;AAAA,YACV,KAAA,EAAO;AAAA,cACL,eAAA,EAAiB,IAAA,GAAO,CAAA,EAAG,IAAA,CAAK,KAAK,CAAA,EAAA,CAAA,GAAO,SAAA;AAAA,cAC5C,KAAA,EAAO,MAAM,KAAA,IAAS;AAAA,aACxB;AAAA,YAEC,QAAA,EAAA,mBAAA,CAAoB,IAAA,EAAM,EAAE,eAAA,EAAiB;AAAA,WAAA;AAAA,UAPzC;AAAA,SAQP;AAAA,MAEJ,CAAC,CAAA;AAAA,MACA,QAAQ,CAAA,oBACPC,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,sHAAA,EAAuH,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QACnI,KAAA,GAAQ,CAAA;AAAA,QAAE;AAAA,OAAA,EACd;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAKA,IAAM,eAID,CAAC,EAAE,IAAA,EAAM,OAAA,EAAS,UAAS,KAAM;AACpC,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,EAAA,uBACEA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qDAAA,EACb,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EAAgD,SAAS,OAAA,EAAS,CAAA;AAAA,oBACjFC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4KAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,wDAAA,EAAyD,QAAA,EAAA,iBAAA,EAEvE,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,OAAA;AAAA,YACT,SAAA,EAAU,wEAAA;AAAA,YAEV,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAwB;AAAA;AAAA;AACvC,OAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ,CAAA;AAKA,IAAM,0BAA0G,CAAC;AAAA,EAC/G,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,cAAc,EAAE,QAAA,EAAU,IAAA,EAAM,QAAA,EAAU,iBAAiB,UAAA,EAAW;AAE5E,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,EAAe,OAAA,KAAuB;AACzE,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,YAAY,CAAC,GAAG,KAAA,CAAM,UAAU,CAAA,EAAE;AAC3D,IAAA,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA,GAAI,OAAA;AACzB,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,CAAC,KAAA,KAAkB;AACrD,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,KAAM,KAAK,CAAA,EAAE;AACpF,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,IAAA,MAAM,IAAA,GAAO,EAAE,GAAG,KAAA,EAAO,UAAA,EAAY,CAAC,GAAG,KAAA,CAAM,UAAA,EAAY,EAAe,CAAA,EAAE;AAC5E,IAAA,QAAA,CAAS,IAAI,CAAA;AAAA,EACf,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,KAAA,KAAwB;AACvD,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,2CAAA,EAA6C,SAAS,CAAA,EAEtE,QAAA,EAAA;AAAA,IAAA,QAAA,oBACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sEAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,oJAAA;AAAA,UACV,KAAA,EAAO,MAAM,KAAA,IAAS,EAAA;AAAA,UACtB,QAAA,EAAU,CAAA,CAAA,KAAK,QAAA,CAAS,EAAE,GAAG,OAAO,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,UAC3D,WAAA,EAAY,iBAAA;AAAA,UACZ,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA,sBACAC,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,iFAAA,EACf,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,QAAA,CAAS,EAAE,GAAG,OAAO,QAAA,EAAU,CAAC,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,YAC/D,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,iDAAA;AAAA,cACA,KAAA,CAAM,WAAW,aAAA,GAAgB;AAAA,aACnC;AAAA,YAEA,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA;AAAA,cACf,4EAAA;AAAA,cACA,KAAA,CAAM,WAAW,eAAA,GAAkB;AAAA,aACrC,EAAG;AAAA;AAAA,SACL;AAAA,QAAS;AAAA,OAAA,EAEX;AAAA,KAAA,EACF,CAAA;AAAA,oBAIFC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qFAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAACG,SAAAA,EAAA,EAAU,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,QAAE;AAAA,OAAA,EAEvC,CAAA;AAAA,sBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,EAAA;AAAA,wBAAAD,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,WAAA,CAAY,KAAK,CAAA;AAAA,YAChC,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,gEAAA;AAAA,cACA,KAAA,CAAM,IAAA,KAAS,KAAA,GACX,sEAAA,GACA;AAAA,aACN;AAAA,YACD,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,wBACAA,GAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,MAAM,WAAA,CAAY,IAAI,CAAA;AAAA,YAC/B,QAAA,EAAU,QAAA;AAAA,YACV,SAAA,EAAW,EAAA;AAAA,cACT,gEAAA;AAAA,cACA,KAAA,CAAM,IAAA,KAAS,IAAA,GACX,sEAAA,GACA;AAAA,aACN;AAAA,YACD,QAAA,EAAA;AAAA;AAAA;AAED,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EACb,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,wDAAA,EAAyD,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,sBAChFA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mHAAA,EACb,QAAA,EAAA,KAAA,CAAM,WAAW,MAAA,EACpB;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACZ,QAAA,EAAA,KAAA,CAAM,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,GAAA,qBAC3BA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,IAAA;AAAA,QACX,KAAA,EAAO,GAAA;AAAA,QACP,QAAA,EAAU,CAAC,OAAA,KAAY,eAAA,CAAgB,KAAK,OAAO,CAAA;AAAA,QACnD,QAAA,EAAU,MAAM,eAAA,CAAgB,GAAG,CAAA;AAAA,QACnC,WAAA;AAAA,QACA;AAAA,OAAA;AAAA,MANK;AAAA,KAQR,CAAA,EACH,CAAA;AAAA,IAGC,CAAC,4BACAC,IAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,YAAA;AAAA,QACT,SAAA,EAAW,EAAA;AAAA,UACT,+DAAA;AAAA,UACA,6DAAA;AAAA,UACA,0CAAA;AAAA,UACA,+FAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAD,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAAE;AAAA;AAAA;AAAA;AAE9B,GAAA,EAEJ,CAAA;AAEJ,CAAA;AAKO,IAAM,gBAAA,GAAoD,CAAC,KAAA,KAAU;AAC1E,EAAA,MAAM,EAAE,IAAA,GAAO,QAAA,EAAU,OAAA,EAAS,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,KAAA,EAAO,eAAA,EAAiB,SAAA,EAAW,GAAG,IAAA,EAAK,GAAI,KAAA;AAEhH,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAII,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,SAAS,cAAA,IAAkB,YAAA;AAEjC,EAAA,MAAM,WAAA,GAAc,YAAY,MAAM;AACpC,IAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,IAAA,OAAA,IAAU;AAAA,EACZ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAGZ,EAAA,IAAI,SAAS,QAAA,EAAU;AACrB,IAAA,uBAAOJ,GAAAA,CAAC,uBAAA,EAAA,EAAwB,OAAc,eAAA,EAAkC,SAAA,EAAuB,GAAG,IAAA,EAAM,CAAA;AAAA,EAClH;AAGA,EAAA,MAAM,cAAA,GAAiB,OAAA,oBACrBA,GAAAA,CAAC,SAAI,SAAA,EAAW,EAAA;AAAA,IACd,2EAAA;AAAA,IACA,oEAAA;AAAA,IACA;AAAA,KAEA,QAAA,kBAAAA,GAAAA,CAAC,iBAAA,EAAA,EAAkB,KAAA,EAAc,iBAAkC,CAAA,EACrE,CAAA;AAGF,EAAA,uBACEC,KAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,GAAAA,CAAC,UAAK,OAAA,EAAS,MAAM,gBAAgB,IAAI,CAAA,EAAG,SAAA,EAAU,gBAAA,EACnD,QAAA,EAAA,cAAA,EACH,CAAA;AAAA,oBACAA,GAAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAM,QAAQ,OAAA,EAAS,WAAA,EACnC,QAAA,kBAAAA,GAAAA,CAAC,uBAAA,EAAA,EAAwB,KAAA,EAAc,eAAA,EAAmC,GAAG,MAAM,CAAA,EACrF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"chunk-IVUFK6SS.js","sourcesContent":["// =============================================================================\r\n// CONDITIONS EDITOR — Condition Type Metadata\r\n// =============================================================================\r\n\r\nimport type { ConditionTypeMeta, ConditionType, Condition, SelectOption } from './types';\r\nimport {\r\n Tags,\r\n Globe,\r\n Hash,\r\n User,\r\n Calendar,\r\n Monitor,\r\n Tag,\r\n MapPin,\r\n Package,\r\n ToggleLeft,\r\n GitBranch,\r\n} from 'lucide-react';\r\nimport React from 'react';\r\n\r\nexport const CONDITION_TYPES: ConditionTypeMeta[] = [\r\n { value: 'version', title: 'Version', description: 'Match specific versions', icon: 'tags', color: '#7c3aed', helpText: 'Limit by specific versions of your application or product.' },\r\n { value: 'country', title: 'Country', description: 'Filter by geographic location', icon: 'globe', color: '#2563eb', helpText: \"Limit by the user's country or region.\" },\r\n { value: 'value', title: 'Value', description: 'Match custom field values', icon: 'hash', color: '#ea580c', helpText: 'Compare text, numbers, or boolean values using various operators.' },\r\n { value: 'user', title: 'User', description: 'Filter by auth & permissions', icon: 'user', color: '#16a34a', helpText: 'Limit by authentication status, ownership, group membership, or admin privileges.' },\r\n { value: 'date', title: 'Date', description: 'Time-based conditions', icon: 'calendar', color: '#dc2626', helpText: 'Limit by specific dates or date ranges.' },\r\n { value: 'device', title: 'Device', description: 'Filter by device type', icon: 'monitor', color: '#0891b2', helpText: 'Limit by the type of device or operating system.' },\r\n { value: 'tag', title: 'Label', description: 'Match by tags or labels', icon: 'tag', color: '#db2777', helpText: 'Limit by assigned labels or tags.' },\r\n { value: 'geofence', title: 'Geofence', description: 'Geographic boundary', icon: 'map-pin', color: '#0d9488', helpText: 'Limit by geographic boundaries (rectangular area).' },\r\n { value: 'product', title: 'Product ID', description: 'Match specific items', icon: 'package', color: '#d97706', helpText: 'Limit by specific product IDs.' },\r\n { value: 'itemStatus', title: 'Item Status', description: 'Filter by item state', icon: 'toggle-left', color: '#ea580c', helpText: 'Limit by item status such as proof, claimable, owner, or virtual.' },\r\n { value: 'condition', title: 'Condition', description: 'Reference another condition', icon: 'git-branch', color: '#4f46e5', helpText: 'Reference another saved condition and check if it passes or fails.' },\r\n];\r\n\r\nconst iconMap: Record<string, React.FC<{ className?: string }>> = {\r\n tags: Tags,\r\n globe: Globe,\r\n hash: Hash,\r\n user: User,\r\n calendar: Calendar,\r\n monitor: Monitor,\r\n tag: Tag,\r\n 'map-pin': MapPin,\r\n package: Package,\r\n 'toggle-left': ToggleLeft,\r\n 'git-branch': GitBranch,\r\n};\r\n\r\nexport function getConditionMeta(type: ConditionType | null | undefined): ConditionTypeMeta | undefined {\r\n if (!type) return undefined;\r\n return CONDITION_TYPES.find(t => t.value === type);\r\n}\r\n\r\nexport function getConditionIcon(type: ConditionType | null | undefined): React.FC<{ className?: string }> {\r\n const meta = getConditionMeta(type);\r\n return (meta && iconMap[meta.icon]) || Hash;\r\n}\r\n\r\nexport function getConditionSummary(cond: Condition, options?: {\r\n savedConditions?: SelectOption[];\r\n regionOptions?: { title: string; value: string }[];\r\n}): string {\r\n if (!cond.type) return 'No condition type selected';\r\n const meta = getConditionMeta(cond.type);\r\n let summary = meta?.title || cond.type;\r\n\r\n switch (cond.type) {\r\n case 'version':\r\n if (cond.versions?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.versions.map(v => typeof v === 'string' ? v : (v.title || v.value || '')).join(', ')}`;\r\n }\r\n break;\r\n case 'country':\r\n if (cond.useRegions && cond.regions?.length) {\r\n const verb = cond.contains ? 'is in' : 'is not in';\r\n const names = cond.regions.map(r => {\r\n const reg = REGION_OPTIONS.find(o => o.value === r);\r\n return reg?.title || r;\r\n });\r\n summary += ` ${verb} ${names.join(', ')}`;\r\n } else if (cond.countries?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.countries.join(', ')}`;\r\n }\r\n break;\r\n case 'value':\r\n if (cond.field) {\r\n const ops: Record<string, string> = { equal: '=', not: '≠', greater: '>', less: '<' };\r\n summary += `: ${cond.field} ${ops[cond.validationType || ''] || ''} ${cond.value ?? '?'}`;\r\n }\r\n break;\r\n case 'tag':\r\n if (cond.tags?.length) {\r\n const verb = cond.contains ? 'has' : 'does not have';\r\n summary += ` ${verb} ${cond.tags.length} label(s)`;\r\n }\r\n break;\r\n case 'device':\r\n if (cond.displays?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.displays.join(', ')}`;\r\n }\r\n break;\r\n case 'user': {\r\n const userTypes: Record<string, string> = {\r\n valid: 'is logged in', invalid: 'is logged out', owner: 'is item owner',\r\n group: cond.groupIds?.length ? `in ${cond.groupIds.length} group(s)` : 'in groups',\r\n admin: 'is admin',\r\n };\r\n summary += ` ${userTypes[cond.userType || ''] || ''}`;\r\n break;\r\n }\r\n case 'product':\r\n if (cond.productIds?.length) {\r\n const verb = cond.contains ? 'is' : 'is not';\r\n summary += ` ${verb} ${cond.productIds.length} item(s)`;\r\n }\r\n break;\r\n case 'condition':\r\n if (cond.conditionId) {\r\n const condRef = options?.savedConditions?.find(c => c.value === cond.conditionId);\r\n summary += `: ${condRef?.title || cond.conditionId} ${cond.passes ? 'passes' : 'fails'}`;\r\n }\r\n break;\r\n case 'date': {\r\n const dateTests: Record<string, string> = { before: 'before', after: 'after', between: 'between' };\r\n summary += ` is ${dateTests[cond.dateTest || ''] || ''}`;\r\n if (cond.beforeDate) summary += ` ${cond.beforeDate}`;\r\n if (cond.afterDate) summary += ` ${cond.afterDate}`;\r\n if (cond.rangeDate) summary += ` ${cond.rangeDate}`;\r\n break;\r\n }\r\n case 'geofence': {\r\n const verb = cond.contains ? 'inside' : 'outside';\r\n summary += ` ${verb} bounds`;\r\n break;\r\n }\r\n case 'itemStatus': {\r\n const statusTypes: Record<string, string> = {\r\n hasProof: 'has proof', noProof: 'has no proof', isClaimable: 'is claimable',\r\n notClaimable: 'is not claimable', hasOwner: 'has owner', isVirtual: 'is virtual',\r\n };\r\n summary += ` ${statusTypes[cond.statusType || ''] || ''}`;\r\n break;\r\n }\r\n }\r\n\r\n return summary;\r\n}\r\n\r\nexport const DISPLAY_OPTIONS: SelectOption[] = [\r\n { title: 'Desktop', value: 'desktop' },\r\n { title: 'Mobile', value: 'mobile' },\r\n { title: 'Android', value: 'android' },\r\n { title: 'iOS', value: 'ios' },\r\n { title: 'Apple Mac', value: 'mac' },\r\n { title: 'Microsoft Windows', value: 'win' },\r\n];\r\n\r\nexport const REGION_OPTIONS: (SelectOption & { description?: string })[] = [\r\n { title: 'European Union (EU)', value: 'eu', description: 'All 27 EU member states' },\r\n { title: 'European Economic Area (EEA)', value: 'eea', description: 'EU + Iceland, Liechtenstein, Norway' },\r\n { title: 'United Kingdom', value: 'uk', description: 'England, Scotland, Wales, Northern Ireland' },\r\n { title: 'North America', value: 'northamerica', description: 'USA, Canada, Mexico' },\r\n { title: 'Asia Pacific', value: 'asiapacific', description: 'Major Asia-Pacific markets' },\r\n];\r\n\r\nexport const USER_TYPE_OPTIONS: SelectOption[] = [\r\n { title: 'Is Logged In', value: 'valid' },\r\n { title: 'Is Logged Out', value: 'invalid' },\r\n { title: 'Is Item Owner', value: 'owner' },\r\n { title: 'Is Group Member', value: 'group' },\r\n { title: 'Is Admin', value: 'admin' },\r\n];\r\n\r\nexport const ITEM_STATUS_OPTIONS: SelectOption[] = [\r\n { title: 'Is Product (Not Item)', value: 'hasProof' },\r\n { title: 'Is Single Item', value: 'noProof' },\r\n { title: 'Is Item & Claimable', value: 'isClaimable' },\r\n { title: 'Is Item & Claimed', value: 'notClaimable' },\r\n { title: 'Is Virtual Item', value: 'isVirtual' },\r\n { title: 'Is Not A Virtual Item', value: 'notVirtual' },\r\n];\r\n\r\nexport const VALUE_OPERATORS: SelectOption[] = [\r\n { title: 'Equal to', value: 'equal' },\r\n { title: 'Not Equal', value: 'not' },\r\n { title: 'Greater Than', value: 'greater' },\r\n { title: 'Less Than', value: 'less' },\r\n];\r\n\r\nexport const FIELD_TYPES: SelectOption[] = [\r\n { title: 'Boolean', value: 'boolean' },\r\n { title: 'Integer', value: 'integer' },\r\n { title: 'Text', value: 'text' },\r\n];\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Condition Type Picker Grid\r\n// =============================================================================\r\n\r\nimport React from 'react';\r\nimport { CONDITION_TYPES } from './conditionMeta';\r\nimport { getConditionIcon } from './conditionMeta';\r\nimport type { ConditionType } from './types';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ConditionTypePickerProps {\r\n onSelect: (type: ConditionType) => void;\r\n}\r\n\r\nexport const ConditionTypePicker: React.FC<ConditionTypePickerProps> = ({ onSelect }) => {\r\n return (\r\n <div className=\"p-4\">\r\n <p className=\"text-xs font-medium text-gray-500 dark:text-gray-400 mb-3\">Choose a condition type:</p>\r\n <div className=\"grid grid-cols-3 sm:grid-cols-4 gap-2\">\r\n {CONDITION_TYPES.map(ct => {\r\n const Icon = getConditionIcon(ct.value);\r\n return (\r\n <button\r\n key={ct.value}\r\n onClick={() => onSelect(ct.value)}\r\n className={cn(\r\n 'flex flex-col items-center gap-1.5 p-3 rounded-lg border-2 border-gray-200 dark:border-gray-700',\r\n 'hover:border-blue-400 dark:hover:border-blue-500 hover:bg-blue-50/50 dark:hover:bg-blue-950/20',\r\n 'transition-all text-center cursor-pointer'\r\n )}\r\n >\r\n <div\r\n className=\"w-8 h-8 rounded-full flex items-center justify-center\"\r\n style={{ backgroundColor: `${ct.color}18`, color: ct.color }}\r\n >\r\n <Icon className=\"w-4 h-4\" />\r\n </div>\r\n <span className=\"text-[11px] font-medium text-gray-700 dark:text-gray-300\">{ct.title}</span>\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Per-type configuration UI\r\n// =============================================================================\r\n\r\nimport React from 'react';\r\nimport type { Condition, ConditionsEditorProps } from './types';\r\nimport {\r\n DISPLAY_OPTIONS, REGION_OPTIONS, USER_TYPE_OPTIONS,\r\n ITEM_STATUS_OPTIONS, VALUE_OPERATORS, FIELD_TYPES,\r\n} from './conditionMeta';\r\nimport { cn } from '../../utils/cn';\r\n\r\ninterface ConditionConfigProps {\r\n condition: Condition;\r\n onChange: (updated: Condition) => void;\r\n editorProps: Pick<ConditionsEditorProps, 'versions' | 'tags' | 'products' | 'savedConditions' | 'userGroups'>;\r\n readOnly?: boolean;\r\n}\r\n\r\n// Reusable pill-toggle for contains/notContains\r\nconst ContainsToggle: React.FC<{\r\n value: boolean | undefined;\r\n onChange: (v: boolean) => void;\r\n trueLabel?: string;\r\n falseLabel?: string;\r\n disabled?: boolean;\r\n}> = ({ value = true, onChange, trueLabel = 'Is One Of', falseLabel = 'Is Not One Of', disabled }) => (\r\n <div className=\"flex gap-1 bg-gray-100 dark:bg-gray-800 rounded-md p-0.5 w-fit\">\r\n {[{ v: true, label: trueLabel }, { v: false, label: falseLabel }].map(opt => (\r\n <button\r\n key={String(opt.v)}\r\n onClick={() => onChange(opt.v)}\r\n disabled={disabled}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded transition-colors',\r\n value === opt.v\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n {opt.label}\r\n </button>\r\n ))}\r\n </div>\r\n);\r\n\r\n// Multi-select chip picker\r\nconst ChipSelect: React.FC<{\r\n options: { title: string; value: string; description?: string }[];\r\n selected: string[];\r\n onChange: (values: string[]) => void;\r\n disabled?: boolean;\r\n}> = ({ options, selected, onChange, disabled }) => (\r\n <div className=\"flex flex-wrap gap-1.5\">\r\n {options.map(opt => {\r\n const isSelected = selected.includes(opt.value);\r\n return (\r\n <button\r\n key={opt.value}\r\n onClick={() => {\r\n if (disabled) return;\r\n onChange(isSelected ? selected.filter(v => v !== opt.value) : [...selected, opt.value]);\r\n }}\r\n disabled={disabled}\r\n title={opt.description}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs rounded-full border transition-colors',\r\n isSelected\r\n ? 'bg-blue-100 dark:bg-blue-900/40 border-blue-300 dark:border-blue-700 text-blue-700 dark:text-blue-300'\r\n : 'border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:border-gray-300 dark:hover:border-gray-600'\r\n )}\r\n >\r\n {opt.title}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n);\r\n\r\nconst inputClass = 'w-full px-2.5 py-1.5 text-sm rounded-md border border-gray-300 dark:border-gray-600 bg-transparent focus:outline-none focus:ring-1 focus:ring-blue-500';\r\n\r\nexport const ConditionConfig: React.FC<ConditionConfigProps> = ({\r\n condition: cond,\r\n onChange,\r\n editorProps,\r\n readOnly,\r\n}) => {\r\n const update = (patch: Partial<Condition>) => onChange({ ...cond, ...patch });\r\n\r\n switch (cond.type) {\r\n // ─── VERSION ──────────────────────────────────\r\n case 'version':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.versions?.length ? (\r\n <ChipSelect\r\n options={editorProps.versions.map(v => ({ title: v.title, value: v.value || '' }))}\r\n selected={(cond.versions || []).map(v => typeof v === 'string' ? v : (v.value || ''))}\r\n onChange={vals => update({ versions: vals.map(v => ({ value: v, title: editorProps.versions?.find(o => o.value === v)?.title || v })) })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <p className=\"text-xs text-gray-400 italic\">No versions available</p>\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── COUNTRY ──────────────────────────────────\r\n case 'country':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n <div className=\"flex items-center gap-2\">\r\n <label className=\"text-xs text-gray-500 dark:text-gray-400\">Use regions</label>\r\n <button\r\n onClick={() => update({ useRegions: !cond.useRegions })}\r\n disabled={readOnly}\r\n className={cn(\r\n 'w-8 h-5 rounded-full transition-colors relative',\r\n cond.useRegions ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'\r\n )}\r\n >\r\n <span className={cn(\r\n 'absolute top-0.5 w-4 h-4 rounded-full bg-white shadow transition-transform',\r\n cond.useRegions ? 'translate-x-3.5' : 'translate-x-0.5'\r\n )} />\r\n </button>\r\n </div>\r\n {cond.useRegions ? (\r\n <ChipSelect\r\n options={REGION_OPTIONS}\r\n selected={cond.regions || []}\r\n onChange={vals => update({ regions: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <input\r\n className={inputClass}\r\n value={(cond.countries || []).join(', ')}\r\n onChange={e => update({ countries: e.target.value.split(',').map(s => s.trim()).filter(Boolean) })}\r\n placeholder=\"US, GB, DE, …\"\r\n disabled={readOnly}\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── VALUE ────────────────────────────────────\r\n case 'value':\r\n return (\r\n <div className=\"space-y-3\">\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">Field Name</label>\r\n <input className={inputClass} value={cond.field || ''} onChange={e => update({ field: e.target.value })} placeholder=\"field_name\" disabled={readOnly} />\r\n </div>\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">Field Type</label>\r\n <select className={inputClass} value={cond.fieldType || 'text'} onChange={e => update({ fieldType: e.target.value as any })} disabled={readOnly}>\r\n {FIELD_TYPES.map(ft => <option key={ft.value} value={ft.value}>{ft.title}</option>)}\r\n </select>\r\n </div>\r\n </div>\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">Operator</label>\r\n <select className={inputClass} value={cond.validationType || 'equal'} onChange={e => update({ validationType: e.target.value as any })} disabled={readOnly}>\r\n {VALUE_OPERATORS.map(op => <option key={op.value} value={op.value}>{op.title}</option>)}\r\n </select>\r\n </div>\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">Value</label>\r\n <input className={inputClass} value={String(cond.value ?? '')} onChange={e => update({ value: e.target.value })} placeholder=\"value\" disabled={readOnly} />\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n\r\n // ─── USER ─────────────────────────────────────\r\n case 'user':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ChipSelect\r\n options={USER_TYPE_OPTIONS}\r\n selected={cond.userType ? [cond.userType] : []}\r\n onChange={vals => update({ userType: (vals[vals.length - 1] || undefined) as any })}\r\n disabled={readOnly}\r\n />\r\n {cond.userType === 'group' && editorProps.userGroups?.length ? (\r\n <ChipSelect\r\n options={editorProps.userGroups}\r\n selected={cond.groupIds || []}\r\n onChange={vals => update({ groupIds: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : null}\r\n </div>\r\n );\r\n\r\n // ─── DATE ─────────────────────────────────────\r\n case 'date':\r\n return (\r\n <div className=\"space-y-3\">\r\n <div className=\"flex gap-1 bg-gray-100 dark:bg-gray-800 rounded-md p-0.5 w-fit\">\r\n {(['before', 'after', 'between'] as const).map(dt => (\r\n <button\r\n key={dt}\r\n onClick={() => update({ dateTest: dt })}\r\n disabled={readOnly}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded transition-colors capitalize',\r\n cond.dateTest === dt\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400'\r\n )}\r\n >\r\n Is {dt}\r\n </button>\r\n ))}\r\n </div>\r\n {(cond.dateTest === 'before' || cond.dateTest === 'between') && (\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">{cond.dateTest === 'between' ? 'Start Date' : 'Before Date'}</label>\r\n <input type=\"date\" className={inputClass} value={cond.beforeDate || ''} onChange={e => update({ beforeDate: e.target.value })} disabled={readOnly} />\r\n </div>\r\n )}\r\n {(cond.dateTest === 'after' || cond.dateTest === 'between') && (\r\n <div>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">{cond.dateTest === 'between' ? 'End Date' : 'After Date'}</label>\r\n <input type=\"date\" className={inputClass} value={cond.afterDate || ''} onChange={e => update({ afterDate: e.target.value })} disabled={readOnly} />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── DEVICE ───────────────────────────────────\r\n case 'device':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n <ChipSelect\r\n options={DISPLAY_OPTIONS}\r\n selected={cond.displays || []}\r\n onChange={vals => update({ displays: vals })}\r\n disabled={readOnly}\r\n />\r\n </div>\r\n );\r\n\r\n // ─── TAG ──────────────────────────────────────\r\n case 'tag':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.tags?.length ? (\r\n <ChipSelect\r\n options={editorProps.tags.map(t => ({ title: t, value: t }))}\r\n selected={cond.tags || []}\r\n onChange={vals => update({ tags: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <input className={inputClass} value={(cond.tags || []).join(', ')} onChange={e => update({ tags: e.target.value.split(',').map(s => s.trim()).filter(Boolean) })} placeholder=\"tag1, tag2, …\" disabled={readOnly} />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── GEOFENCE ─────────────────────────────────\r\n case 'geofence':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} trueLabel=\"Is Inside Of\" falseLabel=\"Is Outside Of\" disabled={readOnly} />\r\n <div className=\"grid grid-cols-2 gap-2\">\r\n {[\r\n { label: 'Latitude 1 (NW)', key: 'lat1' as const },\r\n { label: 'Longitude 1 (NW)', key: 'lng1' as const },\r\n { label: 'Latitude 2 (SE)', key: 'lat2' as const },\r\n { label: 'Longitude 2 (SE)', key: 'lng2' as const },\r\n ].map(f => (\r\n <div key={f.key}>\r\n <label className=\"text-[10px] text-gray-400 mb-0.5 block\">{f.label}</label>\r\n <input\r\n type=\"number\"\r\n step=\"any\"\r\n className={inputClass}\r\n value={cond[f.key] ?? ''}\r\n onChange={e => update({ [f.key]: e.target.value ? parseFloat(e.target.value) : undefined })}\r\n disabled={readOnly}\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n\r\n // ─── PRODUCT ──────────────────────────────────\r\n case 'product':\r\n return (\r\n <div className=\"space-y-3\">\r\n <ContainsToggle value={cond.contains} onChange={v => update({ contains: v })} disabled={readOnly} />\r\n {editorProps.products?.length ? (\r\n <ChipSelect\r\n options={editorProps.products}\r\n selected={cond.productIds || []}\r\n onChange={vals => update({ productIds: vals })}\r\n disabled={readOnly}\r\n />\r\n ) : (\r\n <input className={inputClass} value={(cond.productIds || []).join(', ')} onChange={e => update({ productIds: e.target.value.split(',').map(s => s.trim()).filter(Boolean) })} placeholder=\"product-id-1, product-id-2, …\" disabled={readOnly} />\r\n )}\r\n </div>\r\n );\r\n\r\n // ─── ITEM STATUS ──────────────────────────────\r\n case 'itemStatus':\r\n return (\r\n <ChipSelect\r\n options={ITEM_STATUS_OPTIONS}\r\n selected={cond.statusType ? [cond.statusType] : []}\r\n onChange={vals => update({ statusType: (vals[vals.length - 1] || undefined) as any })}\r\n disabled={readOnly}\r\n />\r\n );\r\n\r\n // ─── CONDITION REFERENCE ──────────────────────\r\n case 'condition':\r\n return (\r\n <div className=\"space-y-3\">\r\n {editorProps.savedConditions?.length ? (\r\n <select className={inputClass} value={cond.conditionId || ''} onChange={e => update({ conditionId: e.target.value })} disabled={readOnly}>\r\n <option value=\"\">Select a condition…</option>\r\n {editorProps.savedConditions.map(c => <option key={c.value} value={c.value}>{c.title}</option>)}\r\n </select>\r\n ) : (\r\n <input className={inputClass} value={cond.conditionId || ''} onChange={e => update({ conditionId: e.target.value })} placeholder=\"Condition ID\" disabled={readOnly} />\r\n )}\r\n <div className=\"flex gap-1 bg-gray-100 dark:bg-gray-800 rounded-md p-0.5 w-fit\">\r\n {[{ v: true, l: 'Passes' }, { v: false, l: 'Fails' }].map(opt => (\r\n <button\r\n key={String(opt.v)}\r\n onClick={() => update({ passes: opt.v })}\r\n disabled={readOnly}\r\n className={cn(\r\n 'px-2.5 py-1 text-xs font-medium rounded transition-colors',\r\n cond.passes === opt.v\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400'\r\n )}\r\n >\r\n {opt.l}\r\n </button>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n\r\n default:\r\n return <p className=\"text-xs text-gray-400 italic\">Unknown condition type</p>;\r\n }\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Single Condition Card\r\n// =============================================================================\r\n\r\nimport React, { useState } from 'react';\r\nimport type { Condition, ConditionType, ConditionsEditorProps } from './types';\r\nimport { getConditionMeta, getConditionIcon, getConditionSummary } from './conditionMeta';\r\nimport { ConditionTypePicker } from './ConditionTypePicker';\r\nimport { ConditionConfig } from './ConditionConfig';\r\nimport { cn } from '../../utils/cn';\r\nimport { ChevronDown, ChevronRight, Trash2, RefreshCw } from 'lucide-react';\r\n\r\ninterface ConditionCardProps {\r\n condition: Condition;\r\n index: number;\r\n onChange: (updated: Condition) => void;\r\n onDelete: () => void;\r\n editorProps: Pick<ConditionsEditorProps, 'versions' | 'tags' | 'products' | 'savedConditions' | 'userGroups'>;\r\n readOnly?: boolean;\r\n}\r\n\r\nexport const ConditionCard: React.FC<ConditionCardProps> = ({\r\n condition,\r\n index,\r\n onChange,\r\n onDelete,\r\n editorProps,\r\n readOnly,\r\n}) => {\r\n const [expanded, setExpanded] = useState(!condition.type);\r\n const meta = getConditionMeta(condition.type);\r\n const Icon = getConditionIcon(condition.type);\r\n const summary = getConditionSummary(condition, { savedConditions: editorProps.savedConditions });\r\n\r\n const handleSelectType = (type: ConditionType) => {\r\n onChange({ ...condition, type });\r\n setExpanded(true);\r\n };\r\n\r\n return (\r\n <div className=\"rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden shadow-sm transition-shadow hover:shadow-md\">\r\n {/* Header */}\r\n <div\r\n className={cn(\r\n 'flex items-center gap-3 px-4 py-3 cursor-pointer select-none transition-colors',\r\n 'hover:bg-gray-50 dark:hover:bg-gray-800/50'\r\n )}\r\n style={meta ? {\r\n background: `linear-gradient(90deg, ${meta.color}08 0%, transparent 100%)`,\r\n } : undefined}\r\n onClick={() => setExpanded(!expanded)}\r\n >\r\n {/* Icon */}\r\n <div\r\n className=\"w-8 h-8 rounded-full flex items-center justify-center flex-shrink-0\"\r\n style={meta ? { backgroundColor: `${meta.color}18`, color: meta.color } : { backgroundColor: '#e5e7eb' }}\r\n >\r\n <Icon className=\"w-4 h-4\" />\r\n </div>\r\n\r\n {/* Title & summary */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium text-gray-800 dark:text-gray-200 truncate\">\r\n {meta?.title || 'Select Condition Type'}\r\n </p>\r\n <p className=\"text-[11px] text-gray-500 dark:text-gray-400 truncate\">{summary}</p>\r\n </div>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-1 flex-shrink-0\">\r\n {condition.type && !readOnly && (\r\n <button\r\n onClick={(e) => { e.stopPropagation(); onChange({ type: null }); }}\r\n className=\"p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors\"\r\n title=\"Change type\"\r\n >\r\n <RefreshCw className=\"w-3.5 h-3.5 text-gray-400\" />\r\n </button>\r\n )}\r\n {!readOnly && (\r\n <button\r\n onClick={(e) => { e.stopPropagation(); onDelete(); }}\r\n className=\"p-1 rounded hover:bg-red-100 dark:hover:bg-red-900/30 transition-colors\"\r\n title=\"Delete\"\r\n >\r\n <Trash2 className=\"w-3.5 h-3.5 text-red-400\" />\r\n </button>\r\n )}\r\n {expanded ? <ChevronDown className=\"w-4 h-4 text-gray-400\" /> : <ChevronRight className=\"w-4 h-4 text-gray-400\" />}\r\n </div>\r\n </div>\r\n\r\n {/* Body */}\r\n {expanded && (\r\n <div className=\"border-t border-gray-100 dark:border-gray-800 px-4 py-3\">\r\n {!condition.type ? (\r\n <ConditionTypePicker onSelect={handleSelectType} />\r\n ) : (\r\n <div className=\"space-y-3\">\r\n {meta?.helpText && (\r\n <p className=\"text-[11px] text-gray-400 dark:text-gray-500 italic\">{meta.helpText}</p>\r\n )}\r\n <ConditionConfig\r\n condition={condition}\r\n onChange={onChange}\r\n editorProps={editorProps}\r\n readOnly={readOnly}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","// =============================================================================\r\n// CONDITIONS EDITOR — Main Component\r\n// =============================================================================\r\n// Supports inline and dialog modes. Dialog mode shows a summary trigger and\r\n// opens a modal with the full editor.\r\n\r\nimport React, { useCallback, useState } from 'react';\r\nimport type { Condition, ConditionGroup, ConditionsEditorProps } from './types';\r\nimport { ConditionCard } from './ConditionCard';\r\nimport { getConditionMeta, getConditionSummary } from './conditionMeta';\r\nimport { cn } from '../../utils/cn';\r\nimport { Plus, GitBranch, Filter, X, ChevronRight } from 'lucide-react';\r\n\r\n// ---------------------------------------------------------------------------\r\n// Summary badge for dialog trigger\r\n// ---------------------------------------------------------------------------\r\nconst ConditionsSummary: React.FC<{ value: ConditionGroup; savedConditions?: { title: string; value: string }[] }> = ({\r\n value,\r\n savedConditions,\r\n}) => {\r\n const count = value.conditions.filter(c => c.type).length;\r\n if (count === 0) {\r\n return (\r\n <div className=\"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400\">\r\n <Filter className=\"w-4 h-4\" />\r\n <span>No conditions set</span>\r\n <ChevronRight className=\"w-4 h-4 ml-auto\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-1\">\r\n <div className=\"flex items-center gap-2 text-xs font-medium text-gray-500 dark:text-gray-400\">\r\n <Filter className=\"w-3.5 h-3.5\" />\r\n {count} condition{count !== 1 ? 's' : ''} · {value.type === 'and' ? 'Match ALL' : 'Match ANY'}\r\n <ChevronRight className=\"w-4 h-4 ml-auto\" />\r\n </div>\r\n <div className=\"flex flex-wrap gap-1.5\">\r\n {value.conditions.filter(c => c.type).slice(0, 5).map((cond, i) => {\r\n const meta = getConditionMeta(cond.type);\r\n return (\r\n <span\r\n key={i}\r\n className=\"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[11px] font-medium\"\r\n style={{\r\n backgroundColor: meta ? `${meta.color}15` : '#e5e7eb',\r\n color: meta?.color || '#6b7280',\r\n }}\r\n >\r\n {getConditionSummary(cond, { savedConditions })}\r\n </span>\r\n );\r\n })}\r\n {count > 5 && (\r\n <span className=\"inline-flex items-center px-2 py-0.5 rounded-full text-[11px] font-medium bg-gray-100 dark:bg-gray-800 text-gray-500\">\r\n +{count - 5} more\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Lightweight dialog\r\n// ---------------------------------------------------------------------------\r\nconst EditorDialog: React.FC<{\r\n open: boolean;\r\n onClose: () => void;\r\n children: React.ReactNode;\r\n}> = ({ open, onClose, children }) => {\r\n if (!open) return null;\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-center justify-center\">\r\n <div className=\"absolute inset-0 bg-black/50 backdrop-blur-sm\" onClick={onClose} />\r\n <div className=\"relative z-10 w-full max-w-2xl max-h-[80vh] bg-white dark:bg-gray-900 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 flex flex-col overflow-hidden mx-4\">\r\n <div className=\"flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700\">\r\n <h3 className=\"text-sm font-semibold text-gray-900 dark:text-gray-100\">\r\n Edit Conditions\r\n </h3>\r\n <button\r\n onClick={onClose}\r\n className=\"p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors\"\r\n >\r\n <X className=\"w-4 h-4 text-gray-500\" />\r\n </button>\r\n </div>\r\n <div className=\"flex-1 overflow-y-auto p-4\">\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Inner editor content (shared by both modes)\r\n// ---------------------------------------------------------------------------\r\nconst ConditionsEditorContent: React.FC<Omit<ConditionsEditorProps, 'mode' | 'trigger' | 'open' | 'onClose'>> = ({\r\n value,\r\n onChange,\r\n isGlobal,\r\n versions,\r\n tags,\r\n products,\r\n savedConditions,\r\n userGroups,\r\n readOnly = false,\r\n className,\r\n}) => {\r\n const editorProps = { versions, tags, products, savedConditions, userGroups };\r\n\r\n const updateCondition = useCallback((index: number, updated: Condition) => {\r\n const next = { ...value, conditions: [...value.conditions] };\r\n next.conditions[index] = updated;\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const deleteCondition = useCallback((index: number) => {\r\n const next = { ...value, conditions: value.conditions.filter((_, i) => i !== index) };\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const addCondition = useCallback(() => {\r\n const next = { ...value, conditions: [...value.conditions, {} as Condition] };\r\n onChange(next);\r\n }, [value, onChange]);\r\n\r\n const toggleLogic = useCallback((logic: 'and' | 'or') => {\r\n onChange({ ...value, type: logic });\r\n }, [value, onChange]);\r\n\r\n return (\r\n <div className={cn('smartlinks-ui-conditions-editor space-y-4', className)}>\r\n {/* Global settings */}\r\n {isGlobal && (\r\n <div className=\"rounded-lg border border-gray-200 dark:border-gray-700 p-4 space-y-3\">\r\n <input\r\n className=\"w-full px-3 py-2 text-sm rounded-md border border-gray-300 dark:border-gray-600 bg-transparent focus:outline-none focus:ring-1 focus:ring-blue-500\"\r\n value={value.title || ''}\r\n onChange={e => onChange({ ...value, title: e.target.value })}\r\n placeholder=\"Condition Title\"\r\n disabled={readOnly}\r\n />\r\n <label className=\"flex items-center gap-2 text-sm text-gray-600 dark:text-gray-400 cursor-pointer\">\r\n <button\r\n onClick={() => onChange({ ...value, disabled: !value.disabled })}\r\n disabled={readOnly}\r\n className={cn(\r\n 'w-9 h-5 rounded-full transition-colors relative',\r\n value.disabled ? 'bg-blue-500' : 'bg-gray-300 dark:bg-gray-600'\r\n )}\r\n >\r\n <span className={cn(\r\n 'absolute top-0.5 w-4 h-4 rounded-full bg-white shadow transition-transform',\r\n value.disabled ? 'translate-x-4' : 'translate-x-0.5'\r\n )} />\r\n </button>\r\n Disabled / Hidden\r\n </label>\r\n </div>\r\n )}\r\n\r\n {/* Logic type toggle */}\r\n <div className=\"rounded-lg border border-gray-200 dark:border-gray-700 p-4\">\r\n <div className=\"flex items-center gap-1.5 text-xs font-medium text-gray-500 dark:text-gray-400 mb-3\">\r\n <GitBranch className=\"w-3.5 h-3.5\" />\r\n Logic Type\r\n </div>\r\n <div className=\"flex gap-1 bg-gray-100 dark:bg-gray-800 rounded-md p-0.5\">\r\n <button\r\n onClick={() => toggleLogic('and')}\r\n disabled={readOnly}\r\n className={cn(\r\n 'flex-1 px-3 py-2 text-sm font-medium rounded transition-colors',\r\n value.type === 'and'\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n Match ALL (AND)\r\n </button>\r\n <button\r\n onClick={() => toggleLogic('or')}\r\n disabled={readOnly}\r\n className={cn(\r\n 'flex-1 px-3 py-2 text-sm font-medium rounded transition-colors',\r\n value.type === 'or'\r\n ? 'bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 shadow-sm'\r\n : 'text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300'\r\n )}\r\n >\r\n Match ANY (OR)\r\n </button>\r\n </div>\r\n </div>\r\n\r\n {/* Conditions header */}\r\n <div className=\"flex items-center gap-2\">\r\n <p className=\"text-sm font-semibold text-gray-700 dark:text-gray-300\">Conditions</p>\r\n <span className=\"px-2 py-0.5 text-[10px] font-medium rounded-full bg-blue-100 dark:bg-blue-900/40 text-blue-700 dark:text-blue-300\">\r\n {value.conditions.length}\r\n </span>\r\n </div>\r\n\r\n {/* Condition cards */}\r\n <div className=\"space-y-3\">\r\n {value.conditions.map((cond, idx) => (\r\n <ConditionCard\r\n key={idx}\r\n condition={cond}\r\n index={idx}\r\n onChange={(updated) => updateCondition(idx, updated)}\r\n onDelete={() => deleteCondition(idx)}\r\n editorProps={editorProps}\r\n readOnly={readOnly}\r\n />\r\n ))}\r\n </div>\r\n\r\n {/* Add button */}\r\n {!readOnly && (\r\n <button\r\n onClick={addCondition}\r\n className={cn(\r\n 'w-full flex items-center justify-center gap-2 py-3 rounded-lg',\r\n 'border-2 border-dashed border-gray-300 dark:border-gray-600',\r\n 'text-sm text-gray-500 dark:text-gray-400',\r\n 'hover:border-blue-400 dark:hover:border-blue-500 hover:text-blue-500 dark:hover:text-blue-400',\r\n 'transition-colors cursor-pointer'\r\n )}\r\n >\r\n <Plus className=\"w-4 h-4\" />\r\n Add New Condition\r\n </button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// Public API\r\n// ---------------------------------------------------------------------------\r\nexport const ConditionsEditor: React.FC<ConditionsEditorProps> = (props) => {\r\n const { mode = 'inline', trigger, open: controlledOpen, onClose, value, savedConditions, className, ...rest } = props;\r\n\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const isOpen = controlledOpen ?? internalOpen;\r\n\r\n const handleClose = useCallback(() => {\r\n setInternalOpen(false);\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n // Inline mode — render editor directly\r\n if (mode === 'inline') {\r\n return <ConditionsEditorContent value={value} savedConditions={savedConditions} className={className} {...rest} />;\r\n }\r\n\r\n // Dialog mode\r\n const triggerElement = trigger || (\r\n <div className={cn(\r\n 'rounded-lg border border-gray-200 dark:border-gray-700 p-3 cursor-pointer',\r\n 'hover:border-gray-300 dark:hover:border-gray-600 transition-colors',\r\n className,\r\n )}>\r\n <ConditionsSummary value={value} savedConditions={savedConditions} />\r\n </div>\r\n );\r\n\r\n return (\r\n <>\r\n <span onClick={() => setInternalOpen(true)} className=\"cursor-pointer\">\r\n {triggerElement}\r\n </span>\r\n <EditorDialog open={isOpen} onClose={handleClose}>\r\n <ConditionsEditorContent value={value} savedConditions={savedConditions} {...rest} />\r\n </EditorDialog>\r\n </>\r\n );\r\n};\r\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { clsx } from 'clsx';
|
|
2
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
|
+
|
|
4
|
+
// src/utils/cn.ts
|
|
5
|
+
function cn(...inputs) {
|
|
6
|
+
return twMerge(clsx(inputs));
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { cn };
|
|
10
|
+
//# sourceMappingURL=chunk-L7FQ52F5.js.map
|
|
11
|
+
//# sourceMappingURL=chunk-L7FQ52F5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts"],"names":[],"mappings":";;;;AAIO,SAAS,MAAM,MAAA,EAAsB;AAC1C,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAC,CAAA;AAC7B","file":"chunk-L7FQ52F5.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\n/** Merge Tailwind classes with clsx — same pattern as shadcn/ui */\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n"]}
|