@particle-academy/react-fancy 5.63.0 → 5.64.0
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/CHANGELOG.md +31 -0
- package/README.md +1 -0
- package/dist/chunk-DTOIO42M.js +605 -0
- package/dist/chunk-DTOIO42M.js.map +1 -0
- package/dist/chunk-QP6VNKLW.cjs +608 -0
- package/dist/chunk-QP6VNKLW.cjs.map +1 -0
- package/dist/index.cjs +27 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/inputs.cjs +10 -10
- package/dist/inputs.js +2 -2
- package/dist/reorderable-grid.cjs +20 -0
- package/dist/reorderable-grid.cjs.map +1 -0
- package/dist/reorderable-grid.d.cts +141 -0
- package/dist/reorderable-grid.d.ts +141 -0
- package/dist/reorderable-grid.js +7 -0
- package/dist/reorderable-grid.js.map +1 -0
- package/docs/ReorderableGrid.md +231 -0
- package/package.json +11 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/ReorderableGrid/move-item.ts","../src/components/ReorderableGrid/ReorderableGrid.tsx"],"names":["moved","useMemo","useControllableState","useCallback","useState","useRef","total","useId","useEscapeKey","useEffect","t","useLayoutEffect","jsxs","composeRefs","cn","jsx","forwardRef"],"mappings":";;;;;;;;;;AASA,SAAS,cAAiB,MAAA,EAAmE;AAC3F,EAAA,IAAI,CAAC,QAAQ,OAAO,IAAA;AACpB,EAAA,IAAI,OAAO,MAAA,KAAW,UAAA,EAAY,OAAO,MAAA;AACzC,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,MAAM,CAAA;AAC1B,EAAA,OAAO,IAAI,IAAA,GAAO,CAAC,OAAU,GAAA,CAAI,GAAA,CAAI,EAAE,CAAA,GAAI,IAAA;AAC7C;AAkBO,SAAS,SACd,GAAA,EACA,SAAA,EACA,OAAA,EACA,OAAA,GAA8B,EAAC,EAC1B;AACL,EAAA,MAAM,IAAI,GAAA,CAAI,MAAA;AACd,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,CAAC,CAAA,IAAK;AAAA,IACtB,CAAC,aAAa,SAAS,CAAA;AAAA,IACvB,CAAC,WAAW,OAAO;AAAA,GACrB,EAAY;AACV,IAAA,IAAI,CAAC,OAAO,SAAA,CAAU,CAAC,KAAK,CAAA,GAAI,CAAA,IAAK,KAAK,CAAA,EAAG;AAC3C,MAAA,MAAM,IAAI,WAAW,CAAA,UAAA,EAAa,IAAI,IAAI,CAAC,CAAA,eAAA,EAAkB,CAAA,GAAI,CAAC,CAAA,CAAE,CAAA;AAAA,IACtE;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAAM,IAAI,KAAA,EAAM;AACtB,EAAA,IAAI,SAAA,KAAc,SAAS,OAAO,GAAA;AAElC,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,OAAA,CAAQ,MAAM,CAAA;AAC7C,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,CAACA,MAAK,CAAA,GAAI,GAAA,CAAI,MAAA,CAAO,WAAW,CAAC,CAAA;AACvC,IAAA,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,CAAA,EAAGA,MAAU,CAAA;AACjC,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,IAAI,QAAA,CAAS,GAAA,CAAI,SAAS,CAAM,CAAA,IAAK,SAAS,GAAA,CAAI,OAAO,CAAM,CAAA,EAAG,OAAO,GAAA;AAGzE,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,KAAK,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,CAAC,CAAM,CAAA,EAAG,KAAA,CAAM,KAAK,CAAC,CAAA;AACpE,EAAA,MAAM,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,GAAA,CAAI,CAAC,CAAM,CAAA;AACzC,EAAA,MAAM,CAAC,KAAK,CAAA,GAAI,IAAA,CAAK,OAAO,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG,CAAC,CAAA;AACvD,EAAA,IAAA,CAAK,OAAO,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,EAAG,GAAG,KAAU,CAAA;AACjD,EAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,EAAM,CAAA,KAAM;AACzB,IAAA,GAAA,CAAI,IAAI,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA;AAAA,EACpB,CAAC,CAAA;AACD,EAAA,OAAO,GAAA;AACT;ACrCA,IAAM,cAAA,GAAiB;AAAA,EACrB,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAM,WAAA,GAAc,EAAE,IAAA,EAAM,OAAA,EAAS,IAAI,OAAA,EAAS,EAAA,EAAI,OAAA,EAAS,EAAA,EAAI,QAAA,EAAS;AAE5E,IAAM,UAAA,GACJ,uHAAA;AAEF,IAAM,SAAA,GACJ,6NAAA;AAGF,IAAM,WAAA,GACJ,kYAAA;AAKF,IAAM,kBAAA,GACJ,iJAAA;AAGF,IAAM,cAAA,GAAiB,CAAA;AAEvB,IAAM,IAAA,GAAO,EAAA;AACb,IAAM,eAAA,GAAkB,EAAA;AACxB,IAAM,QAAA,GAAW,GAAA;AAGjB,IAAM,WAAA,GAAc,0FAAA;AAEpB,IAAM,cAAA,GAAwC;AAAA,EAC5C,YAAA,EACE,wGAAA;AAAA,EACF,eAAA,EAAiB,kBAAA;AAAA,EACjB,UAAU,CAAC,CAAA,KACT,CAAA,UAAA,EAAa,CAAA,CAAE,KAAK,CAAA,aAAA,EAAgB,CAAA,CAAE,QAAQ,CAAA,IAAA,EAAO,EAAE,KAAK,CAAA,MAAA,EAAS,EAAE,GAAG,CAAA,QAAA,EAAW,EAAE,MAAM,CAAA,6DAAA,CAAA;AAAA,EAE/F,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA,kBAAA,EAAqB,EAAE,QAAQ,CAAA,IAAA,EAAO,CAAA,CAAE,KAAK,CAAA,MAAA,EAAS,CAAA,CAAE,GAAG,CAAA,QAAA,EAAW,EAAE,MAAM,CAAA,CAAA;AAAA,EAC5F,SAAS,CAAC,CAAA,KAAM,CAAA,QAAA,EAAW,CAAA,CAAE,KAAK,CAAA,aAAA,EAAgB,CAAA,CAAE,QAAQ,CAAA,IAAA,EAAO,EAAE,KAAK,CAAA,MAAA,EAAS,EAAE,GAAG,CAAA,QAAA,EAAW,EAAE,MAAM,CAAA,CAAA;AAAA,EAC3G,WAAW,CAAC,CAAA,KACV,CAAA,WAAA,EAAc,CAAA,CAAE,KAAK,CAAA,sBAAA,EAAyB,CAAA,CAAE,QAAQ,CAAA,IAAA,EAAO,EAAE,KAAK,CAAA,MAAA,EAAS,EAAE,GAAG,CAAA,QAAA,EAAW,EAAE,MAAM,CAAA,CAAA;AAAA,EACzG,MAAA,EAAQ,CAAC,CAAA,KAAM,CAAA,EAAG,EAAE,KAAK,CAAA,8BAAA;AAC3B,CAAA;AAMA,SAAS,YAAA,CAAa,OAAsC,KAAA,EAAiD;AAC3G,EAAA,MAAM,MAAM,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,EAAE,EAAE,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,GAAG,CAAA;AACzB,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,EAAA,IAAM,KAAA,IAAS,EAAC,EAAG;AAC5B,IAAA,IAAI,KAAA,CAAM,IAAI,EAAE,CAAA,IAAK,CAAC,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,EAAG;AAClC,MAAA,IAAA,CAAK,IAAI,EAAE,CAAA;AACX,MAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IACb;AAAA,EACF;AACA,EAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AACpB,IAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,EAAG;AACjB,MAAA,IAAA,CAAK,IAAI,EAAE,CAAA;AACX,MAAA,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IACb;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,SAAA,CAAU,GAAsB,CAAA,EAA+B;AACtE,EAAA,OAAO,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,KAAA,CAAM,CAAC,EAAA,EAAI,CAAA,KAAM,EAAA,KAAO,CAAA,CAAE,CAAC,CAAC,CAAA;AAChE;AAEA,SAAS,oBAAA,GAAgC;AACvC,EAAA,OAAO,OAAO,UAAA,KAAe,UAAA,IAAc,UAAA,CAAW,kCAAkC,CAAA,CAAE,OAAA;AAC5F;AA2BA,SAAS,aAAa,EAAA,EAAqC;AACzD,EAAA,KAAA,IAAS,IAAI,EAAA,CAAG,aAAA,EAAe,CAAA,EAAG,CAAA,GAAI,EAAE,aAAA,EAAe;AACrD,IAAA,MAAM,CAAA,GAAI,iBAAiB,CAAC,CAAA;AAC5B,IAAA,IAAI,gBAAgB,IAAA,CAAK,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,SAAS,CAAA,EAAG;AACnD,MAAA,IAAI,CAAA,CAAE,eAAe,CAAA,CAAE,YAAA,IAAgB,EAAE,WAAA,GAAc,CAAA,CAAE,aAAa,OAAO,CAAA;AAAA,IAC/E;AAAA,EACF;AACA,EAAA,OAAQ,SAAS,gBAAA,IAA2C,IAAA;AAC9D;AAEA,SAAS,oBAAA,CACP;AAAA,EACE,KAAA;AAAA,EACA,KAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA,GAAU,CAAA;AAAA,EACV,GAAA,GAAM,IAAA;AAAA,EACN,QAAA,GAAW,KAAA;AAAA,EACX,KAAA;AAAA,EACA,YAAA;AAAA,EACA,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,GAAW,KAAA;AAAA,EACX,aAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,IAAK,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,MAAA,GAASC,aAAA,CAAQ,OAAO,EAAE,GAAG,cAAA,EAAgB,GAAG,cAAA,EAAe,CAAA,EAAI,CAAC,cAAc,CAAC,CAAA;AAGzF,EAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAIC,uCAA2C,KAAA,EAAO,YAAA,EAAc,CAAC,IAAA,KAAS;AACpG,IAAA,IAAI,IAAA,cAAkB,IAAI,CAAA;AAAA,EAC5B,CAAC,CAAA;AACD,EAAA,MAAM,SAAA,GAAYD,aAAA,CAAQ,MAAM,YAAA,CAAa,MAAA,EAAQ,KAAK,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAE5E,EAAA,MAAM,OAAOA,aAAA,CAAQ,MAAM,IAAI,GAAA,CAAI,KAAA,CAAM,IAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,IAAI,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACxE,EAAA,MAAM,YAAYA,aAAA,CAAQ,MAAM,MAAM,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACvF,EAAA,MAAM,QAAA,GAAWE,iBAAA,CAAY,CAAC,EAAA,KAAe,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,EAAG,MAAA,KAAW,IAAA,EAAM,CAAC,IAAI,CAAC,CAAA;AAElF,EAAA,MAAM,CAAC,OAAA,EAAS,eAAe,CAAA,GAAIC,eAAyB,IAAI,CAAA;AAChE,EAAA,MAAM,UAAA,GAAaC,aAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,UAAA,GAAaF,iBAAA,CAAY,CAAC,CAAA,KAAsB;AACpD,IAAA,UAAA,CAAW,OAAA,GAAU,CAAA;AACrB,IAAA,eAAA,CAAgB,CAAC,CAAA;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,SAAA,GAAYA,iBAAA;AAAA,IAChB,CAAC,MACC,CAAA,CAAE,MAAA,KAAW,QAAQ,CAAA,CAAE,MAAA,KAAW,EAAE,WAAA,GAChC,CAAA,CAAE,SACF,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA,CAAE,WAAA,EAAa,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,SAAA,EAAW,CAAA;AAAA,IACvE,CAAC,SAAS;AAAA,GACZ;AAEA,EAAA,MAAM,KAAA,GAAQF,aAAA;AAAA,IACZ,MAAO,OAAA,GAAU,YAAA,CAAa,UAAU,OAAO,CAAA,EAAG,KAAK,CAAA,GAAI,SAAA;AAAA,IAC3D,CAAC,OAAA,EAAS,SAAA,EAAW,KAAA,EAAO,SAAS;AAAA,GACvC;AACA,EAAA,MAAM,QAAA,GAAWI,aAAO,KAAK,CAAA;AAC7B,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAGnB,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAID,eAAS,EAAE,CAAA;AACnD,EAAA,MAAM,OAAA,GAAUD,iBAAA;AAAA,IACd,CAAC,EAAA,KAAe;AACd,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACxB,MAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAClB,MAAA,IAAI,YAAA,EAAc,OAAO,YAAA,CAAa,IAAI,CAAA;AAC1C,MAAA,MAAM,IAAK,IAAA,CAA6B,KAAA;AACxC,MAAA,OAAO,OAAO,CAAA,KAAM,QAAA,GAAW,CAAA,GAAI,EAAA;AAAA,IACrC,CAAA;AAAA,IACA,CAAC,MAAM,YAAY;AAAA,GACrB;AACA,EAAA,MAAM,KAAA,GAAQA,iBAAA;AAAA,IACZ,CAAC,EAAA,EAAY,KAAA,EAAeG,MAAAA,MAAuD;AAAA,MACjF,EAAA;AAAA,MACA,KAAA,EAAO,QAAQ,EAAE,CAAA;AAAA,MACjB,UAAU,KAAA,GAAQ,CAAA;AAAA,MAClB,KAAA,EAAAA,MAAAA;AAAA,MACA,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA,GAAI,CAAA;AAAA,MAChC,MAAA,EAAS,QAAQ,IAAA,GAAQ;AAAA,KAC3B,CAAA;AAAA,IACA,CAAC,SAAS,IAAI;AAAA,GAChB;AAGA,EAAA,MAAM,OAAA,GAAUD,aAA8B,IAAI,CAAA;AAClD,EAAA,MAAM,QAAA,GAAWA,YAAA,iBAAO,IAAI,GAAA,EAA6B,CAAA;AACzD,EAAA,MAAM,OAAA,GAAUF,iBAAA;AAAA,IACd,CAAC,EAAA,KAAe,CAAC,EAAA,KAA8B;AAC7C,MAAA,IAAI,EAAA,EAAI,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,IAAI,EAAE,CAAA;AAAA,WAC9B,QAAA,CAAS,OAAA,CAAQ,MAAA,CAAO,EAAE,CAAA;AAAA,IACjC,CAAA;AAAA,IACA;AAAC,GACH;AAEA,EAAA,MAAM,iBAAiBI,WAAA,EAAM;AAC7B,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIH,eAAwB,IAAI,CAAA;AAC5D,EAAA,MAAM,OAAA,GAAU,aAAa,IAAA,IAAQ,KAAA,CAAM,SAAS,QAAQ,CAAA,GAAI,QAAA,GAAW,KAAA,CAAM,CAAC,CAAA;AAElF,EAAA,MAAM,OAAA,GAAUC,aAAsB,IAAI,CAAA;AAG1C,EAAA,MAAM,IAAA,GAAOA,aAA2B,IAAI,CAAA;AAC5C,EAAA,MAAM,OAAA,GAAUA,aAAmF,IAAI,CAAA;AACvG,EAAA,MAAM,WAAA,GAAcA,aAAsB,IAAI,CAAA;AAE9C,EAAA,MAAM,MAAA,GAASF,iBAAA,CAAY,CAAC,EAAA,KAAe;AACzC,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AAClC,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,EAAA,CAAG,KAAA,CAAM,SAAA,IAAa,CAAC,sBAAqB,EAAG;AACjD,MAAA,EAAA,CAAG,KAAA,CAAM,UAAA,GAAa,CAAA,UAAA,EAAa,QAAQ,CAAA,OAAA,CAAA;AAC3C,MAAA,MAAA,CAAO,WAAW,MAAM;AACtB,QAAA,IAAI,CAAC,EAAA,CAAG,KAAA,CAAM,SAAA,EAAW,EAAA,CAAG,MAAM,UAAA,GAAa,EAAA;AAAA,MACjD,CAAA,EAAG,WAAW,EAAE,CAAA;AAAA,IAClB;AACA,IAAA,EAAA,CAAG,MAAM,SAAA,GAAY,EAAA;AAAA,EACvB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,UAAA,GAAaA,kBAAY,MAAM;AACnC,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,IAAA,IAAI,WAAA,CAAY,YAAY,IAAA,EAAM;AAChC,MAAA,oBAAA,CAAqB,YAAY,OAAO,CAAA;AACxC,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,IACxB;AACA,IAAA,IAAI,CAAC,CAAA,EAAG;AACR,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,IAAI,IAAA,EAAM,oBAAoB,CAAA,CAAE,SAAS,GAAG,IAAA,CAAK,qBAAA,GAAwB,EAAE,SAAS,CAAA;AACpF,IAAA,MAAA,CAAO,EAAE,EAAE,CAAA;AAAA,EACb,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,MAAA,GAASA,kBAAY,MAAM;AAC/B,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,IAAA,IAAI,CAAC,CAAA,EAAG;AACR,IAAA,UAAA,EAAW;AACX,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,EAAY,OAAA,CAAQ,UAAU,CAAA,CAAE,EAAA;AAC/C,IAAA,eAAA,CAAgB,MAAA,CAAO,SAAA,CAAU,KAAA,CAAM,CAAA,CAAE,EAAA,EAAI,CAAA,CAAE,WAAA,EAAa,CAAA,CAAE,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAAA,EAC/E,GAAG,CAAC,KAAA,EAAO,UAAA,EAAY,MAAA,EAAQ,UAAU,CAAC,CAAA;AAE1C,EAAA,MAAM,IAAA,GAAOA,kBAAY,MAAM;AAC7B,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,IAAA,IAAI,CAAC,CAAA,EAAG;AACR,IAAA,IAAI,CAAA,CAAE,WAAW,IAAA,EAAM;AACrB,MAAA,MAAA,EAAO;AACP,MAAA;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,UAAU,CAAC,CAAA;AACzB,IAAA,UAAA,EAAW;AACX,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,UAAA,EAAY,OAAA,CAAQ,UAAU,CAAA,CAAE,EAAA;AAC/C,IAAA,eAAA,CAAgB,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAE,EAAA,EAAI,EAAE,MAAA,EAAQ,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AACnE,IAAA,IAAI,CAAC,SAAA,CAAU,KAAA,EAAO,EAAE,MAAM,CAAA,YAAa,KAAK,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,YAAY,MAAA,EAAQ,SAAA,EAAW,UAAA,EAAY,SAAS,CAAC,CAAA;AAIxE,EAAAK,8BAAA,CAAa,MAAA,EAAQ,YAAY,IAAI,CAAA;AAErC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAU,MAAA,EAAO;AAAA,EACvB,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAAA,eAAA,CAAU,MAAM,MAAM,UAAA,EAAW,EAAG,CAAC,UAAU,CAAC,CAAA;AAEhD,EAAA,MAAM,KAAA,GAAQN,iBAAA;AAAA,IACZ,CAAC,IAAY,IAAA,KAAwB;AACnC,MAAA,MAAM,SAAS,QAAA,CAAS,OAAA;AACxB,MAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,EAAE,CAAA;AAC/B,MAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,KAAA;AACtB,MAAA,IAAI,QAAA,CAAS,EAAE,CAAA,EAAG;AAChB,QAAA,eAAA,CAAgB,MAAA,CAAO,OAAO,KAAA,CAAM,EAAA,EAAI,OAAO,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAC9D,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,UAAA,CAAW,EAAE,IAAI,IAAA,EAAM,MAAA,EAAQ,aAAa,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAClE,MAAA,eAAA,CAAgB,MAAA,CAAO,SAAS,KAAA,CAAM,EAAA,EAAI,OAAO,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAChE,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,QAAA,EAAU,MAAA,EAAQ,UAAU;AAAA,GACtC;AAEA,EAAA,MAAM,QAAA,GAAWA,iBAAA;AAAA,IACf,CAAC,MAAA,KAA0B;AACzB,MAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,MAAA,IAAI,CAAC,CAAA,IAAK,MAAA,KAAW,CAAA,CAAE,MAAA,EAAQ;AAC/B,MAAA,UAAA,CAAW,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,CAAA;AAC3B,MAAA,IAAI,MAAA,KAAW,IAAA,EAAM,eAAA,CAAgB,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,CAAA,CAAE,EAAA,EAAI,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,MAAM,CAAC,CAAC,CAAA;AAAA,IACzF,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,MAAA,EAAQ,UAAU;AAAA,GAC5B;AAYA,EAAA,MAAM,IAAA,GAAOA,iBAAA;AAAA,IACX,CAAC,KAAA,EAAiB,IAAA,EAAc,GAAA,EAAa,UAAA,KAAuC;AAClF,MAAA,MAAM,IAAI,KAAA,CAAM,MAAA;AAChB,MAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAc,CAAC,cAAc,CAAC,QAAA,CAAS,KAAA,CAAM,CAAC,CAAW,CAAA;AACvE,MAAA,MAAM,IAAA,GAAO,CAAC,KAAA,EAAe,GAAA,KAAgB;AAC3C,QAAA,KAAA,IAAS,CAAA,GAAI,KAAA,EAAO,CAAA,IAAK,CAAA,IAAK,CAAA,GAAI,CAAA,EAAG,CAAA,IAAK,GAAA,EAAK,IAAI,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,CAAA;AACnE,QAAA,OAAO,IAAA;AAAA,MACT,CAAA;AACA,MAAA,QAAQ,GAAA;AAAK,QACX,KAAK,YAAA;AACH,UAAA,OAAO,IAAA,CAAK,IAAA,GAAO,CAAA,EAAG,CAAC,CAAA;AAAA,QACzB,KAAK,WAAA;AACH,UAAA,OAAO,IAAA,CAAK,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA;AAAA,QAC1B,KAAK,WAAA,EAAa;AAChB,UAAA,IAAI,IAAI,IAAA,GAAO,IAAA;AACf,UAAA,IAAI,CAAA,GAAI,IAAI,CAAA,EAAG;AACb,YAAA,IAAI,IAAA,CAAK,KAAA,CAAM,IAAA,GAAO,IAAI,CAAA,IAAK,IAAA,CAAK,KAAA,CAAA,CAAO,CAAA,GAAI,CAAA,IAAK,IAAI,CAAA,EAAG,OAAO,IAAA;AAClE,YAAA,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,UACV;AACA,UAAA,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,QAClB;AAAA,QACA,KAAK,SAAA;AACH,UAAA,OAAO,OAAO,IAAA,GAAO,CAAA,GAAI,OAAO,IAAA,CAAK,IAAA,GAAO,MAAM,EAAE,CAAA;AAAA,QACtD,KAAK,MAAA;AACH,UAAA,OAAO,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,QAClB,KAAK,KAAA;AACH,UAAA,OAAO,IAAA,CAAK,CAAA,GAAI,CAAA,EAAG,EAAE,CAAA;AAAA,QACvB;AACE,UAAA,OAAO,IAAA;AAAA;AACX,IACF,CAAA;AAAA,IACA,CAAC,MAAM,QAAQ;AAAA,GACjB;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,EAAuC,EAAA,KAAe;AAE3E,IAAA,IAAI,QAAA,IAAY,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,EAAe;AAC9C,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AAErB,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,GAAA,IAAO,CAAA,CAAE,QAAQ,OAAA,EAAS;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,IAAI,CAAA,EAAG,IAAA,KAAS,UAAA,EAAY,IAAA,EAAK;AAAA,WAAA,IACxB,CAAC,CAAA,EAAG,KAAA,CAAM,EAAA,EAAI,UAAU,CAAA;AACjC,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,CAAC,YAAA,EAAc,WAAA,EAAa,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,KAAK,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,GAAG,CAAA,EAAG;AACzF,IAAA,CAAA,CAAE,cAAA,EAAe;AAEjB,IAAA,IAAI,CAAA,EAAG,SAAS,UAAA,EAAY;AAC1B,MAAA,IAAI,CAAA,CAAE,WAAW,IAAA,EAAM;AACvB,MAAA,MAAMO,EAAAA,GAAI,KAAK,QAAA,CAAS,OAAA,EAAS,EAAE,MAAA,EAAQ,CAAA,CAAE,KAAK,IAAI,CAAA;AACtD,MAAA,IAAIA,EAAAA,KAAM,IAAA,EAAM,QAAA,CAASA,EAAC,CAAA;AAC1B,MAAA;AAAA,IACF;AACA,IAAA,IAAI,CAAA,EAAG;AAEP,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,MAAM,CAAA,GAAI,KAAK,KAAA,EAAO,KAAA,CAAM,QAAQ,EAAE,CAAA,EAAG,CAAA,CAAE,GAAA,EAAK,KAAK,CAAA;AACrD,IAAA,IAAI,MAAM,IAAA,EAAM;AAChB,IAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,IAAA,WAAA,CAAY,IAAI,CAAA;AAChB,IAAA,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,EAAG,KAAA,EAAM;AAAA,EACpC,CAAA;AAKA,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,EAAiB,OAAA,KAAoB;AACpD,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,MAAM,CAAA,GAAI,KAAK,qBAAA,EAAsB;AACrC,IAAA,OAAO,EAAE,CAAA,EAAG,OAAA,GAAU,CAAA,CAAE,OAAO,IAAA,CAAK,UAAA,EAAY,CAAA,EAAG,OAAA,GAAU,CAAA,CAAE,GAAA,GAAM,IAAA,CAAK,SAAA,EAAW,MAAM,CAAA,EAAE;AAAA,EAC/F,CAAA;AAUA,EAAA,MAAM,OAAA,GAAU,CAAC,OAAA,EAAiB,OAAA,KAAmC;AACnE,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,IAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,MAAK,GAAI,OAAA,CAAQ,SAAS,OAAO,CAAA;AAC/C,IAAA,IAAI,OAAA,GAAU,IAAA,CAAK,IAAA,IAAQ,OAAA,GAAU,IAAA,CAAK,KAAA,IAAS,OAAA,GAAU,IAAA,CAAK,GAAA,IAAO,OAAA,GAAU,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA;AAEvG,IAAA,MAAM,QAAQ,QAAA,CAAS,OAAA;AACvB,IAAA,IAAI,IAAA,GAAO,EAAA;AACX,IAAA,IAAI,QAAA,GAAW,QAAA;AACf,IAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,EAAA,EAAI,CAAA,KAAM;AACvB,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AAClC,MAAA,IAAI,CAAC,EAAA,EAAI;AACT,MAAA,MAAM,IAAI,EAAA,CAAG,UAAA;AACb,MAAA,MAAM,IAAI,EAAA,CAAG,SAAA;AACb,MAAA,MAAM,EAAA,GAAK,KAAK,GAAA,CAAI,CAAA,GAAI,GAAG,CAAA,EAAG,CAAA,IAAK,CAAA,GAAI,EAAA,CAAG,WAAA,CAAY,CAAA;AACtD,MAAA,MAAM,EAAA,GAAK,KAAK,GAAA,CAAI,CAAA,GAAI,GAAG,CAAA,EAAG,CAAA,IAAK,CAAA,GAAI,EAAA,CAAG,YAAA,CAAa,CAAA;AACvD,MAAA,MAAM,IAAA,GAAO,EAAA,GAAK,EAAA,GAAK,EAAA,GAAK,EAAA;AAC5B,MAAA,IAAI,OAAO,QAAA,EAAU;AACnB,QAAA,QAAA,GAAW,IAAA;AACX,QAAA,IAAA,GAAO,CAAA;AAAA,MACT;AAAA,IACF,CAAC,CAAA;AACD,IAAA,IAAI,IAAA,GAAO,CAAA,EAAG,OAAO,CAAA,CAAE,MAAA;AACvB,IAAA,IAAI,QAAA,CAAS,MAAM,IAAI,CAAW,GAAG,OAAO,CAAA,CAAE,UAAU,CAAA,CAAE,WAAA;AAC1D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AAGA,EAAA,MAAM,kBAAA,GAAqBP,kBAAY,MAAM;AAC3C,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,IAAI,CAAC,CAAA,IAAK,CAAC,IAAA,EAAM;AACjB,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,EAAE,EAAE,CAAA;AACpC,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,MAAM,CAAA,GAAI,KAAK,qBAAA,EAAsB;AACrC,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,IAAA,CAAK,UAAA;AACrC,IAAA,MAAM,EAAA,GAAK,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,MAAM,IAAA,CAAK,SAAA;AACpC,IAAA,MAAM,EAAA,GAAK,EAAE,WAAA,CAAY,CAAA,IAAK,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,EAAA,CAAG,UAAA;AACtD,IAAA,MAAM,EAAA,GAAK,EAAE,WAAA,CAAY,CAAA,IAAK,KAAK,CAAA,CAAE,QAAA,CAAS,KAAK,EAAA,CAAG,SAAA;AACtD,IAAA,EAAA,CAAG,MAAM,UAAA,GAAa,EAAA;AACtB,IAAA,EAAA,CAAG,KAAA,CAAM,SAAA,GAAY,CAAA,YAAA,EAAe,EAAE,OAAO,EAAE,CAAA,MAAA,CAAA;AAAA,EACjD,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAI,CAAC,CAAA,EAAG;AACR,IAAA,QAAA,CAAS,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAO,CAAC,CAAA;AACtC,IAAA,kBAAA,EAAmB;AAAA,EACrB,CAAA;AAGA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAI,CAAC,CAAA,EAAG,QAAA,IAAY,OAAO,0BAA0B,UAAA,EAAY;AACjE,IAAA,MAAM,KAAK,CAAA,CAAE,QAAA;AACb,IAAA,MAAM,KAAA,GAAQ,OAAO,QAAA,CAAS,gBAAA;AAC9B,IAAA,MAAM,GAAA,GAAM,KAAA,GACR,EAAE,GAAA,EAAK,GAAG,IAAA,EAAM,CAAA,EAAG,MAAA,EAAQ,MAAA,CAAO,aAAa,KAAA,EAAO,MAAA,CAAO,UAAA,EAAW,GACxE,GAAG,qBAAA,EAAsB;AAC7B,IAAA,MAAM,KAAA,GAAQ,CAAC,IAAA,KAAkB,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,IAAA,CAAA,CAAO,IAAA,GAAO,IAAA,IAAQ,IAAA,GAAQ,eAAe,CAAA,GAAI,CAAA;AACrG,IAAA,IAAI,KAAK,KAAA,CAAM,CAAA,CAAE,UAAU,GAAA,CAAI,GAAG,IAAI,CAAC,KAAA,CAAM,CAAA,CAAE,OAAA,GAAU,IAAI,GAAG,CAAA,GAAI,MAAM,GAAA,CAAI,MAAA,GAAS,EAAE,OAAO,CAAA;AAChG,IAAA,IAAI,KAAK,KAAA,CAAM,CAAA,CAAE,UAAU,GAAA,CAAI,IAAI,IAAI,CAAC,KAAA,CAAM,CAAA,CAAE,OAAA,GAAU,IAAI,IAAI,CAAA,GAAI,MAAM,GAAA,CAAI,KAAA,GAAQ,EAAE,OAAO,CAAA;AAEjG,IAAA,IAAK,EAAA,GAAK,CAAA,IAAK,EAAA,CAAG,SAAA,IAAa,CAAA,IAAO,EAAA,GAAK,CAAA,IAAK,EAAA,CAAG,SAAA,GAAY,EAAA,CAAG,YAAA,IAAgB,EAAA,CAAG,cAAe,EAAA,GAAK,CAAA;AACzG,IAAA,IAAK,EAAA,GAAK,CAAA,IAAK,EAAA,CAAG,UAAA,IAAc,CAAA,IAAO,EAAA,GAAK,CAAA,IAAK,EAAA,CAAG,UAAA,GAAa,EAAA,CAAG,WAAA,IAAe,EAAA,CAAG,aAAc,EAAA,GAAK,CAAA;AACzG,IAAA,IAAI,CAAC,EAAA,IAAM,CAAC,EAAA,EAAI;AACd,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,WAAA,CAAY,YAAY,IAAA,EAAM;AAClC,IAAA,WAAA,CAAY,OAAA,GAAU,sBAAsB,MAAM;AAChD,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AACtB,MAAA,IAAI,CAAC,KAAK,OAAA,EAAS;AACnB,MAAA,EAAA,CAAG,SAAA,IAAa,EAAA;AAChB,MAAA,EAAA,CAAG,UAAA,IAAc,EAAA;AACjB,MAAA,KAAA,EAAM;AACN,MAAA,UAAA,EAAW;AAAA,IACb,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,EAAsC,EAAA,KAAe;AAC9E,IAAA,IAAI,QAAA,IAAY,EAAE,MAAA,KAAW,CAAA,IAAK,WAAW,OAAA,IAAW,QAAA,CAAS,EAAE,CAAA,EAAG;AACtE,IAAA,MAAM,SAAS,CAAA,CAAE,aAAA;AACjB,IAAA,MAAM,SAAS,CAAA,CAAE,MAAA;AACjB,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,2BAA2B,CAAA;AACzD,IAAA,IAAI,MAAA,IAAU,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAG,CAEvC,MAAA,IAAW,MAAA,CAAO,aAAA,CAAc,2BAA2B,CAAA,EAAG;AAC5D,MAAA;AAAA,IACF,CAAA,MAAO;AACL,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,OAAA,CAAQ,WAAW,CAAA;AAC9C,MAAA,IAAI,eAAe,WAAA,KAAgB,MAAA,IAAU,MAAA,CAAO,QAAA,CAAS,WAAW,CAAA,EAAG;AAAA,IAC7E;AACA,IAAA,OAAA,CAAQ,OAAA,GAAU,EAAE,EAAA,EAAI,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,OAAA,EAAS,CAAA,CAAE,OAAA,EAAS,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ;AAAA,EACzF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CAAC,CAAA,KAAyC;AAClE,IAAA,MAAM,IAAI,OAAA,CAAQ,OAAA;AAClB,IAAA,IAAI,KAAK,CAAA,CAAE,SAAA,KAAc,EAAE,SAAA,IAAa,CAAC,KAAK,OAAA,EAAS;AACrD,MAAA,IAAI,IAAA,CAAK,KAAA,CAAM,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,OAAO,CAAA,GAAI,cAAA,EAAgB;AAC/E,MAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,EAAE,EAAE,CAAA;AACpC,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA,IAAI,CAAC,QAAQ,CAAC,EAAA,IAAM,CAAC,KAAA,CAAM,CAAA,CAAE,EAAA,EAAI,SAAS,CAAA,EAAG;AAG7C,MAAA,IAAA,CAAK,iBAAA,GAAoB,EAAE,SAAS,CAAA;AACpC,MAAA,MAAA,CAAO,YAAA,MAAkB,eAAA,EAAgB;AACzC,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAS,EAAE,OAAO,CAAA;AAC1C,MAAA,IAAA,CAAK,OAAA,GAAU;AAAA,QACb,IAAI,CAAA,CAAE,EAAA;AAAA,QACN,WAAW,CAAA,CAAE,SAAA;AAAA,QACb,aAAa,EAAE,CAAA,EAAG,GAAG,UAAA,EAAY,CAAA,EAAG,GAAG,SAAA,EAAU;AAAA,QACjD,UAAU,EAAE,CAAA,EAAG,MAAM,CAAA,EAAG,CAAA,EAAG,MAAM,CAAA,EAAE;AAAA,QACnC,SAAS,CAAA,CAAE,OAAA;AAAA,QACX,SAAS,CAAA,CAAE,OAAA;AAAA,QACX,QAAA,EAAU,aAAa,IAAI;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,SAAA,KAAc,EAAE,SAAA,EAAW;AACvC,IAAA,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AACd,IAAA,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AACd,IAAA,KAAA,EAAM;AACN,IAAA,UAAA,EAAW;AAAA,EACb,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,CAAA,KAAyC;AAChE,IAAA,IAAI,OAAA,CAAQ,OAAA,EAAS,SAAA,KAAc,CAAA,CAAE,SAAA,EAAW;AAC9C,MAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAI,IAAA,CAAK,OAAA;AACf,IAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,SAAA,KAAc,EAAE,SAAA,EAAW;AACvC,IAAA,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AACd,IAAA,CAAA,CAAE,UAAU,CAAA,CAAE,OAAA;AACd,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,CAAA,CAAE,OAAA,EAAS,EAAE,OAAO,CAAA;AAC3C,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,IAAA,IAAI,CAAA,IAAK,MAAA,KAAW,CAAA,CAAE,MAAA,EAAQ;AAE5B,MAAA,UAAA,CAAW,OAAA,GAAU,EAAE,GAAG,CAAA,EAAG,MAAA,EAAO;AAAA,IACtC;AACA,IAAA,IAAA,EAAK;AAAA,EACP,CAAA;AAEA,EAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAyC;AACpE,IAAA,IAAI,QAAQ,OAAA,EAAS,SAAA,KAAc,CAAA,CAAE,SAAA,UAAmB,OAAA,GAAU,IAAA;AAClE,IAAA,IAAI,IAAA,CAAK,OAAA,EAAS,SAAA,KAAc,CAAA,CAAE,WAAW,MAAA,EAAO;AAAA,EACtD,CAAA;AAIA,EAAA,MAAM,OAAA,GAAUE,YAAA,iBAAO,IAAI,GAAA,EAAuC,CAAA;AAClE,EAAA,MAAM,WAAA,GAAcA,YAAA,iBAAO,IAAI,GAAA,EAAqB,CAAA;AACpD,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,IAAQ,CAAA;AAEpC,EAAAM,qBAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,OAAO,OAAA,CAAQ,OAAA;AACrB,IAAA,MAAM,IAAA,uBAAW,GAAA,EAAsC;AACvD,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,EAAE,CAAA,IAAK,QAAA,CAAS,SAAS,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,EAAE,GAAG,EAAA,CAAG,UAAA,EAAY,CAAA,EAAG,EAAA,CAAG,WAAW,CAAA;AAC3F,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAGlB,IAAA,IAAI,IAAA,CAAK,IAAA,IAAQ,CAAC,oBAAA,EAAqB,EAAG;AACxC,MAAA,KAAA,MAAW,CAAC,EAAA,EAAI,EAAE,CAAA,IAAK,SAAS,OAAA,EAAS;AACvC,QAAA,IAAI,EAAA,KAAO,IAAA,CAAK,OAAA,EAAS,EAAA,EAAI;AAC7B,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACrB,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACrB,QAAA,IAAI,CAAC,CAAA,IAAK,CAAC,CAAA,IAAM,CAAA,CAAE,CAAA,KAAM,CAAA,CAAE,CAAA,IAAK,CAAA,CAAE,CAAA,KAAM,CAAA,CAAE,CAAA,EAAI;AAC9C,QAAA,EAAA,CAAG,MAAM,UAAA,GAAa,MAAA;AACtB,QAAA,EAAA,CAAG,KAAA,CAAM,SAAA,GAAY,CAAA,YAAA,EAAe,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,IAAA,EAAO,CAAA,CAAE,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,MAAA,CAAA;AAC7D,QAAA,KAAK,EAAA,CAAG,WAAA;AACR,QAAA,EAAA,CAAG,KAAA,CAAM,UAAA,GAAa,CAAA,UAAA,EAAa,QAAQ,CAAA,OAAA,CAAA;AAC3C,QAAA,EAAA,CAAG,MAAM,SAAA,GAAY,EAAA;AACrB,QAAA,MAAM,GAAA,GAAM,WAAA,CAAY,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAA;AACtC,QAAA,IAAI,GAAA,KAAQ,MAAA,EAAW,MAAA,CAAO,YAAA,CAAa,GAAG,CAAA;AAC9C,QAAA,WAAA,CAAY,OAAA,CAAQ,GAAA;AAAA,UAClB,EAAA;AAAA,UACA,MAAA,CAAO,WAAW,MAAM;AACtB,YAAA,WAAA,CAAY,OAAA,CAAQ,OAAO,EAAE,CAAA;AAC7B,YAAA,IAAI,CAAC,EAAA,CAAG,KAAA,CAAM,SAAA,EAAW,EAAA,CAAG,MAAM,UAAA,GAAa,EAAA;AAAA,UACjD,CAAA,EAAG,WAAW,EAAE;AAAA,SAClB;AAAA,MACF;AAAA,IACF;AAEA,IAAA,kBAAA,EAAmB;AAGnB,IAAA,MAAM,IAAI,UAAA,CAAW,OAAA;AACrB,IAAA,MAAM,OAAO,CAAA,EAAG,IAAA,KAAS,UAAA,GAAa,CAAA,CAAE,KAAK,OAAA,CAAQ,OAAA;AACrD,IAAA,OAAA,CAAQ,OAAA,GAAU,IAAA;AAClB,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,MAAM,EAAA,GAAK,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA;AACpC,MAAA,IAAI,EAAA,IAAM,QAAA,CAAS,aAAA,KAAkB,EAAA,KAAO,KAAA,EAAM;AAAA,IACpD;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,OAAA,EAAS,kBAAkB,CAAC,CAAA;AAE1C,EAAAF,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,SAAS,WAAA,CAAY,OAAA;AAC3B,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,MAAW,KAAK,MAAA,CAAO,MAAA,EAAO,EAAG,MAAA,CAAO,aAAa,CAAC,CAAA;AAAA,IACxD,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAIL,EAAA,MAAM,QAAQ,OAAA,GAAW,OAAA,CAAQ,IAAA,KAAS,SAAA,GAAY,aAAa,WAAA,GAAe,MAAA;AAClF,EAAA,MAAM,YAAY,OAAA,IAAW,OAAA,CAAQ,MAAA,KAAW,IAAA,GAAO,QAAQ,MAAA,GAAS,MAAA;AACxE,EAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAEpB,EAAA,uBACEG,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,GAAA,EAAKC,6BAAA,CAAY,OAAA,EAAS,YAAY,CAAA;AAAA,MACtC,mCAAA,EAAkC,EAAA;AAAA,MAClC,cAAA,EAAc,IAAA;AAAA,MACd,YAAA,EAAY,KAAA;AAAA,MACZ,iBAAA,EAAiB,SAAA;AAAA,MACjB,eAAA,EAAe,WAAW,EAAA,GAAK,MAAA;AAAA,MAC/B,IAAA,EAAK,OAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,iBAAe,QAAA,IAAY,MAAA;AAAA,MAC3B,aAAA,EAAe,iBAAA;AAAA,MACf,WAAA,EAAa,eAAA;AAAA,MACb,eAAA,EAAiB,mBAAA;AAAA,MACjB,oBAAA,EAAsB,CAAC,CAAA,KAAM;AAC3B,QAAA,IAAI,IAAA,CAAK,OAAA,EAAS,SAAA,KAAc,CAAA,CAAE,WAAW,MAAA,EAAO;AAAA,MACtD,CAAA;AAAA,MACA,SAAA,EAAWC,oBAAA;AAAA,QACT,eAAA;AAAA,QACA,cAAA,CAAe,OAAO,CAAC,CAAA;AAAA,QACvB,YAAY,GAAG,CAAA;AAAA,QACf,OAAA,EAAS,SAAS,SAAA,IAAa,6BAAA;AAAA,QAC/B,QAAA,IAAY,YAAA;AAAA,QACZ;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,CAAM,GAAA,CAAI,CAAC,EAAA,EAAI,KAAA,KAAU;AACxB,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACxB,UAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,UAAA,MAAM,MAAA,GAAS,KAAK,MAAA,KAAW,IAAA;AAC/B,UAAA,MAAM,MAAA,GAAS,SAAS,EAAA,KAAO,EAAA;AAC/B,UAAA,MAAM,QAAA,GAAW,MAAA,IAAU,OAAA,EAAS,IAAA,KAAS,SAAA;AAC7C,UAAA,MAAM,QAAA,GAAW,MAAA,IAAU,OAAA,EAAS,IAAA,KAAS,UAAA;AAC7C,UAAA,MAAM,UAAA,GAAa,UAAU,SAAA,KAAc,KAAA;AAC3C,UAAA,MAAM,OAAA,GAAU,MAAA,IAAU,OAAA,EAAS,MAAA,KAAW,IAAA;AAC9C,UAAA,MAAM,SAAA,GAAY;AAAA,YAChB,KAAA;AAAA,YACA,UAAU,KAAA,GAAQ,CAAA;AAAA,YAClB,GAAA,EAAK,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA,GAAI,CAAA;AAAA,YAChC,MAAA,EAAS,QAAQ,IAAA,GAAQ,CAAA;AAAA,YACzB,KAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAA;AAAA,YACA,MAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA,EAAa,EAAE,yBAAA,EAA2B,EAAA;AAAY,WACxD;AACA,UAAA,uBACEC,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,GAAA,EAAK,QAAQ,EAAE,CAAA;AAAA,cACf,wCAAA,EAAuC,EAAA;AAAA,cACvC,qBAAA,EAAqB,EAAA;AAAA,cACrB,YAAA,EAAY,KAAA;AAAA,cACZ,YAAA,EAAY,QAAA,GAAW,UAAA,GAAa,QAAA,GAAW,WAAA,GAAc,MAAA;AAAA,cAC7D,aAAA,EAAa,SAAS,MAAA,GAAS,MAAA;AAAA,cAC/B,kBAAA,EAAkB,aAAa,EAAA,GAAK,MAAA;AAAA,cACpC,IAAA,EAAK,QAAA;AAAA,cACL,wBAAsB,MAAA,CAAO,eAAA;AAAA,cAC7B,kBAAA,EAAkB,cAAA;AAAA,cAClB,cAAA,EAAc,MAAA;AAAA,cACd,eAAA,EAAe,YAAY,MAAA,IAAU,MAAA;AAAA,cACrC,QAAA,EAAU,QAAA,GAAW,EAAA,GAAK,EAAA,KAAO,UAAU,CAAA,GAAI,EAAA;AAAA,cAC/C,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,gBAAA,IAAI,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,cAA2B,EAAE,CAAA;AAAA,cAClD,CAAA;AAAA,cACA,SAAA,EAAW,CAAC,CAAA,KAAM,aAAA,CAAc,GAAG,EAAE,CAAA;AAAA,cACrC,aAAA,EAAe,CAAC,CAAA,KAAM,iBAAA,CAAkB,GAAG,EAAE,CAAA;AAAA,cAC7C,SAAA,EAAWD,oBAAA;AAAA,gBACT,SAAA;AAAA,gBACA,CAAC,QAAA,IAAY,WAAA;AAAA,gBACb,CAAC,YAAY,MAAA,IAAU,kBAAA;AAAA,gBACvB,MAAA,IAAU,WAAW,gBAAA,GAAmB,aAAA;AAAA,gBACxC,QAAA,IAAYA,oBAAA,CAAG,uCAAA,EAAyC,UAAU,CAAA;AAAA,gBAClE,QAAA,IAAYA,oBAAA,CAAG,uBAAA,EAAyB,UAAU,CAAA;AAAA,gBAClD,OAAA,IAAW,YAAA;AAAA,gBACX;AAAA,eACF;AAAA,cAEC,uBAAa,UAAA,CAAW,IAAA,EAAM,SAAS,CAAA,GAAI,QAAQ,EAAE;AAAA,aAAA;AAAA,YA9BjD;AAAA,WA+BP;AAAA,QAEJ,CAAC,CAAA;AAAA,uCACA,KAAA,EAAA,EAAI,EAAA,EAAI,gBAAgB,SAAA,EAAU,SAAA,EAChC,iBAAO,YAAA,EACV,CAAA;AAAA,wBACAC,cAAA,CAAC,KAAA,EAAA,EAAI,wCAAA,EAAuC,EAAA,EAAG,WAAA,EAAU,aAAY,aAAA,EAAY,MAAA,EAAO,SAAA,EAAU,SAAA,EAC/F,QAAA,EAAA,YAAA,EACH;AAAA;AAAA;AAAA,GACF;AAEJ;AAUO,IAAM,eAAA,GAAkBC,iBAAW,oBAAoB;AAI9D,eAAA,CAAgB,WAAA,GAAc,iBAAA","file":"chunk-QP6VNKLW.cjs","sourcesContent":["export interface MoveItemOptions<T> {\n /**\n * Pinned entries. A locked entry keeps its absolute index: it cannot be\n * moved, nothing can be dropped onto its slot, and the other entries flow\n * around it. Either the locked ids themselves or a predicate.\n */\n locked?: Iterable<T> | ((id: T) => boolean);\n}\n\nfunction lockPredicate<T>(locked: MoveItemOptions<T>[\"locked\"]): ((id: T) => boolean) | null {\n if (!locked) return null;\n if (typeof locked === \"function\") return locked;\n const set = new Set(locked);\n return set.size ? (id: T) => set.has(id) : null;\n}\n\n/**\n * Move the entry at `fromIndex` so that it ends up at `toIndex`, row-major,\n * and return a NEW array. The input is never mutated.\n *\n * This is the whole reorder rule of `ReorderableGrid`, with no DOM: the grid's\n * pointer drags and arrow keys both go through it, and an agent bridge can call\n * it directly to reorder from a tool call.\n *\n * - `toIndex` is the entry's index in the RESULT, so `moveItem(ids, 0, ids.length - 1)`\n * moves the first entry to the end.\n * - An index outside the list (or not an integer) throws `RangeError`. That is\n * a caller bug, and a silent no-op would hide it.\n * - With `locked`: a locked entry keeps its absolute index and the move happens\n * among the free slots only. Moving a locked entry, or onto a locked slot,\n * returns the order unchanged: that is the rule doing its job, not an error.\n */\nexport function moveItem<T>(\n ids: readonly T[],\n fromIndex: number,\n toIndex: number,\n options: MoveItemOptions<T> = {},\n): T[] {\n const n = ids.length;\n for (const [name, i] of [\n [\"fromIndex\", fromIndex],\n [\"toIndex\", toIndex],\n ] as const) {\n if (!Number.isInteger(i) || i < 0 || i >= n) {\n throw new RangeError(`moveItem: ${name} ${i} is outside 0..${n - 1}`);\n }\n }\n\n const out = ids.slice();\n if (fromIndex === toIndex) return out;\n\n const isLocked = lockPredicate(options.locked);\n if (!isLocked) {\n const [moved] = out.splice(fromIndex, 1);\n out.splice(toIndex, 0, moved as T);\n return out;\n }\n\n if (isLocked(ids[fromIndex] as T) || isLocked(ids[toIndex] as T)) return out;\n\n // Move within the free slots only; locked entries never leave theirs.\n const slots: number[] = [];\n for (let i = 0; i < n; i++) if (!isLocked(ids[i] as T)) slots.push(i);\n const free = slots.map((i) => ids[i] as T);\n const [moved] = free.splice(slots.indexOf(fromIndex), 1);\n free.splice(slots.indexOf(toIndex), 0, moved as T);\n slots.forEach((slot, k) => {\n out[slot] = free[k] as T;\n });\n return out;\n}\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type {\n KeyboardEvent as ReactKeyboardEvent,\n PointerEvent as ReactPointerEvent,\n ReactElement,\n Ref,\n} from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { composeRefs } from \"../../utils/compose-refs\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { useEscapeKey } from \"../../hooks/use-escape-key\";\nimport { moveItem } from \"./move-item\";\nimport type {\n ReorderableGridAnnouncementContext,\n ReorderableGridItem,\n ReorderableGridLabels,\n ReorderableGridProps,\n} from \"./ReorderableGrid.types\";\n\n/*\n * Literal class names, not `grid-cols-${n}`: Tailwind only generates classes it\n * can read in source, and the consumer's build scans this file's dist. That is\n * also why the column count is not an inline style, as Grid's is.\n */\nconst COLUMN_CLASSES = [\n \"grid-cols-1\",\n \"grid-cols-2\",\n \"grid-cols-3\",\n \"grid-cols-4\",\n \"grid-cols-5\",\n \"grid-cols-6\",\n \"grid-cols-7\",\n \"grid-cols-8\",\n \"grid-cols-9\",\n \"grid-cols-10\",\n \"grid-cols-11\",\n \"grid-cols-12\",\n] as const;\n\nconst GAP_CLASSES = { none: \"gap-0\", sm: \"gap-3\", md: \"gap-6\", lg: \"gap-10\" } as const;\n\nconst FOCUS_RING =\n \"ring-[color:var(--fancy-focus,var(--color-blue-500))] dark:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]\";\n\nconst CELL_BASE =\n \"relative min-w-0 select-none touch-none outline-none \" +\n \"focus-visible:ring-2 focus-visible:ring-[color:var(--fancy-focus,var(--color-blue-500))] dark:focus-visible:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]\";\n\nconst CELL_STYLED =\n \"rounded-lg border p-3 text-sm \" +\n \"border-[color:var(--fancy-border,var(--color-zinc-200))] dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] \" +\n \"bg-[color:var(--fancy-surface,var(--color-white))] dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))] \" +\n \"text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\";\n\nconst CELL_LOCKED_STYLED =\n \"border-dashed bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\";\n\n/** Movement before a press becomes a drag, so clicks inside a cell still click. */\nconst DRAG_THRESHOLD = 4;\n/** Distance from a scroll container's edge at which a drag starts scrolling it. */\nconst EDGE = 48;\nconst MAX_SCROLL_STEP = 18;\nconst SHIFT_MS = 150;\n\n/** A press on one of these inside a cell is the element's, not a drag (unless it is the handle). */\nconst INTERACTIVE = \"input, textarea, select, button, a[href], [contenteditable=''], [contenteditable='true']\";\n\nconst DEFAULT_LABELS: ReorderableGridLabels = {\n instructions:\n \"Press Space or Enter to pick up. Use the arrow keys to move, Space or Enter to drop, Escape to cancel.\",\n roleDescription: \"reorderable item\",\n pickedUp: (c) =>\n `Picked up ${c.label} at position ${c.position} of ${c.total}, row ${c.row} column ${c.column}. ` +\n \"Arrow keys move it, Space or Enter drops it, Escape cancels\",\n moved: (c) => `Moved to position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n dropped: (c) => `Dropped ${c.label} at position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n cancelled: (c) =>\n `Cancelled. ${c.label} returned to position ${c.position} of ${c.total}, row ${c.row} column ${c.column}`,\n locked: (c) => `${c.label} is locked and cannot be moved`,\n};\n\n/**\n * The order to show: `order`'s known ids first, then any item it does not\n * mention, in `items` order. A stale or partial order can never hide a cell.\n */\nfunction resolveOrder(order: readonly string[] | undefined, items: readonly ReorderableGridItem[]): string[] {\n const ids = items.map((i) => i.id);\n const known = new Set(ids);\n const seen = new Set<string>();\n const out: string[] = [];\n for (const id of order ?? []) {\n if (known.has(id) && !seen.has(id)) {\n seen.add(id);\n out.push(id);\n }\n }\n for (const id of ids) {\n if (!seen.has(id)) {\n seen.add(id);\n out.push(id);\n }\n }\n return out;\n}\n\nfunction sameOrder(a: readonly string[], b: readonly string[]): boolean {\n return a.length === b.length && a.every((id, i) => id === b[i]);\n}\n\nfunction prefersReducedMotion(): boolean {\n return typeof matchMedia === \"function\" && matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n}\n\ntype Mode = \"pointer\" | \"keyboard\";\n\ninterface Session {\n id: string;\n mode: Mode;\n /** The committed order when the interaction began. Cancel returns here. */\n origin: string[];\n originIndex: number;\n /** Where the item would land. `null`: the pointer is outside the grid, and a release cancels. */\n target: number | null;\n}\n\ninterface PointerDrag {\n id: string;\n pointerId: number;\n /** The cell's layout offset when the drag began. */\n startOffset: { x: number; y: number };\n /** Pointer, in the grid's coordinates, when the drag began. */\n startPos: { x: number; y: number };\n clientX: number;\n clientY: number;\n scroller: HTMLElement | null;\n}\n\n/** Nearest ancestor that can scroll, else the document's scroller. */\nfunction scrollParent(el: HTMLElement): HTMLElement | null {\n for (let p = el.parentElement; p; p = p.parentElement) {\n const s = getComputedStyle(p);\n if (/(auto|scroll)/.test(s.overflowY + s.overflowX)) {\n if (p.scrollHeight > p.clientHeight || p.scrollWidth > p.clientWidth) return p;\n }\n }\n return (document.scrollingElement as HTMLElement | null) ?? null;\n}\n\nfunction ReorderableGridInner<T extends ReorderableGridItem>(\n {\n items,\n value,\n defaultValue,\n onReorder,\n renderItem,\n columns = 2,\n gap = \"sm\",\n disabled = false,\n label,\n getItemLabel,\n labels: labelOverrides,\n unstyled = false,\n cellClassName,\n className,\n ...props\n }: ReorderableGridProps<T>,\n forwardedRef: Ref<HTMLDivElement>,\n) {\n const cols = Math.min(12, Math.max(1, Math.round(columns) || 1));\n const labels = useMemo(() => ({ ...DEFAULT_LABELS, ...labelOverrides }), [labelOverrides]);\n\n // ── order ────────────────────────────────────────────────────────────────\n const [stored, setStored] = useControllableState<string[] | undefined>(value, defaultValue, (next) => {\n if (next) onReorder?.(next);\n });\n const committed = useMemo(() => resolveOrder(stored, items), [stored, items]);\n\n const byId = useMemo(() => new Map(items.map((i) => [i.id, i])), [items]);\n const lockedIds = useMemo(() => items.filter((i) => i.locked).map((i) => i.id), [items]);\n const isLocked = useCallback((id: string) => byId.get(id)?.locked === true, [byId]);\n\n const [session, setSessionState] = useState<Session | null>(null);\n const sessionRef = useRef<Session | null>(null);\n const setSession = useCallback((s: Session | null) => {\n sessionRef.current = s;\n setSessionState(s);\n }, []);\n\n const previewOf = useCallback(\n (s: Session): string[] =>\n s.target === null || s.target === s.originIndex\n ? s.origin\n : moveItem(s.origin, s.originIndex, s.target, { locked: lockedIds }),\n [lockedIds],\n );\n\n const shown = useMemo(\n () => (session ? resolveOrder(previewOf(session), items) : committed),\n [session, previewOf, items, committed],\n );\n const shownRef = useRef(shown);\n shownRef.current = shown;\n\n // ── announcements ────────────────────────────────────────────────────────\n const [announcement, setAnnouncement] = useState(\"\");\n const labelOf = useCallback(\n (id: string) => {\n const item = byId.get(id);\n if (!item) return id;\n if (getItemLabel) return getItemLabel(item);\n const l = (item as { label?: unknown }).label;\n return typeof l === \"string\" ? l : id;\n },\n [byId, getItemLabel],\n );\n const ctxAt = useCallback(\n (id: string, index: number, total: number): ReorderableGridAnnouncementContext => ({\n id,\n label: labelOf(id),\n position: index + 1,\n total,\n row: Math.floor(index / cols) + 1,\n column: (index % cols) + 1,\n }),\n [labelOf, cols],\n );\n\n // ── elements ─────────────────────────────────────────────────────────────\n const rootRef = useRef<HTMLDivElement | null>(null);\n const cellRefs = useRef(new Map<string, HTMLDivElement>());\n const cellRef = useCallback(\n (id: string) => (el: HTMLDivElement | null) => {\n if (el) cellRefs.current.set(id, el);\n else cellRefs.current.delete(id);\n },\n [],\n );\n\n const instructionsId = useId();\n const [activeId, setActiveId] = useState<string | null>(null);\n const tabStop = activeId !== null && shown.includes(activeId) ? activeId : shown[0];\n /** Focus to put back after a drop or cancel moves the focused node. */\n const refocus = useRef<string | null>(null);\n\n // ── commit / cancel ──────────────────────────────────────────────────────\n const drag = useRef<PointerDrag | null>(null);\n const pending = useRef<{ id: string; pointerId: number; clientX: number; clientY: number } | null>(null);\n const scrollFrame = useRef<number | null>(null);\n\n const settle = useCallback((id: string) => {\n const el = cellRefs.current.get(id);\n if (!el) return;\n if (el.style.transform && !prefersReducedMotion()) {\n el.style.transition = `transform ${SHIFT_MS}ms ease`;\n window.setTimeout(() => {\n if (!el.style.transform) el.style.transition = \"\";\n }, SHIFT_MS + 50);\n }\n el.style.transform = \"\";\n }, []);\n\n const endPointer = useCallback(() => {\n const d = drag.current;\n drag.current = null;\n pending.current = null;\n if (scrollFrame.current !== null) {\n cancelAnimationFrame(scrollFrame.current);\n scrollFrame.current = null;\n }\n if (!d) return;\n const root = rootRef.current;\n if (root?.hasPointerCapture?.(d.pointerId)) root.releasePointerCapture?.(d.pointerId);\n settle(d.id);\n }, [settle]);\n\n const cancel = useCallback(() => {\n const s = sessionRef.current;\n if (!s) return;\n endPointer();\n setSession(null);\n if (s.mode === \"keyboard\") refocus.current = s.id;\n setAnnouncement(labels.cancelled(ctxAt(s.id, s.originIndex, s.origin.length)));\n }, [ctxAt, endPointer, labels, setSession]);\n\n const drop = useCallback(() => {\n const s = sessionRef.current;\n if (!s) return;\n if (s.target === null) {\n cancel();\n return;\n }\n const final = previewOf(s);\n endPointer();\n setSession(null);\n if (s.mode === \"keyboard\") refocus.current = s.id;\n setAnnouncement(labels.dropped(ctxAt(s.id, s.target, final.length)));\n if (!sameOrder(final, s.origin)) setStored(final);\n }, [cancel, ctxAt, endPointer, labels, previewOf, setSession, setStored]);\n\n // Escape joins the kit's layer stack, so inside a Modal or a full-screen\n // surface it cancels the pick-up before it closes anything else.\n useEscapeKey(cancel, session !== null);\n\n useEffect(() => {\n if (disabled) cancel();\n }, [disabled, cancel]);\n\n useEffect(() => () => endPointer(), [endPointer]);\n\n const begin = useCallback(\n (id: string, mode: Mode): boolean => {\n const origin = shownRef.current;\n const index = origin.indexOf(id);\n if (index < 0) return false;\n if (isLocked(id)) {\n setAnnouncement(labels.locked(ctxAt(id, index, origin.length)));\n return false;\n }\n setSession({ id, mode, origin, originIndex: index, target: index });\n setAnnouncement(labels.pickedUp(ctxAt(id, index, origin.length)));\n return true;\n },\n [ctxAt, isLocked, labels, setSession],\n );\n\n const retarget = useCallback(\n (target: number | null) => {\n const s = sessionRef.current;\n if (!s || target === s.target) return;\n setSession({ ...s, target });\n if (target !== null) setAnnouncement(labels.moved(ctxAt(s.id, target, s.origin.length)));\n },\n [ctxAt, labels, setSession],\n );\n\n // ── keyboard ─────────────────────────────────────────────────────────────\n\n /**\n * The slot an arrow key leads to from `from`, or null for none. Left/Right\n * step one slot, Up/Down one row. When `skipLocked`, a pinned slot is passed\n * over: Left/Right go on to the next free slot that way; Up/Down take the\n * nearest free slot after the pinned one in reading order (forward for Down,\n * backward for Up). Down from a row above a short last row lands on the last\n * slot.\n */\n const step = useCallback(\n (order: string[], from: number, key: string, skipLocked: boolean): number | null => {\n const n = order.length;\n const free = (i: number) => !skipLocked || !isLocked(order[i] as string);\n const scan = (start: number, dir: 1 | -1) => {\n for (let i = start; i >= 0 && i < n; i += dir) if (free(i)) return i;\n return null;\n };\n switch (key) {\n case \"ArrowRight\":\n return scan(from + 1, 1);\n case \"ArrowLeft\":\n return scan(from - 1, -1);\n case \"ArrowDown\": {\n let t = from + cols;\n if (t > n - 1) {\n if (Math.floor(from / cols) >= Math.floor((n - 1) / cols)) return null;\n t = n - 1;\n }\n return scan(t, 1);\n }\n case \"ArrowUp\":\n return from - cols < 0 ? null : scan(from - cols, -1);\n case \"Home\":\n return scan(0, 1);\n case \"End\":\n return scan(n - 1, -1);\n default:\n return null;\n }\n },\n [cols, isLocked],\n );\n\n const onCellKeyDown = (e: ReactKeyboardEvent<HTMLDivElement>, id: string) => {\n // Keys typed into a field inside the cell belong to the field.\n if (disabled || e.target !== e.currentTarget) return;\n const s = sessionRef.current;\n\n if (e.key === \" \" || e.key === \"Enter\") {\n e.preventDefault();\n if (s?.mode === \"keyboard\") drop();\n else if (!s) begin(id, \"keyboard\");\n return;\n }\n\n if (![\"ArrowRight\", \"ArrowLeft\", \"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(e.key)) return;\n e.preventDefault();\n\n if (s?.mode === \"keyboard\") {\n if (s.target === null) return;\n const t = step(shownRef.current, s.target, e.key, true);\n if (t !== null) retarget(t);\n return;\n }\n if (s) return;\n\n const order = shownRef.current;\n const t = step(order, order.indexOf(id), e.key, false);\n if (t === null) return;\n const next = order[t] as string;\n setActiveId(next);\n cellRefs.current.get(next)?.focus();\n };\n\n // ── pointer ──────────────────────────────────────────────────────────────\n\n /** Client point to the grid's own coordinates (the space cell offsets are in). */\n const toLocal = (clientX: number, clientY: number) => {\n const root = rootRef.current!;\n const r = root.getBoundingClientRect();\n return { x: clientX - r.left - root.clientLeft, y: clientY - r.top - root.clientTop, rect: r };\n };\n\n /**\n * The slot under the pointer. Kanban's rule (compare the pointer with each\n * card's box) extended to two dimensions: the nearest cell box wins, so a\n * point in a gutter belongs to the closer neighbour. Boxes are layout\n * offsets, which ignore transforms, so cells mid-animation do not move the\n * target. Outside the grid is `null`: a release there cancels. A pinned cell\n * is not a target; the current target stands.\n */\n const hitTest = (clientX: number, clientY: number): number | null => {\n const s = sessionRef.current;\n if (!s) return null;\n const { x, y, rect } = toLocal(clientX, clientY);\n if (clientX < rect.left || clientX > rect.right || clientY < rect.top || clientY > rect.bottom) return null;\n\n const order = shownRef.current;\n let best = -1;\n let bestDist = Infinity;\n order.forEach((id, i) => {\n const el = cellRefs.current.get(id);\n if (!el) return;\n const l = el.offsetLeft;\n const t = el.offsetTop;\n const dx = Math.max(l - x, 0, x - (l + el.offsetWidth));\n const dy = Math.max(t - y, 0, y - (t + el.offsetHeight));\n const dist = dx * dx + dy * dy;\n if (dist < bestDist) {\n bestDist = dist;\n best = i;\n }\n });\n if (best < 0) return s.target;\n if (isLocked(order[best] as string)) return s.target ?? s.originIndex;\n return best;\n };\n\n /** The dragged cell follows the pointer from where it STARTED, whatever slot it now has. */\n const applyDragTransform = useCallback(() => {\n const d = drag.current;\n const root = rootRef.current;\n if (!d || !root) return;\n const el = cellRefs.current.get(d.id);\n if (!el) return;\n const r = root.getBoundingClientRect();\n const px = d.clientX - r.left - root.clientLeft;\n const py = d.clientY - r.top - root.clientTop;\n const tx = d.startOffset.x + (px - d.startPos.x) - el.offsetLeft;\n const ty = d.startOffset.y + (py - d.startPos.y) - el.offsetTop;\n el.style.transition = \"\";\n el.style.transform = `translate3d(${tx}px, ${ty}px, 0)`;\n }, []);\n\n const track = () => {\n const d = drag.current;\n if (!d) return;\n retarget(hitTest(d.clientX, d.clientY));\n applyDragTransform();\n };\n\n /** Scroll the nearest scroller while the pointer is near its edge. */\n const autoScroll = () => {\n const d = drag.current;\n if (!d?.scroller || typeof requestAnimationFrame !== \"function\") return;\n const sc = d.scroller;\n const isDoc = sc === document.scrollingElement;\n const box = isDoc\n ? { top: 0, left: 0, bottom: window.innerHeight, right: window.innerWidth }\n : sc.getBoundingClientRect();\n const speed = (dist: number) => (dist < EDGE ? Math.ceil(((EDGE - dist) / EDGE) * MAX_SCROLL_STEP) : 0);\n let vy = speed(d.clientY - box.top) ? -speed(d.clientY - box.top) : speed(box.bottom - d.clientY);\n let vx = speed(d.clientX - box.left) ? -speed(d.clientX - box.left) : speed(box.right - d.clientX);\n // Only where it can actually go.\n if ((vy < 0 && sc.scrollTop <= 0) || (vy > 0 && sc.scrollTop + sc.clientHeight >= sc.scrollHeight)) vy = 0;\n if ((vx < 0 && sc.scrollLeft <= 0) || (vx > 0 && sc.scrollLeft + sc.clientWidth >= sc.scrollWidth)) vx = 0;\n if (!vx && !vy) {\n scrollFrame.current = null;\n return;\n }\n if (scrollFrame.current !== null) return;\n scrollFrame.current = requestAnimationFrame(() => {\n scrollFrame.current = null;\n if (!drag.current) return;\n sc.scrollTop += vy;\n sc.scrollLeft += vx;\n track();\n autoScroll();\n });\n };\n\n const onCellPointerDown = (e: ReactPointerEvent<HTMLDivElement>, id: string) => {\n if (disabled || e.button !== 0 || sessionRef.current || isLocked(id)) return;\n const cellEl = e.currentTarget;\n const target = e.target as Element;\n const handle = target.closest(\"[data-reorderable-handle]\");\n if (handle && cellEl.contains(handle)) {\n // The handle: always a drag.\n } else if (cellEl.querySelector(\"[data-reorderable-handle]\")) {\n return; // This cell has a handle and the press was elsewhere.\n } else {\n const interactive = target.closest(INTERACTIVE);\n if (interactive && interactive !== cellEl && cellEl.contains(interactive)) return;\n }\n pending.current = { id, pointerId: e.pointerId, clientX: e.clientX, clientY: e.clientY };\n };\n\n const onRootPointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n const p = pending.current;\n if (p && p.pointerId === e.pointerId && !drag.current) {\n if (Math.hypot(e.clientX - p.clientX, e.clientY - p.clientY) < DRAG_THRESHOLD) return;\n const root = rootRef.current;\n const el = cellRefs.current.get(p.id);\n pending.current = null;\n if (!root || !el || !begin(p.id, \"pointer\")) return;\n // Capture on the ROOT, never the cell: the live preview moves the cell's\n // DOM node, and moving a node can drop a capture held on it.\n root.setPointerCapture?.(e.pointerId);\n window.getSelection?.()?.removeAllRanges();\n const start = toLocal(p.clientX, p.clientY);\n drag.current = {\n id: p.id,\n pointerId: e.pointerId,\n startOffset: { x: el.offsetLeft, y: el.offsetTop },\n startPos: { x: start.x, y: start.y },\n clientX: e.clientX,\n clientY: e.clientY,\n scroller: scrollParent(root),\n };\n }\n const d = drag.current;\n if (!d || d.pointerId !== e.pointerId) return;\n d.clientX = e.clientX;\n d.clientY = e.clientY;\n track();\n autoScroll();\n };\n\n const onRootPointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (pending.current?.pointerId === e.pointerId) {\n pending.current = null;\n return;\n }\n const d = drag.current;\n if (!d || d.pointerId !== e.pointerId) return;\n d.clientX = e.clientX;\n d.clientY = e.clientY;\n const target = hitTest(e.clientX, e.clientY);\n const s = sessionRef.current;\n if (s && target !== s.target) {\n // Commit what the release point says, not the last move event.\n sessionRef.current = { ...s, target };\n }\n drop();\n };\n\n const onRootPointerCancel = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (pending.current?.pointerId === e.pointerId) pending.current = null;\n if (drag.current?.pointerId === e.pointerId) cancel();\n };\n\n // ── layout effects: follow the pointer, shift the others, keep focus ──────\n\n const offsets = useRef(new Map<string, { x: number; y: number }>());\n const shiftTimers = useRef(new Map<string, number>());\n const shownKey = shown.join(\"\\u0000\");\n\n useLayoutEffect(() => {\n const prev = offsets.current;\n const next = new Map<string, { x: number; y: number }>();\n for (const [id, el] of cellRefs.current) next.set(id, { x: el.offsetLeft, y: el.offsetTop });\n offsets.current = next;\n\n // FLIP: cells the preview displaced slide from where they were.\n if (prev.size && !prefersReducedMotion()) {\n for (const [id, el] of cellRefs.current) {\n if (id === drag.current?.id) continue;\n const a = prev.get(id);\n const b = next.get(id);\n if (!a || !b || (a.x === b.x && a.y === b.y)) continue;\n el.style.transition = \"none\";\n el.style.transform = `translate3d(${a.x - b.x}px, ${a.y - b.y}px, 0)`;\n void el.offsetWidth;\n el.style.transition = `transform ${SHIFT_MS}ms ease`;\n el.style.transform = \"\";\n const old = shiftTimers.current.get(id);\n if (old !== undefined) window.clearTimeout(old);\n shiftTimers.current.set(\n id,\n window.setTimeout(() => {\n shiftTimers.current.delete(id);\n if (!el.style.transform) el.style.transition = \"\";\n }, SHIFT_MS + 50),\n );\n }\n }\n\n applyDragTransform();\n\n // React moves DOM nodes to reorder them, and a moved node can lose focus.\n const s = sessionRef.current;\n const keep = s?.mode === \"keyboard\" ? s.id : refocus.current;\n refocus.current = null;\n if (keep) {\n const el = cellRefs.current.get(keep);\n if (el && document.activeElement !== el) el.focus();\n }\n }, [shownKey, session, applyDragTransform]);\n\n useEffect(() => {\n const timers = shiftTimers.current;\n return () => {\n for (const t of timers.values()) window.clearTimeout(t);\n };\n }, []);\n\n // ── render ───────────────────────────────────────────────────────────────\n\n const state = session ? (session.mode === \"pointer\" ? \"dragging\" : \"picked-up\") : \"idle\";\n const dropIndex = session && session.target !== null ? session.target : undefined;\n const total = shown.length;\n\n return (\n <div\n {...props}\n ref={composeRefs(rootRef, forwardedRef)}\n data-react-fancy-reorderable-grid=\"\"\n data-columns={cols}\n data-state={state}\n data-drop-index={dropIndex}\n data-disabled={disabled ? \"\" : undefined}\n role=\"group\"\n aria-label={label}\n aria-disabled={disabled || undefined}\n onPointerMove={onRootPointerMove}\n onPointerUp={onRootPointerUp}\n onPointerCancel={onRootPointerCancel}\n onLostPointerCapture={(e) => {\n if (drag.current?.pointerId === e.pointerId) cancel();\n }}\n className={cn(\n \"relative grid\",\n COLUMN_CLASSES[cols - 1],\n GAP_CLASSES[gap],\n session?.mode === \"pointer\" && \"cursor-grabbing select-none\",\n disabled && \"opacity-60\",\n className,\n )}\n >\n {shown.map((id, index) => {\n const item = byId.get(id);\n if (!item) return null;\n const locked = item.locked === true;\n const active = session?.id === id;\n const dragging = active && session?.mode === \"pointer\";\n const pickedUp = active && session?.mode === \"keyboard\";\n const dropTarget = active && dropIndex === index;\n const outside = active && session?.target === null;\n const itemState = {\n index,\n position: index + 1,\n row: Math.floor(index / cols) + 1,\n column: (index % cols) + 1,\n total,\n dragging,\n pickedUp,\n dropTarget,\n locked,\n disabled,\n handleProps: { \"data-reorderable-handle\": \"\" as const },\n };\n return (\n <div\n key={id}\n ref={cellRef(id)}\n data-react-fancy-reorderable-grid-item=\"\"\n data-reorderable-id={id}\n data-index={index}\n data-state={dragging ? \"dragging\" : pickedUp ? \"picked-up\" : \"idle\"}\n data-locked={locked ? \"true\" : undefined}\n data-drop-target={dropTarget ? \"\" : undefined}\n role=\"button\"\n aria-roledescription={labels.roleDescription}\n aria-describedby={instructionsId}\n aria-pressed={active}\n aria-disabled={disabled || locked || undefined}\n tabIndex={disabled ? -1 : id === tabStop ? 0 : -1}\n onFocus={(e) => {\n if (e.target === e.currentTarget) setActiveId(id);\n }}\n onKeyDown={(e) => onCellKeyDown(e, id)}\n onPointerDown={(e) => onCellPointerDown(e, id)}\n className={cn(\n CELL_BASE,\n !unstyled && CELL_STYLED,\n !unstyled && locked && CELL_LOCKED_STYLED,\n locked || disabled ? \"cursor-default\" : \"cursor-grab\",\n dragging && cn(\"z-10 cursor-grabbing shadow-lg ring-2\", FOCUS_RING),\n pickedUp && cn(\"z-10 shadow-md ring-2\", FOCUS_RING),\n outside && \"opacity-60\",\n cellClassName,\n )}\n >\n {renderItem ? renderItem(item, itemState) : labelOf(id)}\n </div>\n );\n })}\n <div id={instructionsId} className=\"sr-only\">\n {labels.instructions}\n </div>\n <div data-react-fancy-reorderable-grid-live=\"\" aria-live=\"assertive\" aria-atomic=\"true\" className=\"sr-only\">\n {announcement}\n </div>\n </div>\n );\n}\n\n/**\n * A grid of cells reordered in place, row-major, by pointer or keyboard.\n *\n * Built for field-order designers: the grid looks like the grid it designs.\n * Order is a list of ids (`value` / `defaultValue` / `onReorder`); the pure\n * `moveItem(ids, from, to, { locked })` is the same rule without a DOM, for\n * agents.\n */\nexport const ReorderableGrid = forwardRef(ReorderableGridInner) as (<T extends ReorderableGridItem>(\n props: ReorderableGridProps<T> & { ref?: Ref<HTMLDivElement> },\n) => ReactElement) & { displayName?: string };\n\nReorderableGrid.displayName = \"ReorderableGrid\";\n"]}
|
package/dist/index.cjs
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var chunkYH75G6SP_cjs = require('./chunk-YH75G6SP.cjs');
|
|
3
4
|
var chunkUXYFM2XT_cjs = require('./chunk-UXYFM2XT.cjs');
|
|
4
5
|
var chunkH2YRZYKK_cjs = require('./chunk-H2YRZYKK.cjs');
|
|
5
6
|
var chunkAVEFCM6T_cjs = require('./chunk-AVEFCM6T.cjs');
|
|
6
7
|
var chunkIR6JSQ4O_cjs = require('./chunk-IR6JSQ4O.cjs');
|
|
7
8
|
require('./chunk-O5IO7TCO.cjs');
|
|
9
|
+
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
8
10
|
require('./chunk-OYZDSMNP.cjs');
|
|
9
11
|
require('./chunk-5FV6GMFP.cjs');
|
|
10
12
|
var chunk6MDZQIMZ_cjs = require('./chunk-6MDZQIMZ.cjs');
|
|
13
|
+
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
11
14
|
var chunkDJB3N4G3_cjs = require('./chunk-DJB3N4G3.cjs');
|
|
12
15
|
require('./chunk-URTLYNZI.cjs');
|
|
13
16
|
require('./chunk-QGPMVFZJ.cjs');
|
|
14
17
|
var chunkIB673TEG_cjs = require('./chunk-IB673TEG.cjs');
|
|
15
18
|
var chunkH7ELUIF6_cjs = require('./chunk-H7ELUIF6.cjs');
|
|
16
19
|
require('./chunk-HXLSEBAL.cjs');
|
|
17
|
-
var
|
|
18
|
-
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
20
|
+
var chunkFNIHCNVD_cjs = require('./chunk-FNIHCNVD.cjs');
|
|
19
21
|
var chunk7DDUMW4R_cjs = require('./chunk-7DDUMW4R.cjs');
|
|
20
22
|
var chunkFVQO75KY_cjs = require('./chunk-FVQO75KY.cjs');
|
|
21
23
|
var chunkATJSHM6J_cjs = require('./chunk-ATJSHM6J.cjs');
|
|
@@ -23,15 +25,14 @@ var chunkYJXP6AOL_cjs = require('./chunk-YJXP6AOL.cjs');
|
|
|
23
25
|
var chunkCQ54H7DZ_cjs = require('./chunk-CQ54H7DZ.cjs');
|
|
24
26
|
require('./chunk-XURQVDCN.cjs');
|
|
25
27
|
var chunk4DL2U23D_cjs = require('./chunk-4DL2U23D.cjs');
|
|
26
|
-
var chunkYH75G6SP_cjs = require('./chunk-YH75G6SP.cjs');
|
|
27
28
|
var chunkBK6XQQYG_cjs = require('./chunk-BK6XQQYG.cjs');
|
|
28
29
|
var chunkAE53RKWR_cjs = require('./chunk-AE53RKWR.cjs');
|
|
29
30
|
var chunkSYEHWUM5_cjs = require('./chunk-SYEHWUM5.cjs');
|
|
31
|
+
var chunkQP6VNKLW_cjs = require('./chunk-QP6VNKLW.cjs');
|
|
30
32
|
var chunkCEFK54WP_cjs = require('./chunk-CEFK54WP.cjs');
|
|
31
33
|
var chunk5P3PISAX_cjs = require('./chunk-5P3PISAX.cjs');
|
|
32
34
|
var chunkY7RGUUTS_cjs = require('./chunk-Y7RGUUTS.cjs');
|
|
33
35
|
var chunkEZA6GWZL_cjs = require('./chunk-EZA6GWZL.cjs');
|
|
34
|
-
var chunkFNIHCNVD_cjs = require('./chunk-FNIHCNVD.cjs');
|
|
35
36
|
var chunkKSU6RYWU_cjs = require('./chunk-KSU6RYWU.cjs');
|
|
36
37
|
var chunkK5MQZTDW_cjs = require('./chunk-K5MQZTDW.cjs');
|
|
37
38
|
var chunkB4YV2V7G_cjs = require('./chunk-B4YV2V7G.cjs');
|
|
@@ -218,6 +219,10 @@ var THEME_TOKENS = {
|
|
|
218
219
|
}
|
|
219
220
|
};
|
|
220
221
|
|
|
222
|
+
Object.defineProperty(exports, "TimePicker", {
|
|
223
|
+
enumerable: true,
|
|
224
|
+
get: function () { return chunkYH75G6SP_cjs.TimePicker; }
|
|
225
|
+
});
|
|
221
226
|
Object.defineProperty(exports, "Timeline", {
|
|
222
227
|
enumerable: true,
|
|
223
228
|
get: function () { return chunkUXYFM2XT_cjs.Timeline; }
|
|
@@ -242,6 +247,10 @@ Object.defineProperty(exports, "VirtualList", {
|
|
|
242
247
|
enumerable: true,
|
|
243
248
|
get: function () { return chunkIR6JSQ4O_cjs.VirtualList; }
|
|
244
249
|
});
|
|
250
|
+
Object.defineProperty(exports, "Slider", {
|
|
251
|
+
enumerable: true,
|
|
252
|
+
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
253
|
+
});
|
|
245
254
|
Object.defineProperty(exports, "Form", {
|
|
246
255
|
enumerable: true,
|
|
247
256
|
get: function () { return chunk6MDZQIMZ_cjs.Form; }
|
|
@@ -250,6 +259,10 @@ Object.defineProperty(exports, "FormProvider", {
|
|
|
250
259
|
enumerable: true,
|
|
251
260
|
get: function () { return chunk6MDZQIMZ_cjs.FormProvider; }
|
|
252
261
|
});
|
|
262
|
+
Object.defineProperty(exports, "Checkbox", {
|
|
263
|
+
enumerable: true,
|
|
264
|
+
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
265
|
+
});
|
|
253
266
|
Object.defineProperty(exports, "CheckboxGroup", {
|
|
254
267
|
enumerable: true,
|
|
255
268
|
get: function () { return chunkDJB3N4G3_cjs.CheckboxGroup; }
|
|
@@ -262,13 +275,9 @@ Object.defineProperty(exports, "RadioGroup", {
|
|
|
262
275
|
enumerable: true,
|
|
263
276
|
get: function () { return chunkH7ELUIF6_cjs.RadioGroup; }
|
|
264
277
|
});
|
|
265
|
-
Object.defineProperty(exports, "
|
|
266
|
-
enumerable: true,
|
|
267
|
-
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
268
|
-
});
|
|
269
|
-
Object.defineProperty(exports, "Checkbox", {
|
|
278
|
+
Object.defineProperty(exports, "Skeleton", {
|
|
270
279
|
enumerable: true,
|
|
271
|
-
get: function () { return
|
|
280
|
+
get: function () { return chunkFNIHCNVD_cjs.Skeleton; }
|
|
272
281
|
});
|
|
273
282
|
Object.defineProperty(exports, "Stat", {
|
|
274
283
|
enumerable: true,
|
|
@@ -302,10 +311,6 @@ Object.defineProperty(exports, "TimeGrid", {
|
|
|
302
311
|
enumerable: true,
|
|
303
312
|
get: function () { return chunk4DL2U23D_cjs.TimeGrid; }
|
|
304
313
|
});
|
|
305
|
-
Object.defineProperty(exports, "TimePicker", {
|
|
306
|
-
enumerable: true,
|
|
307
|
-
get: function () { return chunkYH75G6SP_cjs.TimePicker; }
|
|
308
|
-
});
|
|
309
314
|
Object.defineProperty(exports, "PullQuote", {
|
|
310
315
|
enumerable: true,
|
|
311
316
|
get: function () { return chunkBK6XQQYG_cjs.PullQuote; }
|
|
@@ -326,6 +331,14 @@ Object.defineProperty(exports, "ReasonTag", {
|
|
|
326
331
|
enumerable: true,
|
|
327
332
|
get: function () { return chunkSYEHWUM5_cjs.ReasonTag; }
|
|
328
333
|
});
|
|
334
|
+
Object.defineProperty(exports, "ReorderableGrid", {
|
|
335
|
+
enumerable: true,
|
|
336
|
+
get: function () { return chunkQP6VNKLW_cjs.ReorderableGrid; }
|
|
337
|
+
});
|
|
338
|
+
Object.defineProperty(exports, "moveItem", {
|
|
339
|
+
enumerable: true,
|
|
340
|
+
get: function () { return chunkQP6VNKLW_cjs.moveItem; }
|
|
341
|
+
});
|
|
329
342
|
Object.defineProperty(exports, "ResizablePanels", {
|
|
330
343
|
enumerable: true,
|
|
331
344
|
get: function () { return chunkCEFK54WP_cjs.ResizablePanels; }
|
|
@@ -346,10 +359,6 @@ Object.defineProperty(exports, "useSidebar", {
|
|
|
346
359
|
enumerable: true,
|
|
347
360
|
get: function () { return chunkEZA6GWZL_cjs.useSidebar; }
|
|
348
361
|
});
|
|
349
|
-
Object.defineProperty(exports, "Skeleton", {
|
|
350
|
-
enumerable: true,
|
|
351
|
-
get: function () { return chunkFNIHCNVD_cjs.Skeleton; }
|
|
352
|
-
});
|
|
353
362
|
Object.defineProperty(exports, "Pillbox", {
|
|
354
363
|
enumerable: true,
|
|
355
364
|
get: function () { return chunkKSU6RYWU_cjs.Pillbox; }
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCO,IAAM,YAAA,GAAe;AAAA,EAC1B,OAAA,EAAS;AAAA,IACP,QAAA,EAAU,iBAAA;AAAA,IACV,YAAA,EAAc,sBAAA;AAAA,IACd,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,uBAAA;AAAA,IACV,YAAA,EAAc,4BAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,QAAA,EAAU,gBAAA;AAAA,IACV,YAAA,EAAc,qBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,uBAAA;AAAA,IACV,YAAA,EAAc,4BAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,eAAA;AAAA,IACV,YAAA,EAAc,oBAAA;AAAA,IACd,KAAA,EAAO,oBAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,QAAA,EAAU,cAAA;AAAA,IACV,YAAA,EAAc,mBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,WAAA,EAAa;AAAA,IACX,QAAA,EAAU,mBAAA;AAAA,IACV,YAAA,EAAc,wBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,oBAAA;AAAA,IACV,YAAA,EAAc,yBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,QAAA,EAAU,oBAAA;AAAA,IACV,YAAA,EAAc,yBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,aAAA,EAAe;AAAA,IACb,QAAA,EAAU,qBAAA;AAAA,IACV,YAAA,EAAc,0BAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,QAAA,EAAU,uBAAA;AAAA,IACV,YAAA,EAAc,4BAAA;AAAA,IACd,KAAA,EAAO,sBAAA;AAAA;AAAA,IAEP,IAAA,EAAM,6DAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,KAAA,EAAO;AAAA,IACL,QAAA,EAAU,eAAA;AAAA,IACV,YAAA,EAAc,oBAAA;AAAA,IACd,KAAA,EAAO,uBAAA;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,WAAA,EAAa;AAAA;AAEjB","file":"index.cjs","sourcesContent":["/**\n * Semantic theme tokens — the small set of colours the kit's DOM components\n * read, so a host can repaint the whole kit with its own palette WITHOUT\n * remapping Tailwind's `zinc` or `violet`.\n *\n * Each role is two CSS custom properties, one per mode:\n *\n * --fancy-surface the light value\n * --fancy-surface-dark the dark value\n *\n * Components read them through their var() FALLBACK, which is the colour the\n * component used before these existed:\n *\n * bg-[color:var(--fancy-surface,var(--color-white))]\n * dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\n *\n * So:\n * - **Set nothing and nothing changes.** An unset custom property resolves to\n * its fallback, which is the exact declaration the old `bg-white` produced.\n * - **Set one and every surface follows**, wherever the variable is in scope:\n * `:root`, `body`, or any wrapper element. No selector to match, no layer or\n * specificity to win — a custom property is inherited, not cascaded against.\n * - **Both modes are stated, not derived.** The dark value is a separate\n * variable rather than a flip under `.dark`, so which one applies is decided\n * by the host's own `dark:` variant — the same switch that drives every\n * other `dark:` utility in the kit. (See `dark-variant.css` for a variant\n * that follows `[data-theme=\"dark\"]` as well as `.dark`.)\n *\n * NOT covered, deliberately: colours that ENCODE DATA — chart series,\n * file-type marks, mood and confidence scales, event kinds. Repainting those\n * with a host's neutral palette would erase what they mean. A component's\n * explicit `color` prop (Badge, Button, Callout …) is also untouched: that is\n * the host choosing a hue, not the kit choosing one for it.\n *\n * `light` / `dark` are the defaults exactly as components write them in their\n * fallbacks. `tests/theme-tokens.test.tsx` fails if a component's fallback\n * disagrees with this table, so the table is the contract rather than a\n * description of it.\n */\nexport const THEME_TOKENS = {\n surface: {\n variable: \"--fancy-surface\",\n darkVariable: \"--fancy-surface-dark\",\n light: \"var(--color-white)\",\n dark: \"var(--color-zinc-900)\",\n description: \"Panels, cards, overlays (menus, modals, popovers, toasts), sidebars and navbars.\",\n },\n \"surface-muted\": {\n variable: \"--fancy-surface-muted\",\n darkVariable: \"--fancy-surface-muted-dark\",\n light: \"var(--color-zinc-100)\",\n dark: \"var(--color-zinc-800)\",\n description: \"Hovered and selected rows, chips, inset wells, toolbar buttons.\",\n },\n border: {\n variable: \"--fancy-border\",\n darkVariable: \"--fancy-border-dark\",\n light: \"var(--color-zinc-200)\",\n dark: \"var(--color-zinc-700)\",\n description: \"Outlines, dividers, separators and tracks (skeletons, progress, sliders).\",\n },\n \"border-strong\": {\n variable: \"--fancy-border-strong\",\n darkVariable: \"--fancy-border-strong-dark\",\n light: \"var(--color-zinc-300)\",\n dark: \"var(--color-zinc-700)\",\n description: \"The firmer outline on form controls (inputs, checkboxes, radios) and keycaps.\",\n },\n input: {\n variable: \"--fancy-input\",\n darkVariable: \"--fancy-input-dark\",\n light: \"var(--color-white)\",\n dark: \"#1e1e24\",\n description: \"The field surface of text inputs, checkboxes, radios, OTP cells and pickers.\",\n },\n text: {\n variable: \"--fancy-text\",\n darkVariable: \"--fancy-text-dark\",\n light: \"var(--color-zinc-900)\",\n dark: \"var(--color-zinc-100)\",\n description: \"Strongest foreground: headings, values, field text, active items.\",\n },\n \"text-soft\": {\n variable: \"--fancy-text-soft\",\n darkVariable: \"--fancy-text-soft-dark\",\n light: \"var(--color-zinc-700)\",\n dark: \"var(--color-zinc-300)\",\n description: \"Body copy and menu items: readable, one step back from text.\",\n },\n \"text-muted\": {\n variable: \"--fancy-text-muted\",\n darkVariable: \"--fancy-text-muted-dark\",\n light: \"var(--color-zinc-500)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Descriptions, captions, secondary labels, axis labels.\",\n },\n \"text-faint\": {\n variable: \"--fancy-text-faint\",\n darkVariable: \"--fancy-text-faint-dark\",\n light: \"var(--color-zinc-400)\",\n dark: \"var(--color-zinc-500)\",\n description: \"Placeholders, disabled hints, decorative icons.\",\n },\n \"text-subtle\": {\n variable: \"--fancy-text-subtle\",\n darkVariable: \"--fancy-text-subtle-dark\",\n light: \"var(--color-zinc-600)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Inactive nav labels (Sidebar, Menu, Navbar, MultiSwitch) and secondary prose. Added 5.53.1.\",\n },\n \"surface-hover\": {\n variable: \"--fancy-surface-hover\",\n darkVariable: \"--fancy-surface-hover-dark\",\n light: \"var(--color-zinc-50)\",\n // Tailwind's `bg-zinc-800/50`, written out so a host's value is used as-is.\n dark: \"color-mix(in oklab, var(--color-zinc-800) 50%, transparent)\",\n description: \"The hover fill on nav items, list options and table rows. Added 5.53.1.\",\n },\n focus: {\n variable: \"--fancy-focus\",\n darkVariable: \"--fancy-focus-dark\",\n light: \"var(--color-blue-500)\",\n dark: \"var(--color-blue-400)\",\n description: \"The focus border and ring on form controls.\",\n },\n} as const;\n\nexport type ThemeTokenRole = keyof typeof THEME_TOKENS;\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -35,6 +35,7 @@ export { Container, ContainerProps } from './container.cjs';
|
|
|
35
35
|
export { Section, SectionProps } from './section.cjs';
|
|
36
36
|
export { Grid, GridProps } from './grid.cjs';
|
|
37
37
|
export { ResizablePanels, ResizablePanelsOrientation, ResizablePanelsProps } from './resizable-panels.cjs';
|
|
38
|
+
export { MoveItemOptions, ReorderableGrid, ReorderableGridAnnouncementContext, ReorderableGridItem, ReorderableGridItemState, ReorderableGridLabels, ReorderableGridProps, moveItem } from './reorderable-grid.cjs';
|
|
38
39
|
export { StatList, StatListItem, StatListProps } from './stat-list.cjs';
|
|
39
40
|
export { Kbd, KbdProps } from './kbd.cjs';
|
|
40
41
|
export { IndexList, IndexListItem, IndexListProps } from './index-list.cjs';
|
package/dist/index.d.ts
CHANGED
|
@@ -35,6 +35,7 @@ export { Container, ContainerProps } from './container.js';
|
|
|
35
35
|
export { Section, SectionProps } from './section.js';
|
|
36
36
|
export { Grid, GridProps } from './grid.js';
|
|
37
37
|
export { ResizablePanels, ResizablePanelsOrientation, ResizablePanelsProps } from './resizable-panels.js';
|
|
38
|
+
export { MoveItemOptions, ReorderableGrid, ReorderableGridAnnouncementContext, ReorderableGridItem, ReorderableGridItemState, ReorderableGridLabels, ReorderableGridProps, moveItem } from './reorderable-grid.js';
|
|
38
39
|
export { StatList, StatListItem, StatListProps } from './stat-list.js';
|
|
39
40
|
export { Kbd, KbdProps } from './kbd.js';
|
|
40
41
|
export { IndexList, IndexListItem, IndexListProps } from './index-list.js';
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
+
export { TimePicker } from './chunk-AZQXPI5S.js';
|
|
1
2
|
export { Timeline } from './chunk-QGY5FPVM.js';
|
|
2
3
|
export { Toast, useToast } from './chunk-BQFPC5FL.js';
|
|
3
4
|
export { TreeNav, useTreeNav } from './chunk-OYDJVGFS.js';
|
|
4
5
|
export { VirtualList } from './chunk-Z4CW3U6C.js';
|
|
5
6
|
import './chunk-VXHFR5MV.js';
|
|
7
|
+
export { Slider } from './chunk-NVXTHTJI.js';
|
|
6
8
|
import './chunk-NW3GJWJ7.js';
|
|
7
9
|
import './chunk-ORCXPDDG.js';
|
|
8
10
|
export { Form, FormProvider } from './chunk-PQWQ5K6J.js';
|
|
11
|
+
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
9
12
|
export { CheckboxGroup } from './chunk-TAYJSIOP.js';
|
|
10
13
|
import './chunk-V4EARA4F.js';
|
|
11
14
|
import './chunk-SHDSKHCC.js';
|
|
12
15
|
export { MultiSwitch } from './chunk-YUNOVQQJ.js';
|
|
13
16
|
export { RadioGroup } from './chunk-4FH2JHUY.js';
|
|
14
17
|
import './chunk-GNHQVPZP.js';
|
|
15
|
-
export {
|
|
16
|
-
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
18
|
+
export { Skeleton } from './chunk-X7VIIM2P.js';
|
|
17
19
|
export { Stat, StatBand } from './chunk-KC3PYCBO.js';
|
|
18
20
|
export { StatList } from './chunk-SXXDTW7S.js';
|
|
19
21
|
export { StickyNote } from './chunk-CCG2L5EH.js';
|
|
@@ -21,15 +23,14 @@ export { Table } from './chunk-YAPGHVBZ.js';
|
|
|
21
23
|
export { Tabs, useTabs } from './chunk-IU5WQUUC.js';
|
|
22
24
|
import './chunk-TMR56BBE.js';
|
|
23
25
|
export { TimeGrid } from './chunk-MLZGGAXQ.js';
|
|
24
|
-
export { TimePicker } from './chunk-AZQXPI5S.js';
|
|
25
26
|
export { PullQuote } from './chunk-44VYWOCG.js';
|
|
26
27
|
export { QrCode, encodeQr, selectMode } from './chunk-RLE5WYY6.js';
|
|
27
28
|
export { ReasonTag } from './chunk-QP35Z2WB.js';
|
|
29
|
+
export { ReorderableGrid, moveItem } from './chunk-DTOIO42M.js';
|
|
28
30
|
export { ResizablePanels } from './chunk-GDF6XTHC.js';
|
|
29
31
|
export { Section } from './chunk-SLJD25VV.js';
|
|
30
32
|
export { Separator } from './chunk-JSD6IEBW.js';
|
|
31
33
|
export { Sidebar, useSidebar } from './chunk-YJHP5FVA.js';
|
|
32
|
-
export { Skeleton } from './chunk-X7VIIM2P.js';
|
|
33
34
|
export { Pillbox } from './chunk-G35XN5WV.js';
|
|
34
35
|
export { Profile } from './chunk-GOE36IXL.js';
|
|
35
36
|
export { Progress } from './chunk-UE3QO7R3.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/theme-tokens.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Semantic theme tokens — the small set of colours the kit's DOM components\n * read, so a host can repaint the whole kit with its own palette WITHOUT\n * remapping Tailwind's `zinc` or `violet`.\n *\n * Each role is two CSS custom properties, one per mode:\n *\n * --fancy-surface the light value\n * --fancy-surface-dark the dark value\n *\n * Components read them through their var() FALLBACK, which is the colour the\n * component used before these existed:\n *\n * bg-[color:var(--fancy-surface,var(--color-white))]\n * dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\n *\n * So:\n * - **Set nothing and nothing changes.** An unset custom property resolves to\n * its fallback, which is the exact declaration the old `bg-white` produced.\n * - **Set one and every surface follows**, wherever the variable is in scope:\n * `:root`, `body`, or any wrapper element. No selector to match, no layer or\n * specificity to win — a custom property is inherited, not cascaded against.\n * - **Both modes are stated, not derived.** The dark value is a separate\n * variable rather than a flip under `.dark`, so which one applies is decided\n * by the host's own `dark:` variant — the same switch that drives every\n * other `dark:` utility in the kit. (See `dark-variant.css` for a variant\n * that follows `[data-theme=\"dark\"]` as well as `.dark`.)\n *\n * NOT covered, deliberately: colours that ENCODE DATA — chart series,\n * file-type marks, mood and confidence scales, event kinds. Repainting those\n * with a host's neutral palette would erase what they mean. A component's\n * explicit `color` prop (Badge, Button, Callout …) is also untouched: that is\n * the host choosing a hue, not the kit choosing one for it.\n *\n * `light` / `dark` are the defaults exactly as components write them in their\n * fallbacks. `tests/theme-tokens.test.tsx` fails if a component's fallback\n * disagrees with this table, so the table is the contract rather than a\n * description of it.\n */\nexport const THEME_TOKENS = {\n surface: {\n variable: \"--fancy-surface\",\n darkVariable: \"--fancy-surface-dark\",\n light: \"var(--color-white)\",\n dark: \"var(--color-zinc-900)\",\n description: \"Panels, cards, overlays (menus, modals, popovers, toasts), sidebars and navbars.\",\n },\n \"surface-muted\": {\n variable: \"--fancy-surface-muted\",\n darkVariable: \"--fancy-surface-muted-dark\",\n light: \"var(--color-zinc-100)\",\n dark: \"var(--color-zinc-800)\",\n description: \"Hovered and selected rows, chips, inset wells, toolbar buttons.\",\n },\n border: {\n variable: \"--fancy-border\",\n darkVariable: \"--fancy-border-dark\",\n light: \"var(--color-zinc-200)\",\n dark: \"var(--color-zinc-700)\",\n description: \"Outlines, dividers, separators and tracks (skeletons, progress, sliders).\",\n },\n \"border-strong\": {\n variable: \"--fancy-border-strong\",\n darkVariable: \"--fancy-border-strong-dark\",\n light: \"var(--color-zinc-300)\",\n dark: \"var(--color-zinc-700)\",\n description: \"The firmer outline on form controls (inputs, checkboxes, radios) and keycaps.\",\n },\n input: {\n variable: \"--fancy-input\",\n darkVariable: \"--fancy-input-dark\",\n light: \"var(--color-white)\",\n dark: \"#1e1e24\",\n description: \"The field surface of text inputs, checkboxes, radios, OTP cells and pickers.\",\n },\n text: {\n variable: \"--fancy-text\",\n darkVariable: \"--fancy-text-dark\",\n light: \"var(--color-zinc-900)\",\n dark: \"var(--color-zinc-100)\",\n description: \"Strongest foreground: headings, values, field text, active items.\",\n },\n \"text-soft\": {\n variable: \"--fancy-text-soft\",\n darkVariable: \"--fancy-text-soft-dark\",\n light: \"var(--color-zinc-700)\",\n dark: \"var(--color-zinc-300)\",\n description: \"Body copy and menu items: readable, one step back from text.\",\n },\n \"text-muted\": {\n variable: \"--fancy-text-muted\",\n darkVariable: \"--fancy-text-muted-dark\",\n light: \"var(--color-zinc-500)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Descriptions, captions, secondary labels, axis labels.\",\n },\n \"text-faint\": {\n variable: \"--fancy-text-faint\",\n darkVariable: \"--fancy-text-faint-dark\",\n light: \"var(--color-zinc-400)\",\n dark: \"var(--color-zinc-500)\",\n description: \"Placeholders, disabled hints, decorative icons.\",\n },\n \"text-subtle\": {\n variable: \"--fancy-text-subtle\",\n darkVariable: \"--fancy-text-subtle-dark\",\n light: \"var(--color-zinc-600)\",\n dark: \"var(--color-zinc-400)\",\n description: \"Inactive nav labels (Sidebar, Menu, Navbar, MultiSwitch) and secondary prose. Added 5.53.1.\",\n },\n \"surface-hover\": {\n variable: \"--fancy-surface-hover\",\n darkVariable: \"--fancy-surface-hover-dark\",\n light: \"var(--color-zinc-50)\",\n // Tailwind's `bg-zinc-800/50`, written out so a host's value is used as-is.\n dark: \"color-mix(in oklab, var(--color-zinc-800) 50%, transparent)\",\n description: \"The hover fill on nav items, list options and table rows. Added 5.53.1.\",\n },\n focus: {\n variable: \"--fancy-focus\",\n darkVariable: \"--fancy-focus-dark\",\n light: \"var(--color-blue-500)\",\n dark: \"var(--color-blue-400)\",\n description: \"The focus border and ring on form controls.\",\n },\n} as const;\n\nexport type ThemeTokenRole = keyof typeof THEME_TOKENS;\n"]}
|
package/dist/inputs.cjs
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
require('./chunk-O5IO7TCO.cjs');
|
|
4
|
+
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
4
5
|
require('./chunk-OYZDSMNP.cjs');
|
|
5
6
|
require('./chunk-5FV6GMFP.cjs');
|
|
6
7
|
var chunk6MDZQIMZ_cjs = require('./chunk-6MDZQIMZ.cjs');
|
|
8
|
+
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
7
9
|
var chunkDJB3N4G3_cjs = require('./chunk-DJB3N4G3.cjs');
|
|
8
10
|
require('./chunk-URTLYNZI.cjs');
|
|
9
11
|
require('./chunk-QGPMVFZJ.cjs');
|
|
10
12
|
var chunkIB673TEG_cjs = require('./chunk-IB673TEG.cjs');
|
|
11
13
|
var chunkH7ELUIF6_cjs = require('./chunk-H7ELUIF6.cjs');
|
|
12
14
|
require('./chunk-HXLSEBAL.cjs');
|
|
13
|
-
var chunkZ4UXLQSK_cjs = require('./chunk-Z4UXLQSK.cjs');
|
|
14
|
-
var chunkETNQ4AEQ_cjs = require('./chunk-ETNQ4AEQ.cjs');
|
|
15
15
|
require('./chunk-I27K6NLX.cjs');
|
|
16
16
|
var chunk2O5UXH5R_cjs = require('./chunk-2O5UXH5R.cjs');
|
|
17
17
|
var chunkTLRFXSPA_cjs = require('./chunk-TLRFXSPA.cjs');
|
|
@@ -36,6 +36,10 @@ require('./chunk-ZU5Q77OT.cjs');
|
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
39
|
+
Object.defineProperty(exports, "Slider", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
42
|
+
});
|
|
39
43
|
Object.defineProperty(exports, "Form", {
|
|
40
44
|
enumerable: true,
|
|
41
45
|
get: function () { return chunk6MDZQIMZ_cjs.Form; }
|
|
@@ -44,6 +48,10 @@ Object.defineProperty(exports, "FormProvider", {
|
|
|
44
48
|
enumerable: true,
|
|
45
49
|
get: function () { return chunk6MDZQIMZ_cjs.FormProvider; }
|
|
46
50
|
});
|
|
51
|
+
Object.defineProperty(exports, "Checkbox", {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
54
|
+
});
|
|
47
55
|
Object.defineProperty(exports, "CheckboxGroup", {
|
|
48
56
|
enumerable: true,
|
|
49
57
|
get: function () { return chunkDJB3N4G3_cjs.CheckboxGroup; }
|
|
@@ -56,14 +64,6 @@ Object.defineProperty(exports, "RadioGroup", {
|
|
|
56
64
|
enumerable: true,
|
|
57
65
|
get: function () { return chunkH7ELUIF6_cjs.RadioGroup; }
|
|
58
66
|
});
|
|
59
|
-
Object.defineProperty(exports, "Slider", {
|
|
60
|
-
enumerable: true,
|
|
61
|
-
get: function () { return chunkZ4UXLQSK_cjs.Slider; }
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(exports, "Checkbox", {
|
|
64
|
-
enumerable: true,
|
|
65
|
-
get: function () { return chunkETNQ4AEQ_cjs.Checkbox; }
|
|
66
|
-
});
|
|
67
67
|
Object.defineProperty(exports, "Switch", {
|
|
68
68
|
enumerable: true,
|
|
69
69
|
get: function () { return chunk2O5UXH5R_cjs.Switch; }
|
package/dist/inputs.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import './chunk-VXHFR5MV.js';
|
|
2
|
+
export { Slider } from './chunk-NVXTHTJI.js';
|
|
2
3
|
import './chunk-NW3GJWJ7.js';
|
|
3
4
|
import './chunk-ORCXPDDG.js';
|
|
4
5
|
export { Form, FormProvider } from './chunk-PQWQ5K6J.js';
|
|
6
|
+
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
5
7
|
export { CheckboxGroup } from './chunk-TAYJSIOP.js';
|
|
6
8
|
import './chunk-V4EARA4F.js';
|
|
7
9
|
import './chunk-SHDSKHCC.js';
|
|
8
10
|
export { MultiSwitch } from './chunk-YUNOVQQJ.js';
|
|
9
11
|
export { RadioGroup } from './chunk-4FH2JHUY.js';
|
|
10
12
|
import './chunk-GNHQVPZP.js';
|
|
11
|
-
export { Slider } from './chunk-NVXTHTJI.js';
|
|
12
|
-
export { Checkbox } from './chunk-OTM7RL2L.js';
|
|
13
13
|
import './chunk-SV5BW3IA.js';
|
|
14
14
|
export { Switch } from './chunk-DXZCKDYS.js';
|
|
15
15
|
export { DatePicker } from './chunk-2UTN3EFK.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkQP6VNKLW_cjs = require('./chunk-QP6VNKLW.cjs');
|
|
4
|
+
require('./chunk-I27K6NLX.cjs');
|
|
5
|
+
require('./chunk-OUYC6EIL.cjs');
|
|
6
|
+
require('./chunk-SNHU2AI4.cjs');
|
|
7
|
+
require('./chunk-ZU5Q77OT.cjs');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
Object.defineProperty(exports, "ReorderableGrid", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return chunkQP6VNKLW_cjs.ReorderableGrid; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "moveItem", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return chunkQP6VNKLW_cjs.moveItem; }
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=reorderable-grid.cjs.map
|
|
20
|
+
//# sourceMappingURL=reorderable-grid.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"reorderable-grid.cjs"}
|