@plexui/vue 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -209,6 +209,7 @@ const MenuRootContentImpl = defineComponent({
|
|
|
209
209
|
maxHeight: Number,
|
|
210
210
|
layout: { type: String, required: true },
|
|
211
211
|
size: String,
|
|
212
|
+
pill: Boolean,
|
|
212
213
|
onCloseAutoFocus: { type: Function, required: true },
|
|
213
214
|
},
|
|
214
215
|
setup(props, { slots }) {
|
|
@@ -276,6 +277,7 @@ const MenuRootContentImpl = defineComponent({
|
|
|
276
277
|
"collisionPadding": COLLISION_PADDING,
|
|
277
278
|
"reference": internals.trigger.value ?? undefined,
|
|
278
279
|
"class": s.MenuList,
|
|
280
|
+
"data-pill": props.pill ? "" : undefined,
|
|
279
281
|
"data-layout": isHorizontal ? "horizontal" : undefined,
|
|
280
282
|
"data-size": isHorizontal && props.size ? props.size : undefined,
|
|
281
283
|
"style": {
|
|
@@ -338,6 +340,11 @@ export const MenuContent = defineComponent({
|
|
|
338
340
|
* @default "md"
|
|
339
341
|
*/
|
|
340
342
|
size: String,
|
|
343
|
+
/**
|
|
344
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
345
|
+
* @default false
|
|
346
|
+
*/
|
|
347
|
+
pill: { type: Boolean, default: false },
|
|
341
348
|
},
|
|
342
349
|
emits: {
|
|
343
350
|
/**
|
|
@@ -771,6 +778,7 @@ const MenuSubContentImpl = defineComponent({
|
|
|
771
778
|
width: { type: sizeProp, required: true },
|
|
772
779
|
minWidth: { type: sizeProp, required: true },
|
|
773
780
|
maxHeight: Number,
|
|
781
|
+
pill: Boolean,
|
|
774
782
|
},
|
|
775
783
|
setup(props, { slots }) {
|
|
776
784
|
// The submenu's own Reka root: its content takes the submenu's ids
|
|
@@ -817,6 +825,7 @@ const MenuSubContentImpl = defineComponent({
|
|
|
817
825
|
"collisionPadding": COLLISION_PADDING,
|
|
818
826
|
"reference": subInternals.trigger.value ?? undefined,
|
|
819
827
|
"class": s.MenuList,
|
|
828
|
+
"data-pill": props.pill ? "" : undefined,
|
|
820
829
|
"style": {
|
|
821
830
|
...toCssVariables({
|
|
822
831
|
"menu-width": props.width,
|
|
@@ -870,6 +879,11 @@ export const MenuSubContent = defineComponent({
|
|
|
870
879
|
minWidth: { type: sizeProp, default: "auto" },
|
|
871
880
|
/** Defines the `max-height` property of the content, in pixels. */
|
|
872
881
|
maxHeight: Number,
|
|
882
|
+
/**
|
|
883
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
884
|
+
* @default false
|
|
885
|
+
*/
|
|
886
|
+
pill: { type: Boolean, default: false },
|
|
873
887
|
},
|
|
874
888
|
setup(props, { slots }) {
|
|
875
889
|
const { open } = useSubmenuContext();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,CAAC,EACD,MAAM,EACN,eAAe,EACf,SAAS,EACT,OAAO,EACP,GAAG,EACH,UAAU,EACV,KAAK,EACL,OAAO,GAKR,MAAM,KAAK,CAAA;AACZ,OAAO,EACL,mBAAmB,IAAI,uBAAuB,EAC9C,kBAAkB,IAAI,sBAAsB,EAC5C,gBAAgB,IAAI,oBAAoB,EACxC,QAAQ,EACR,6BAA6B,EAC7B,YAAY,EACZ,KAAK,GACN,MAAM,SAAS,CAAA;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,GAAG,EACH,OAAO,EACP,eAAe,EACf,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,GAMV,MAAM,eAAe,CAAA;AACtB,OAAO,CAAC,MAAM,gDAAgD,CAAA;AAkC9D,MAAM,cAAc,GAAmC,MAAM,CAAC,YAAY,CAAC,CAAA;AAE3E,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;IAC5C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC5E,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAQD,MAAM,iBAAiB,GAAsC,MAAM,CAAC,eAAe,CAAC,CAAA;AAEpF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IAC9E,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAKD,MAAM,gBAAgB,GAAgC,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAGvF,MAAM,gBAAgB,GAA4C,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAGnG,MAAM,aAAa,GAAyC,MAAM,CAAC,sBAAsB,CAAC,CAAA;AAE1F,MAAM,cAAc,GAAG,CAAC,EAAW,EAAsB,EAAE;IACzD,MAAM,IAAI,GAAG,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAE,EAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5F,0EAA0E;IAC1E,kCAAkC;IAClC,MAAM,OAAO,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAA;IACrE,OAAO,OAAO,YAAY,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACxD,CAAC,CAAA;AAED,8EAA8E;AAC9E,OAAO;AAEP,4EAA4E;AAC5E,MAAM,CAAC,MAAM,IAAI,GAAG,eAAe,CAAC;IAClC,IAAI,EAAE,MAAM;IACZ,+CAA+C;IAC/C,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,8CAA8C;QAC9C,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAChD;;;WAGG;QACH,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KACzC;IACD,KAAK,EAAE;QACL,sBAAsB;QACtB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;QAChB,sBAAsB;QACtB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAE5D,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAE,EAAE;YAC9C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,IAAI,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAA;;gBACtB,IAAI,CAAC,OAAO,CAAC,CAAA;QACpB,CAAC,CAAA;QAED,gBAAgB,CACd,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAChB,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAC9B,CAAA;QAED,OAAO,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAEpE,yEAAyE;QACzE,kEAAkE;QAClE,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,CAAC,SAAkB,EAAE,EAAE;YACrC,IAAI,SAAS,KAAK,YAAY;gBAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC7D,CAAC,CAAA;QAED,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,YAAsC,CAAA;QAC1C,SAAS,CAAC,GAAG,EAAE;YACb,YAAY,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QAEvC,MAAM,KAAK,GAAc,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAA;QACvG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;QAC5B,OAAO,CAAC,oBAAoB,EAAE;YAC5B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;YAC7B,eAAe;YACf,GAAG,EAAE,YAAY,EAAE;YACnB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK;YACxB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;SAC1B,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE;YACV,YAAY,GAAG,MAAM,CAAC,KAAK,CAAA;YAC3B,OAAO,CAAC,CACN,oBAAoB,EACpB,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,EACxE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,8EAA8E;AAC9E,UAAU;AAEV;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,qCAAqC;QACrC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,WAAW,GAAG,6BAA6B,EAAE,CAAA;QACnD,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAA;QAC5B,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAA;QACxE,0EAA0E;QAC1E,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAA;QAExE,MAAM,MAAM,GAAG,CAAC,EAAW,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;YAClC,SAAS,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAA;YACjC,0DAA0D;YAC1D,WAAW,CAAC,cAAc,CAAC,KAAK,GAAG,OAAO,IAAI,SAAS,CAAA;QACzD,CAAC,CAAA;QAED,2EAA2E;QAC3E,MAAM,aAAa,GAAG,CAAC,KAAmB,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAM;YAClC,4FAA4F;YAC5F,uEAAuE;YACvE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBACrE,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;gBAC5B,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAA;gBAC5B,wCAAwC;gBACxC,gEAAgE;gBAChE,IAAI,CAAC,OAAO;oBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;YACtC,CAAC;QACH,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;YACzC,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAM;YAClC,IAAI,KAAK,CAAC,QAAQ;gBAAE,OAAM;YAC1B,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YACzE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;gBAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACvD,wEAAwE;YACxE,gDAAgD;YAChD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;QAC7E,CAAC,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;YACzB,0EAA0E;YAC1E,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAClD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAA;YACvB,iEAAiE;YACjE,uDAAuD;YACvD,MAAM,EAAE,aAAa,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,CAAA;YAC1F,MAAM,YAAY,GAAG;gBACnB,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,WAAW,CAAC,SAAS;gBAC3B,eAAe,EAAE,MAAM;gBACvB,eAAe,EAAE,IAAI;gBACrB,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBACzD,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;gBAChC,eAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBAChD,UAAU,EAAE,KAAK,CAAC,QAAQ;gBAC1B,GAAG,SAAS;gBACZ,eAAe,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,CAAC;gBACvE,WAAW,EAAE,oBAAoB,CAAC,aAAa,EAAE,SAAS,CAAC;aAC5D,CAAA;YACD,OAAO,UAAU,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAA;QAC/E,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,8EAA8E;AAC9E,UAAU;AAEV,MAAM,iBAAiB,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AACtE,MAAM,oBAAoB,GAAG,+BAA+B,CAAA;AAE5D,4EAA4E;AAC5E,qBAAqB;AACrB,MAAM,gBAAgB,GAAG;IACvB,gDAAgD,EAAE,qCAAqC;IACvF,+CAA+C,EAAE,oCAAoC;IACrF,gDAAgD,EAAE,qCAAqC;IACvF,qCAAqC,EAAE,iCAAiC;IACxE,sCAAsC,EAAE,kCAAkC;IAC1E,+CAA+C,EAAE,IAAI;IACrD,8CAA8C,EAAE,IAAI;IACpD,+CAA+C,EAAE,IAAI;IACrD,oCAAoC,EAAE,IAAI;IAC1C,qCAAqC,EAAE,IAAI;CAC5C,CAAA;AAOD,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAwB,CAAA;AAExD,wFAAwF;AACxF,MAAM,mBAAmB,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE;QACL,IAAI,EAAE,MAA4B;QAClC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,MAA6B;QACpC,WAAW,EAAE,MAAM;QACnB,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,MAAM;QACjB,MAAM,EAAE,EAAE,IAAI,EAAE,MAA6C,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/E,IAAI,EAAE,MAAsC;QAC5C,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAA4C,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzF;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,WAAW,GAAG,6BAA6B,EAAE,CAAA;QACnD,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAA;QAC5B,WAAW,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAA;QAExE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7F,OAAO,CAAC,gBAAgB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;QAC1C,SAAS,CAAC,GAAG,EAAE;YACb,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;QACtE,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE;YACnB,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QAC5B,CAAC,CAAC,CAAA;QAEF,IAAI,oBAAoB,GAAG,KAAK,CAAA;QAChC,0EAA0E;QAC1E,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,CAAC,SAAgB,EAAE,EAAE;YAC5C,SAAS,CAAC,cAAc,EAAE,CAAA;YAC1B,MAAM,SAAS,GAAI,SAAS,CAAC,MAA6B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAA;YACjF,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;gBACzF,MAAM,oBAAoB,GAAG,CAAC,UAAiB,EAAE,EAAE;oBACjD,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;oBAClC,IAAI,UAAU,CAAC,gBAAgB;wBAAE,OAAM;oBACvC,IAAI,CAAC,oBAAoB;wBAAE,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;oBAC3D,oBAAoB,GAAG,KAAK,CAAA;oBAC5B,sFAAsF;oBACtF,UAAU,CAAC,cAAc,EAAE,CAAA;gBAC7B,CAAC,CAAA;gBACD,IAAI,CAAC,SAAS;oBAAE,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAA;gBAClD,SAAS,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAA;gBACtE,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;gBAC9B,SAAS,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAA;YAC3E,CAAC,EAAE,CAAC,CAAC,CAAA;QACP,CAAC,CAAA;QACD,MAAM,iBAAiB,GAAG,CAAC,KAA2B,EAAE,EAAE;YACxD,IAAI,KAAK,CAAC,gBAAgB;gBAAE,OAAM;YAClC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,aAA6B,CAAA;YAChE,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,CAAA;YAClF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAA;YAChE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,YAAY;gBAAE,oBAAoB,GAAG,IAAI,CAAA;YACnE,mEAAmE;YACnE,wDAAwD;YACxD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAA;YAC1C,IAAI,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACpF,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAE3D,OAAO,GAAG,EAAE;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,YAAY,CAAA;YAClD,OAAO,CAAC,CACN,uBAAuB,EACvB;gBACE,MAAM,EAAE,KAAK,CAAC,IAAI;gBAClB,YAAY,EAAE,KAAK,CAAC,UAAU;gBAC9B,OAAO,EAAE,KAAK,CAAC,KAAK;gBACpB,aAAa,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,iBAAiB,EAAE,IAAI;gBACvB,kBAAkB,EAAE,iBAAiB;gBACrC,WAAW,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS;gBACjD,OAAO,EAAE,CAAC,CAAC,QAAQ;gBACnB,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;gBACtD,WAAW,EAAE,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBAChE,OAAO,EAAE;oBACP,GAAG,cAAc,CAAC;wBAChB,YAAY,EAAE,KAAK,CAAC,KAAK;wBACzB,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;wBACxD,iBAAiB,EAAE,KAAK,CAAC,SAAS;qBACnC,CAAC;oBACF,GAAG,gBAAgB;iBACpB;gBACD,iBAAiB,EAAE,qBAAqB;gBACxC,gBAAgB;gBAChB,iBAAiB;gBACjB,GAAG,QAAQ;aACZ,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL;;;WAGG;QACH,IAAI,EAAE,MAA4B;QAClC;;;WAGG;QACH,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC;;;WAGG;QACH,KAAK,EAAE,MAA6B;QACpC,uEAAuE;QACvE,WAAW,EAAE,MAAM;QACnB;;;WAGG;QACH,KAAK,EAAE,QAAQ;QACf;;;WAGG;QACH,QAAQ,EAAE,QAAQ;QAClB,mEAAmE;QACnE,SAAS,EAAE,MAAM;QACjB;;;WAGG;QACH,MAAM,EAAE,EAAE,IAAI,EAAE,MAA6C,EAAE,OAAO,EAAE,UAAU,EAAE;QACpF;;;WAGG;QACH,IAAI,EAAE,MAAsC;KAC7C;IACD,KAAK,EAAE;QACL;;;;WAIG;QACH,cAAc,EAAE,CAAC,MAAa,EAAE,EAAE,CAAC,IAAI;KACxC;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;QACjC,MAAM,gBAAgB,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAA;QAExE,OAAO,GAAG,EAAE,CACV,CAAC,CACC,sBAAsB,EACtB,IAAI,EACJ;YACE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACb,CAAC,CACC,eAAe,EACf,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EACjF;oBACE,OAAO,EAAE,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,KAAK;4BACR,CAAC,CAAC,CAAC,CACC,mBAAmB,EACnB,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,EAC/C,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC;4BACH,CAAC,CAAC,kBAAkB,EAAE;qBACzB;iBACF,CACF;aACF;SACF,CACF,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,8EAA8E;AAC9E,QAAQ;AAER,6DAA6D;AAC7D,MAAM,mBAAmB,GAAG,eAAe,CAAC;IAC1C,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE;QACL,SAAS,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAsB;QACvD,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,QAA4C;QACtD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAiD,EAAE,QAAQ,EAAE,IAAI,EAAE;KACzF;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAElF,mEAAmE;QACnE,8FAA8F;QAC9F,MAAM,uBAAuB,GAAG,CAAC,GAAiB,EAAE,EAAE;YACpD,iEAAiE;YACjE,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,GAAG,CAAC,cAAc,EAAE,CAAA;QACvC,CAAC,CAAA;QAED,MAAM,SAAS,GAAG,uBAAuB,CACvC,IAAI,EACJ,MAAM,EACN,EAAE,OAAO,EAAE,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAC5D,EAAE,aAAa,EAAE,uBAAuB,EAAE,cAAc,EAAE,uBAAuB,EAAE,CACpF,CAAA;QAED,OAAO,GAAG,EAAE,CACV,CAAC,CACC,KAAK,EACL;YACE,GAAG,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;YACtC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC5C,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,GAAG,SAAS;SACb,EACD,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAC3D,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL;;;;WAIG;QACH,WAAW,EAAE,MAAM;QACnB,6BAA6B;QAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,gGAAgG;QAChG,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QACzC;;;;WAIG;QACH,QAAQ,EAAE,QAA4C;QACtD,kFAAkF;QAClF,OAAO,EAAE,QAAiD;KAC3D;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAEjE,OAAO,GAAG,EAAE;YACV,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAA;YAC/E,wEAAwE;YACxE,+DAA+D;YAC/D,MAAM,OAAO,GACX,WAAW,KAAK,SAAS;gBACvB,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBACnB,CAAC,CAAC;oBACE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE;wBACjC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;wBACjC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,EAAE,WAAW,CAAC;qBACpD,CAAC;iBACH,CAAA;YAEP,oEAAoE;YACpE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACpC,OAAO,CAAC,CACN,mBAAmB,EACnB,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,EACjH,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAC3B,CAAA;YACH,CAAC;YAED,mDAAmD;YACnD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QACvE,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;IAC7C,IAAI,EAAE,iBAAiB;IACvB,YAAY,EAAE,KAAK;IACnB,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5B,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACnF,CAAC;CACF,CAAC,CAAA;AAEF,wFAAwF;AACxF,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,yDAAyD;QACzD,SAAS,EAAE,MAAM;KAClB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,MAAkB,EAAE,EAAE,CAAC,IAAI;KACpC;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,CAAA;QAEpC,OAAO,GAAG,EAAE,CACV,CAAC,CACC,MAAM,EACN;YACE,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,KAAK,CAAC,SAAS;YAC7B,OAAO,EAAE,CAAC,GAAe,EAAE,EAAE;gBAC3B,GAAG,CAAC,eAAe,EAAE,CAAA;gBACrB,OAAO,CAAC,KAAK,CAAC,CAAA;gBACd,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;YACpB,CAAC;SACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAIF,0EAA0E;AAC1E,MAAM,OAAO,GAAG,CAAC,KAA8B,EAAE,EAAE,CACjD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAA;AAEtF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC;IACtC,IAAI,EAAE,UAAU;IAChB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,yCAAyC;QACzC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAA0B;QAC7C,6BAA6B;QAC7B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,6EAA6E;QAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QACzC;;;;WAIG;QACH,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAA4B;KAC1D;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;QACjC,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,CAAA;QAC3C,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAE7E,mEAAmE;QACnE,8FAA8F;QAC9F,MAAM,uBAAuB,GAAG,CAAC,GAAiB,EAAE,EAAE;YACpD,iEAAiE;YACjE,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,GAAG,CAAC,cAAc,EAAE,CAAA;QACvC,CAAC,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAA;YAC1B,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAA;YAC3B,oDAAoD;YACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAC5E,MAAM,SAAS,GAAG,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YAEzE,kEAAkE;YAClE,sBAAsB;YACtB,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACjD,sEAAsE;YACtE,oEAAoE;YACpE,0DAA0D;YAC1D,IAAI,KAAK,CAAC,QAAQ;gBAAE,SAAS,CAAC,cAAc,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,IAAI,EAAE,CAAA;YAC7G,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;YAC/C,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;YAEhH,MAAM,SAAS,GAAG,OAAO,CAAC;gBACxB,GAAG,IAAI,CAAC,KAAK,EAAE;gBACf,GAAG,SAAS;gBACZ,GAAG,SAAS;gBACZ,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAChC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC5C,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,GAAG,uBAAuB,CACxB,IAAI,EACJ,MAAM,EACN,SAAS,EACT,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,uBAAuB,EAAE,cAAc,EAAE,uBAAuB,EAAE,EACrG,OAAO,SAAS,KAAK,QAAQ,CAC9B;aACF,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;YAE/E,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QACvH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;IAC3C,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,KAAK;IACnB,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE;QACrB,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACvH,CAAC;CACF,CAAC,CAAA;AAEF,oDAAoD;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,KAAK;IACnB,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5B,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACjF,CAAC;CACF,CAAC,CAAA;AAEF,4BAA4B;AAC5B,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC;IACvC,IAAI,EAAE,WAAW;IACjB,YAAY,EAAE,KAAK;IACnB,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5B,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACjF,CAAC;CACF,CAAC,CAAA;AAEF,8EAA8E;AAC9E,WAAW;AAEX,6DAA6D;AAC7D,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC;IACrC,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,8CAA8C;QAC9C,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;KACjD;IACD,KAAK,EAAE;QACL,yBAAyB;QACzB,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;QAChB,yBAAyB;QACzB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,MAAM,WAAW,GAAG,YAAY,EAAE,CAAA;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;QACvB,MAAM,UAAU,GAAG,UAAU,CAAqB,IAAI,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,CAAA;QAE5D,MAAM,gBAAgB,GAAG,CAAC,SAAkB,EAAE,EAAE;YAC9C,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;YACtB,IAAI,SAAS;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAA;;gBACtB,IAAI,CAAC,OAAO,CAAC,CAAA;QACpB,CAAC,CAAA;QAED,gBAAgB,CACd,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAChB,GAAG,EAAE;YACH,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACvB,4BAA4B;YAC5B,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;QAC3B,CAAC,CACF,CAAA;QAED,OAAO,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAA;QAEnF,wEAAwE;QACxE,qBAAqB;QACrB,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAA;QAC/B,MAAM,OAAO,GAAG,CAAC,SAAkB,EAAE,EAAE;YACrC,IAAI,SAAS,KAAK,YAAY;gBAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;QAC7D,CAAC,CAAA;QAED,oEAAoE;QACpE,KAAK,CACH,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,EACxB,CAAC,UAAU,EAAE,EAAE;YACb,IAAI,UAAU,KAAK,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1C,CAAC,EACD,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAA;QACD,eAAe,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAErC,MAAM,YAAY,GAAqB;YACrC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC;YACpD,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,uBAAuB,CAAC;YACpD,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;SAC1B,CAAA;QACD,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;QAC1C,OAAO,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAErG,OAAO,GAAG,EAAE;YACV,YAAY,GAAG,MAAM,CAAC,KAAK,CAAA;YAC3B,OAAO,CAAC,CACN,oBAAoB,EACpB,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,EAClE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,2BAA2B;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC5C;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,cAAc,EAAE,CAAA;QAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAC1C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;QAC/B,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAA;QAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;QAE9C,IAAI,SAAS,GAAkB,IAAI,CAAA;QACnC,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,SAAS;gBAAE,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAC7C,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;QACD,eAAe,CAAC,GAAG,EAAE;YACnB,cAAc,EAAE,CAAA;YAChB,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;YAC7D,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,mEAAmE;QACnE,8FAA8F;QAC9F,MAAM,uBAAuB,GAAG,CAAC,GAAiB,EAAE,EAAE;YACpD,kEAAkE;YAClE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAAE,GAAG,CAAC,cAAc,EAAE,CAAA;QAC3C,CAAC,CAAA;QAED,MAAM,MAAM,GAAG,CAAC,EAAW,EAAE,EAAE;YAC7B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;YACnB,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAA;YAClC,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAA;YACpC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAA;QAC5B,CAAC,CAAA;QAED,MAAM,kBAAkB,GAAqB;YAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB;oBAAE,OAM7C;gBAAC,KAAK,CAAC,aAA6B,CAAC,KAAK,EAAE,CAAA;gBAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;YACnD,CAAC;YACD,aAAa,EAAE,OAAO,CACpB,uBAAuB,EACvB,SAAS,CAAC,CAAC,KAAmB,EAAE,EAAE;gBAChC,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;gBACjC,IAAI,KAAK,CAAC,gBAAgB;oBAAE,OAAM;gBAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACtD,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;oBAC/C,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;wBACjC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;wBAC3B,cAAc,EAAE,CAAA;oBAClB,CAAC,EAAE,GAAG,CAAC,CAAA;gBACT,CAAC;YACH,CAAC,CAAC,CACH;YACD,cAAc,EAAE,OAAO,CACrB,uBAAuB,EACvB,SAAS,CAAC,CAAC,KAAmB,EAAE,EAAE;gBAChC,cAAc,EAAE,CAAA;gBAEhB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAA;gBACtC,MAAM,WAAW,GAAG,OAAO,EAAE,qBAAqB,EAAE,CAAA;gBACpD,IAAI,OAAO,IAAI,WAAW,EAAE,CAAC;oBAC3B,kEAAkE;oBAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAA2B,CAAA;oBACxD,MAAM,SAAS,GAAG,IAAI,KAAK,OAAO,CAAA;oBAClC,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAChC,MAAM,eAAe,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;oBACjE,MAAM,cAAc,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;oBAEhE,cAAc,CAAC,0BAA0B,CAAC;wBACxC,IAAI,EAAE;4BACJ,4DAA4D;4BAC5D,qCAAqC;4BACrC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;4BAC9C,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE;4BAC1C,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE;4BACzC,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE;4BAC5C,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE;yBAC9C;wBACD,IAAI;qBACL,CAAC,CAAA;oBAEF,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;oBAC7D,cAAc,CAAC,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAC1D,GAAG,EAAE,CAAC,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,EACrD,GAAG,CACJ,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;oBACpC,IAAI,KAAK,CAAC,gBAAgB;wBAAE,OAAM;oBAElC,gFAAgF;oBAChF,cAAc,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;gBACjD,CAAC;YACH,CAAC,CAAC,CACH;YACD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnB,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,KAAK,EAAE,CAAA;gBAC7D,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC;oBAAE,OAAM;gBAClE,IAAI,aAAa,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/D,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;oBAC3B,+DAA+D;oBAC/D,wEAAwE;oBACxE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;oBAC/B,gCAAgC;oBAChC,KAAK,CAAC,cAAc,EAAE,CAAA;gBACxB,CAAC;YACH,CAAC;SACF,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC5B,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,IAAI,CAAC,KAAK,EAAE;gBACf,IAAI,EAAE,YAAY,CAAC,SAAS;gBAC5B,eAAe,EAAE,MAAM;gBACvB,eAAe,EAAE,IAAI;gBACrB,mEAAmE;gBACnE,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC1D,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC;gBACjD,KAAK,EAAE,MAAM;gBACb,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;aACrC,EACD;gBACE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE;oBACpC,KAAK,CAAC,OAAO,EAAE,EAAE;oBACjB,CAAC,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;iBACxE,CAAC;aACH,CACF,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,uFAAuF;AACvF,MAAM,kBAAkB,GAAG,eAAe,CAAC;IACzC,IAAI,EAAE,oBAAoB;IAC1B,KAAK,EAAE;QACL,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QACzC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC5C,SAAS,EAAE,MAAM;KAClB;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,mEAAmE;QACnE,MAAM,OAAO,GAAG,6BAA6B,EAAE,CAAA;QAC/C,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAA;QAC1C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;QAC/B,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAA;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;QACpD,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QAC1C,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;QAE1C,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,yBAAyB,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChG,OAAO,CAAC,gBAAgB,EAAE;YACxB,WAAW,EAAE,GAAG,EAAE;gBAChB,WAAW,EAAE,CAAA;gBACb,aAAa,EAAE,WAAW,EAAE,CAAA;YAC9B,CAAC;SACF,CAAC,CAAA;QACF,SAAS,CAAC,GAAG,EAAE;YACb,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC1E,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE;YACnB,QAAQ,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;QAE3D,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;YACzC,MAAM,aAAa,GAAG,KAAK,CAAC,aAA4B,CAAA;YACxD,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,CAAA;YACpE,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1E,IAAI,eAAe,IAAI,UAAU,EAAE,CAAC;gBAClC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;gBAC5B,kEAAkE;gBAClE,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;gBACnC,gCAAgC;gBAChC,KAAK,CAAC,cAAc,EAAE,CAAA;YACxB,CAAC;YACD,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC,CAAA;QAED,OAAO,GAAG,EAAE,CACV,CAAC,CACC,uBAAuB,EACvB;YACE,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACxD,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,KAAK,CAAC,UAAU;YAC9B,aAAa,EAAE,KAAK,CAAC,WAAW;YAChC,iBAAiB,EAAE,IAAI;YACvB,kBAAkB,EAAE,iBAAiB;YACrC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,SAAS;YACpD,OAAO,EAAE,CAAC,CAAC,QAAQ;YACnB,OAAO,EAAE;gBACP,GAAG,cAAc,CAAC;oBAChB,YAAY,EAAE,KAAK,CAAC,KAAK;oBACzB,gBAAgB,EAAE,KAAK,CAAC,QAAQ;oBAChC,iBAAiB,EAAE,KAAK,CAAC,SAAS;iBACnC,CAAC;gBACF,GAAG,gBAAgB;aACpB;YACD,iBAAiB,EAAE,CAAC,KAAY,EAAE,EAAE;gBAClC,gEAAgE;gBAChE,IAAI,SAAS,CAAC,eAAe,CAAC,OAAO;oBAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAA;gBACtE,KAAK,CAAC,cAAc,EAAE,CAAA;YACxB,CAAC;YACD,oFAAoF;YACpF,0FAA0F;YAC1F,kBAAkB,EAAE,qBAAqB;YACzC,sEAAsE;YACtE,mCAAmC;YACnC,sBAAsB,EAAE,qBAAqB;YAC7C,gBAAgB,EAAE,CAAC,KAAY,EAAE,EAAE;gBACjC,yFAAyF;gBACzF,0BAA0B;gBAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,KAAK;oBAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;gBAC7E,KAAK,CAAC,cAAc,EAAE,CAAA;YACxB,CAAC;YACD,iBAAiB,EAAE,qBAAqB;YACxC,GAAG,QAAQ;YACX,SAAS;YACT,mEAAmE;YACnE,YAAY,EAAE,GAAG,EAAE;gBACjB,QAAQ,CAAC,UAAU,EAAE,CAAA;gBACrB,aAAa,EAAE,WAAW,EAAE,CAAA;YAC9B,CAAC;SACF,EACD,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CACrC,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,0DAA0D;QAC1D,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE;QACxC,yDAAyD;QACzD,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;QAC1C,mEAAmE;QACnE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QAC1C,uEAAuE;QACvE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;QAC7C,mEAAmE;QACnE,SAAS,EAAE,MAAM;KAClB;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE;QACpB,MAAM,EAAE,IAAI,EAAE,GAAG,iBAAiB,EAAE,CAAA;QAEpC,OAAO,GAAG,EAAE,CACV,CAAC,CACC,sBAAsB,EACtB,IAAI,EACJ;YACE,OAAO,EAAE,GAAG,EAAE,CAAC;gBACb,CAAC,CACC,eAAe,EACf,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,EACjF;oBACE,OAAO,EAAE,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,KAAK;4BACR,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;4BAC3F,CAAC,CAAC,kBAAkB,EAAE;qBACzB;iBACF,CACF;aACF;SACF,CACF,CAAA;IACL,CAAC;CACF,CAAC,CAAA;AAEF,8EAA8E;AAC9E,2BAA2B;AAE3B,iEAAiE;AACjE,MAAM,iBAAiB,GAAG,eAAe,CAAC;IACxC,IAAI,EAAE,mBAAmB;IACzB,YAAY,EAAE,KAAK;IACnB,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;QAEpE,OAAO,GAAG,EAAE;YACV,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAA;YACnC,8DAA8D;YAC9D,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAA;YAClC,OAAO,CAAC,CACN,QAAQ,EACR,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,IAAI,EAAE,EACzD;gBACE,yEAAyE;gBACzE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;aACpG,CACF,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;IAC5C,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE;QACL,2CAA2C;QAC3C,KAAK,EAAE,MAAM;QACb;;;WAGG;QACH,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAmC,EAAE,OAAO,EAAE,KAAK,EAAE;KACjF;IACD,KAAK,EAAE;QACL,cAAc,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI;QACxC,mCAAmC;QACnC,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI;KACnC;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;QAC1B,OAAO,CAAC,aAAa,EAAE;YACrB,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK;YACxB,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;gBAC3B,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACvB,CAAC;SACF,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE,CACV,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACxG,CAAC;CACF,CAAC,CAAA;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;IAC3C,IAAI,EAAE,eAAe;IACrB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;QACvC,8BAA8B;QAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;KAC5C;IACD,KAAK,EAAE;QACL,+EAA+E;QAC/E,MAAM,EAAE,CAAC,MAAa,EAAE,EAAE,CAAC,IAAI;KAChC;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;QACxF,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAA;QACnD,OAAO,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;QAEtC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,EACJ,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EACpB,GAAG,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACrB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC,CACF,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACjD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;YAC/C,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,IAAI,CAAC,KAAK,EAAE;gBACf,MAAM,EAAE,eAAe;gBACvB,cAAc,EAAE,OAAO,EAAE;gBACzB,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC;gBAC7C,GAAG,SAAS;gBACZ,YAAY,EAAE,eAAe,CAAC,OAAO,EAAE,CAAC;gBACxC,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,GAAG,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;aACpD,EACD;gBACE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE;oBACpC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;oBAChG,KAAK,CAAC,OAAO,EAAE,EAAE;iBAClB,CAAC;aACH,CACF,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA;AAEF,6CAA6C;AAC7C,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;IAC9C,IAAI,EAAE,kBAAkB;IACxB,YAAY,EAAE,KAAK;IACnB,KAAK,EAAE;QACL,6DAA6D;QAC7D,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAA2B,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9E,iCAAiC;QACjC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C;;;WAGG;QACH,iBAAiB,EAAE,EAAE,IAAI,EAAE,MAAmC,EAAE,OAAO,EAAE,KAAK,EAAE;QAChF;;;WAGG;QACH,gBAAgB,EAAE,EAAE,IAAI,EAAE,MAAqC,EAAE,OAAO,EAAE,OAAO,EAAE;KACpF;IACD,KAAK,EAAE;QACL,gBAAgB,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,IAAI;QAC7C,0DAA0D;QAC1D,eAAe,EAAE,CAAC,QAAiB,EAAE,EAAE,CAAC,IAAI;QAC5C,kFAAkF;QAClF,QAAQ,EAAE,CAAC,MAAa,EAAE,EAAE,CAAC,IAAI;KAClC;IACD,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,OAAO,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAE3D,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,EACJ,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EACpB,GAAG,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;YACrB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAA;YACnE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;YAC5B,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;QAC7B,CAAC,CACF,CAAA;QAED,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;YACjD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAG,IAAI,CAAA;YAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;YACzB,OAAO,CAAC,CACN,KAAK,EACL;gBACE,GAAG,IAAI,CAAC,KAAK,EAAE;gBACf,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;gBAC5D,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC;gBAChD,GAAG,SAAS;gBACZ,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC;gBACtC,yBAAyB,EAAE,KAAK,CAAC,iBAAiB;gBAClD,wBAAwB,EAAE,KAAK,CAAC,gBAAgB;gBAChD,KAAK,EAAE,IAAI,CAAC,UAAU;gBACtB,GAAG,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC;aACpD,EACD;gBACE,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE;oBACpC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,EAAE;wBACvC,CAAC,CAAC,iBAAiB,EAAE,IAAI,EAAE;4BACzB,OAAO,EAAE,GAAG,EAAE,CACZ,KAAK,CAAC,gBAAgB,KAAK,OAAO;gCAChC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gCACjC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;yBAC/E,CAAC;qBACH,CAAC;oBACF,KAAK,CAAC,OAAO,EAAE,EAAE;iBAClB,CAAC;aACH,CACF,CAAA;QACH,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA","sourcesContent":["import {\n cloneVNode,\n computed,\n createCommentVNode,\n defineComponent,\n h,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n shallowRef,\n watch,\n withCtx,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type ShallowRef,\n} from \"vue\"\nimport {\n DropdownMenuContent as RekaDropdownMenuContent,\n DropdownMenuPortal as RekaDropdownMenuPortal,\n DropdownMenuRoot as RekaDropdownMenuRoot,\n Presence,\n injectDropdownMenuRootContext,\n useDirection,\n useId,\n} from \"reka-ui\"\nimport { useEscCloseStack } from \"../../composables/useEscCloseStack.js\"\nimport { firstElementChild } from \"../Tooltip/slot.js\"\nimport { preventDefaultHandler, toCssVariables } from \"../../lib/helpers.js\"\nimport { Button } from \"../Button/index.js\"\nimport { Check, ChevronRight } from \"../Icon/index.js\"\nimport { useLinkComponent } from \"../PlexUIProvider/internal.js\"\nimport { composeEventHandlers, mergeSlotProps } from \"../Tooltip/slot.js\"\nimport type { LinkComponent } from \"../PlexUIProvider/index.js\"\nimport { TransitionGroup } from \"../Transition/index.js\"\nimport {\n MenuLevelKey,\n MenuRootInternalsKey,\n MenuSubInternalsKey,\n SUB_CLOSE_KEYS,\n SUB_OPEN_KEYS,\n box,\n compose,\n getCheckedState,\n getOpenState,\n isIndeterminate,\n provideMenuContentContext,\n selectableItemListeners,\n splitListeners,\n trackKeyboardUse,\n useMenuItemImpl,\n useMenuItemSelect,\n useMenuLevel,\n useMenuRootInternals,\n useMenuSubInternals,\n whenMouse,\n type CheckedState,\n type GraceIntent,\n type ItemImplHandlers,\n type MenuLevel,\n type MenuSubInternals,\n} from \"./internal.js\"\nimport s from \"@plexui/styles/components/Menu/Menu.module.css\"\n\n// Vue port of packages/ui/src/components/Menu/Menu.tsx. Exports are flat\n// (`Menu`, `MenuTrigger`, `MenuContent`, ...) because runtime-compiled\n// templates cannot resolve `Menu.Trigger` from the `components` option.\n//\n// Reka UI provides the root state, positioning, the dismissable layer, the\n// focus scope and the portal. Where Reka's menu differs from Radix's, this\n// port follows Radix so the DOM and behaviour match React:\n// - The trigger opens on pointerdown (Reka: click) and runs after the child's\n// own handlers, skipped when one called preventDefault().\n// - Items, their roving focus (tabindex 0 on the current item,\n// data-orientation, data-highlighted on focus), typeahead, selection and\n// the submenu pointer grace area are Radix's (see ./internal.ts). Labels\n// get no generated id and groups no aria-labelledby.\n// - Tab is held in the menu whether or not it is modal; focus returns to the\n// trigger synchronously on close; Escape closes one level at a time\n// (Reka's submenu closes the whole menu).\n// - Submenus are a nested Reka root, so the submenu's Escape and outside\n// interactions follow Radix's submenu rules.\n// - Open changes are reported only when the state changes, like Radix's\n// controlled state.\n// - The content keeps the custom property names the shared CSS reads\n// (`--radix-dropdown-menu-content-*`), pointing at Reka's\n// `--reka-popper-*` values.\n\n// ---------------------------------------------------------------------------\n// Plex contexts (React's MenuContext and SubmenuContext)\n\ntype MenuContextValue = {\n open: ComputedRef<boolean>\n setOpen: (next: boolean) => void\n}\n\nconst MenuContextKey: InjectionKey<MenuContextValue> = Symbol(\"PlexUIMenu\")\n\nconst useMenuContext = () => {\n const context = inject(MenuContextKey, null)\n if (!context) throw new Error(\"Menu components must be wrapped in <Menu />\")\n return context\n}\n\ntype SubmenuContextValue = {\n open: ComputedRef<boolean>\n setOpen: (next: boolean) => void\n triggerRef: ShallowRef<HTMLElement | null>\n}\n\nconst SubmenuContextKey: InjectionKey<SubmenuContextValue> = Symbol(\"PlexUISubmenu\")\n\nconst useSubmenuContext = () => {\n const context = inject(SubmenuContextKey, null)\n if (!context) throw new Error(\"Submenu components must be wrapped in <Sub />\")\n return context\n}\n\n// React's blur events from a submenu bubble through the React tree to the\n// parent menus, which clear their typeahead buffer\ntype ParentContent = { resetSearch: () => void }\nconst ParentContentKey: InjectionKey<ParentContent> = Symbol(\"PlexUIMenuParentContent\")\n\ntype ItemIndicatorContextValue = { checked: () => CheckedState }\nconst ItemIndicatorKey: InjectionKey<ItemIndicatorContextValue> = Symbol(\"PlexUIMenuItemIndicator\")\n\ntype RadioGroupContextValue = { value: () => string | undefined; onValueChange: (value: string) => void }\nconst RadioGroupKey: InjectionKey<RadioGroupContextValue> = Symbol(\"PlexUIMenuRadioGroup\")\n\nconst resolveElement = (el: unknown): HTMLElement | null => {\n const node = el && typeof el === \"object\" && \"$el\" in el ? (el as { $el: unknown }).$el : el\n // A multi-root component's $el is the text node opening its fragment; the\n // element follows it (as in Reka)\n const element = node instanceof Text ? node.nextElementSibling : node\n return element instanceof HTMLElement ? element : null\n}\n\n// ---------------------------------------------------------------------------\n// Menu\n\n/** Dropdown menu root. Open state is internal; `forceOpen` overrides it. */\nexport const Menu = defineComponent({\n name: \"Menu\",\n // Like React, only the declared props are used\n inheritAttrs: false,\n props: {\n /** Force the menu to remain open or closed */\n forceOpen: { type: Boolean, default: undefined },\n /**\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n * @default false\n */\n modal: { type: Boolean, default: false },\n },\n emits: {\n /** The menu opened */\n open: () => true,\n /** The menu closed */\n close: () => true,\n },\n setup(props, { slots, emit }) {\n const open = ref(false)\n const isOpen = computed(() => props.forceOpen ?? open.value)\n\n const handleOpenChange = (nextState: boolean) => {\n open.value = nextState\n if (nextState) emit(\"open\")\n else emit(\"close\")\n }\n\n useEscCloseStack(\n () => open.value,\n () => handleOpenChange(false),\n )\n\n provide(MenuContextKey, { open: isOpen, setOpen: handleOpenChange })\n\n // Radix's controlled root reports a change only when it differs from the\n // rendered state (two changes before the next render both report)\n let renderedOpen = isOpen.value\n const setOpen = (nextState: boolean) => {\n if (nextState !== renderedOpen) handleOpenChange(nextState)\n }\n\n const isUsingKeyboard = box(false)\n let stopTracking: (() => void) | undefined\n onMounted(() => {\n stopTracking = trackKeyboardUse(isUsingKeyboard)\n })\n onBeforeUnmount(() => stopTracking?.())\n\n const level: MenuLevel = { open: () => isOpen.value, onOpenChange: setOpen, content: shallowRef(null) }\n provide(MenuLevelKey, level)\n provide(MenuRootInternalsKey, {\n onClose: () => setOpen(false),\n isUsingKeyboard,\n dir: useDirection(),\n modal: () => props.modal,\n trigger: shallowRef(null),\n })\n\n return () => {\n renderedOpen = isOpen.value\n return h(\n RekaDropdownMenuRoot,\n { \"open\": renderedOpen, \"modal\": props.modal, \"onUpdate:open\": setOpen },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n// ---------------------------------------------------------------------------\n// Trigger\n\n/**\n * Renders its child as the menu's trigger (Radix's `asChild`). Other\n * attributes and listeners reach the child too, merged as Radix's Slot does.\n */\nexport const MenuTrigger = defineComponent({\n name: \"MenuTrigger\",\n inheritAttrs: false,\n props: {\n /** Prevents the menu from opening */\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const rootContext = injectDropdownMenuRootContext()\n const internals = useMenuRootInternals()\n const level = useMenuLevel()\n rootContext.triggerId ||= useId(undefined, \"reka-dropdown-menu-trigger\")\n // Set here so the trigger's aria-controls is ready when the content opens\n rootContext.contentId ||= useId(undefined, \"reka-dropdown-menu-content\")\n\n const setRef = (el: unknown) => {\n const element = resolveElement(el)\n internals.trigger.value = element\n // Reka leaves pointer-downs on its trigger to the trigger\n rootContext.triggerElement.value = element ?? undefined\n }\n\n // After the child's own handlers, skipped when one called preventDefault()\n const onPointerdown = (event: PointerEvent) => {\n if (event.defaultPrevented) return\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!props.disabled && event.button === 0 && event.ctrlKey === false) {\n const wasOpen = level.open()\n level.onOpenChange(!wasOpen)\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!wasOpen) event.preventDefault()\n }\n }\n\n const onKeydown = (event: KeyboardEvent) => {\n if (event.defaultPrevented) return\n if (props.disabled) return\n if ([\"Enter\", \" \"].includes(event.key)) level.onOpenChange(!level.open())\n if (event.key === \"ArrowDown\") level.onOpenChange(true)\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault()\n }\n\n return () => {\n const open = level.open()\n // Looks through fragments, so a child forwarded with `<slot />` works too\n const child = firstElementChild(slots.default?.())\n if (!child) return null\n // Radix's trigger props, then the caller's (React's Menu.Trigger\n // forwards them), with its handlers after the caller's\n const { onPointerdown: callerPointerdown, onKeydown: callerKeydown, ...restAttrs } = attrs\n const triggerProps = {\n \"type\": \"button\",\n \"id\": rootContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? rootContext.contentId : undefined,\n \"data-state\": getOpenState(open),\n \"data-disabled\": props.disabled ? \"\" : undefined,\n \"disabled\": props.disabled,\n ...restAttrs,\n \"onPointerdown\": composeEventHandlers(callerPointerdown, onPointerdown),\n \"onKeydown\": composeEventHandlers(callerKeydown, onKeydown),\n }\n return cloneVNode(mergeSlotProps(child, triggerProps), { ref: setRef }, true)\n }\n },\n})\n\n// ---------------------------------------------------------------------------\n// Content\n\nconst COLLISION_PADDING = { bottom: 30, top: 30, left: 12, right: 12 }\nconst AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\"\n\n// Radix's names for the content custom properties (read by the shared CSS),\n// in place of Reka's\nconst contentVariables = {\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--reka-popper-anchor-height)\",\n \"--reka-dropdown-menu-content-transform-origin\": null,\n \"--reka-dropdown-menu-content-available-width\": null,\n \"--reka-dropdown-menu-content-available-height\": null,\n \"--reka-dropdown-menu-trigger-width\": null,\n \"--reka-dropdown-menu-trigger-height\": null,\n}\n\ntype InteractOutsideEvent = CustomEvent<{ originalEvent: PointerEvent | FocusEvent }>\ntype MenuSide = \"top\" | \"right\" | \"bottom\" | \"left\"\ntype MenuAlign = \"start\" | \"center\" | \"end\"\ntype SizeValue = number | \"auto\"\n\nconst sizeProp = [Number, String] as PropType<SizeValue>\n\n/** Content of the root menu, mounted while it is open (Radix's DropdownMenuContent). */\nconst MenuRootContentImpl = defineComponent({\n name: \"MenuRootContentImpl\",\n props: {\n side: String as PropType<MenuSide>,\n sideOffset: { type: Number, required: true },\n align: String as PropType<MenuAlign>,\n alignOffset: Number,\n width: sizeProp,\n minWidth: sizeProp,\n maxHeight: Number,\n layout: { type: String as PropType<\"vertical\" | \"horizontal\">, required: true },\n size: String as PropType<\"sm\" | \"md\" | \"lg\">,\n onCloseAutoFocus: { type: Function as PropType<(event: Event) => void>, required: true },\n },\n setup(props, { slots }) {\n const rootContext = injectDropdownMenuRootContext()\n const internals = useMenuRootInternals()\n const level = useMenuLevel()\n rootContext.contentId ||= useId(undefined, \"reka-dropdown-menu-content\")\n\n const { contentHandlers, resetSearch } = provideMenuContentContext(() => level.content.value)\n provide(ParentContentKey, { resetSearch })\n onMounted(() => {\n level.content.value = document.getElementById(rootContext.contentId)\n })\n onBeforeUnmount(() => {\n level.content.value = null\n })\n\n let hasInteractedOutside = false\n // Radix's focus scope announces the unmount a task later, on the detached\n // content; Reka's does it at once and refocuses a task later, so that is\n // cancelled and Radix's event dispatched instead\n const onCloseAutoFocus = (rekaEvent: Event) => {\n rekaEvent.preventDefault()\n const container = (rekaEvent.target as HTMLElement | null) ?? level.content.value\n setTimeout(() => {\n const event = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, { bubbles: false, cancelable: true })\n const handleCloseAutoFocus = (closeEvent: Event) => {\n props.onCloseAutoFocus(closeEvent)\n if (closeEvent.defaultPrevented) return\n if (!hasInteractedOutside) internals.trigger.value?.focus()\n hasInteractedOutside = false\n // Always prevent auto focus because we either focus manually or want user agent focus\n closeEvent.preventDefault()\n }\n if (!container) return handleCloseAutoFocus(event)\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, handleCloseAutoFocus)\n container.dispatchEvent(event)\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, handleCloseAutoFocus)\n }, 0)\n }\n const onInteractOutside = (event: InteractOutsideEvent) => {\n if (event.defaultPrevented) return\n const originalEvent = event.detail.originalEvent as PointerEvent\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick\n if (!internals.modal() || isRightClick) hasInteractedOutside = true\n // Reka keeps the menu open when the interaction is on its trigger;\n // Radix dismisses it like any other outside interaction\n const target = event.target as Node | null\n if (target && internals.trigger.value?.contains(target)) level.onOpenChange(false)\n }\n\n const handlers = contentHandlers(internals.isUsingKeyboard)\n\n return () => {\n const isHorizontal = props.layout === \"horizontal\"\n return h(\n RekaDropdownMenuContent,\n {\n \"side\": props.side,\n \"sideOffset\": props.sideOffset,\n \"align\": props.align,\n \"alignOffset\": props.alignOffset ?? (props.align === \"center\" ? 0 : -5),\n \"avoidCollisions\": true,\n \"collisionPadding\": COLLISION_PADDING,\n \"reference\": internals.trigger.value ?? undefined,\n \"class\": s.MenuList,\n \"data-layout\": isHorizontal ? \"horizontal\" : undefined,\n \"data-size\": isHorizontal && props.size ? props.size : undefined,\n \"style\": {\n ...toCssVariables({\n \"menu-width\": props.width,\n \"menu-min-width\": isHorizontal ? \"auto\" : props.minWidth,\n \"menu-max-height\": props.maxHeight,\n }),\n ...contentVariables,\n },\n \"onEscapeKeyDown\": preventDefaultHandler,\n onCloseAutoFocus,\n onInteractOutside,\n ...handlers,\n },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n/** The menu panel. Positioned against the trigger and portalled to `<body>`. */\nexport const MenuContent = defineComponent({\n name: \"MenuContent\",\n inheritAttrs: false,\n props: {\n /**\n * The preferred side of the trigger to render against when open. Will be reversed when collisions occur.\n * @default bottom\n */\n side: String as PropType<MenuSide>,\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset: { type: Number, default: 5 },\n /**\n * The preferred alignment against the trigger. May change when collisions occur.\n * @default center\n */\n align: String as PropType<MenuAlign>,\n /** An offset in pixels from the \"start\" or \"end\" alignment options. */\n alignOffset: Number,\n /**\n * Defines the `width` property of the content\n * @default auto\n */\n width: sizeProp,\n /**\n * Defines the `min-width` property of the content, in pixels.\n * @default 300\n */\n minWidth: sizeProp,\n /** Defines the `max-height` property of the content, in pixels. */\n maxHeight: Number,\n /**\n * Layout direction of menu items. Use `\"horizontal\"` for icon-based toolbars (iOS-style).\n * @default \"vertical\"\n */\n layout: { type: String as PropType<\"vertical\" | \"horizontal\">, default: \"vertical\" },\n /**\n * Size of horizontal menu items. Controls icon size and padding. Only applies when `layout=\"horizontal\"`.\n * @default \"md\"\n */\n size: String as PropType<\"sm\" | \"md\" | \"lg\">,\n },\n emits: {\n /**\n * Focus is about to return to the trigger after the menu closes. Call\n * `event.preventDefault()` to keep the trigger from regaining focus (and\n * its focus-visible ring).\n */\n closeAutoFocus: (_event: Event) => true,\n },\n setup(props, { slots, emit }) {\n const { open } = useMenuContext()\n const onCloseAutoFocus = (event: Event) => emit(\"closeAutoFocus\", event)\n\n return () =>\n h(\n RekaDropdownMenuPortal,\n null,\n {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n {\n default: () => [\n open.value\n ? h(\n MenuRootContentImpl,\n { key: \"dropdown\", ...props, onCloseAutoFocus },\n { default: () => slots.default?.() },\n )\n : createCommentVNode(),\n ],\n },\n ),\n ],\n },\n )\n },\n})\n\n// ---------------------------------------------------------------------------\n// Items\n\n/** The focusable branch of `MenuItem`: a Radix menu item. */\nconst MenuItemInteractive = defineComponent({\n name: \"MenuItemInteractive\",\n props: {\n className: [String, Array, Object] as PropType<unknown>,\n disabled: Boolean,\n danger: Boolean,\n onSelect: Function as PropType<(event: Event) => void>,\n onItemClick: { type: Function as PropType<(event: MouseEvent) => void>, required: true },\n },\n setup(props, { slots }) {\n const { open } = useMenuContext()\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(impl, () => props.disabled, () => props.onSelect)\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we're always known to be closing\n if (!open.value) evt.preventDefault()\n }\n\n const listeners = selectableItemListeners(\n impl,\n select,\n { onClick: (event: MouseEvent) => props.onItemClick(event) },\n { onPointermove: handlePreventAfterClose, onPointerleave: handlePreventAfterClose },\n )\n\n return () =>\n h(\n \"div\",\n {\n ...impl.attrs(),\n \"class\": [s.MenuItem, props.className],\n \"data-danger\": props.danger ? \"\" : undefined,\n \"ref\": impl.setElement,\n ...listeners,\n },\n [h(\"div\", { class: s.PressableInner }, slots.default?.())],\n )\n },\n})\n\n/**\n * A menu item. Interactive (focusable, selectable) when it has a `@select` or\n * a `@click` handler; read-only content otherwise.\n */\nexport const MenuItem = defineComponent({\n name: \"MenuItem\",\n inheritAttrs: false,\n props: {\n /**\n * Second line under the item's label: what this action does, or which\n * value it carries. The label goes semibold on its own, the same way a\n * Select option with a description does. Also a `description` slot.\n */\n description: String,\n /** Disables the menu item */\n disabled: { type: Boolean, default: false },\n /** Marks a destructive action (delete, remove, leave): the item is drawn in the danger color */\n danger: { type: Boolean, default: false },\n /**\n * Called when the item is selected (`@select`). Without it or `@click`\n * the item is read-only content. Call `event.preventDefault()` to keep\n * the menu open.\n */\n onSelect: Function as PropType<(event: Event) => void>,\n /** Called when the item is clicked (`@click`); also makes the item interactive */\n onClick: Function as PropType<(event: MouseEvent) => void>,\n },\n setup(props, { slots, attrs }) {\n const onItemClick = (event: MouseEvent) => props.onClick?.(event)\n\n return () => {\n const description = slots.description ? slots.description() : props.description\n // A described item stacks its two lines; without a description the item\n // keeps the plain flex row that icons and ItemActions rely on.\n const content =\n description === undefined\n ? slots.default?.()\n : [\n h(\"div\", { class: s.ItemLeading }, [\n h(\"div\", null, slots.default?.()),\n h(\"div\", { class: s.ItemDescription }, description),\n ]),\n ]\n\n // Custom click handlers: either callback makes the item interactive\n if (props.onSelect || props.onClick) {\n return h(\n MenuItemInteractive,\n { className: attrs.class, disabled: props.disabled, danger: props.danger, onSelect: props.onSelect, onItemClick },\n { default: () => content },\n )\n }\n\n // Read-only content - will not appear interactive.\n return h(\"div\", { class: [s.MenuItemContent, attrs.class] }, content)\n }\n },\n})\n\n/** Hover actions at the end of an item. */\nexport const MenuItemActions = defineComponent({\n name: \"MenuItemActions\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { class: [s.ItemActions, attrs.class] }, slots.default?.())\n },\n})\n\n/** A small ghost button inside `MenuItemActions`. Closes the menu and emits `click`. */\nexport const MenuItemAction = defineComponent({\n name: \"MenuItemAction\",\n inheritAttrs: false,\n props: {\n /** Accessible name; the action is an icon-only button */\n ariaLabel: String,\n },\n emits: {\n click: (_event: MouseEvent) => true,\n },\n setup(props, { slots, emit }) {\n const { setOpen } = useMenuContext()\n\n return () =>\n h(\n Button,\n {\n class: \"rounded-sm\",\n color: \"secondary\",\n size: \"xs\",\n uniform: true,\n iconSize: \"sm\",\n variant: \"ghost\",\n \"aria-label\": props.ariaLabel,\n onClick: (evt: MouseEvent) => {\n evt.stopPropagation()\n setOpen(false)\n emit(\"click\", evt)\n },\n },\n { default: () => slots.default?.() },\n )\n },\n})\n\ntype RouteTarget = string | Record<string, unknown>\n\n// Drops undefined entries so a router link's own `href` is not overridden\nconst defined = (props: Record<string, unknown>) =>\n Object.fromEntries(Object.entries(props).filter(([, value]) => value !== undefined))\n\n/**\n * A menu item that navigates. Internal paths render the provider's link\n * component; absolute URLs open in a new tab.\n */\nexport const MenuLink = defineComponent({\n name: \"MenuLink\",\n inheritAttrs: false,\n props: {\n href: String,\n /** Router link destination (internal) */\n to: [String, Object] as PropType<RouteTarget>,\n /** Disables the menu item */\n disabled: { type: Boolean, default: false },\n /** Marks a destructive destination: the item is drawn in the danger color */\n danger: { type: Boolean, default: false },\n /**\n * Override the default component used for the link. This is useful for\n * using a routing library, or SSR rendering.\n * @default 'a'\n */\n as: [String, Object, Function] as PropType<LinkComponent>,\n },\n setup(props, { slots, attrs }) {\n const { open } = useMenuContext()\n const DefaultComponent = useLinkComponent()\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(impl, () => props.disabled, () => undefined)\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we're always known to be closing\n if (!open.value) evt.preventDefault()\n }\n\n return () => {\n const { href, to } = props\n const propPath = href || to\n // When a path is not provided, default to an anchor\n const isExternal = propPath ? /^https?:\\/\\//.test(propPath as string) : true\n const Component = props.as || (isExternal ? \"a\" : DefaultComponent.value)\n\n // The link's own attributes and listeners come first, as the slot\n // child's do in React\n const { listeners, rest } = splitListeners(attrs)\n // A disabled item is not selected; its link must not navigate either.\n // Canceled in the capture phase, before a router link's own handler\n // (vue-router's runs ahead of the listeners passed to it)\n if (props.disabled) listeners.onClickCapture = [listeners.onClickCapture ?? [], preventDefaultHandler].flat()\n const { class: className, ...restProps } = rest\n const linkProps = isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\", href: href ?? to } : { href, to }\n\n const itemProps = defined({\n ...impl.attrs(),\n ...linkProps,\n ...restProps,\n \"class\": [s.MenuItem, className],\n \"data-danger\": props.danger ? \"\" : undefined,\n \"ref\": impl.setElement,\n ...selectableItemListeners(\n impl,\n select,\n listeners,\n isExternal ? {} : { onPointermove: handlePreventAfterClose, onPointerleave: handlePreventAfterClose },\n typeof Component !== \"string\",\n ),\n })\n const inner = () => [h(\"span\", { class: s.PressableInner }, slots.default?.())]\n\n return typeof Component === \"string\" ? h(Component, itemProps, inner()) : h(Component, itemProps, { default: inner })\n }\n },\n})\n\n/** A divider between items. */\nexport const MenuSeparator = defineComponent({\n name: \"MenuSeparator\",\n inheritAttrs: false,\n setup(_props, { attrs }) {\n return () => h(\"div\", { \"role\": \"separator\", \"aria-orientation\": \"horizontal\", \"class\": [s.Separator, attrs.class] })\n },\n})\n\n/** A non-interactive label for a group of items. */\nexport const MenuLabel = defineComponent({\n name: \"MenuLabel\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { class: [s.MenuLabel, attrs.class] }, slots.default?.())\n },\n})\n\n/** Groups related items. */\nexport const MenuGroup = defineComponent({\n name: \"MenuGroup\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { role: \"group\", class: attrs.class }, slots.default?.())\n },\n})\n\n// ---------------------------------------------------------------------------\n// Submenus\n\n/** A nested menu: `MenuSubTrigger` plus `MenuSubContent`. */\nexport const MenuSub = defineComponent({\n name: \"MenuSub\",\n inheritAttrs: false,\n props: {\n /** Force the menu to remain open or closed */\n forceOpen: { type: Boolean, default: undefined },\n },\n emits: {\n /** The submenu opened */\n open: () => true,\n /** The submenu closed */\n close: () => true,\n },\n setup(props, { slots, emit }) {\n const parentLevel = useMenuLevel()\n const open = ref(false)\n const triggerRef = shallowRef<HTMLElement | null>(null)\n const isOpen = computed(() => props.forceOpen ?? open.value)\n\n const handleOpenChange = (nextState: boolean) => {\n open.value = nextState\n if (nextState) emit(\"open\")\n else emit(\"close\")\n }\n\n useEscCloseStack(\n () => open.value,\n () => {\n handleOpenChange(false)\n // Ensure trigger is focused\n triggerRef.value?.focus()\n },\n )\n\n provide(SubmenuContextKey, { open: isOpen, setOpen: handleOpenChange, triggerRef })\n\n // Radix's controlled submenu reports a change only when it differs from\n // the rendered state\n let renderedOpen = isOpen.value\n const setOpen = (nextState: boolean) => {\n if (nextState !== renderedOpen) handleOpenChange(nextState)\n }\n\n // Radix's MenuSub closes with its parent menu, and when it unmounts\n watch(\n () => parentLevel.open(),\n (parentOpen) => {\n if (parentOpen === false) setOpen(false)\n },\n { immediate: true },\n )\n onBeforeUnmount(() => setOpen(false))\n\n const subInternals: MenuSubInternals = {\n triggerId: useId(undefined, \"reka-menu-sub-trigger\"),\n contentId: useId(undefined, \"reka-menu-sub-content\"),\n trigger: shallowRef(null),\n }\n provide(MenuSubInternalsKey, subInternals)\n provide(MenuLevelKey, { open: () => isOpen.value, onOpenChange: setOpen, content: shallowRef(null) })\n\n return () => {\n renderedOpen = isOpen.value\n return h(\n RekaDropdownMenuRoot,\n { \"open\": renderedOpen, \"modal\": false, \"onUpdate:open\": setOpen },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n/** The item that opens a submenu, on hover, click, Enter, Space or ArrowRight. */\nexport const MenuSubTrigger = defineComponent({\n name: \"MenuSubTrigger\",\n inheritAttrs: false,\n props: {\n /** Disables the trigger */\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const { open: menuOpen } = useMenuContext()\n const { triggerRef } = useSubmenuContext()\n const subLevel = useMenuLevel()\n const subInternals = useMenuSubInternals()\n const impl = useMenuItemImpl(() => props.disabled)\n const { contentContext, rootInternals } = impl\n\n let openTimer: number | null = null\n const clearOpenTimer = () => {\n if (openTimer) window.clearTimeout(openTimer)\n openTimer = null\n }\n onBeforeUnmount(() => {\n clearOpenTimer()\n window.clearTimeout(contentContext.pointerGraceTimer.current)\n contentContext.onPointerGraceIntentChange(null)\n })\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we know the outer menu is closing\n if (!menuOpen.value) evt.preventDefault()\n }\n\n const setRef = (el: unknown) => {\n impl.setElement(el)\n const element = resolveElement(el)\n subInternals.trigger.value = element\n triggerRef.value = element\n }\n\n const subTriggerHandlers: ItemImplHandlers = {\n onClick: (event) => {\n if (props.disabled || event.defaultPrevented) return\n /**\n * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)\n * and we rely heavily on `onFocusOutside` for submenus to close when switching\n * between separate submenus.\n */\n ;(event.currentTarget as HTMLElement).focus()\n if (!subLevel.open()) subLevel.onOpenChange(true)\n },\n onPointermove: compose(\n handlePreventAfterClose,\n whenMouse((event: PointerEvent) => {\n contentContext.onItemEnter(event)\n if (event.defaultPrevented) return\n if (!props.disabled && !subLevel.open() && !openTimer) {\n contentContext.onPointerGraceIntentChange(null)\n openTimer = window.setTimeout(() => {\n subLevel.onOpenChange(true)\n clearOpenTimer()\n }, 100)\n }\n }),\n ),\n onPointerleave: compose(\n handlePreventAfterClose,\n whenMouse((event: PointerEvent) => {\n clearOpenTimer()\n\n const content = subLevel.content.value\n const contentRect = content?.getBoundingClientRect()\n if (content && contentRect) {\n // TODO: make sure to update this when we change positioning logic\n const side = content.dataset.side as GraceIntent[\"side\"]\n const rightSide = side === \"right\"\n const bleed = rightSide ? -5 : 5\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"]\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"]\n\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n })\n\n window.clearTimeout(contentContext.pointerGraceTimer.current)\n contentContext.pointerGraceTimer.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300,\n )\n } else {\n contentContext.onTriggerLeave(event)\n if (event.defaultPrevented) return\n\n // There's 100ms where the user may leave an item before the submenu was opened.\n contentContext.onPointerGraceIntentChange(null)\n }\n }),\n ),\n onKeydown: (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\"\n if (props.disabled || (isTypingAhead && event.key === \" \")) return\n if (SUB_OPEN_KEYS[rootInternals.dir.value].includes(event.key)) {\n subLevel.onOpenChange(true)\n // The trigger may hold focus if opened via pointer interaction\n // so we ensure content is given focus again when switching to keyboard.\n subLevel.content.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n },\n }\n\n return () => {\n const open = subLevel.open()\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"id\": subInternals.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n // Radix (radix-ui 1.8) points at the submenu only while it is open\n \"aria-controls\": open ? subInternals.contentId : undefined,\n \"data-state\": getOpenState(open),\n \"class\": [s.MenuItem, s.SubMenuItem, attrs.class],\n \"ref\": setRef,\n ...impl.handlers(subTriggerHandlers),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n slots.default?.(),\n h(ChevronRight, { width: \"16\", height: \"16\", class: s.SubTriggerIcon }),\n ]),\n ],\n )\n }\n },\n})\n\n/** Content of a submenu, mounted while it is open (Radix's DropdownMenuSubContent). */\nconst MenuSubContentImpl = defineComponent({\n name: \"MenuSubContentImpl\",\n props: {\n sideOffset: { type: Number, required: true },\n alignOffset: { type: Number, required: true },\n width: { type: sizeProp, required: true },\n minWidth: { type: sizeProp, required: true },\n maxHeight: Number,\n },\n setup(props, { slots }) {\n // The submenu's own Reka root: its content takes the submenu's ids\n const subRoot = injectDropdownMenuRootContext()\n const subInternals = useMenuSubInternals()\n const subLevel = useMenuLevel()\n const internals = useMenuRootInternals()\n const parentContent = inject(ParentContentKey, null)\n subRoot.triggerId = subInternals.triggerId\n subRoot.contentId = subInternals.contentId\n\n const { contentHandlers, resetSearch } = provideMenuContentContext(() => subLevel.content.value)\n provide(ParentContentKey, {\n resetSearch: () => {\n resetSearch()\n parentContent?.resetSearch()\n },\n })\n onMounted(() => {\n subLevel.content.value = document.getElementById(subInternals.contentId)\n })\n onBeforeUnmount(() => {\n subLevel.content.value = null\n })\n\n const handlers = contentHandlers(internals.isUsingKeyboard)\n\n const onKeydown = (event: KeyboardEvent) => {\n const currentTarget = event.currentTarget as HTMLElement\n const isKeyDownInside = currentTarget.contains(event.target as Node)\n const isCloseKey = SUB_CLOSE_KEYS[internals.dir.value].includes(event.key)\n if (isKeyDownInside && isCloseKey) {\n subLevel.onOpenChange(false)\n // We focus manually because we prevented it in `onCloseAutoFocus`\n subInternals.trigger.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n handlers.onKeydown(event)\n }\n\n return () =>\n h(\n RekaDropdownMenuContent,\n {\n \"side\": internals.dir.value === \"rtl\" ? \"left\" : \"right\",\n \"align\": \"start\",\n \"sideOffset\": props.sideOffset,\n \"alignOffset\": props.alignOffset,\n \"avoidCollisions\": true,\n \"collisionPadding\": COLLISION_PADDING,\n \"reference\": subInternals.trigger.value ?? undefined,\n \"class\": s.MenuList,\n \"style\": {\n ...toCssVariables({\n \"menu-width\": props.width,\n \"menu-min-width\": props.minWidth,\n \"menu-max-height\": props.maxHeight,\n }),\n ...contentVariables,\n },\n \"onOpenAutoFocus\": (event: Event) => {\n // when opening a submenu, focus content for keyboard users only\n if (internals.isUsingKeyboard.current) subLevel.content.value?.focus()\n event.preventDefault()\n },\n // The menu might close because of focusing another menu item in the parent menu. We\n // don't want it to refocus the trigger in that case so we handle trigger focus ourselves.\n \"onCloseAutoFocus\": preventDefaultHandler,\n // Radix submenus close on focus outside (except to their trigger) and\n // never on an outside pointer-down\n \"onPointerDownOutside\": preventDefaultHandler,\n \"onFocusOutside\": (event: Event) => {\n // We prevent closing when the trigger is focused to avoid triggering a re-open animation\n // on pointer interaction.\n if (event.target !== subInternals.trigger.value) subLevel.onOpenChange(false)\n event.preventDefault()\n },\n \"onEscapeKeyDown\": preventDefaultHandler,\n ...handlers,\n onKeydown,\n // A blur inside a submenu reaches its parent menus in React's tree\n \"onFocusout\": () => {\n handlers.onFocusout()\n parentContent?.resetSearch()\n },\n },\n { default: () => slots.default?.() },\n )\n },\n})\n\n/** The submenu panel, positioned to the side of its trigger. */\nexport const MenuSubContent = defineComponent({\n name: \"MenuSubContent\",\n inheritAttrs: false,\n props: {\n /** The distance in pixels from the trigger. @default 4 */\n sideOffset: { type: Number, default: 4 },\n /** An offset in pixels along the trigger. @default -6 */\n alignOffset: { type: Number, default: -6 },\n /** Defines the `width` property of the content. @default \"auto\" */\n width: { type: sizeProp, default: \"auto\" },\n /** Defines the `min-width` property of the content. @default \"auto\" */\n minWidth: { type: sizeProp, default: \"auto\" },\n /** Defines the `max-height` property of the content, in pixels. */\n maxHeight: Number,\n },\n setup(props, { slots }) {\n const { open } = useSubmenuContext()\n\n return () =>\n h(\n RekaDropdownMenuPortal,\n null,\n {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n {\n default: () => [\n open.value\n ? h(MenuSubContentImpl, { key: \"submenu\", ...props }, { default: () => slots.default?.() })\n : createCommentVNode(),\n ],\n },\n ),\n ],\n },\n )\n },\n})\n\n// ---------------------------------------------------------------------------\n// Checkbox and radio items\n\n/** Radix's ItemIndicator: rendered while its item is checked. */\nconst MenuItemIndicator = defineComponent({\n name: \"MenuItemIndicator\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const indicator = inject(ItemIndicatorKey, { checked: () => false })\n\n return () => {\n const checked = indicator.checked()\n // Rendered here: Presence calls its slot during its setup too\n const children = slots.default?.()\n return h(\n Presence,\n { present: isIndeterminate(checked) || checked === true },\n {\n // withCtx marks it as a render slot so Vue does not warn about that call\n default: withCtx(() => [h(\"span\", { ...attrs, \"data-state\": getCheckedState(checked) }, children)]),\n },\n )\n }\n },\n})\n\n/** Single selection: `v-model:value` on the group, `MenuRadioItem` children. */\nexport const MenuRadioGroup = defineComponent({\n name: \"MenuRadioGroup\",\n props: {\n /** The selected value (`v-model:value`) */\n value: String,\n /**\n * The orientation of the indicator within the radio item.\n * @default end\n */\n indicatorPosition: { type: String as PropType<\"start\" | \"end\">, default: \"end\" },\n },\n emits: {\n \"update:value\": (_value: string) => true,\n /** Fired when selection changes */\n \"change\": (_value: string) => true,\n },\n setup(props, { slots, emit }) {\n provide(RadioGroupKey, {\n value: () => props.value,\n onValueChange: (value) => {\n emit(\"update:value\", value)\n emit(\"change\", value)\n },\n })\n\n return () =>\n h(\"div\", { \"role\": \"group\", \"data-indicator-position\": props.indicatorPosition }, slots.default?.())\n },\n})\n\n/** One option of a `MenuRadioGroup`. */\nexport const MenuRadioItem = defineComponent({\n name: \"MenuRadioItem\",\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n /** Disables the radio item */\n disabled: { type: Boolean, default: false },\n },\n emits: {\n /** The radio item was pressed; `event.preventDefault()` keeps the menu open */\n select: (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const group = inject(RadioGroupKey, { value: () => undefined, onValueChange: () => {} })\n const checked = () => props.value === group.value()\n provide(ItemIndicatorKey, { checked })\n\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(\n impl,\n () => props.disabled,\n () => (event: Event) => {\n emit(\"select\", event)\n group.onValueChange(props.value)\n },\n )\n\n return () => {\n const { listeners, rest } = splitListeners(attrs)\n const { class: className, ...restProps } = rest\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"role\": \"menuitemradio\",\n \"aria-checked\": checked(),\n \"class\": [s.MenuItem, s.RadioItem, className],\n ...restProps,\n \"data-state\": getCheckedState(checked()),\n \"ref\": impl.setElement,\n ...selectableItemListeners(impl, select, listeners),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n h(\"div\", { class: s.RadioIndicator }, [h(MenuItemIndicator, { class: s.RadioIndicatorActive })]),\n slots.default?.(),\n ]),\n ],\n )\n }\n },\n})\n\n/** A toggle item: bind `v-model:checked`. */\nexport const MenuCheckboxItem = defineComponent({\n name: \"MenuCheckboxItem\",\n inheritAttrs: false,\n props: {\n /** Checked state of the checkbox item (`v-model:checked`) */\n checked: { type: [Boolean, String] as PropType<CheckedState>, default: false },\n /** Disables the checkbox item */\n disabled: { type: Boolean, default: false },\n /**\n * The orientation of the indicator within the checkbox item.\n * @default end\n */\n indicatorPosition: { type: String as PropType<\"start\" | \"end\">, default: \"end\" },\n /**\n * Visual treatment for the checkbox indicator.\n * @default solid\n */\n indicatorVariant: { type: String as PropType<\"solid\" | \"ghost\">, default: \"solid\" },\n },\n emits: {\n \"update:checked\": (_checked: boolean) => true,\n /** Event handler called when the checked state changes */\n \"checkedChange\": (_checked: boolean) => true,\n /** The checkbox item was pressed; `event.preventDefault()` keeps the menu open */\n \"select\": (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n provide(ItemIndicatorKey, { checked: () => props.checked })\n\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(\n impl,\n () => props.disabled,\n () => (event: Event) => {\n emit(\"select\", event)\n const next = isIndeterminate(props.checked) ? true : !props.checked\n emit(\"update:checked\", next)\n emit(\"checkedChange\", next)\n },\n )\n\n return () => {\n const { listeners, rest } = splitListeners(attrs)\n const { class: className, ...restProps } = rest\n const { checked } = props\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"role\": \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"class\": [s.MenuItem, s.CheckboxItem, className],\n ...restProps,\n \"data-state\": getCheckedState(checked),\n \"data-indicator-position\": props.indicatorPosition,\n \"data-indicator-variant\": props.indicatorVariant,\n \"ref\": impl.setElement,\n ...selectableItemListeners(impl, select, listeners),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n h(\"div\", { class: s.CheckboxIndicator }, [\n h(MenuItemIndicator, null, {\n default: () =>\n props.indicatorVariant === \"ghost\"\n ? [h(Check, { class: \"size-4\" })]\n : [h(\"div\", { class: s.CheckboxCircle }, [h(Check, { class: \"size-4\" })])],\n }),\n ]),\n slots.default?.(),\n ]),\n ],\n )\n }\n },\n})\n\nexport type MenuProps = InstanceType<typeof Menu>[\"$props\"]\nexport type MenuContentProps = InstanceType<typeof MenuContent>[\"$props\"]\nexport type MenuItemProps = InstanceType<typeof MenuItem>[\"$props\"]\nexport type SubmenuProps = InstanceType<typeof MenuSub>[\"$props\"]\nexport type MenuRadioGroupProps = InstanceType<typeof MenuRadioGroup>[\"$props\"]\nexport type MenuRadioItemProps = InstanceType<typeof MenuRadioItem>[\"$props\"]\nexport type MenuCheckboxItemProps = InstanceType<typeof MenuCheckboxItem>[\"$props\"]\n"]}
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../../../src/components/Menu/Menu.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n cloneVNode,\n computed,\n createCommentVNode,\n defineComponent,\n h,\n inject,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n shallowRef,\n watch,\n withCtx,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type ShallowRef,\n} from \"vue\"\nimport {\n DropdownMenuContent as RekaDropdownMenuContent,\n DropdownMenuPortal as RekaDropdownMenuPortal,\n DropdownMenuRoot as RekaDropdownMenuRoot,\n Presence,\n injectDropdownMenuRootContext,\n useDirection,\n useId,\n} from \"reka-ui\"\nimport { useEscCloseStack } from \"../../composables/useEscCloseStack.js\"\nimport { firstElementChild } from \"../Tooltip/slot.js\"\nimport { preventDefaultHandler, toCssVariables } from \"../../lib/helpers.js\"\nimport { Button } from \"../Button/index.js\"\nimport { Check, ChevronRight } from \"../Icon/index.js\"\nimport { useLinkComponent } from \"../PlexUIProvider/internal.js\"\nimport { composeEventHandlers, mergeSlotProps } from \"../Tooltip/slot.js\"\nimport type { LinkComponent } from \"../PlexUIProvider/index.js\"\nimport { TransitionGroup } from \"../Transition/index.js\"\nimport {\n MenuLevelKey,\n MenuRootInternalsKey,\n MenuSubInternalsKey,\n SUB_CLOSE_KEYS,\n SUB_OPEN_KEYS,\n box,\n compose,\n getCheckedState,\n getOpenState,\n isIndeterminate,\n provideMenuContentContext,\n selectableItemListeners,\n splitListeners,\n trackKeyboardUse,\n useMenuItemImpl,\n useMenuItemSelect,\n useMenuLevel,\n useMenuRootInternals,\n useMenuSubInternals,\n whenMouse,\n type CheckedState,\n type GraceIntent,\n type ItemImplHandlers,\n type MenuLevel,\n type MenuSubInternals,\n} from \"./internal.js\"\nimport s from \"@plexui/styles/components/Menu/Menu.module.css\"\n\n// Vue port of packages/ui/src/components/Menu/Menu.tsx. Exports are flat\n// (`Menu`, `MenuTrigger`, `MenuContent`, ...) because runtime-compiled\n// templates cannot resolve `Menu.Trigger` from the `components` option.\n//\n// Reka UI provides the root state, positioning, the dismissable layer, the\n// focus scope and the portal. Where Reka's menu differs from Radix's, this\n// port follows Radix so the DOM and behaviour match React:\n// - The trigger opens on pointerdown (Reka: click) and runs after the child's\n// own handlers, skipped when one called preventDefault().\n// - Items, their roving focus (tabindex 0 on the current item,\n// data-orientation, data-highlighted on focus), typeahead, selection and\n// the submenu pointer grace area are Radix's (see ./internal.ts). Labels\n// get no generated id and groups no aria-labelledby.\n// - Tab is held in the menu whether or not it is modal; focus returns to the\n// trigger synchronously on close; Escape closes one level at a time\n// (Reka's submenu closes the whole menu).\n// - Submenus are a nested Reka root, so the submenu's Escape and outside\n// interactions follow Radix's submenu rules.\n// - Open changes are reported only when the state changes, like Radix's\n// controlled state.\n// - The content keeps the custom property names the shared CSS reads\n// (`--radix-dropdown-menu-content-*`), pointing at Reka's\n// `--reka-popper-*` values.\n\n// ---------------------------------------------------------------------------\n// Plex contexts (React's MenuContext and SubmenuContext)\n\ntype MenuContextValue = {\n open: ComputedRef<boolean>\n setOpen: (next: boolean) => void\n}\n\nconst MenuContextKey: InjectionKey<MenuContextValue> = Symbol(\"PlexUIMenu\")\n\nconst useMenuContext = () => {\n const context = inject(MenuContextKey, null)\n if (!context) throw new Error(\"Menu components must be wrapped in <Menu />\")\n return context\n}\n\ntype SubmenuContextValue = {\n open: ComputedRef<boolean>\n setOpen: (next: boolean) => void\n triggerRef: ShallowRef<HTMLElement | null>\n}\n\nconst SubmenuContextKey: InjectionKey<SubmenuContextValue> = Symbol(\"PlexUISubmenu\")\n\nconst useSubmenuContext = () => {\n const context = inject(SubmenuContextKey, null)\n if (!context) throw new Error(\"Submenu components must be wrapped in <Sub />\")\n return context\n}\n\n// React's blur events from a submenu bubble through the React tree to the\n// parent menus, which clear their typeahead buffer\ntype ParentContent = { resetSearch: () => void }\nconst ParentContentKey: InjectionKey<ParentContent> = Symbol(\"PlexUIMenuParentContent\")\n\ntype ItemIndicatorContextValue = { checked: () => CheckedState }\nconst ItemIndicatorKey: InjectionKey<ItemIndicatorContextValue> = Symbol(\"PlexUIMenuItemIndicator\")\n\ntype RadioGroupContextValue = { value: () => string | undefined; onValueChange: (value: string) => void }\nconst RadioGroupKey: InjectionKey<RadioGroupContextValue> = Symbol(\"PlexUIMenuRadioGroup\")\n\nconst resolveElement = (el: unknown): HTMLElement | null => {\n const node = el && typeof el === \"object\" && \"$el\" in el ? (el as { $el: unknown }).$el : el\n // A multi-root component's $el is the text node opening its fragment; the\n // element follows it (as in Reka)\n const element = node instanceof Text ? node.nextElementSibling : node\n return element instanceof HTMLElement ? element : null\n}\n\n// ---------------------------------------------------------------------------\n// Menu\n\n/** Dropdown menu root. Open state is internal; `forceOpen` overrides it. */\nexport const Menu = defineComponent({\n name: \"Menu\",\n // Like React, only the declared props are used\n inheritAttrs: false,\n props: {\n /** Force the menu to remain open or closed */\n forceOpen: { type: Boolean, default: undefined },\n /**\n * When set to `true`, interaction with outside elements will be disabled and only menu content will be visible to screen readers.\n * @default false\n */\n modal: { type: Boolean, default: false },\n },\n emits: {\n /** The menu opened */\n open: () => true,\n /** The menu closed */\n close: () => true,\n },\n setup(props, { slots, emit }) {\n const open = ref(false)\n const isOpen = computed(() => props.forceOpen ?? open.value)\n\n const handleOpenChange = (nextState: boolean) => {\n open.value = nextState\n if (nextState) emit(\"open\")\n else emit(\"close\")\n }\n\n useEscCloseStack(\n () => open.value,\n () => handleOpenChange(false),\n )\n\n provide(MenuContextKey, { open: isOpen, setOpen: handleOpenChange })\n\n // Radix's controlled root reports a change only when it differs from the\n // rendered state (two changes before the next render both report)\n let renderedOpen = isOpen.value\n const setOpen = (nextState: boolean) => {\n if (nextState !== renderedOpen) handleOpenChange(nextState)\n }\n\n const isUsingKeyboard = box(false)\n let stopTracking: (() => void) | undefined\n onMounted(() => {\n stopTracking = trackKeyboardUse(isUsingKeyboard)\n })\n onBeforeUnmount(() => stopTracking?.())\n\n const level: MenuLevel = { open: () => isOpen.value, onOpenChange: setOpen, content: shallowRef(null) }\n provide(MenuLevelKey, level)\n provide(MenuRootInternalsKey, {\n onClose: () => setOpen(false),\n isUsingKeyboard,\n dir: useDirection(),\n modal: () => props.modal,\n trigger: shallowRef(null),\n })\n\n return () => {\n renderedOpen = isOpen.value\n return h(\n RekaDropdownMenuRoot,\n { \"open\": renderedOpen, \"modal\": props.modal, \"onUpdate:open\": setOpen },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n// ---------------------------------------------------------------------------\n// Trigger\n\n/**\n * Renders its child as the menu's trigger (Radix's `asChild`). Other\n * attributes and listeners reach the child too, merged as Radix's Slot does.\n */\nexport const MenuTrigger = defineComponent({\n name: \"MenuTrigger\",\n inheritAttrs: false,\n props: {\n /** Prevents the menu from opening */\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const rootContext = injectDropdownMenuRootContext()\n const internals = useMenuRootInternals()\n const level = useMenuLevel()\n rootContext.triggerId ||= useId(undefined, \"reka-dropdown-menu-trigger\")\n // Set here so the trigger's aria-controls is ready when the content opens\n rootContext.contentId ||= useId(undefined, \"reka-dropdown-menu-content\")\n\n const setRef = (el: unknown) => {\n const element = resolveElement(el)\n internals.trigger.value = element\n // Reka leaves pointer-downs on its trigger to the trigger\n rootContext.triggerElement.value = element ?? undefined\n }\n\n // After the child's own handlers, skipped when one called preventDefault()\n const onPointerdown = (event: PointerEvent) => {\n if (event.defaultPrevented) return\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!props.disabled && event.button === 0 && event.ctrlKey === false) {\n const wasOpen = level.open()\n level.onOpenChange(!wasOpen)\n // prevent trigger focusing when opening\n // this allows the content to be given focus without competition\n if (!wasOpen) event.preventDefault()\n }\n }\n\n const onKeydown = (event: KeyboardEvent) => {\n if (event.defaultPrevented) return\n if (props.disabled) return\n if ([\"Enter\", \" \"].includes(event.key)) level.onOpenChange(!level.open())\n if (event.key === \"ArrowDown\") level.onOpenChange(true)\n // prevent keydown from scrolling window / first focused item to execute\n // that keydown (inadvertently closing the menu)\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault()\n }\n\n return () => {\n const open = level.open()\n // Looks through fragments, so a child forwarded with `<slot />` works too\n const child = firstElementChild(slots.default?.())\n if (!child) return null\n // Radix's trigger props, then the caller's (React's Menu.Trigger\n // forwards them), with its handlers after the caller's\n const { onPointerdown: callerPointerdown, onKeydown: callerKeydown, ...restAttrs } = attrs\n const triggerProps = {\n \"type\": \"button\",\n \"id\": rootContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n \"aria-controls\": open ? rootContext.contentId : undefined,\n \"data-state\": getOpenState(open),\n \"data-disabled\": props.disabled ? \"\" : undefined,\n \"disabled\": props.disabled,\n ...restAttrs,\n \"onPointerdown\": composeEventHandlers(callerPointerdown, onPointerdown),\n \"onKeydown\": composeEventHandlers(callerKeydown, onKeydown),\n }\n return cloneVNode(mergeSlotProps(child, triggerProps), { ref: setRef }, true)\n }\n },\n})\n\n// ---------------------------------------------------------------------------\n// Content\n\nconst COLLISION_PADDING = { bottom: 30, top: 30, left: 12, right: 12 }\nconst AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\"\n\n// Radix's names for the content custom properties (read by the shared CSS),\n// in place of Reka's\nconst contentVariables = {\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--reka-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--reka-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--reka-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--reka-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--reka-popper-anchor-height)\",\n \"--reka-dropdown-menu-content-transform-origin\": null,\n \"--reka-dropdown-menu-content-available-width\": null,\n \"--reka-dropdown-menu-content-available-height\": null,\n \"--reka-dropdown-menu-trigger-width\": null,\n \"--reka-dropdown-menu-trigger-height\": null,\n}\n\ntype InteractOutsideEvent = CustomEvent<{ originalEvent: PointerEvent | FocusEvent }>\ntype MenuSide = \"top\" | \"right\" | \"bottom\" | \"left\"\ntype MenuAlign = \"start\" | \"center\" | \"end\"\ntype SizeValue = number | \"auto\"\n\nconst sizeProp = [Number, String] as PropType<SizeValue>\n\n/** Content of the root menu, mounted while it is open (Radix's DropdownMenuContent). */\nconst MenuRootContentImpl = defineComponent({\n name: \"MenuRootContentImpl\",\n props: {\n side: String as PropType<MenuSide>,\n sideOffset: { type: Number, required: true },\n align: String as PropType<MenuAlign>,\n alignOffset: Number,\n width: sizeProp,\n minWidth: sizeProp,\n maxHeight: Number,\n layout: { type: String as PropType<\"vertical\" | \"horizontal\">, required: true },\n size: String as PropType<\"sm\" | \"md\" | \"lg\">,\n pill: Boolean,\n onCloseAutoFocus: { type: Function as PropType<(event: Event) => void>, required: true },\n },\n setup(props, { slots }) {\n const rootContext = injectDropdownMenuRootContext()\n const internals = useMenuRootInternals()\n const level = useMenuLevel()\n rootContext.contentId ||= useId(undefined, \"reka-dropdown-menu-content\")\n\n const { contentHandlers, resetSearch } = provideMenuContentContext(() => level.content.value)\n provide(ParentContentKey, { resetSearch })\n onMounted(() => {\n level.content.value = document.getElementById(rootContext.contentId)\n })\n onBeforeUnmount(() => {\n level.content.value = null\n })\n\n let hasInteractedOutside = false\n // Radix's focus scope announces the unmount a task later, on the detached\n // content; Reka's does it at once and refocuses a task later, so that is\n // cancelled and Radix's event dispatched instead\n const onCloseAutoFocus = (rekaEvent: Event) => {\n rekaEvent.preventDefault()\n const container = (rekaEvent.target as HTMLElement | null) ?? level.content.value\n setTimeout(() => {\n const event = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, { bubbles: false, cancelable: true })\n const handleCloseAutoFocus = (closeEvent: Event) => {\n props.onCloseAutoFocus(closeEvent)\n if (closeEvent.defaultPrevented) return\n if (!hasInteractedOutside) internals.trigger.value?.focus()\n hasInteractedOutside = false\n // Always prevent auto focus because we either focus manually or want user agent focus\n closeEvent.preventDefault()\n }\n if (!container) return handleCloseAutoFocus(event)\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, handleCloseAutoFocus)\n container.dispatchEvent(event)\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, handleCloseAutoFocus)\n }, 0)\n }\n const onInteractOutside = (event: InteractOutsideEvent) => {\n if (event.defaultPrevented) return\n const originalEvent = event.detail.originalEvent as PointerEvent\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick\n if (!internals.modal() || isRightClick) hasInteractedOutside = true\n // Reka keeps the menu open when the interaction is on its trigger;\n // Radix dismisses it like any other outside interaction\n const target = event.target as Node | null\n if (target && internals.trigger.value?.contains(target)) level.onOpenChange(false)\n }\n\n const handlers = contentHandlers(internals.isUsingKeyboard)\n\n return () => {\n const isHorizontal = props.layout === \"horizontal\"\n return h(\n RekaDropdownMenuContent,\n {\n \"side\": props.side,\n \"sideOffset\": props.sideOffset,\n \"align\": props.align,\n \"alignOffset\": props.alignOffset ?? (props.align === \"center\" ? 0 : -5),\n \"avoidCollisions\": true,\n \"collisionPadding\": COLLISION_PADDING,\n \"reference\": internals.trigger.value ?? undefined,\n \"class\": s.MenuList,\n \"data-pill\": props.pill ? \"\" : undefined,\n \"data-layout\": isHorizontal ? \"horizontal\" : undefined,\n \"data-size\": isHorizontal && props.size ? props.size : undefined,\n \"style\": {\n ...toCssVariables({\n \"menu-width\": props.width,\n \"menu-min-width\": isHorizontal ? \"auto\" : props.minWidth,\n \"menu-max-height\": props.maxHeight,\n }),\n ...contentVariables,\n },\n \"onEscapeKeyDown\": preventDefaultHandler,\n onCloseAutoFocus,\n onInteractOutside,\n ...handlers,\n },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n/** The menu panel. Positioned against the trigger and portalled to `<body>`. */\nexport const MenuContent = defineComponent({\n name: \"MenuContent\",\n inheritAttrs: false,\n props: {\n /**\n * The preferred side of the trigger to render against when open. Will be reversed when collisions occur.\n * @default bottom\n */\n side: String as PropType<MenuSide>,\n /**\n * The distance in pixels from the trigger.\n * @default 5\n */\n sideOffset: { type: Number, default: 5 },\n /**\n * The preferred alignment against the trigger. May change when collisions occur.\n * @default center\n */\n align: String as PropType<MenuAlign>,\n /** An offset in pixels from the \"start\" or \"end\" alignment options. */\n alignOffset: Number,\n /**\n * Defines the `width` property of the content\n * @default auto\n */\n width: sizeProp,\n /**\n * Defines the `min-width` property of the content, in pixels.\n * @default 300\n */\n minWidth: sizeProp,\n /** Defines the `max-height` property of the content, in pixels. */\n maxHeight: Number,\n /**\n * Layout direction of menu items. Use `\"horizontal\"` for icon-based toolbars (iOS-style).\n * @default \"vertical\"\n */\n layout: { type: String as PropType<\"vertical\" | \"horizontal\">, default: \"vertical\" },\n /**\n * Size of horizontal menu items. Controls icon size and padding. Only applies when `layout=\"horizontal\"`.\n * @default \"md\"\n */\n size: String as PropType<\"sm\" | \"md\" | \"lg\">,\n /**\n * Rounder list with fully rounded rows, for menus that sit beside pill controls.\n * @default false\n */\n pill: { type: Boolean, default: false },\n },\n emits: {\n /**\n * Focus is about to return to the trigger after the menu closes. Call\n * `event.preventDefault()` to keep the trigger from regaining focus (and\n * its focus-visible ring).\n */\n closeAutoFocus: (_event: Event) => true,\n },\n setup(props, { slots, emit }) {\n const { open } = useMenuContext()\n const onCloseAutoFocus = (event: Event) => emit(\"closeAutoFocus\", event)\n\n return () =>\n h(\n RekaDropdownMenuPortal,\n null,\n {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n {\n default: () => [\n open.value\n ? h(\n MenuRootContentImpl,\n { key: \"dropdown\", ...props, onCloseAutoFocus },\n { default: () => slots.default?.() },\n )\n : createCommentVNode(),\n ],\n },\n ),\n ],\n },\n )\n },\n})\n\n// ---------------------------------------------------------------------------\n// Items\n\n/** The focusable branch of `MenuItem`: a Radix menu item. */\nconst MenuItemInteractive = defineComponent({\n name: \"MenuItemInteractive\",\n props: {\n className: [String, Array, Object] as PropType<unknown>,\n disabled: Boolean,\n danger: Boolean,\n onSelect: Function as PropType<(event: Event) => void>,\n onItemClick: { type: Function as PropType<(event: MouseEvent) => void>, required: true },\n },\n setup(props, { slots }) {\n const { open } = useMenuContext()\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(impl, () => props.disabled, () => props.onSelect)\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we're always known to be closing\n if (!open.value) evt.preventDefault()\n }\n\n const listeners = selectableItemListeners(\n impl,\n select,\n { onClick: (event: MouseEvent) => props.onItemClick(event) },\n { onPointermove: handlePreventAfterClose, onPointerleave: handlePreventAfterClose },\n )\n\n return () =>\n h(\n \"div\",\n {\n ...impl.attrs(),\n \"class\": [s.MenuItem, props.className],\n \"data-danger\": props.danger ? \"\" : undefined,\n \"ref\": impl.setElement,\n ...listeners,\n },\n [h(\"div\", { class: s.PressableInner }, slots.default?.())],\n )\n },\n})\n\n/**\n * A menu item. Interactive (focusable, selectable) when it has a `@select` or\n * a `@click` handler; read-only content otherwise.\n */\nexport const MenuItem = defineComponent({\n name: \"MenuItem\",\n inheritAttrs: false,\n props: {\n /**\n * Second line under the item's label: what this action does, or which\n * value it carries. The label goes semibold on its own, the same way a\n * Select option with a description does. Also a `description` slot.\n */\n description: String,\n /** Disables the menu item */\n disabled: { type: Boolean, default: false },\n /** Marks a destructive action (delete, remove, leave): the item is drawn in the danger color */\n danger: { type: Boolean, default: false },\n /**\n * Called when the item is selected (`@select`). Without it or `@click`\n * the item is read-only content. Call `event.preventDefault()` to keep\n * the menu open.\n */\n onSelect: Function as PropType<(event: Event) => void>,\n /** Called when the item is clicked (`@click`); also makes the item interactive */\n onClick: Function as PropType<(event: MouseEvent) => void>,\n },\n setup(props, { slots, attrs }) {\n const onItemClick = (event: MouseEvent) => props.onClick?.(event)\n\n return () => {\n const description = slots.description ? slots.description() : props.description\n // A described item stacks its two lines; without a description the item\n // keeps the plain flex row that icons and ItemActions rely on.\n const content =\n description === undefined\n ? slots.default?.()\n : [\n h(\"div\", { class: s.ItemLeading }, [\n h(\"div\", null, slots.default?.()),\n h(\"div\", { class: s.ItemDescription }, description),\n ]),\n ]\n\n // Custom click handlers: either callback makes the item interactive\n if (props.onSelect || props.onClick) {\n return h(\n MenuItemInteractive,\n { className: attrs.class, disabled: props.disabled, danger: props.danger, onSelect: props.onSelect, onItemClick },\n { default: () => content },\n )\n }\n\n // Read-only content - will not appear interactive.\n return h(\"div\", { class: [s.MenuItemContent, attrs.class] }, content)\n }\n },\n})\n\n/** Hover actions at the end of an item. */\nexport const MenuItemActions = defineComponent({\n name: \"MenuItemActions\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { class: [s.ItemActions, attrs.class] }, slots.default?.())\n },\n})\n\n/** A small ghost button inside `MenuItemActions`. Closes the menu and emits `click`. */\nexport const MenuItemAction = defineComponent({\n name: \"MenuItemAction\",\n inheritAttrs: false,\n props: {\n /** Accessible name; the action is an icon-only button */\n ariaLabel: String,\n },\n emits: {\n click: (_event: MouseEvent) => true,\n },\n setup(props, { slots, emit }) {\n const { setOpen } = useMenuContext()\n\n return () =>\n h(\n Button,\n {\n class: \"rounded-sm\",\n color: \"secondary\",\n size: \"xs\",\n uniform: true,\n iconSize: \"sm\",\n variant: \"ghost\",\n \"aria-label\": props.ariaLabel,\n onClick: (evt: MouseEvent) => {\n evt.stopPropagation()\n setOpen(false)\n emit(\"click\", evt)\n },\n },\n { default: () => slots.default?.() },\n )\n },\n})\n\ntype RouteTarget = string | Record<string, unknown>\n\n// Drops undefined entries so a router link's own `href` is not overridden\nconst defined = (props: Record<string, unknown>) =>\n Object.fromEntries(Object.entries(props).filter(([, value]) => value !== undefined))\n\n/**\n * A menu item that navigates. Internal paths render the provider's link\n * component; absolute URLs open in a new tab.\n */\nexport const MenuLink = defineComponent({\n name: \"MenuLink\",\n inheritAttrs: false,\n props: {\n href: String,\n /** Router link destination (internal) */\n to: [String, Object] as PropType<RouteTarget>,\n /** Disables the menu item */\n disabled: { type: Boolean, default: false },\n /** Marks a destructive destination: the item is drawn in the danger color */\n danger: { type: Boolean, default: false },\n /**\n * Override the default component used for the link. This is useful for\n * using a routing library, or SSR rendering.\n * @default 'a'\n */\n as: [String, Object, Function] as PropType<LinkComponent>,\n },\n setup(props, { slots, attrs }) {\n const { open } = useMenuContext()\n const DefaultComponent = useLinkComponent()\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(impl, () => props.disabled, () => undefined)\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we're always known to be closing\n if (!open.value) evt.preventDefault()\n }\n\n return () => {\n const { href, to } = props\n const propPath = href || to\n // When a path is not provided, default to an anchor\n const isExternal = propPath ? /^https?:\\/\\//.test(propPath as string) : true\n const Component = props.as || (isExternal ? \"a\" : DefaultComponent.value)\n\n // The link's own attributes and listeners come first, as the slot\n // child's do in React\n const { listeners, rest } = splitListeners(attrs)\n // A disabled item is not selected; its link must not navigate either.\n // Canceled in the capture phase, before a router link's own handler\n // (vue-router's runs ahead of the listeners passed to it)\n if (props.disabled) listeners.onClickCapture = [listeners.onClickCapture ?? [], preventDefaultHandler].flat()\n const { class: className, ...restProps } = rest\n const linkProps = isExternal ? { target: \"_blank\", rel: \"noopener noreferrer\", href: href ?? to } : { href, to }\n\n const itemProps = defined({\n ...impl.attrs(),\n ...linkProps,\n ...restProps,\n \"class\": [s.MenuItem, className],\n \"data-danger\": props.danger ? \"\" : undefined,\n \"ref\": impl.setElement,\n ...selectableItemListeners(\n impl,\n select,\n listeners,\n isExternal ? {} : { onPointermove: handlePreventAfterClose, onPointerleave: handlePreventAfterClose },\n typeof Component !== \"string\",\n ),\n })\n const inner = () => [h(\"span\", { class: s.PressableInner }, slots.default?.())]\n\n return typeof Component === \"string\" ? h(Component, itemProps, inner()) : h(Component, itemProps, { default: inner })\n }\n },\n})\n\n/** A divider between items. */\nexport const MenuSeparator = defineComponent({\n name: \"MenuSeparator\",\n inheritAttrs: false,\n setup(_props, { attrs }) {\n return () => h(\"div\", { \"role\": \"separator\", \"aria-orientation\": \"horizontal\", \"class\": [s.Separator, attrs.class] })\n },\n})\n\n/** A non-interactive label for a group of items. */\nexport const MenuLabel = defineComponent({\n name: \"MenuLabel\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { class: [s.MenuLabel, attrs.class] }, slots.default?.())\n },\n})\n\n/** Groups related items. */\nexport const MenuGroup = defineComponent({\n name: \"MenuGroup\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n return () => h(\"div\", { role: \"group\", class: attrs.class }, slots.default?.())\n },\n})\n\n// ---------------------------------------------------------------------------\n// Submenus\n\n/** A nested menu: `MenuSubTrigger` plus `MenuSubContent`. */\nexport const MenuSub = defineComponent({\n name: \"MenuSub\",\n inheritAttrs: false,\n props: {\n /** Force the menu to remain open or closed */\n forceOpen: { type: Boolean, default: undefined },\n },\n emits: {\n /** The submenu opened */\n open: () => true,\n /** The submenu closed */\n close: () => true,\n },\n setup(props, { slots, emit }) {\n const parentLevel = useMenuLevel()\n const open = ref(false)\n const triggerRef = shallowRef<HTMLElement | null>(null)\n const isOpen = computed(() => props.forceOpen ?? open.value)\n\n const handleOpenChange = (nextState: boolean) => {\n open.value = nextState\n if (nextState) emit(\"open\")\n else emit(\"close\")\n }\n\n useEscCloseStack(\n () => open.value,\n () => {\n handleOpenChange(false)\n // Ensure trigger is focused\n triggerRef.value?.focus()\n },\n )\n\n provide(SubmenuContextKey, { open: isOpen, setOpen: handleOpenChange, triggerRef })\n\n // Radix's controlled submenu reports a change only when it differs from\n // the rendered state\n let renderedOpen = isOpen.value\n const setOpen = (nextState: boolean) => {\n if (nextState !== renderedOpen) handleOpenChange(nextState)\n }\n\n // Radix's MenuSub closes with its parent menu, and when it unmounts\n watch(\n () => parentLevel.open(),\n (parentOpen) => {\n if (parentOpen === false) setOpen(false)\n },\n { immediate: true },\n )\n onBeforeUnmount(() => setOpen(false))\n\n const subInternals: MenuSubInternals = {\n triggerId: useId(undefined, \"reka-menu-sub-trigger\"),\n contentId: useId(undefined, \"reka-menu-sub-content\"),\n trigger: shallowRef(null),\n }\n provide(MenuSubInternalsKey, subInternals)\n provide(MenuLevelKey, { open: () => isOpen.value, onOpenChange: setOpen, content: shallowRef(null) })\n\n return () => {\n renderedOpen = isOpen.value\n return h(\n RekaDropdownMenuRoot,\n { \"open\": renderedOpen, \"modal\": false, \"onUpdate:open\": setOpen },\n { default: () => slots.default?.() },\n )\n }\n },\n})\n\n/** The item that opens a submenu, on hover, click, Enter, Space or ArrowRight. */\nexport const MenuSubTrigger = defineComponent({\n name: \"MenuSubTrigger\",\n inheritAttrs: false,\n props: {\n /** Disables the trigger */\n disabled: { type: Boolean, default: false },\n },\n setup(props, { slots, attrs }) {\n const { open: menuOpen } = useMenuContext()\n const { triggerRef } = useSubmenuContext()\n const subLevel = useMenuLevel()\n const subInternals = useMenuSubInternals()\n const impl = useMenuItemImpl(() => props.disabled)\n const { contentContext, rootInternals } = impl\n\n let openTimer: number | null = null\n const clearOpenTimer = () => {\n if (openTimer) window.clearTimeout(openTimer)\n openTimer = null\n }\n onBeforeUnmount(() => {\n clearOpenTimer()\n window.clearTimeout(contentContext.pointerGraceTimer.current)\n contentContext.onPointerGraceIntentChange(null)\n })\n\n // This handler patches over focus races with core Radix primitives\n // https://github.com/radix-ui/primitives/blob/main/packages/react/menu/src/Menu.tsx#L712-L734\n const handlePreventAfterClose = (evt: PointerEvent) => {\n // Prevent default behavior when we know the outer menu is closing\n if (!menuOpen.value) evt.preventDefault()\n }\n\n const setRef = (el: unknown) => {\n impl.setElement(el)\n const element = resolveElement(el)\n subInternals.trigger.value = element\n triggerRef.value = element\n }\n\n const subTriggerHandlers: ItemImplHandlers = {\n onClick: (event) => {\n if (props.disabled || event.defaultPrevented) return\n /**\n * We manually focus because iOS Safari doesn't always focus on click (e.g. buttons)\n * and we rely heavily on `onFocusOutside` for submenus to close when switching\n * between separate submenus.\n */\n ;(event.currentTarget as HTMLElement).focus()\n if (!subLevel.open()) subLevel.onOpenChange(true)\n },\n onPointermove: compose(\n handlePreventAfterClose,\n whenMouse((event: PointerEvent) => {\n contentContext.onItemEnter(event)\n if (event.defaultPrevented) return\n if (!props.disabled && !subLevel.open() && !openTimer) {\n contentContext.onPointerGraceIntentChange(null)\n openTimer = window.setTimeout(() => {\n subLevel.onOpenChange(true)\n clearOpenTimer()\n }, 100)\n }\n }),\n ),\n onPointerleave: compose(\n handlePreventAfterClose,\n whenMouse((event: PointerEvent) => {\n clearOpenTimer()\n\n const content = subLevel.content.value\n const contentRect = content?.getBoundingClientRect()\n if (content && contentRect) {\n // TODO: make sure to update this when we change positioning logic\n const side = content.dataset.side as GraceIntent[\"side\"]\n const rightSide = side === \"right\"\n const bleed = rightSide ? -5 : 5\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"]\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"]\n\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom },\n ],\n side,\n })\n\n window.clearTimeout(contentContext.pointerGraceTimer.current)\n contentContext.pointerGraceTimer.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300,\n )\n } else {\n contentContext.onTriggerLeave(event)\n if (event.defaultPrevented) return\n\n // There's 100ms where the user may leave an item before the submenu was opened.\n contentContext.onPointerGraceIntentChange(null)\n }\n }),\n ),\n onKeydown: (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\"\n if (props.disabled || (isTypingAhead && event.key === \" \")) return\n if (SUB_OPEN_KEYS[rootInternals.dir.value].includes(event.key)) {\n subLevel.onOpenChange(true)\n // The trigger may hold focus if opened via pointer interaction\n // so we ensure content is given focus again when switching to keyboard.\n subLevel.content.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n },\n }\n\n return () => {\n const open = subLevel.open()\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"id\": subInternals.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": open,\n // Radix (radix-ui 1.8) points at the submenu only while it is open\n \"aria-controls\": open ? subInternals.contentId : undefined,\n \"data-state\": getOpenState(open),\n \"class\": [s.MenuItem, s.SubMenuItem, attrs.class],\n \"ref\": setRef,\n ...impl.handlers(subTriggerHandlers),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n slots.default?.(),\n h(ChevronRight, { width: \"16\", height: \"16\", class: s.SubTriggerIcon }),\n ]),\n ],\n )\n }\n },\n})\n\n/** Content of a submenu, mounted while it is open (Radix's DropdownMenuSubContent). */\nconst MenuSubContentImpl = defineComponent({\n name: \"MenuSubContentImpl\",\n props: {\n sideOffset: { type: Number, required: true },\n alignOffset: { type: Number, required: true },\n width: { type: sizeProp, required: true },\n minWidth: { type: sizeProp, required: true },\n maxHeight: Number,\n pill: Boolean,\n },\n setup(props, { slots }) {\n // The submenu's own Reka root: its content takes the submenu's ids\n const subRoot = injectDropdownMenuRootContext()\n const subInternals = useMenuSubInternals()\n const subLevel = useMenuLevel()\n const internals = useMenuRootInternals()\n const parentContent = inject(ParentContentKey, null)\n subRoot.triggerId = subInternals.triggerId\n subRoot.contentId = subInternals.contentId\n\n const { contentHandlers, resetSearch } = provideMenuContentContext(() => subLevel.content.value)\n provide(ParentContentKey, {\n resetSearch: () => {\n resetSearch()\n parentContent?.resetSearch()\n },\n })\n onMounted(() => {\n subLevel.content.value = document.getElementById(subInternals.contentId)\n })\n onBeforeUnmount(() => {\n subLevel.content.value = null\n })\n\n const handlers = contentHandlers(internals.isUsingKeyboard)\n\n const onKeydown = (event: KeyboardEvent) => {\n const currentTarget = event.currentTarget as HTMLElement\n const isKeyDownInside = currentTarget.contains(event.target as Node)\n const isCloseKey = SUB_CLOSE_KEYS[internals.dir.value].includes(event.key)\n if (isKeyDownInside && isCloseKey) {\n subLevel.onOpenChange(false)\n // We focus manually because we prevented it in `onCloseAutoFocus`\n subInternals.trigger.value?.focus()\n // prevent window from scrolling\n event.preventDefault()\n }\n handlers.onKeydown(event)\n }\n\n return () =>\n h(\n RekaDropdownMenuContent,\n {\n \"side\": internals.dir.value === \"rtl\" ? \"left\" : \"right\",\n \"align\": \"start\",\n \"sideOffset\": props.sideOffset,\n \"alignOffset\": props.alignOffset,\n \"avoidCollisions\": true,\n \"collisionPadding\": COLLISION_PADDING,\n \"reference\": subInternals.trigger.value ?? undefined,\n \"class\": s.MenuList,\n \"data-pill\": props.pill ? \"\" : undefined,\n \"style\": {\n ...toCssVariables({\n \"menu-width\": props.width,\n \"menu-min-width\": props.minWidth,\n \"menu-max-height\": props.maxHeight,\n }),\n ...contentVariables,\n },\n \"onOpenAutoFocus\": (event: Event) => {\n // when opening a submenu, focus content for keyboard users only\n if (internals.isUsingKeyboard.current) subLevel.content.value?.focus()\n event.preventDefault()\n },\n // The menu might close because of focusing another menu item in the parent menu. We\n // don't want it to refocus the trigger in that case so we handle trigger focus ourselves.\n \"onCloseAutoFocus\": preventDefaultHandler,\n // Radix submenus close on focus outside (except to their trigger) and\n // never on an outside pointer-down\n \"onPointerDownOutside\": preventDefaultHandler,\n \"onFocusOutside\": (event: Event) => {\n // We prevent closing when the trigger is focused to avoid triggering a re-open animation\n // on pointer interaction.\n if (event.target !== subInternals.trigger.value) subLevel.onOpenChange(false)\n event.preventDefault()\n },\n \"onEscapeKeyDown\": preventDefaultHandler,\n ...handlers,\n onKeydown,\n // A blur inside a submenu reaches its parent menus in React's tree\n \"onFocusout\": () => {\n handlers.onFocusout()\n parentContent?.resetSearch()\n },\n },\n { default: () => slots.default?.() },\n )\n },\n})\n\n/** The submenu panel, positioned to the side of its trigger. */\nexport const MenuSubContent = defineComponent({\n name: \"MenuSubContent\",\n inheritAttrs: false,\n props: {\n /** The distance in pixels from the trigger. @default 4 */\n sideOffset: { type: Number, default: 4 },\n /** An offset in pixels along the trigger. @default -6 */\n alignOffset: { type: Number, default: -6 },\n /** Defines the `width` property of the content. @default \"auto\" */\n width: { type: sizeProp, default: \"auto\" },\n /** Defines the `min-width` property of the content. @default \"auto\" */\n minWidth: { type: sizeProp, default: \"auto\" },\n /** Defines the `max-height` property of the content, in pixels. */\n maxHeight: Number,\n /**\n * Rounder list with fully rounded rows, for menus that sit beside pill controls.\n * @default false\n */\n pill: { type: Boolean, default: false },\n },\n setup(props, { slots }) {\n const { open } = useSubmenuContext()\n\n return () =>\n h(\n RekaDropdownMenuPortal,\n null,\n {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n {\n default: () => [\n open.value\n ? h(MenuSubContentImpl, { key: \"submenu\", ...props }, { default: () => slots.default?.() })\n : createCommentVNode(),\n ],\n },\n ),\n ],\n },\n )\n },\n})\n\n// ---------------------------------------------------------------------------\n// Checkbox and radio items\n\n/** Radix's ItemIndicator: rendered while its item is checked. */\nconst MenuItemIndicator = defineComponent({\n name: \"MenuItemIndicator\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const indicator = inject(ItemIndicatorKey, { checked: () => false })\n\n return () => {\n const checked = indicator.checked()\n // Rendered here: Presence calls its slot during its setup too\n const children = slots.default?.()\n return h(\n Presence,\n { present: isIndeterminate(checked) || checked === true },\n {\n // withCtx marks it as a render slot so Vue does not warn about that call\n default: withCtx(() => [h(\"span\", { ...attrs, \"data-state\": getCheckedState(checked) }, children)]),\n },\n )\n }\n },\n})\n\n/** Single selection: `v-model:value` on the group, `MenuRadioItem` children. */\nexport const MenuRadioGroup = defineComponent({\n name: \"MenuRadioGroup\",\n props: {\n /** The selected value (`v-model:value`) */\n value: String,\n /**\n * The orientation of the indicator within the radio item.\n * @default end\n */\n indicatorPosition: { type: String as PropType<\"start\" | \"end\">, default: \"end\" },\n },\n emits: {\n \"update:value\": (_value: string) => true,\n /** Fired when selection changes */\n \"change\": (_value: string) => true,\n },\n setup(props, { slots, emit }) {\n provide(RadioGroupKey, {\n value: () => props.value,\n onValueChange: (value) => {\n emit(\"update:value\", value)\n emit(\"change\", value)\n },\n })\n\n return () =>\n h(\"div\", { \"role\": \"group\", \"data-indicator-position\": props.indicatorPosition }, slots.default?.())\n },\n})\n\n/** One option of a `MenuRadioGroup`. */\nexport const MenuRadioItem = defineComponent({\n name: \"MenuRadioItem\",\n inheritAttrs: false,\n props: {\n value: { type: String, required: true },\n /** Disables the radio item */\n disabled: { type: Boolean, default: false },\n },\n emits: {\n /** The radio item was pressed; `event.preventDefault()` keeps the menu open */\n select: (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n const group = inject(RadioGroupKey, { value: () => undefined, onValueChange: () => {} })\n const checked = () => props.value === group.value()\n provide(ItemIndicatorKey, { checked })\n\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(\n impl,\n () => props.disabled,\n () => (event: Event) => {\n emit(\"select\", event)\n group.onValueChange(props.value)\n },\n )\n\n return () => {\n const { listeners, rest } = splitListeners(attrs)\n const { class: className, ...restProps } = rest\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"role\": \"menuitemradio\",\n \"aria-checked\": checked(),\n \"class\": [s.MenuItem, s.RadioItem, className],\n ...restProps,\n \"data-state\": getCheckedState(checked()),\n \"ref\": impl.setElement,\n ...selectableItemListeners(impl, select, listeners),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n h(\"div\", { class: s.RadioIndicator }, [h(MenuItemIndicator, { class: s.RadioIndicatorActive })]),\n slots.default?.(),\n ]),\n ],\n )\n }\n },\n})\n\n/** A toggle item: bind `v-model:checked`. */\nexport const MenuCheckboxItem = defineComponent({\n name: \"MenuCheckboxItem\",\n inheritAttrs: false,\n props: {\n /** Checked state of the checkbox item (`v-model:checked`) */\n checked: { type: [Boolean, String] as PropType<CheckedState>, default: false },\n /** Disables the checkbox item */\n disabled: { type: Boolean, default: false },\n /**\n * The orientation of the indicator within the checkbox item.\n * @default end\n */\n indicatorPosition: { type: String as PropType<\"start\" | \"end\">, default: \"end\" },\n /**\n * Visual treatment for the checkbox indicator.\n * @default solid\n */\n indicatorVariant: { type: String as PropType<\"solid\" | \"ghost\">, default: \"solid\" },\n },\n emits: {\n \"update:checked\": (_checked: boolean) => true,\n /** Event handler called when the checked state changes */\n \"checkedChange\": (_checked: boolean) => true,\n /** The checkbox item was pressed; `event.preventDefault()` keeps the menu open */\n \"select\": (_event: Event) => true,\n },\n setup(props, { slots, attrs, emit }) {\n provide(ItemIndicatorKey, { checked: () => props.checked })\n\n const impl = useMenuItemImpl(() => props.disabled)\n const select = useMenuItemSelect(\n impl,\n () => props.disabled,\n () => (event: Event) => {\n emit(\"select\", event)\n const next = isIndeterminate(props.checked) ? true : !props.checked\n emit(\"update:checked\", next)\n emit(\"checkedChange\", next)\n },\n )\n\n return () => {\n const { listeners, rest } = splitListeners(attrs)\n const { class: className, ...restProps } = rest\n const { checked } = props\n return h(\n \"div\",\n {\n ...impl.attrs(),\n \"role\": \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n \"class\": [s.MenuItem, s.CheckboxItem, className],\n ...restProps,\n \"data-state\": getCheckedState(checked),\n \"data-indicator-position\": props.indicatorPosition,\n \"data-indicator-variant\": props.indicatorVariant,\n \"ref\": impl.setElement,\n ...selectableItemListeners(impl, select, listeners),\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n h(\"div\", { class: s.CheckboxIndicator }, [\n h(MenuItemIndicator, null, {\n default: () =>\n props.indicatorVariant === \"ghost\"\n ? [h(Check, { class: \"size-4\" })]\n : [h(\"div\", { class: s.CheckboxCircle }, [h(Check, { class: \"size-4\" })])],\n }),\n ]),\n slots.default?.(),\n ]),\n ],\n )\n }\n },\n})\n\nexport type MenuProps = InstanceType<typeof Menu>[\"$props\"]\nexport type MenuContentProps = InstanceType<typeof MenuContent>[\"$props\"]\nexport type MenuItemProps = InstanceType<typeof MenuItem>[\"$props\"]\nexport type SubmenuProps = InstanceType<typeof MenuSub>[\"$props\"]\nexport type MenuRadioGroupProps = InstanceType<typeof MenuRadioGroup>[\"$props\"]\nexport type MenuRadioItemProps = InstanceType<typeof MenuRadioItem>[\"$props\"]\nexport type MenuCheckboxItemProps = InstanceType<typeof MenuCheckboxItem>[\"$props\"]\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/components/Select/Select.ts"],"names":[],"mappings":"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","sourcesContent":["import clsx from \"clsx\"\nimport {\n cloneVNode,\n computed,\n createCommentVNode,\n defineComponent,\n h,\n inject,\n markRaw,\n onBeforeUnmount,\n onBeforeUpdate,\n onMounted,\n provide,\n ref,\n shallowRef,\n toRaw,\n useId,\n watch,\n type Component,\n type ComponentPublicInstance,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type Ref,\n type ShallowRef,\n type Slots,\n type VNode,\n type VNodeChild,\n} from \"vue\"\nimport {\n PopoverAnchor as RekaPopoverAnchor,\n PopoverContent as RekaPopoverContent,\n PopoverPortal as RekaPopoverPortal,\n PopoverRoot as RekaPopoverRoot,\n injectPopoverRootContext,\n useId as useRekaId,\n} from \"reka-ui\"\nimport type { ControlSize } from \"@plexui/styles/types\"\nimport { useEscCloseStack } from \"../../composables/useEscCloseStack.js\"\nimport { preventDefaultHandler, toCssVariables, waitForAnimationFrame } from \"../../lib/helpers.js\"\nimport { Check, Info, Search } from \"../Icon/index.js\"\nimport { Input } from \"../Input/index.js\"\nimport { useDeferredPointerDownOutside } from \"../Popover/deferredPointerDownOutside.js\"\nimport { SelectControl, type DropdownIconType } from \"../SelectControl/index.js\"\nimport { Tooltip } from \"../Tooltip/index.js\"\nimport { withRadixVariableNames } from \"../Tooltip/Tooltip.js\"\nimport { composeEventHandlers, firstElementChild, mergeSlotProps } from \"../Tooltip/slot.js\"\nimport { TransitionGroup } from \"../Transition/index.js\"\nimport s from \"@plexui/styles/components/Select/Select.module.css\"\n\n// Vue port of packages/ui/src/components/Select/Select.tsx on Reka UI.\n//\n// API mapping:\n// - `value` + `update:value` (`v-model:value`): a string, or string[] with\n// `multiple`. `change` carries what React's `onChange` receives: the\n// selected option, or the selected options with `multiple`.\n// - Custom views are scoped slots, with React's component props kept as a\n// fallback: `#optionView=\"option\"` / `OptionView`, `#triggerView` /\n// `TriggerView` (receives the selected option, or `{ values, selectedAll }`\n// with `multiple`), `#trigger=\"{ open, onToggle }\"` / `trigger`, and\n// `#searchEmptyMessage` / `searchEmptyMessage`.\n// - An option's `description` and `tooltip.content` take a string, a VNode or\n// a render function (React: a ReactNode). Actions keep their `onSelect`\n// and `Icon` (a component) as in React.\n//\n// Reka keeps the popover state, positioning, the dismissable layer and the\n// focus scope. Where Reka's popover differs from Radix's, this port follows\n// Radix so the DOM and behaviour match React:\n// - The trigger is Radix's: its props are merged into the trigger (default\n// or custom) after the child's own handlers, the click toggle is skipped\n// when one called preventDefault(), it carries no `id` of Reka's and sets\n// `aria-controls` only while open (Radix 1.8.1).\n// - Open changes from Reka (dismiss, the trigger's click) are reported only\n// when the state changes, like Radix's controlled state.\n// - A primary pointer down outside dismisses on its click, as in Radix 1.8.1\n// (../Popover/deferredPointerDownOutside.ts).\n// - The content element is rendered here (Reka's `as`): Radix's custom\n// property names (`--radix-popover-*`), no `dir`, no `aria-labelledby`.\n// - React handles events of portalled content at <body>, so stopping one\n// there still runs <body>'s own listeners (the Escape stack). An action's\n// Escape key does the same here (see CustomSelectAction).\n\nexport type OptionContent = string | number | VNode | (() => VNodeChild)\n\nexport type Option<T extends string = string> = {\n value: T\n label: string\n /** Disable the option */\n disabled?: boolean\n /** Displayed as secondary text below the option `label` */\n description?: OptionContent\n tooltip?: {\n content: OptionContent\n maxWidth?: number\n }\n}\n\nexport type OptionGroup<T extends Option> = {\n label: string\n options: T[]\n optionsLimit?: {\n label: string\n limit: number\n }\n}\n\nexport type Options<T extends Option> = T[] | OptionGroup<T>[]\n\ntype CallbackWithActionId = (actionId: string) => void\ntype SearchPredicate<T extends Option> = (option: T, searchTerm: string) => boolean\n\nexport type SelectAction = {\n /** Unique ID to identify the action with */\n id: string\n /** Label display for the action */\n label: string\n /** Icon displayed to the left of the action */\n Icon?: Component\n /** Custom class applied to the action container */\n className?: string\n /** Callback invoked when the action is pressed */\n onSelect: CallbackWithActionId\n}\n\nexport type PopoverSide = \"top\" | \"bottom\"\nexport type PopoverAlign = \"start\" | \"center\" | \"end\"\nexport type CheckPosition = \"start\" | \"end\" | \"none\"\n\nexport type MultiSelectTriggerViewProps<T extends Option> = {\n values: T[]\n selectedAll: boolean\n}\n\nexport type SelectTriggerRenderProps = { open: boolean; onToggle: () => void }\n\ntype ListSize = number | \"auto\"\n\nconst selectProps = {\n /** Options or option groups. Should be a stable reference. */\n options: { type: Array as PropType<Options<Option>>, required: true as const },\n /** Selected value; an array of values with `multiple`. Bind `v-model:value`. */\n value: { type: [String, Array] as PropType<string | string[]>, required: true as const },\n /** Determines if the select should support multiple selection. @default false */\n multiple: { type: Boolean, default: false },\n /** Disables the select visually and from interactions. @default false */\n disabled: { type: Boolean, default: false },\n /** Id of the hidden input, so the select can be targeted with `for` */\n id: String,\n /** Marks the select as a required field when using native form submission */\n required: { type: Boolean, default: undefined },\n /** Creates the ability to query the value with `[name=\"${name}\"]` */\n name: String,\n /** Placeholder text for the select. @default \"Select...\" */\n placeholder: { type: String, default: \"Select...\" },\n /** Placeholder text while loading. @default \"Loading...\" */\n loadingPlaceholder: { type: String, default: \"Loading...\" },\n /** Displays loading indicator on top of button contents. @default false */\n loading: { type: Boolean, default: false },\n /** Style variant for the select trigger. @default \"outline\" */\n variant: { type: String as PropType<\"soft\" | \"outline\" | \"ghost\">, default: \"outline\" },\n /** Fully rounded pill shape for the trigger. @default false */\n pill: { type: Boolean, default: false },\n /** Size of the trigger: `3xs` 22px up to `3xl` 48px. @default \"md\" */\n size: { type: String as PropType<ControlSize>, default: \"md\" },\n /** Icon displayed in the far right of the select trigger. @default \"dropdown\" */\n dropdownIconType: { type: String as PropType<DropdownIconType>, default: \"dropdown\" },\n /** Actions to display below the options list. Memoized by length. */\n actions: Array as PropType<SelectAction[]>,\n /** Custom class applied to option containers */\n optionClassName: String,\n /** Component rendering each option (the `#optionView` slot takes precedence) */\n OptionView: [Object, Function] as PropType<Component>,\n /** Component rendering the trigger content (the `#triggerView` slot takes precedence) */\n TriggerView: [Object, Function] as PropType<Component>,\n /** Icon displayed at the start of the select trigger */\n TriggerStartIcon: [Object, Function] as PropType<Component>,\n /** Custom class applied to the select trigger */\n triggerClassName: String,\n /** Applies a negative margin using the current gutter to optically align the trigger. */\n opticallyAlign: String as PropType<\"start\" | \"end\">,\n /** Display a clear action that allows the select to be unset. @default false */\n clearable: { type: Boolean, default: false },\n /** Extends select to 100% of available width. @default true, except for the ghost variant */\n block: { type: Boolean, default: undefined },\n /** Preferred side of the trigger to render against when open. @default \"bottom\" */\n side: { type: String as PropType<PopoverSide>, default: \"bottom\" },\n /** Preferred alignment against the trigger. @default \"center\" when block, otherwise \"start\" */\n align: String as PropType<PopoverAlign>,\n /** Offset in pixels from the \"start\" or \"end\" alignment. @default 0 */\n alignOffset: Number,\n /** Collision detection of the menu. @default true */\n avoidCollisions: { type: Boolean, default: true },\n /** Width of the menu. @default \"auto\" */\n listWidth: [Number, String] as PropType<ListSize>,\n /** `min-width` of the menu, in pixels. @default the trigger width (300 when not block) */\n listMinWidth: [Number, String] as PropType<ListSize>,\n /** `max-width` of the menu, in pixels. @default \"auto\" */\n listMaxWidth: { type: [Number, String] as PropType<ListSize>, default: \"auto\" },\n /** Predicate used to filter searches */\n searchPredicate: Function as PropType<SearchPredicate<Option>>,\n /** Placeholder of the search input */\n searchPlaceholder: { type: String, default: \"\" },\n /** Accessible name of the search input, independent of the trigger label. @default \"Search options\" */\n searchAriaLabel: { type: String, default: \"Search options\" },\n /** Size of the search input in the menu, such as `2xl` for 44px touch targets on phones. @default \"md\" */\n searchSize: String as PropType<ControlSize>,\n /** Message displayed when search results are empty (or the `#searchEmptyMessage` slot) */\n searchEmptyMessage: { type: [String, Number, Object] as PropType<string | number | VNode>, default: \"No results found.\" },\n /** Position of the check indicator in the option list. @default \"start\" */\n checkPosition: { type: String as PropType<CheckPosition>, default: \"start\" },\n /** Renders a custom trigger (or the `#trigger` slot), wrapped as the popover trigger */\n trigger: Function as PropType<(props: SelectTriggerRenderProps) => VNodeChild>,\n \"ariaLabel\": String,\n \"ariaLabelledby\": String,\n \"ariaDescribedby\": String,\n \"ariaInvalid\": { type: [Boolean, String] as PropType<boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\">, default: undefined },\n}\n\ntype SelectPropsValue = {\n readonly [K in keyof typeof selectProps]: unknown\n} & {\n options: Options<Option>\n value: string | string[]\n multiple: boolean\n disabled: boolean\n id?: string\n required?: boolean\n name?: string\n placeholder: string\n loadingPlaceholder: string\n loading: boolean\n variant: \"soft\" | \"outline\" | \"ghost\"\n pill: boolean\n size: ControlSize\n dropdownIconType: DropdownIconType\n actions?: SelectAction[]\n optionClassName?: string\n OptionView?: Component\n TriggerView?: Component\n TriggerStartIcon?: Component\n triggerClassName?: string\n opticallyAlign?: \"start\" | \"end\"\n clearable: boolean\n block?: boolean\n side: PopoverSide\n align?: PopoverAlign\n alignOffset?: number\n avoidCollisions: boolean\n listWidth?: ListSize\n listMinWidth?: ListSize\n listMaxWidth: ListSize\n searchPredicate?: SearchPredicate<Option>\n searchPlaceholder: string\n searchAriaLabel: string\n searchSize?: ControlSize\n searchEmptyMessage: string | number | VNode\n checkPosition: CheckPosition\n trigger?: (props: SelectTriggerRenderProps) => VNodeChild\n ariaLabel?: string\n ariaLabelledby?: string\n ariaDescribedby?: string\n ariaInvalid?: boolean | string\n}\n\n// ============================================================\n// Contexts\n// ============================================================\n\ntype SelectContextValue = {\n props: SelectPropsValue\n slots: Slots\n /**\n * Bumped on every Select update. Slots are not reactive, so the parts that\n * render one read it to follow a slot that was added, removed or replaced.\n */\n slotsVersion: Ref<number>\n triggerId: string\n /** The default trigger's element (React looks it up by `triggerId`) */\n triggerEl: ShallowRef<HTMLElement | null>\n block: ComputedRef<boolean>\n align: ComputedRef<PopoverAlign>\n alignOffset: ComputedRef<number>\n listMinWidth: ComputedRef<ListSize | undefined>\n searchable: ComputedRef<boolean>\n actions: ShallowRef<SelectAction[]>\n onSelect: (option: Option, removeOption?: boolean) => void\n onActionSelect: CallbackWithActionId\n /** The latest predicate, read without tracking (React keeps it in a ref) */\n searchPredicate: () => SearchPredicate<Option>\n}\n\nconst SelectContextKey: InjectionKey<SelectContextValue> = Symbol(\"PlexUISelect\")\n\nconst useSelectContext = () => {\n const context = inject(SelectContextKey, null)\n\n if (!context) {\n throw new Error(\"Select components must be wrapped in <Select />\")\n }\n\n return context\n}\n\ntype CustomSelectContextValue = {\n open: Ref<boolean>\n handleOpenChange: (maybeNextState?: boolean) => void\n /** Radix's `onOpenChange` of the popover root: reports changes only */\n handleRootOpenChange: (nextState: boolean) => void\n selectContentRef: ShallowRef<HTMLElement | null>\n /** The trigger element, default or custom (React's ref on Popover.Trigger) */\n popoverTriggerEl: ShallowRef<HTMLElement | null>\n}\n\nconst CustomSelectContextKey: InjectionKey<CustomSelectContextValue> = Symbol(\"PlexUICustomSelect\")\n\n// Radix decides \"focus outside\" on the React tree, where a Select opened next\n// to another one is outside it: focus entering the second one's menu closes\n// the first. Reka decides on the DOM and counts a layer later in the document\n// as nested, so the first would stay open. Each Select records its logical\n// parent (the Select whose menu renders it) and its content element, and\n// closes when focus enters the content of a Select not nested in it.\ntype SelectLayer = {\n parent: SelectLayer | null\n content: ShallowRef<HTMLElement | null>\n}\n\nconst SelectLayerKey: InjectionKey<SelectLayer> = Symbol(\"PlexUISelectLayer\")\n\nconst mountedSelectLayers = new Set<SelectLayer>()\n\nconst isNestedIn = (layer: SelectLayer, ancestor: SelectLayer) => {\n for (let parent = layer.parent; parent; parent = parent.parent) {\n if (parent === ancestor) return true\n }\n return false\n}\n\ntype CustomSelectMenuContextValue = {\n openingValue: string\n listId: string\n requestClose: () => void\n listRef: ShallowRef<HTMLElement | null>\n // Highlighting\n highlightedValue: Ref<string>\n // Search\n searchTerm: Ref<string>\n searchInputRef: ShallowRef<HTMLInputElement | null>\n}\n\nconst CustomSelectMenuContextKey: InjectionKey<CustomSelectMenuContextValue> = Symbol(\"PlexUICustomSelectMenu\")\n\nconst useCustomSelectMenuContext = () => {\n const context = inject(CustomSelectMenuContextKey, null)\n\n if (!context) {\n throw new Error(\"CustomSelectMenu components must be wrapped in <CustomSelectMenu />\")\n }\n\n return context\n}\n\nconst renderContent = (content: unknown): VNodeChild =>\n typeof content === \"function\" ? (content as () => VNodeChild)() : (content as VNodeChild)\n\nconst defaultMultiTriggerView = ({ values, selectedAll }: MultiSelectTriggerViewProps<Option>) =>\n selectedAll\n ? \"All selected\"\n : values.length === 0\n ? // NOTE: Zero length is impossible - an empty option with `placeholder` is always returned\n \"Select...\"\n : values.length === 1\n ? values[0]!.label\n : `${values.length} selected`\n\n// ============================================================\n// Select\n// ============================================================\n\nconst SelectComponent = defineComponent({\n name: \"Select\",\n inheritAttrs: false,\n props: selectProps,\n // Untyped here: SelectProps (below) types the payloads by `multiple`, and\n // typed emits would also require each listener to take both shapes\n emits: [\"update:value\", \"change\"],\n setup(rawProps, { emit, slots }) {\n const props = rawProps as unknown as SelectPropsValue\n // Block default is dynamic, based on `variant`\n const block = computed(() => props.block ?? props.variant !== \"ghost\")\n // Align default is dynamic, based on `block`\n const align = computed<PopoverAlign>(() => props.align ?? (block.value ? \"center\" : \"start\"))\n // Flush with the trigger's edge, as the prop documents\n const alignOffset = computed(() => props.alignOffset ?? 0)\n // A menu is never narrower than the field it belongs to. Inline selects keep their 300px floor.\n const listMinWidth = computed(() => props.listMinWidth ?? (block.value ? undefined : 300))\n\n const change = (selection: Option | Option[]) => {\n emit(\"update:value\", Array.isArray(selection) ? selection.map((option) => option.value) : selection.value)\n emit(\"change\", selection)\n }\n\n const onSelect = (selectedOption: Option, removeOption?: boolean) => {\n const { multiple, options } = props\n const value = props.value as string[]\n\n if (multiple) {\n // When clearing values, the value is an empty string\n if (!selectedOption.value) {\n change([])\n return\n }\n\n if (removeOption) {\n const nextValues = value.filter((v) => v !== selectedOption.value)\n change(getOptionsByValues(options, nextValues))\n } else {\n change(getOptionsByValues(options, value).concat(selectedOption))\n }\n } else {\n change(selectedOption)\n }\n }\n\n // It should be exceedingly uncommon to change actions dynamically: like\n // React's memo, the rendered actions only follow a change of length.\n const actions = shallowRef<SelectAction[]>(props.actions ?? [])\n watch(\n () => (props.actions ?? []).length,\n () => {\n actions.value = props.actions ?? []\n },\n )\n // Action callbacks always come from the latest actions\n const onActionSelect = (actionId: string) => {\n ;(props.actions ?? []).find((a) => a.id === actionId)?.onSelect(actionId)\n }\n\n // Determine when custom selects should be used\n const optionsCount = computed(() => {\n const { options } = props\n return isOptionGroupArray(options)\n ? options.reduce((acc: number, group) => acc + group.options.length, 0)\n : options.length\n })\n\n // Locking down searchable count to a single value\n const searchable = computed(() => optionsCount.value > 15)\n\n const slotsVersion = ref(0)\n onBeforeUpdate(() => {\n slotsVersion.value++\n })\n\n provide(SelectContextKey, {\n props,\n slots,\n slotsVersion,\n triggerId: `select-trigger-${useId()}`,\n triggerEl: shallowRef(null),\n block,\n align,\n alignOffset,\n listMinWidth,\n searchable,\n actions,\n onSelect,\n onActionSelect,\n searchPredicate: () => (toRaw(rawProps) as SelectPropsValue).searchPredicate ?? defaultSearchPredicate,\n })\n\n return () => h(CustomSelect)\n },\n})\n\n// ============================================================\n// Trigger\n// ============================================================\n\nconst SelectTrigger = defineComponent({\n name: \"SelectTrigger\",\n inheritAttrs: false,\n props: {\n onOpenChange: Function as PropType<(maybeNextState?: boolean) => void>,\n },\n setup(ownProps, { attrs }) {\n const { props, slots, slotsVersion, triggerId, triggerEl, block, onSelect } = useSelectContext()\n const typeahead = createTypeahead()\n\n const setTriggerEl = (instance: unknown) => {\n triggerEl.value = ((instance as ComponentPublicInstance | null)?.$el as HTMLElement | undefined) ?? null\n }\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n const { multiple, value, options } = props\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n\n // If not a command, check for typeahead\n // NOTE: Typeahead not supported in multi-select\n if (!multiple && isTypeaheadKey(evt)) {\n const currentTypeaheadValue = typeahead(key)\n // Stop other listeners from reacting\n evt.stopPropagation()\n\n // Attempt to filter options based on the value\n // NOTE: We don't look at current highlighted value as a means to start the search\n const firstMatchingOption = getTypeaheadOption(options, currentTypeaheadValue, firstValue)\n\n if (firstMatchingOption) {\n onSelect(firstMatchingOption)\n }\n }\n }\n\n const handleClearClick = () => {\n onSelect({ value: \"\", label: \"\" })\n // Ensure open state is closed\n ownProps.onOpenChange?.(false)\n }\n\n return () => {\n void slotsVersion.value\n const { multiple, options, loading } = props\n const value = props.value\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n const placeholderValue = loading ? props.loadingPlaceholder : props.placeholder\n const hasSelectedValue = multiple ? (value as string[]).length > 0 : !!value\n const isPlaceholder = loading || !hasSelectedValue\n\n const renderTriggerView = () => {\n let viewProps: Option | MultiSelectTriggerViewProps<Option>\n\n if (multiple) {\n const currentSelectedOptions = getOptionsByValues(options, value as string[])\n const flatOptions = options.flatMap((o) => (\"options\" in o ? o.options : o))\n viewProps = {\n values: currentSelectedOptions.length ? currentSelectedOptions : [{ value: \"\", label: placeholderValue }],\n selectedAll: flatOptions.length <= (value as string[]).length,\n }\n } else {\n viewProps = getOptionByValue(options, firstValue as string) || { value: \"\", label: placeholderValue }\n }\n\n if (slots.triggerView) return slots.triggerView(viewProps)\n if (props.TriggerView) return h(props.TriggerView, viewProps)\n return multiple\n ? defaultMultiTriggerView(viewProps as MultiSelectTriggerViewProps<Option>)\n : (viewProps as Option).label\n }\n\n return h(\n SelectControl as Component,\n {\n \"ref\": setTriggerEl,\n \"id\": triggerId,\n \"aria-label\": props.ariaLabel,\n \"aria-labelledby\": props.ariaLabelledby ? `${props.ariaLabelledby} ${triggerId}-value` : undefined,\n \"aria-describedby\": props.ariaDescribedby,\n \"aria-invalid\": props.ariaInvalid,\n \"class\": props.triggerClassName,\n \"selected\": !isPlaceholder,\n \"variant\": props.variant,\n \"pill\": props.pill,\n \"block\": block.value,\n \"size\": props.size,\n \"disabled\": props.disabled,\n \"loading\": loading,\n \"StartIcon\": props.TriggerStartIcon,\n \"opticallyAlign\": props.opticallyAlign,\n \"dropdownIconType\": props.dropdownIconType,\n \"onClearClick\": props.clearable ? handleClearClick : undefined,\n \"onInteract\": ownProps.onOpenChange,\n \"onKeydown\": handleKeyDown,\n // pass along props from the popover trigger\n ...attrs,\n },\n {\n default: () => [\n props.ariaLabelledby ? h(\"span\", { id: `${triggerId}-value` }, [renderTriggerView()]) : renderTriggerView(),\n props.name || props.id\n ? // One input per selected value, so a form submits every value of a\n // multi-select; an empty one keeps `id` and `required` working\n (multiple && (value as string[]).length ? (value as string[]) : [firstValue ?? \"\"]).map((formValue, index) =>\n h(\"input\", {\n \"key\": index,\n \"id\": index === 0 ? props.id : undefined,\n \"name\": props.name,\n \"value\": formValue,\n // A disabled select is neither validated nor submitted\n \"disabled\": props.disabled,\n \"tabindex\": -1,\n \"onFocus\": () => {\n triggerEl.value?.focus()\n },\n // don't make this readOnly because that prevents the value from being required\n \"required\": props.required,\n \"class\": s.FormInput,\n \"aria-hidden\": \"true\",\n }),\n )\n : null,\n ],\n },\n )\n }\n },\n})\n\n/**\n * Radix's `Popover.Trigger asChild`: Radix's trigger props merged into the\n * child (the default trigger or a custom one), its click toggle after the\n * child's own handlers.\n */\nconst SelectPopoverTrigger = defineComponent({\n name: \"SelectPopoverTrigger\",\n setup(_props, { slots }) {\n const rootContext = injectPopoverRootContext()\n rootContext.contentId ||= useRekaId(undefined, \"reka-popover-content\")\n const { popoverTriggerEl } = inject(CustomSelectContextKey)!\n\n // React's ref on Popover.Trigger: the element the child gives its ref\n // (FloatingLabelSelect's field). Focus returns here on close, the content\n // anchors to it, and pointer-downs on it are not \"outside\".\n const setTriggerRef = (instance: unknown) => {\n popoverTriggerEl.value = resolveElement(instance)\n rootContext.triggerElement.value = popoverTriggerEl.value ?? undefined\n }\n\n const onClick = composeEventHandlers(undefined, () => rootContext.onOpenToggle())\n\n return () => {\n const child = firstElementChild(slots.default?.())\n if (!child) return null\n\n const isOpen = rootContext.open.value\n return h(RekaPopoverAnchor, { asChild: true, reference: popoverTriggerEl.value ?? undefined }, {\n default: () =>\n cloneVNode(\n mergeSlotProps(child, {\n \"type\": \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? rootContext.contentId : undefined,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n onClick,\n }),\n { ref: setTriggerRef },\n // Keep the child's own ref\n true,\n ),\n })\n }\n },\n})\n\n// ============================================================\n// Custom Select\n// ============================================================\n\nconst CustomSelect = defineComponent({\n name: \"CustomSelect\",\n setup() {\n const { props, slots, slotsVersion, triggerEl } = useSelectContext()\n const open = ref(false)\n const selectContentRef = shallowRef<HTMLElement | null>(null)\n const popoverTriggerEl = shallowRef<HTMLElement | null>(null)\n // Not before mount: server rendering and hydration render no teleport,\n // as Radix's Portal renders nothing before mount\n const mounted = ref(false)\n\n const handleOpenChange = (maybeNextState?: boolean) => {\n // Toggle the current state when called without a specific state\n const nextState = maybeNextState === undefined ? !open.value : maybeNextState\n open.value = nextState\n\n // When we're closing, manage focus back to trigger manually\n if (!nextState) {\n // Read this now: with animations disabled the menu unmounts before the\n // timeout below runs, so selectContentRef is already null by then\n const focusWasInMenu = !!selectContentRef.value?.contains(document.activeElement)\n\n // Wait until the next tick to determine if another element has become focused\n setTimeout(() => {\n const activeElement = document.activeElement\n const menu = selectContentRef.value\n const focusInMenu = !!menu && !!activeElement && menu.contains(activeElement)\n // Focus dropped with the closing menu lands on <body>: it was lost, not moved\n const focusLost = !activeElement || activeElement === document.body\n\n // Focus that moved to another element outside the menu stays there\n if (focusInMenu || (focusWasInMenu && focusLost)) {\n popoverTriggerEl.value?.focus()\n }\n })\n }\n }\n\n useEscCloseStack(open, () => {\n handleOpenChange(false)\n })\n\n const handleRootOpenChange = (nextState: boolean) => {\n // Radix's controlled state reports changes only\n if (nextState === open.value) return\n\n // Prevent opening while loading\n if (props.loading && nextState) {\n return\n }\n\n handleOpenChange(nextState)\n }\n\n provide(CustomSelectContextKey, {\n open,\n handleOpenChange,\n handleRootOpenChange,\n selectContentRef,\n popoverTriggerEl,\n })\n\n const layer: SelectLayer = { parent: inject(SelectLayerKey, null), content: selectContentRef }\n provide(SelectLayerKey, layer)\n\n // Focus entering another Select's menu is outside this one, unless that\n // Select is nested in this one's menu (see SelectLayer)\n const handleFocusIn = (evt: FocusEvent) => {\n const target = evt.target as Node | null\n if (!open.value || !target) return\n for (const other of mountedSelectLayers) {\n if (other !== layer && other.content.value?.contains(target) && !isNestedIn(other, layer)) {\n handleRootOpenChange(false)\n return\n }\n }\n }\n\n let listenerDocument: Document | null = null\n onMounted(() => {\n mounted.value = true\n mountedSelectLayers.add(layer)\n listenerDocument = triggerEl.value?.ownerDocument ?? document\n listenerDocument.addEventListener(\"focusin\", handleFocusIn)\n })\n onBeforeUnmount(() => {\n mountedSelectLayers.delete(layer)\n listenerDocument?.removeEventListener(\"focusin\", handleFocusIn)\n listenerDocument = null\n })\n\n const renderTrigger = () => {\n const renderProps: SelectTriggerRenderProps = {\n open: open.value,\n onToggle: () => {\n open.value = !open.value\n },\n }\n if (slots.trigger) return slots.trigger(renderProps)\n if (props.trigger) return props.trigger(renderProps)\n return h(SelectTrigger, { onOpenChange: handleOpenChange })\n }\n\n return () => {\n void slotsVersion.value\n return h(\n RekaPopoverRoot,\n { \"open\": open.value, \"onUpdate:open\": handleRootOpenChange, \"modal\": false },\n {\n default: () => [\n h(SelectPopoverTrigger, null, { default: renderTrigger }),\n // React replaces the menu's wrapper when it opens or closes (see\n // TransitionGroup), so React DOM appends the new one to <body>.\n // A Teleport keeps its place in <body>: a new one per state moves\n // the wrapper to the end the same way.\n h(RekaPopoverPortal, { key: open.value ? \"open\" : \"closed\", forceMount: mounted.value }, {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n { default: () => [open.value ? h(SelectPopoverContent, { key: \"dropdown\" }) : createCommentVNode()] },\n ),\n ],\n }),\n ],\n },\n )\n }\n },\n})\n\n// The element Reka's content renders (`as`). Raw: Reka passes `as` through\n// reactive props, and Vue warns about a component made reactive.\nconst SelectContentElement = markRaw(\n defineComponent({\n name: \"SelectContentElement\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const { selectContentRef } = inject(CustomSelectContextKey)!\n const setContentRef = (el: unknown) => {\n selectContentRef.value = (el as HTMLElement | null) ?? null\n }\n\n return () => {\n const { \"dir\": _dir, \"aria-labelledby\": _labelledBy, style, ...rest } = attrs\n return h(\"div\", { ...rest, style: withRadixVariableNames(style, \"popover\"), ref: setContentRef }, slots.default?.())\n }\n },\n }),\n)\n\nconst SelectPopoverContent = defineComponent({\n name: \"SelectPopoverContent\",\n setup() {\n const { props, align, alignOffset, listMinWidth } = useSelectContext()\n const { handleRootOpenChange, popoverTriggerEl } = inject(CustomSelectContextKey)!\n // Radix (1.8.1) dismisses on the click that follows a primary pointer down outside\n const { onPointerDownOutside, onFocusOutside } = useDeferredPointerDownOutside((originalEvent) => {\n // The trigger is not outside: Radix's non-modal content keeps the popover open\n if (popoverTriggerEl.value?.contains(originalEvent.target as Node | null)) return\n handleRootOpenChange(false)\n })\n\n return () =>\n h(\n RekaPopoverContent,\n {\n as: SelectContentElement,\n class: s.MenuList,\n side: props.side,\n sideOffset: 5,\n align: align.value,\n alignOffset: alignOffset.value,\n avoidCollisions: props.avoidCollisions,\n collisionPadding: { bottom: 30, top: 30 },\n // Prevent Reka's auto focus so we can handle our own from within <CustomSelectMenu />\n onOpenAutoFocus: preventDefaultHandler,\n onCloseAutoFocus: preventDefaultHandler,\n onEscapeKeyDown: preventDefaultHandler,\n onPointerDownOutside,\n onFocusOutside,\n style: toCssVariables({\n \"select-list-width\": props.listWidth,\n \"select-list-min-width\": listMinWidth.value,\n \"select-list-max-width\": props.listMaxWidth,\n }),\n },\n { default: () => h(CustomSelectMenu) },\n )\n },\n})\n\n/**\n * Focuses an element that mounted in this tick. Vue skips a listener for an\n * event stamped (`_vts`) no later than the moment the listener was attached\n * (a time cached for the tick), so a focus fired within the millisecond the\n * menu mounted would not reach the search Input's own focus listener once\n * Reka's capture listener has stamped it: its `data-focused` would stay\n * \"false\", while React's onFocus always runs. The focus events are stamped\n * one millisecond later for the listeners on their way.\n *\n * `_vts` is a private field of Vue's runtime-dom event invoker. Deferring the\n * focus instead was tried and breaks parity, because React focuses\n * synchronously in its mount effect: in the next animation frame, keys and\n * Escape pressed right after opening reach the trigger, not the menu; in a\n * 1ms timeout (a 0ms one fires within the same millisecond and is skipped\n * too), a menu opened and closed quickly takes focus after closing. Should\n * Vue drop the field, the stamp is ignored and only the search input's\n * `data-focused` is affected.\n */\nconst focusMounted = (element: HTMLElement) => {\n const view = element.ownerDocument.defaultView\n const stamp = (event: Event) => {\n const vueEvent = event as Event & { _vts?: number }\n if (event.target === element && !vueEvent._vts) vueEvent._vts = Date.now() + 1\n }\n\n view?.addEventListener(\"focus\", stamp, { capture: true })\n view?.addEventListener(\"focusin\", stamp, { capture: true })\n try {\n element.focus({ preventScroll: true })\n } finally {\n view?.removeEventListener(\"focus\", stamp, { capture: true })\n view?.removeEventListener(\"focusin\", stamp, { capture: true })\n }\n}\n\nconst CustomSelectMenu = defineComponent({\n name: \"CustomSelectMenu\",\n setup() {\n const { props, searchable, searchPredicate } = useSelectContext()\n const { handleOpenChange } = inject(CustomSelectContextKey)!\n const menuRef = shallowRef<HTMLElement | null>(null)\n const listRef = shallowRef<HTMLElement | null>(null)\n const searchInputRef = shallowRef<HTMLInputElement | null>(null)\n const searchTerm = ref(\"\")\n const multiple = props.multiple\n const value = props.value\n const highlightedValue = ref<string>(\n ((multiple ? (value as string[])[0] : (value as string)) || getFirstValidOption(props.options)?.value) ?? \"\",\n )\n const typeahead = createTypeahead()\n const listId = `select-list-${useId()}`\n\n // Lock `value` for a given open to prevent janky change during close animation\n // MultiSelect reads its live selection instead of this per-open snapshot.\n const openingValue = multiple ? \"\" : (value as string)\n\n // Trim and lowercase search value\n const literalSearchTerm = computed(() => searchTerm.value.trim().toLocaleLowerCase())\n const filteredOptions = computed(() => filterOptions(props.options, literalSearchTerm.value, searchPredicate()))\n const firstOption = computed(() => getFirstValidOption(filteredOptions.value))\n\n const requestClose = () => handleOpenChange(false)\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n const multiple = props.multiple\n const value = props.value\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n const currentHighlightedValue = highlightedValue.value\n const targetValue = currentHighlightedValue || firstOption.value?.value || firstValue\n const isFocusedInSearch = document.activeElement === searchInputRef.value\n\n const menuElement = menuRef.value\n\n // Should be generally impossible for the menu element to not exist\n if (!menuElement) {\n return\n }\n\n const triggerHighlightedOption = () => {\n const pointerUpEvent = new PointerEvent(\"pointerup\", {\n bubbles: true,\n cancelable: true,\n pointerType: \"mouse\",\n })\n\n // Find the current highlighted option\n const selectedOption = findOptionByValue(currentHighlightedValue, menuElement)\n selectedOption?.dispatchEvent(pointerUpEvent)\n }\n\n const highlightOption = (val: string, element: Element) => {\n highlightedValue.value = val\n element.scrollIntoView({ block: \"nearest\" })\n }\n\n const highlightSelectedOrFirstOption = () => {\n // Attempt to move highlight to selected item\n const maybeFirstValue = multiple ? (value as string[])[0] : (value as string)\n\n if (maybeFirstValue) {\n const selectedElement = findOptionByValue(maybeFirstValue, menuElement)\n\n if (selectedElement) {\n highlightOption(maybeFirstValue, selectedElement)\n return\n }\n }\n\n // If value isn't set, or the selected node wasn't found in the DOM,\n // attempt to move focus to the first valid option.\n const firstValidOption = getFirstValidOption(props.options)\n\n if (firstValidOption) {\n const firstValidOptionElement = findOptionByValue(firstValidOption.value, menuElement)\n if (firstValidOptionElement) {\n highlightOption(firstValidOption.value, firstValidOptionElement)\n }\n }\n }\n\n // Commands\n switch (key) {\n case \"ArrowDown\": {\n evt.preventDefault()\n\n // If there's no highlighted value, or the highlighted value is not in the DOM\n if (!currentHighlightedValue || !findOptionByValue(currentHighlightedValue, menuElement)) {\n highlightSelectedOrFirstOption()\n return\n }\n\n // Otherwise, move to the next option\n const nextElement = findNextOption(currentHighlightedValue, menuElement)\n const nextValue = nextElement?.getAttribute(\"data-option-id\")\n if (nextElement && nextValue) {\n highlightOption(nextValue, nextElement)\n }\n\n return\n }\n case \"ArrowUp\": {\n evt.preventDefault()\n\n // If there's no highlighted value, or the highlighted value is not in the DOM\n if (!currentHighlightedValue || !findOptionByValue(currentHighlightedValue, menuElement)) {\n highlightSelectedOrFirstOption()\n return\n }\n\n const previousElement = findPreviousOption(targetValue as string, menuElement)\n const previousValue = previousElement?.getAttribute(\"data-option-id\")\n if (previousElement && previousValue) {\n highlightOption(previousValue, previousElement)\n }\n\n return\n }\n case \"Enter\":\n // Prevent default enter behavior from the search input, if present\n evt.preventDefault()\n\n // Send a pointerup event into the currently highlighted option\n triggerHighlightedOption()\n\n return\n case \" \":\n // Allow spaces in search, and don't treat as enter\n // if there is a valid literalSearchTerm.\n if (literalSearchTerm.value && isFocusedInSearch) {\n return\n }\n\n // Prevent space from entering search input\n evt.preventDefault()\n\n // Send a pointerup event into the currently highlighted option\n triggerHighlightedOption()\n\n return\n default:\n break\n }\n\n // If not a command, check for typeahead\n if (isTypeaheadKey(evt)) {\n // Skip typeahead logic when we're focused in the search input\n if (isFocusedInSearch) {\n return\n }\n\n // Extend the current typeahead and get the latest value\n const currentTypeaheadValue = typeahead(key)\n\n // Stop other listeners from reacting\n evt.stopPropagation()\n\n // Attempt to filter options based on the value, starting at the highlighted value\n const firstMatchingOption = getTypeaheadOption(props.options, currentTypeaheadValue, currentHighlightedValue)\n\n if (firstMatchingOption) {\n const matchedNode = findOptionByValue(firstMatchingOption.value, menuElement)\n\n // Only change the highlight if we found the actual node\n if (matchedNode) {\n highlightedValue.value = firstMatchingOption.value\n // Ensure the newly highlighted option is scrolled into view\n matchedNode.scrollIntoView({ block: \"nearest\" })\n }\n }\n }\n }\n\n provide(CustomSelectMenuContextKey, {\n openingValue,\n listId,\n requestClose,\n listRef,\n highlightedValue,\n searchTerm,\n searchInputRef,\n })\n\n // The focused element (the search input, or the list without one) points\n // assistive tech at the highlighted option, when that option is rendered\n const syncActiveDescendant = () => {\n const target = searchInputRef.value || listRef.value\n if (!target || !menuRef.value) {\n return\n }\n\n const highlightedOption = highlightedValue.value ? findOptionByValue(highlightedValue.value, menuRef.value) : null\n if (highlightedOption?.id) {\n target.setAttribute(\"aria-activedescendant\", highlightedOption.id)\n } else {\n target.removeAttribute(\"aria-activedescendant\")\n }\n }\n watch([highlightedValue, filteredOptions], syncActiveDescendant, { flush: \"post\" })\n\n // On mount behavior\n onMounted(() => {\n syncActiveDescendant()\n\n // Like React's mount effect, the scroll target is the highlight at mount\n const initialHighlightedValue = highlightedValue.value\n\n // Ensure initial highlighted option is in view\n // NOTE: Allowing for a render frame ensures content is positioned correctly before scrolling it into view.\n waitForAnimationFrame(() => {\n if (!menuRef.value) {\n return\n }\n\n // Ensure the highlighted option is in view\n const currentOption = findOptionByValue(initialHighlightedValue, menuRef.value)\n // Scroll the selected item into view, and its bottom edge.\n currentOption?.scrollIntoView({ block: \"center\" })\n })\n\n // Send initial focus to the search input, or the list without one (the\n // menu container when there are no options), to capture key events\n const autoFocusTarget = searchInputRef.value || listRef.value || menuRef.value\n if (autoFocusTarget) focusMounted(autoFocusTarget)\n })\n\n // On search behavior (React's layout effect on `filteredOptions`, skipped on mount)\n watch(\n filteredOptions,\n (nextFilteredOptions) => {\n // Impossible while mounted, list ref will exist\n if (!listRef.value) {\n return\n }\n\n // Reset scroll position to the top\n listRef.value.scrollTop = 0\n\n // Highlight first item in the list\n const maybeFirstOption = getFirstValidOption(nextFilteredOptions)\n if (maybeFirstOption) highlightedValue.value = maybeFirstOption.value\n },\n { flush: \"post\" },\n )\n\n return () =>\n h(\n \"div\",\n {\n class: s.MenuInner,\n onKeydown: handleKeyDown,\n ref: menuRef,\n // Without search, the list takes focus (and the tab stop); the container\n // stays focusable so a click on it keeps the keys here\n tabindex: !searchable.value && filteredOptions.value.length ? -1 : 0,\n },\n [\n searchable.value\n ? h(CustomSelectSearch, {\n \"value\": searchTerm.value,\n \"hasResults\": !!filteredOptions.value.length,\n \"onUpdate:value\": (next: string) => {\n searchTerm.value = next\n },\n })\n : null,\n h(CustomSelectList, { filteredOptions: filteredOptions.value }),\n h(CustomSelectActions),\n ],\n )\n },\n})\n\nconst CustomSelectSearch = defineComponent({\n name: \"CustomSelectSearch\",\n props: {\n value: { type: String, required: true },\n /** Whether the list is rendered, for `aria-controls` */\n hasResults: { type: Boolean, required: true },\n },\n emits: {\n \"update:value\": (_value: string) => true,\n },\n setup(props, { emit }) {\n const { props: selectProps } = useSelectContext()\n const { listId, searchInputRef } = useCustomSelectMenuContext()\n const searchRef = shallowRef<HTMLElement | null>(null)\n\n // React's `ref` on Input is its <input>. Read before the menu's mount\n // focus runs (child mounted hooks run first); an exposed component ref\n // is not populated that early.\n onMounted(() => {\n searchInputRef.value = searchRef.value?.querySelector(\"input\") ?? null\n })\n onBeforeUnmount(() => {\n searchInputRef.value = null\n })\n\n return () =>\n h(\"div\", { class: s.Search, ref: searchRef }, [\n h(\n Input,\n {\n \"value\": props.value,\n \"size\": selectProps.searchSize,\n \"placeholder\": selectProps.searchPlaceholder,\n \"aria-label\": selectProps.searchAriaLabel,\n \"onUpdate:value\": (next: string) => emit(\"update:value\", next),\n // The native attribute: it reaches the <input> whether or not\n // Input forwards its `autoComplete` prop (React's Input does)\n \"autocomplete\": \"off\",\n \"autocorrect\": \"off\",\n \"spellcheck\": false,\n \"aria-autocomplete\": \"list\",\n \"role\": \"combobox\",\n // The list, while there is one: with no results it is not rendered\n \"aria-controls\": props.hasResults ? listId : undefined,\n \"aria-expanded\": true,\n },\n {\n startAdornment: () =>\n h(Search, { width: 16, height: 16, class: \"fill-secondary\", fill: \"var(--color-text-secondary)\" }),\n },\n ),\n ])\n },\n})\n\nconst isOptionGroup = <T extends Option>(mixedOption: T | OptionGroup<T>): mixedOption is OptionGroup<T> => {\n return \"options\" in mixedOption\n}\n\nconst isOptionGroupArray = <T extends Option>(arr: Options<T>): arr is OptionGroup<T>[] => {\n return !!arr[0] && isOptionGroup(arr[0])\n}\n\nconst HARD_OPTIONS_LIMIT = 300\n\nconst CustomSelectList = defineComponent({\n name: \"CustomSelectList\",\n props: {\n filteredOptions: { type: Array as PropType<Options<Option>>, required: true },\n },\n setup(props) {\n const { props: selectProps, slots, slotsVersion, triggerId, searchable } = useSelectContext()\n const { listId, listRef } = useCustomSelectMenuContext()\n const setListRef = (el: unknown) => {\n listRef.value = (el as HTMLElement | null) ?? null\n }\n\n return () => {\n void slotsVersion.value\n const { filteredOptions } = props\n\n if (!filteredOptions.length) {\n if (slots.searchEmptyMessage) {\n return h(\"div\", { class: s.SearchEmpty }, slots.searchEmptyMessage())\n }\n\n const { searchEmptyMessage } = selectProps\n return typeof searchEmptyMessage === \"string\"\n ? h(\"p\", { \"class\": s.SearchEmpty, \"data-text-only\": \"true\" }, searchEmptyMessage)\n : h(\"div\", { class: s.SearchEmpty }, [searchEmptyMessage as VNodeChild])\n }\n\n // We hard limit within groups, so at this level we will only limit flat arrays\n const isGrouped = isOptionGroupArray(filteredOptions)\n const hasHardLimit = !isGrouped && filteredOptions.length > HARD_OPTIONS_LIMIT\n\n const options = isGrouped\n ? filteredOptions.map((group) => h(CustomSelectGroup, { key: group.label, group }))\n : (filteredOptions as Option[])\n .slice(0, HARD_OPTIONS_LIMIT)\n .map((option) => h(CustomSelectOption, { key: option.value, option }))\n\n const { ariaLabel, ariaLabelledby } = selectProps\n const customTrigger = !!(slots.trigger || selectProps.trigger)\n return h(\n \"div\",\n {\n \"id\": listId,\n \"class\": s.OptionsList,\n \"ref\": setListRef,\n \"role\": \"listbox\",\n // Named like the trigger: its label, or the default trigger itself\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby ?? (ariaLabel || customTrigger ? undefined : triggerId),\n \"aria-multiselectable\": selectProps.multiple || undefined,\n // Without search, the list is the focused element\n \"tabindex\": searchable.value ? undefined : 0,\n },\n [\n ...options,\n hasHardLimit ? h(CustomSelectHardLimit, { numHidden: filteredOptions.length - HARD_OPTIONS_LIMIT }) : null,\n ],\n )\n }\n },\n})\n\nconst DEFAULT_OPTIONS_LIMIT = {\n limit: 100,\n label: \"Show all\",\n}\n\nconst CustomSelectGroup = defineComponent({\n name: \"CustomSelectGroup\",\n props: {\n group: { type: Object as PropType<OptionGroup<Option>>, required: true },\n },\n setup(props) {\n const groupId = useId()\n const headingId = useId()\n const { searchTerm, highlightedValue } = useCustomSelectMenuContext()\n const limitExpanded = ref(false)\n\n return () => {\n const { label, options, optionsLimit = DEFAULT_OPTIONS_LIMIT } = props.group\n const hasExpandableLimit = optionsLimit.limit < options.length && !searchTerm.value && !limitExpanded.value\n const hasHardLimit = HARD_OPTIONS_LIMIT < options.length && !hasExpandableLimit\n\n let maybeLimitedOptions = options\n if (hasExpandableLimit) {\n maybeLimitedOptions = options.slice(0, optionsLimit.limit)\n } else if (hasHardLimit) {\n maybeLimitedOptions = options.slice(0, HARD_OPTIONS_LIMIT)\n }\n\n const handleLimitExpanded = () => {\n // Expand options\n limitExpanded.value = true\n\n // Set highlight to the first option from the newly expanded list\n highlightedValue.value = options[optionsLimit.limit]!.value\n }\n\n // A group named by its heading. NOTE: The arrow keys walk every option in\n // document order (findNextOption), so they cross from group to group.\n return h(\"div\", { \"role\": \"group\", \"aria-labelledby\": headingId, \"class\": s.OptionGroup }, [\n // No indicator slot: the heading labels the whole section\n h(\"div\", { id: headingId, class: s.OptionGroupHeading }, label),\n ...maybeLimitedOptions.map((option) => h(CustomSelectOption, { key: option.value, option })),\n hasExpandableLimit\n ? h(CustomSelectExpandableLimit, {\n value: `group-limit-${groupId}`,\n label: optionsLimit.label,\n onPointerUp: handleLimitExpanded,\n })\n : null,\n hasHardLimit ? h(CustomSelectHardLimit, { numHidden: options.length - HARD_OPTIONS_LIMIT }) : null,\n ])\n }\n },\n})\n\nconst CustomSelectHardLimit = defineComponent({\n name: \"CustomSelectHardLimit\",\n props: {\n numHidden: { type: Number, required: true },\n },\n setup(props) {\n const { props: selectProps } = useSelectContext()\n\n return () =>\n h(\"div\", { class: s.OptionHardLimitHeading }, [\n // The note lines up with the option labels above it, so it borrows their indicator column.\n selectProps.checkPosition === \"start\" ? h(\"div\", { class: s.OptionIndicatorSlot }) : null,\n `…and ${props.numHidden.toLocaleString()} more options. Use search to refine results further.`,\n ])\n },\n})\n\nconst CustomSelectExpandableLimit = defineComponent({\n name: \"CustomSelectExpandableLimit\",\n props: {\n value: { type: String, required: true },\n label: { type: String, required: true },\n onPointerUp: { type: Function as PropType<() => void>, required: true },\n },\n setup(props) {\n const { props: selectProps } = useSelectContext()\n const { highlightedValue } = useCustomSelectMenuContext()\n const optionId = useId()\n\n const handlePointerMove = () => {\n if (props.value === highlightedValue.value) {\n return\n }\n\n highlightedValue.value = props.value\n }\n\n const handlePointerLeave = () => {\n // Clear the highlight only if it is this one\n if (highlightedValue.value === props.value) {\n highlightedValue.value = \"\"\n }\n }\n\n // This component acts a LOT like an Option, but has enough bespoke behavior\n // that it cannot literally be one.\n return () => {\n const isHighlighted = props.value === highlightedValue.value\n\n return h(\n \"div\",\n {\n \"id\": optionId,\n \"class\": clsx(s.Option, s.OptionsLimit),\n \"data-option-id\": props.value,\n \"data-highlight\": isHighlighted ? \"\" : undefined,\n // Not selectable: no aria-selected\n \"role\": \"option\",\n \"onPointerup\": props.onPointerUp,\n \"onPointermove\": handlePointerMove,\n \"onPointerleave\": handlePointerLeave,\n },\n [\n h(\"div\", { class: clsx(s.PressableInner, s.OptionInner) }, [\n // The row lines up with the option labels above it, so it borrows their indicator column.\n selectProps.checkPosition === \"start\" ? h(\"div\", { class: s.OptionIndicatorSlot }) : null,\n props.label,\n ]),\n ],\n )\n }\n },\n})\n\nconst INTERNAL_DOM_SELECTION_DATA_ATTR = \"data-option-id\"\n\nconst CustomSelectOption = defineComponent({\n name: \"CustomSelectOption\",\n props: {\n option: { type: Object as PropType<Option>, required: true },\n },\n setup(props) {\n const { props: selectProps, slots, slotsVersion, onSelect } = useSelectContext()\n const { openingValue, requestClose, highlightedValue } = useCustomSelectMenuContext()\n // Referenced by the list's aria-activedescendant while highlighted\n const optionId = useId()\n\n // NOTE: SingleSelect mode keeps the opening value instead of the live value\n // to avoid selecting the item as the select closes.\n const isSelected = () =>\n selectProps.multiple\n ? (selectProps.value as string[]).includes(props.option.value)\n : props.option.value === openingValue\n\n const handlePointerUp = () => {\n if (selectProps.multiple) {\n // Trigger the change, optionally as a remove\n onSelect(props.option, isSelected())\n } else {\n onSelect(props.option)\n // Request the dropdown to close\n requestClose()\n }\n }\n\n const handlePointerMove = () => {\n if (props.option.value === highlightedValue.value) {\n return\n }\n\n highlightedValue.value = props.option.value\n }\n\n const handlePointerLeave = () => {\n // Clear the highlight only if it is this one, removing the active highlight on the menu.\n if (highlightedValue.value === props.option.value) {\n highlightedValue.value = \"\"\n }\n }\n\n const renderOptionView = (option: Option): VNodeChild => {\n if (slots.optionView) return slots.optionView(option)\n if (selectProps.OptionView) return h(selectProps.OptionView, option)\n return option.label\n }\n\n const renderTooltip = (tooltip: NonNullable<Option[\"tooltip\"]>) => {\n const content = tooltip.content\n return typeof content === \"function\"\n ? h(Tooltip, { maxWidth: tooltip.maxWidth, side: \"right\" }, { default: () => h(Info), content })\n : h(Tooltip, { content, maxWidth: tooltip.maxWidth, side: \"right\" }, { default: () => h(Info) })\n }\n\n return () => {\n void slotsVersion.value\n const { option } = props\n const { value, disabled, tooltip } = option\n const selected = isSelected()\n const isHighlighted = value === highlightedValue.value\n const checkPosition = selectProps.checkPosition\n\n return h(\n \"div\",\n {\n \"id\": optionId,\n \"class\": clsx(s.Option, selectProps.optionClassName),\n \"data-highlight\": isHighlighted ? \"\" : undefined,\n \"role\": \"option\",\n // The selection; the highlight is the list's aria-activedescendant\n \"aria-selected\": selected,\n \"data-selected\": selected ? \"\" : undefined,\n // Internal attribute for selecting DOM nodes\n [INTERNAL_DOM_SELECTION_DATA_ATTR]: value,\n // Allow options to behave like a native select, when you can open and select an item in a single click\n \"onPointerup\": disabled ? undefined : handlePointerUp,\n // Pointer move prevents contention between keyboard presses and a still mouse\n \"onPointermove\": disabled ? undefined : handlePointerMove,\n \"onPointerleave\": disabled ? undefined : handlePointerLeave,\n \"aria-disabled\": disabled,\n \"data-disabled\": disabled ? \"\" : undefined,\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n checkPosition === \"start\"\n ? h(\"div\", { \"class\": s.OptionIndicatorSlot, \"data-position\": \"start\" }, [\n selected ? h(Check, { class: s.OptionCheck }) : null,\n ])\n : null,\n h(\"div\", { class: s.OptionLeading }, [\n h(\"div\", { class: s.OptionInner }, [renderOptionView(option), tooltip ? renderTooltip(tooltip) : null]),\n // React's `description && ...`: a 0 (or NaN) renders as text\n option.description &&\n h(\"div\", { class: clsx(s.OptionInner, s.OptionDescription) }, [renderContent(option.description)]),\n ]),\n checkPosition === \"end\"\n ? h(\"div\", { \"class\": s.OptionIndicatorSlot, \"data-position\": \"end\" }, [\n selected ? h(Check, { class: s.OptionCheck }) : null,\n ])\n : null,\n ]),\n ],\n )\n }\n },\n})\n\nconst CustomSelectActions = defineComponent({\n name: \"CustomSelectActions\",\n setup() {\n const { actions } = useSelectContext()\n\n return () => {\n if (actions.value.length === 0) {\n return null\n }\n\n return h(\n \"div\",\n { class: s.ActionsContainer },\n actions.value.map((action) => h(CustomSelectAction, { key: action.id, action })),\n )\n }\n },\n})\n\n/**\n * React handles events of the portalled menu at <body> and stops a synthetic\n * event there: <body>'s own listeners (the Escape stack) still run, the\n * document's and window's do not. Stopping the native event here instead\n * would keep it from <body>.\n */\nconst stopAfterBody = (evt: Event) => {\n const body = (evt.currentTarget as Node | null)?.ownerDocument?.body\n if (!body) {\n evt.stopPropagation()\n return\n }\n body.addEventListener(\n evt.type,\n (event) => {\n if (event === evt) event.stopPropagation()\n },\n { once: true },\n )\n}\n\nconst CustomSelectAction = defineComponent({\n name: \"CustomSelectAction\",\n props: {\n action: { type: Object as PropType<SelectAction>, required: true },\n },\n setup(props) {\n const { onActionSelect } = useSelectContext()\n const { requestClose } = useCustomSelectMenuContext()\n\n const handlePointerUp = () => {\n // Trigger the action through the context helper, not the method on this action (it may be a stale reference)\n onActionSelect(props.action.id)\n // Request to close the dropdown\n requestClose()\n }\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n\n switch (key) {\n case \"Tab\":\n // Allow tabbing to pass propagation as normal, which bubbles up to the focus scope\n break\n case \"Enter\":\n case \" \":\n evt.stopPropagation()\n handlePointerUp()\n break\n case \"Escape\":\n // The menu's key handler ignores Escape; the Escape stack on <body> closes the menu\n stopAfterBody(evt)\n break\n default:\n evt.stopPropagation()\n }\n }\n\n return () => {\n const { label, Icon, className } = props.action\n return h(\"div\", { class: s.Action, onPointerup: handlePointerUp, onKeydown: handleKeyDown, tabindex: 0 }, [\n h(\"div\", { class: clsx(s.ActionInner, className) }, [Icon ? h(Icon, { role: \"presentation\" }) : null, label]),\n ])\n }\n },\n})\n\n// ============================================================\n// Utilities\n// ============================================================\nconst defaultSearchPredicate = (option: Option, searchTerm: string) => option.label.toLowerCase().includes(searchTerm)\n\nconst filterOptions = <T extends Option>(\n options: Options<T>,\n searchTerm: string,\n searchIterator: SearchPredicate<T>,\n): Options<T> => {\n const searchValue = searchTerm.trim().toLocaleLowerCase()\n\n if (!searchValue) {\n return options\n }\n\n const filterOption = (option: T): boolean => searchIterator(option, searchValue)\n\n if (isOptionGroupArray(options)) {\n return options.reduce((acc, group) => {\n const filtered = group.options.filter(filterOption)\n\n if (filtered.length) {\n acc.push({\n ...group,\n options: filtered,\n })\n }\n return acc\n }, [] as OptionGroup<T>[])\n } else {\n return (options as T[]).reduce((acc, option) => {\n if (filterOption(option)) acc.push(option)\n return acc\n }, [] as T[])\n }\n}\n\nconst getFirstValidOption = <T extends Option>(options: Options<T>): T | undefined => {\n if (!options.length) {\n return undefined\n }\n\n let found: T | undefined\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const firstNonDisabled = opt.options.find((i) => !i.disabled)\n if (firstNonDisabled) {\n found = firstNonDisabled\n break\n }\n } else {\n if (!opt.disabled) {\n found = opt\n break\n }\n }\n }\n\n return found\n}\n\nconst getOptionByValue = <T extends Option>(options: Options<T>, value: string): T | undefined => {\n let found: T | undefined\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const exists = opt.options.find((i) => i.value === value)\n if (exists) {\n found = exists\n break\n }\n } else {\n if (opt.value === value) {\n found = opt\n break\n }\n }\n }\n\n return found\n}\n\nconst getOptionsByValues = <T extends Option>(options: Options<T>, values: string[]): T[] => {\n let found: T[] = []\n const lookup = new Set(values)\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const exists = opt.options.filter((i) => lookup.has(i.value))\n found = found.concat(exists)\n } else {\n if (lookup.has(opt.value)) {\n found.push(opt)\n }\n }\n }\n\n return found\n}\n\nconst MAX_DOM_CRAWLS = 40\n\nconst findOptionByValue = (currentValue: string, container: HTMLElement) =>\n container.querySelector(`[data-option-id=\"${CSS.escape(currentValue)}\"]`)\n\nconst isValidOptionNode = (node: Element) => node.matches(\"[data-option-id]:not([data-disabled])\")\n\n// Steps from the current option to the nearest enabled one, one option row at a\n// time in document order: across groups (siblings would stop at a group's\n// edge), skipping disabled rows, at most MAX_DOM_CRAWLS rows away\nconst findAdjacentOption = (currentValue: string, container: HTMLElement, step: 1 | -1) => {\n const currentOption = findOptionByValue(currentValue, container)\n const rows = Array.from(container.querySelectorAll(\"[data-option-id]\"))\n\n let index = currentOption ? rows.indexOf(currentOption) : -1\n if (index === -1) {\n return undefined\n }\n\n for (let maxSteps = 0; maxSteps < MAX_DOM_CRAWLS; maxSteps += 1) {\n index += step\n const nextNode = rows[index]\n\n if (!nextNode) {\n return undefined\n }\n\n if (isValidOptionNode(nextNode)) {\n return nextNode\n }\n }\n}\n\nconst findNextOption = (currentValue: string, container: HTMLElement) =>\n findAdjacentOption(currentValue, container, 1)\n\nconst findPreviousOption = (currentValue: string, container: HTMLElement) =>\n findAdjacentOption(currentValue, container, -1)\n\nconst createTypeahead = () => {\n let currentValue: string = \"\"\n let timeoutId: ReturnType<typeof setTimeout> | undefined\n\n return (char: string) => {\n // Searching is case-insensitive\n char = char.toLowerCase()\n\n // Add the new character to the current value\n currentValue += char\n\n // Clear the previous timeout if there was one\n if (timeoutId) clearTimeout(timeoutId)\n\n // Reset the value after a brief delay\n timeoutId = setTimeout(() => {\n currentValue = \"\"\n }, 500)\n\n // When a user is typing the same value, like \"llll\", assume they are cycling through items starting with \"l\"\n const isCycling = char.repeat(currentValue.length) === currentValue\n\n // Return the typeahead value\n return isCycling ? char : currentValue\n }\n}\n\nconst isValidTypeaheadChar = (char: string): boolean => /^[a-zA-Z0-9]$/.test(char)\n\n// A shortcut (Ctrl+C, Cmd+A, Alt+letter) or a key another handler took is not typeahead\nconst isTypeaheadKey = (evt: KeyboardEvent): boolean =>\n isValidTypeaheadChar(evt.key) && !evt.ctrlKey && !evt.metaKey && !evt.altKey && !evt.defaultPrevented\n\nconst resolveElement = (instance: unknown): HTMLElement | null => {\n const node = instance && typeof instance === \"object\" && \"$el\" in instance ? (instance as { $el: unknown }).$el : instance\n // A multi-root component's $el is the text node opening its fragment; the\n // element follows it (as in Reka)\n const element = node instanceof Text ? node.nextElementSibling : node\n return element instanceof HTMLElement ? element : null\n}\n\nconst getTypeaheadOption = <T extends Option>(\n options: Options<T>,\n typeaheadValue: string,\n currentHighlightValue?: string,\n): T | undefined => {\n // Ensure options actually exist\n if (!options.length) {\n return undefined\n }\n\n let matchBeforeHighlight: T | undefined\n // If we aren't provided a highlighted value, start from the top (e.g., act like it's found)\n let foundHighlightedValue: boolean = !currentHighlightValue\n\n const optionValidAndMatches = ({ disabled, label, value }: T) => {\n // Side effect of looping\n if (value === currentHighlightValue) {\n foundHighlightedValue = true\n // Don't return highlighted value\n return false\n }\n\n return !disabled && label.toLowerCase().startsWith(typeaheadValue)\n }\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n for (const option of opt.options) {\n if (optionValidAndMatches(option)) {\n if (foundHighlightedValue) {\n // We're done after we've found an after match, in any group\n return option\n } else {\n // Keep the first found \"before\" match\n matchBeforeHighlight = matchBeforeHighlight || option\n }\n }\n }\n } else {\n if (optionValidAndMatches(opt)) {\n if (foundHighlightedValue) {\n // We're done after we've found an after match\n return opt\n } else {\n // Keep the first found \"before\" match\n matchBeforeHighlight = matchBeforeHighlight || opt\n }\n }\n }\n }\n\n return matchBeforeHighlight\n}\n\ntype SelectOwnProps = InstanceType<typeof SelectComponent>[\"$props\"]\n\ntype SingleSelectProps = {\n /** Determines if the select should support multiple selection. @default false */\n multiple?: false\n /** Selected value. Bind `v-model:value`. */\n value: string\n onChange?: (option: Option) => void\n \"onUpdate:value\"?: (value: string) => void\n}\n\ntype MultiSelectProps = {\n /** Determines if the select should support multiple selection. @default false */\n multiple: true\n /** Selected values. Bind `v-model:value`. */\n value: string[]\n onChange?: (options: Option[]) => void\n \"onUpdate:value\"?: (value: string[]) => void\n}\n\n/** As in React, `multiple` decides the type of `value` and of the `change` and `update:value` payloads. */\nexport type SelectProps = Omit<SelectOwnProps, \"multiple\" | \"value\" | \"onChange\" | \"onUpdate:value\"> &\n (SingleSelectProps | MultiSelectProps)\n\n/**\n * Select dropdown with option groups, descriptions, search (over 15\n * options), multiple selection and actions. Bind `v-model:value`.\n */\nexport const Select = SelectComponent as typeof SelectComponent & { new (): { $props: SelectProps } }\n"]}
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/components/Select/Select.ts"],"names":[],"mappings":"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","sourcesContent":["import clsx from \"clsx\"\nimport {\n cloneVNode,\n computed,\n createCommentVNode,\n defineComponent,\n h,\n inject,\n markRaw,\n onBeforeUnmount,\n onBeforeUpdate,\n onMounted,\n provide,\n ref,\n shallowRef,\n toRaw,\n useId,\n watch,\n type Component,\n type ComponentPublicInstance,\n type ComputedRef,\n type InjectionKey,\n type PropType,\n type Ref,\n type ShallowRef,\n type Slots,\n type VNode,\n type VNodeChild,\n} from \"vue\"\nimport {\n PopoverAnchor as RekaPopoverAnchor,\n PopoverContent as RekaPopoverContent,\n PopoverPortal as RekaPopoverPortal,\n PopoverRoot as RekaPopoverRoot,\n injectPopoverRootContext,\n useId as useRekaId,\n} from \"reka-ui\"\nimport type { ControlSize } from \"@plexui/styles/types\"\nimport { useEscCloseStack } from \"../../composables/useEscCloseStack.js\"\nimport { preventDefaultHandler, toCssVariables, waitForAnimationFrame } from \"../../lib/helpers.js\"\nimport { Check, Info, Search } from \"../Icon/index.js\"\nimport { Input } from \"../Input/index.js\"\nimport { useDeferredPointerDownOutside } from \"../Popover/deferredPointerDownOutside.js\"\nimport { SelectControl, type DropdownIconType } from \"../SelectControl/index.js\"\nimport { Tooltip } from \"../Tooltip/index.js\"\nimport { withRadixVariableNames } from \"../Tooltip/Tooltip.js\"\nimport { composeEventHandlers, firstElementChild, mergeSlotProps } from \"../Tooltip/slot.js\"\nimport { TransitionGroup } from \"../Transition/index.js\"\nimport s from \"@plexui/styles/components/Select/Select.module.css\"\n\n// Vue port of packages/ui/src/components/Select/Select.tsx on Reka UI.\n//\n// API mapping:\n// - `value` + `update:value` (`v-model:value`): a string, or string[] with\n// `multiple`. `change` carries what React's `onChange` receives: the\n// selected option, or the selected options with `multiple`.\n// - Custom views are scoped slots, with React's component props kept as a\n// fallback: `#optionView=\"option\"` / `OptionView`, `#triggerView` /\n// `TriggerView` (receives the selected option, or `{ values, selectedAll }`\n// with `multiple`), `#trigger=\"{ open, onToggle }\"` / `trigger`, and\n// `#searchEmptyMessage` / `searchEmptyMessage`.\n// - An option's `description` and `tooltip.content` take a string, a VNode or\n// a render function (React: a ReactNode). Actions keep their `onSelect`\n// and `Icon` (a component) as in React.\n//\n// Reka keeps the popover state, positioning, the dismissable layer and the\n// focus scope. Where Reka's popover differs from Radix's, this port follows\n// Radix so the DOM and behaviour match React:\n// - The trigger is Radix's: its props are merged into the trigger (default\n// or custom) after the child's own handlers, the click toggle is skipped\n// when one called preventDefault(), it carries no `id` of Reka's and sets\n// `aria-controls` only while open (Radix 1.8.1).\n// - Open changes from Reka (dismiss, the trigger's click) are reported only\n// when the state changes, like Radix's controlled state.\n// - A primary pointer down outside dismisses on its click, as in Radix 1.8.1\n// (../Popover/deferredPointerDownOutside.ts).\n// - The content element is rendered here (Reka's `as`): Radix's custom\n// property names (`--radix-popover-*`), no `dir`, no `aria-labelledby`.\n// - React handles events of portalled content at <body>, so stopping one\n// there still runs <body>'s own listeners (the Escape stack). An action's\n// Escape key does the same here (see CustomSelectAction).\n\nexport type OptionContent = string | number | VNode | (() => VNodeChild)\n\nexport type Option<T extends string = string> = {\n value: T\n label: string\n /** Disable the option */\n disabled?: boolean\n /** Displayed as secondary text below the option `label` */\n description?: OptionContent\n tooltip?: {\n content: OptionContent\n maxWidth?: number\n }\n}\n\nexport type OptionGroup<T extends Option> = {\n label: string\n options: T[]\n optionsLimit?: {\n label: string\n limit: number\n }\n}\n\nexport type Options<T extends Option> = T[] | OptionGroup<T>[]\n\ntype CallbackWithActionId = (actionId: string) => void\ntype SearchPredicate<T extends Option> = (option: T, searchTerm: string) => boolean\n\nexport type SelectAction = {\n /** Unique ID to identify the action with */\n id: string\n /** Label display for the action */\n label: string\n /** Icon displayed to the left of the action */\n Icon?: Component\n /** Custom class applied to the action container */\n className?: string\n /** Callback invoked when the action is pressed */\n onSelect: CallbackWithActionId\n}\n\nexport type PopoverSide = \"top\" | \"bottom\"\nexport type PopoverAlign = \"start\" | \"center\" | \"end\"\nexport type CheckPosition = \"start\" | \"end\" | \"none\"\n\nexport type MultiSelectTriggerViewProps<T extends Option> = {\n values: T[]\n selectedAll: boolean\n}\n\nexport type SelectTriggerRenderProps = { open: boolean; onToggle: () => void }\n\ntype ListSize = number | \"auto\"\n\nconst selectProps = {\n /** Options or option groups. Should be a stable reference. */\n options: { type: Array as PropType<Options<Option>>, required: true as const },\n /** Selected value; an array of values with `multiple`. Bind `v-model:value`. */\n value: { type: [String, Array] as PropType<string | string[]>, required: true as const },\n /** Determines if the select should support multiple selection. @default false */\n multiple: { type: Boolean, default: false },\n /** Disables the select visually and from interactions. @default false */\n disabled: { type: Boolean, default: false },\n /** Id of the hidden input, so the select can be targeted with `for` */\n id: String,\n /** Marks the select as a required field when using native form submission */\n required: { type: Boolean, default: undefined },\n /** Creates the ability to query the value with `[name=\"${name}\"]` */\n name: String,\n /** Placeholder text for the select. @default \"Select...\" */\n placeholder: { type: String, default: \"Select...\" },\n /** Placeholder text while loading. @default \"Loading...\" */\n loadingPlaceholder: { type: String, default: \"Loading...\" },\n /** Displays loading indicator on top of button contents. @default false */\n loading: { type: Boolean, default: false },\n /** Style variant for the select trigger. @default \"outline\" */\n variant: { type: String as PropType<\"soft\" | \"outline\" | \"ghost\">, default: \"outline\" },\n /** Fully rounded pill shape for the trigger. @default false */\n pill: { type: Boolean, default: false },\n /** Size of the trigger: `3xs` 22px up to `3xl` 48px. @default \"md\" */\n size: { type: String as PropType<ControlSize>, default: \"md\" },\n /** Icon displayed in the far right of the select trigger. @default \"dropdown\" */\n dropdownIconType: { type: String as PropType<DropdownIconType>, default: \"dropdown\" },\n /** Actions to display below the options list. Memoized by length. */\n actions: Array as PropType<SelectAction[]>,\n /** Custom class applied to option containers */\n optionClassName: String,\n /** Component rendering each option (the `#optionView` slot takes precedence) */\n OptionView: [Object, Function] as PropType<Component>,\n /** Component rendering the trigger content (the `#triggerView` slot takes precedence) */\n TriggerView: [Object, Function] as PropType<Component>,\n /** Icon displayed at the start of the select trigger */\n TriggerStartIcon: [Object, Function] as PropType<Component>,\n /** Custom class applied to the select trigger */\n triggerClassName: String,\n /** Applies a negative margin using the current gutter to optically align the trigger. */\n opticallyAlign: String as PropType<\"start\" | \"end\">,\n /** Display a clear action that allows the select to be unset. @default false */\n clearable: { type: Boolean, default: false },\n /** Extends select to 100% of available width. @default true, except for the ghost variant */\n block: { type: Boolean, default: undefined },\n /** Preferred side of the trigger to render against when open. @default \"bottom\" */\n side: { type: String as PropType<PopoverSide>, default: \"bottom\" },\n /** Preferred alignment against the trigger. @default \"center\" when block, otherwise \"start\" */\n align: String as PropType<PopoverAlign>,\n /** Offset in pixels from the \"start\" or \"end\" alignment. @default 0 */\n alignOffset: Number,\n /** Collision detection of the menu. @default true */\n avoidCollisions: { type: Boolean, default: true },\n /** Width of the menu. @default \"auto\" */\n listWidth: [Number, String] as PropType<ListSize>,\n /** `min-width` of the menu, in pixels. @default the trigger width (300 when not block) */\n listMinWidth: [Number, String] as PropType<ListSize>,\n /** `max-width` of the menu, in pixels. @default \"auto\" */\n listMaxWidth: { type: [Number, String] as PropType<ListSize>, default: \"auto\" },\n /** Predicate used to filter searches */\n searchPredicate: Function as PropType<SearchPredicate<Option>>,\n /** Placeholder of the search input */\n searchPlaceholder: { type: String, default: \"\" },\n /** Accessible name of the search input, independent of the trigger label. @default \"Search options\" */\n searchAriaLabel: { type: String, default: \"Search options\" },\n /** Size of the search input in the menu, such as `2xl` for 44px touch targets on phones. @default \"md\" */\n searchSize: String as PropType<ControlSize>,\n /** Message displayed when search results are empty (or the `#searchEmptyMessage` slot) */\n searchEmptyMessage: { type: [String, Number, Object] as PropType<string | number | VNode>, default: \"No results found.\" },\n /** Position of the check indicator in the option list. @default \"start\" */\n checkPosition: { type: String as PropType<CheckPosition>, default: \"start\" },\n /** Renders a custom trigger (or the `#trigger` slot), wrapped as the popover trigger */\n trigger: Function as PropType<(props: SelectTriggerRenderProps) => VNodeChild>,\n \"ariaLabel\": String,\n \"ariaLabelledby\": String,\n \"ariaDescribedby\": String,\n \"ariaInvalid\": { type: [Boolean, String] as PropType<boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\">, default: undefined },\n}\n\ntype SelectPropsValue = {\n readonly [K in keyof typeof selectProps]: unknown\n} & {\n options: Options<Option>\n value: string | string[]\n multiple: boolean\n disabled: boolean\n id?: string\n required?: boolean\n name?: string\n placeholder: string\n loadingPlaceholder: string\n loading: boolean\n variant: \"soft\" | \"outline\" | \"ghost\"\n pill: boolean\n size: ControlSize\n dropdownIconType: DropdownIconType\n actions?: SelectAction[]\n optionClassName?: string\n OptionView?: Component\n TriggerView?: Component\n TriggerStartIcon?: Component\n triggerClassName?: string\n opticallyAlign?: \"start\" | \"end\"\n clearable: boolean\n block?: boolean\n side: PopoverSide\n align?: PopoverAlign\n alignOffset?: number\n avoidCollisions: boolean\n listWidth?: ListSize\n listMinWidth?: ListSize\n listMaxWidth: ListSize\n searchPredicate?: SearchPredicate<Option>\n searchPlaceholder: string\n searchAriaLabel: string\n searchSize?: ControlSize\n searchEmptyMessage: string | number | VNode\n checkPosition: CheckPosition\n trigger?: (props: SelectTriggerRenderProps) => VNodeChild\n ariaLabel?: string\n ariaLabelledby?: string\n ariaDescribedby?: string\n ariaInvalid?: boolean | string\n}\n\n// ============================================================\n// Contexts\n// ============================================================\n\ntype SelectContextValue = {\n props: SelectPropsValue\n slots: Slots\n /**\n * Bumped on every Select update. Slots are not reactive, so the parts that\n * render one read it to follow a slot that was added, removed or replaced.\n */\n slotsVersion: Ref<number>\n triggerId: string\n /** The default trigger's element (React looks it up by `triggerId`) */\n triggerEl: ShallowRef<HTMLElement | null>\n block: ComputedRef<boolean>\n align: ComputedRef<PopoverAlign>\n alignOffset: ComputedRef<number>\n listMinWidth: ComputedRef<ListSize | undefined>\n searchable: ComputedRef<boolean>\n actions: ShallowRef<SelectAction[]>\n onSelect: (option: Option, removeOption?: boolean) => void\n onActionSelect: CallbackWithActionId\n /** The latest predicate, read without tracking (React keeps it in a ref) */\n searchPredicate: () => SearchPredicate<Option>\n}\n\nconst SelectContextKey: InjectionKey<SelectContextValue> = Symbol(\"PlexUISelect\")\n\nconst useSelectContext = () => {\n const context = inject(SelectContextKey, null)\n\n if (!context) {\n throw new Error(\"Select components must be wrapped in <Select />\")\n }\n\n return context\n}\n\ntype CustomSelectContextValue = {\n open: Ref<boolean>\n handleOpenChange: (maybeNextState?: boolean) => void\n /** Radix's `onOpenChange` of the popover root: reports changes only */\n handleRootOpenChange: (nextState: boolean) => void\n selectContentRef: ShallowRef<HTMLElement | null>\n /** The trigger element, default or custom (React's ref on Popover.Trigger) */\n popoverTriggerEl: ShallowRef<HTMLElement | null>\n}\n\nconst CustomSelectContextKey: InjectionKey<CustomSelectContextValue> = Symbol(\"PlexUICustomSelect\")\n\n// Radix decides \"focus outside\" on the React tree, where a Select opened next\n// to another one is outside it: focus entering the second one's menu closes\n// the first. Reka decides on the DOM and counts a layer later in the document\n// as nested, so the first would stay open. Each Select records its logical\n// parent (the Select whose menu renders it) and its content element, and\n// closes when focus enters the content of a Select not nested in it.\ntype SelectLayer = {\n parent: SelectLayer | null\n content: ShallowRef<HTMLElement | null>\n}\n\nconst SelectLayerKey: InjectionKey<SelectLayer> = Symbol(\"PlexUISelectLayer\")\n\nconst mountedSelectLayers = new Set<SelectLayer>()\n\nconst isNestedIn = (layer: SelectLayer, ancestor: SelectLayer) => {\n for (let parent = layer.parent; parent; parent = parent.parent) {\n if (parent === ancestor) return true\n }\n return false\n}\n\ntype CustomSelectMenuContextValue = {\n openingValue: string\n listId: string\n requestClose: () => void\n listRef: ShallowRef<HTMLElement | null>\n // Highlighting\n highlightedValue: Ref<string>\n // Search\n searchTerm: Ref<string>\n searchInputRef: ShallowRef<HTMLInputElement | null>\n}\n\nconst CustomSelectMenuContextKey: InjectionKey<CustomSelectMenuContextValue> = Symbol(\"PlexUICustomSelectMenu\")\n\nconst useCustomSelectMenuContext = () => {\n const context = inject(CustomSelectMenuContextKey, null)\n\n if (!context) {\n throw new Error(\"CustomSelectMenu components must be wrapped in <CustomSelectMenu />\")\n }\n\n return context\n}\n\nconst renderContent = (content: unknown): VNodeChild =>\n typeof content === \"function\" ? (content as () => VNodeChild)() : (content as VNodeChild)\n\nconst defaultMultiTriggerView = ({ values, selectedAll }: MultiSelectTriggerViewProps<Option>) =>\n selectedAll\n ? \"All selected\"\n : values.length === 0\n ? // NOTE: Zero length is impossible - an empty option with `placeholder` is always returned\n \"Select...\"\n : values.length === 1\n ? values[0]!.label\n : `${values.length} selected`\n\n// ============================================================\n// Select\n// ============================================================\n\nconst SelectComponent = defineComponent({\n name: \"Select\",\n inheritAttrs: false,\n props: selectProps,\n // Untyped here: SelectProps (below) types the payloads by `multiple`, and\n // typed emits would also require each listener to take both shapes\n emits: [\"update:value\", \"change\"],\n setup(rawProps, { emit, slots }) {\n const props = rawProps as unknown as SelectPropsValue\n // Block default is dynamic, based on `variant`\n const block = computed(() => props.block ?? props.variant !== \"ghost\")\n // Align default is dynamic, based on `block`\n const align = computed<PopoverAlign>(() => props.align ?? (block.value ? \"center\" : \"start\"))\n // Flush with the trigger's edge, as the prop documents\n const alignOffset = computed(() => props.alignOffset ?? 0)\n // A menu is never narrower than the field it belongs to. Inline selects keep their 300px floor.\n const listMinWidth = computed(() => props.listMinWidth ?? (block.value ? undefined : 300))\n\n const change = (selection: Option | Option[]) => {\n emit(\"update:value\", Array.isArray(selection) ? selection.map((option) => option.value) : selection.value)\n emit(\"change\", selection)\n }\n\n const onSelect = (selectedOption: Option, removeOption?: boolean) => {\n const { multiple, options } = props\n const value = props.value as string[]\n\n if (multiple) {\n // When clearing values, the value is an empty string\n if (!selectedOption.value) {\n change([])\n return\n }\n\n if (removeOption) {\n const nextValues = value.filter((v) => v !== selectedOption.value)\n change(getOptionsByValues(options, nextValues))\n } else {\n change(getOptionsByValues(options, value).concat(selectedOption))\n }\n } else {\n change(selectedOption)\n }\n }\n\n // It should be exceedingly uncommon to change actions dynamically: like\n // React's memo, the rendered actions only follow a change of length.\n const actions = shallowRef<SelectAction[]>(props.actions ?? [])\n watch(\n () => (props.actions ?? []).length,\n () => {\n actions.value = props.actions ?? []\n },\n )\n // Action callbacks always come from the latest actions\n const onActionSelect = (actionId: string) => {\n ;(props.actions ?? []).find((a) => a.id === actionId)?.onSelect(actionId)\n }\n\n // Determine when custom selects should be used\n const optionsCount = computed(() => {\n const { options } = props\n return isOptionGroupArray(options)\n ? options.reduce((acc: number, group) => acc + group.options.length, 0)\n : options.length\n })\n\n // Locking down searchable count to a single value\n const searchable = computed(() => optionsCount.value > 15)\n\n const slotsVersion = ref(0)\n onBeforeUpdate(() => {\n slotsVersion.value++\n })\n\n provide(SelectContextKey, {\n props,\n slots,\n slotsVersion,\n triggerId: `select-trigger-${useId()}`,\n triggerEl: shallowRef(null),\n block,\n align,\n alignOffset,\n listMinWidth,\n searchable,\n actions,\n onSelect,\n onActionSelect,\n searchPredicate: () => (toRaw(rawProps) as SelectPropsValue).searchPredicate ?? defaultSearchPredicate,\n })\n\n return () => h(CustomSelect)\n },\n})\n\n// ============================================================\n// Trigger\n// ============================================================\n\nconst SelectTrigger = defineComponent({\n name: \"SelectTrigger\",\n inheritAttrs: false,\n props: {\n onOpenChange: Function as PropType<(maybeNextState?: boolean) => void>,\n },\n setup(ownProps, { attrs }) {\n const { props, slots, slotsVersion, triggerId, triggerEl, block, onSelect } = useSelectContext()\n const typeahead = createTypeahead()\n\n const setTriggerEl = (instance: unknown) => {\n triggerEl.value = ((instance as ComponentPublicInstance | null)?.$el as HTMLElement | undefined) ?? null\n }\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n const { multiple, value, options } = props\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n\n // If not a command, check for typeahead\n // NOTE: Typeahead not supported in multi-select\n if (!multiple && isTypeaheadKey(evt)) {\n const currentTypeaheadValue = typeahead(key)\n // Stop other listeners from reacting\n evt.stopPropagation()\n\n // Attempt to filter options based on the value\n // NOTE: We don't look at current highlighted value as a means to start the search\n const firstMatchingOption = getTypeaheadOption(options, currentTypeaheadValue, firstValue)\n\n if (firstMatchingOption) {\n onSelect(firstMatchingOption)\n }\n }\n }\n\n const handleClearClick = () => {\n onSelect({ value: \"\", label: \"\" })\n // Ensure open state is closed\n ownProps.onOpenChange?.(false)\n }\n\n return () => {\n void slotsVersion.value\n const { multiple, options, loading } = props\n const value = props.value\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n const placeholderValue = loading ? props.loadingPlaceholder : props.placeholder\n const hasSelectedValue = multiple ? (value as string[]).length > 0 : !!value\n const isPlaceholder = loading || !hasSelectedValue\n\n const renderTriggerView = () => {\n let viewProps: Option | MultiSelectTriggerViewProps<Option>\n\n if (multiple) {\n const currentSelectedOptions = getOptionsByValues(options, value as string[])\n const flatOptions = options.flatMap((o) => (\"options\" in o ? o.options : o))\n viewProps = {\n values: currentSelectedOptions.length ? currentSelectedOptions : [{ value: \"\", label: placeholderValue }],\n selectedAll: flatOptions.length <= (value as string[]).length,\n }\n } else {\n viewProps = getOptionByValue(options, firstValue as string) || { value: \"\", label: placeholderValue }\n }\n\n if (slots.triggerView) return slots.triggerView(viewProps)\n if (props.TriggerView) return h(props.TriggerView, viewProps)\n return multiple\n ? defaultMultiTriggerView(viewProps as MultiSelectTriggerViewProps<Option>)\n : (viewProps as Option).label\n }\n\n return h(\n SelectControl as Component,\n {\n \"ref\": setTriggerEl,\n \"id\": triggerId,\n \"aria-label\": props.ariaLabel,\n \"aria-labelledby\": props.ariaLabelledby ? `${props.ariaLabelledby} ${triggerId}-value` : undefined,\n \"aria-describedby\": props.ariaDescribedby,\n \"aria-invalid\": props.ariaInvalid,\n \"class\": props.triggerClassName,\n \"selected\": !isPlaceholder,\n \"variant\": props.variant,\n \"pill\": props.pill,\n \"block\": block.value,\n \"size\": props.size,\n \"disabled\": props.disabled,\n \"loading\": loading,\n \"StartIcon\": props.TriggerStartIcon,\n \"opticallyAlign\": props.opticallyAlign,\n \"dropdownIconType\": props.dropdownIconType,\n \"onClearClick\": props.clearable ? handleClearClick : undefined,\n \"onInteract\": ownProps.onOpenChange,\n \"onKeydown\": handleKeyDown,\n // pass along props from the popover trigger\n ...attrs,\n },\n {\n default: () => [\n props.ariaLabelledby ? h(\"span\", { id: `${triggerId}-value` }, [renderTriggerView()]) : renderTriggerView(),\n props.name || props.id\n ? // One input per selected value, so a form submits every value of a\n // multi-select; an empty one keeps `id` and `required` working\n (multiple && (value as string[]).length ? (value as string[]) : [firstValue ?? \"\"]).map((formValue, index) =>\n h(\"input\", {\n \"key\": index,\n \"id\": index === 0 ? props.id : undefined,\n \"name\": props.name,\n \"value\": formValue,\n // A disabled select is neither validated nor submitted\n \"disabled\": props.disabled,\n \"tabindex\": -1,\n \"onFocus\": () => {\n triggerEl.value?.focus()\n },\n // don't make this readOnly because that prevents the value from being required\n \"required\": props.required,\n \"class\": s.FormInput,\n \"aria-hidden\": \"true\",\n }),\n )\n : null,\n ],\n },\n )\n }\n },\n})\n\n/**\n * Radix's `Popover.Trigger asChild`: Radix's trigger props merged into the\n * child (the default trigger or a custom one), its click toggle after the\n * child's own handlers.\n */\nconst SelectPopoverTrigger = defineComponent({\n name: \"SelectPopoverTrigger\",\n setup(_props, { slots }) {\n const rootContext = injectPopoverRootContext()\n rootContext.contentId ||= useRekaId(undefined, \"reka-popover-content\")\n const { popoverTriggerEl } = inject(CustomSelectContextKey)!\n\n // React's ref on Popover.Trigger: the element the child gives its ref\n // (FloatingLabelSelect's field). Focus returns here on close, the content\n // anchors to it, and pointer-downs on it are not \"outside\".\n const setTriggerRef = (instance: unknown) => {\n popoverTriggerEl.value = resolveElement(instance)\n rootContext.triggerElement.value = popoverTriggerEl.value ?? undefined\n }\n\n const onClick = composeEventHandlers(undefined, () => rootContext.onOpenToggle())\n\n return () => {\n const child = firstElementChild(slots.default?.())\n if (!child) return null\n\n const isOpen = rootContext.open.value\n return h(RekaPopoverAnchor, { asChild: true, reference: popoverTriggerEl.value ?? undefined }, {\n default: () =>\n cloneVNode(\n mergeSlotProps(child, {\n \"type\": \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? rootContext.contentId : undefined,\n \"data-state\": isOpen ? \"open\" : \"closed\",\n onClick,\n }),\n { ref: setTriggerRef },\n // Keep the child's own ref\n true,\n ),\n })\n }\n },\n})\n\n// ============================================================\n// Custom Select\n// ============================================================\n\nconst CustomSelect = defineComponent({\n name: \"CustomSelect\",\n setup() {\n const { props, slots, slotsVersion, triggerEl } = useSelectContext()\n const open = ref(false)\n const selectContentRef = shallowRef<HTMLElement | null>(null)\n const popoverTriggerEl = shallowRef<HTMLElement | null>(null)\n // Not before mount: server rendering and hydration render no teleport,\n // as Radix's Portal renders nothing before mount\n const mounted = ref(false)\n\n const handleOpenChange = (maybeNextState?: boolean) => {\n // Toggle the current state when called without a specific state\n const nextState = maybeNextState === undefined ? !open.value : maybeNextState\n open.value = nextState\n\n // When we're closing, manage focus back to trigger manually\n if (!nextState) {\n // Read this now: with animations disabled the menu unmounts before the\n // timeout below runs, so selectContentRef is already null by then\n const focusWasInMenu = !!selectContentRef.value?.contains(document.activeElement)\n\n // Wait until the next tick to determine if another element has become focused\n setTimeout(() => {\n const activeElement = document.activeElement\n const menu = selectContentRef.value\n const focusInMenu = !!menu && !!activeElement && menu.contains(activeElement)\n // Focus dropped with the closing menu lands on <body>: it was lost, not moved\n const focusLost = !activeElement || activeElement === document.body\n\n // Focus that moved to another element outside the menu stays there\n if (focusInMenu || (focusWasInMenu && focusLost)) {\n popoverTriggerEl.value?.focus()\n }\n })\n }\n }\n\n useEscCloseStack(open, () => {\n handleOpenChange(false)\n })\n\n const handleRootOpenChange = (nextState: boolean) => {\n // Radix's controlled state reports changes only\n if (nextState === open.value) return\n\n // Prevent opening while loading\n if (props.loading && nextState) {\n return\n }\n\n handleOpenChange(nextState)\n }\n\n provide(CustomSelectContextKey, {\n open,\n handleOpenChange,\n handleRootOpenChange,\n selectContentRef,\n popoverTriggerEl,\n })\n\n const layer: SelectLayer = { parent: inject(SelectLayerKey, null), content: selectContentRef }\n provide(SelectLayerKey, layer)\n\n // Focus entering another Select's menu is outside this one, unless that\n // Select is nested in this one's menu (see SelectLayer)\n const handleFocusIn = (evt: FocusEvent) => {\n const target = evt.target as Node | null\n if (!open.value || !target) return\n for (const other of mountedSelectLayers) {\n if (other !== layer && other.content.value?.contains(target) && !isNestedIn(other, layer)) {\n handleRootOpenChange(false)\n return\n }\n }\n }\n\n let listenerDocument: Document | null = null\n onMounted(() => {\n mounted.value = true\n mountedSelectLayers.add(layer)\n listenerDocument = triggerEl.value?.ownerDocument ?? document\n listenerDocument.addEventListener(\"focusin\", handleFocusIn)\n })\n onBeforeUnmount(() => {\n mountedSelectLayers.delete(layer)\n listenerDocument?.removeEventListener(\"focusin\", handleFocusIn)\n listenerDocument = null\n })\n\n const renderTrigger = () => {\n const renderProps: SelectTriggerRenderProps = {\n open: open.value,\n onToggle: () => {\n open.value = !open.value\n },\n }\n if (slots.trigger) return slots.trigger(renderProps)\n if (props.trigger) return props.trigger(renderProps)\n return h(SelectTrigger, { onOpenChange: handleOpenChange })\n }\n\n return () => {\n void slotsVersion.value\n return h(\n RekaPopoverRoot,\n { \"open\": open.value, \"onUpdate:open\": handleRootOpenChange, \"modal\": false },\n {\n default: () => [\n h(SelectPopoverTrigger, null, { default: renderTrigger }),\n // React replaces the menu's wrapper when it opens or closes (see\n // TransitionGroup), so React DOM appends the new one to <body>.\n // A Teleport keeps its place in <body>: a new one per state moves\n // the wrapper to the end the same way.\n h(RekaPopoverPortal, { key: open.value ? \"open\" : \"closed\", forceMount: mounted.value }, {\n default: () => [\n h(\n TransitionGroup,\n { class: s.Menu, enterDuration: 350, exitDuration: 200, disableAnimations: true },\n { default: () => [open.value ? h(SelectPopoverContent, { key: \"dropdown\" }) : createCommentVNode()] },\n ),\n ],\n }),\n ],\n },\n )\n }\n },\n})\n\n// The element Reka's content renders (`as`). Raw: Reka passes `as` through\n// reactive props, and Vue warns about a component made reactive.\nconst SelectContentElement = markRaw(\n defineComponent({\n name: \"SelectContentElement\",\n inheritAttrs: false,\n setup(_props, { slots, attrs }) {\n const { selectContentRef } = inject(CustomSelectContextKey)!\n const setContentRef = (el: unknown) => {\n selectContentRef.value = (el as HTMLElement | null) ?? null\n }\n\n return () => {\n const { \"dir\": _dir, \"aria-labelledby\": _labelledBy, style, ...rest } = attrs\n return h(\"div\", { ...rest, style: withRadixVariableNames(style, \"popover\"), ref: setContentRef }, slots.default?.())\n }\n },\n }),\n)\n\nconst SelectPopoverContent = defineComponent({\n name: \"SelectPopoverContent\",\n setup() {\n const { props, align, alignOffset, listMinWidth } = useSelectContext()\n const { handleRootOpenChange, popoverTriggerEl } = inject(CustomSelectContextKey)!\n // Radix (1.8.1) dismisses on the click that follows a primary pointer down outside\n const { onPointerDownOutside, onFocusOutside } = useDeferredPointerDownOutside((originalEvent) => {\n // The trigger is not outside: Radix's non-modal content keeps the popover open\n if (popoverTriggerEl.value?.contains(originalEvent.target as Node | null)) return\n handleRootOpenChange(false)\n })\n\n return () =>\n h(\n RekaPopoverContent,\n {\n as: SelectContentElement,\n class: s.MenuList,\n \"data-pill\": props.pill ? \"\" : undefined,\n side: props.side,\n sideOffset: 5,\n align: align.value,\n alignOffset: alignOffset.value,\n avoidCollisions: props.avoidCollisions,\n collisionPadding: { bottom: 30, top: 30 },\n // Prevent Reka's auto focus so we can handle our own from within <CustomSelectMenu />\n onOpenAutoFocus: preventDefaultHandler,\n onCloseAutoFocus: preventDefaultHandler,\n onEscapeKeyDown: preventDefaultHandler,\n onPointerDownOutside,\n onFocusOutside,\n style: toCssVariables({\n \"select-list-width\": props.listWidth,\n \"select-list-min-width\": listMinWidth.value,\n \"select-list-max-width\": props.listMaxWidth,\n }),\n },\n { default: () => h(CustomSelectMenu) },\n )\n },\n})\n\n/**\n * Focuses an element that mounted in this tick. Vue skips a listener for an\n * event stamped (`_vts`) no later than the moment the listener was attached\n * (a time cached for the tick), so a focus fired within the millisecond the\n * menu mounted would not reach the search Input's own focus listener once\n * Reka's capture listener has stamped it: its `data-focused` would stay\n * \"false\", while React's onFocus always runs. The focus events are stamped\n * one millisecond later for the listeners on their way.\n *\n * `_vts` is a private field of Vue's runtime-dom event invoker. Deferring the\n * focus instead was tried and breaks parity, because React focuses\n * synchronously in its mount effect: in the next animation frame, keys and\n * Escape pressed right after opening reach the trigger, not the menu; in a\n * 1ms timeout (a 0ms one fires within the same millisecond and is skipped\n * too), a menu opened and closed quickly takes focus after closing. Should\n * Vue drop the field, the stamp is ignored and only the search input's\n * `data-focused` is affected.\n */\nconst focusMounted = (element: HTMLElement) => {\n const view = element.ownerDocument.defaultView\n const stamp = (event: Event) => {\n const vueEvent = event as Event & { _vts?: number }\n if (event.target === element && !vueEvent._vts) vueEvent._vts = Date.now() + 1\n }\n\n view?.addEventListener(\"focus\", stamp, { capture: true })\n view?.addEventListener(\"focusin\", stamp, { capture: true })\n try {\n element.focus({ preventScroll: true })\n } finally {\n view?.removeEventListener(\"focus\", stamp, { capture: true })\n view?.removeEventListener(\"focusin\", stamp, { capture: true })\n }\n}\n\nconst CustomSelectMenu = defineComponent({\n name: \"CustomSelectMenu\",\n setup() {\n const { props, searchable, searchPredicate } = useSelectContext()\n const { handleOpenChange } = inject(CustomSelectContextKey)!\n const menuRef = shallowRef<HTMLElement | null>(null)\n const listRef = shallowRef<HTMLElement | null>(null)\n const searchInputRef = shallowRef<HTMLInputElement | null>(null)\n const searchTerm = ref(\"\")\n const multiple = props.multiple\n const value = props.value\n const highlightedValue = ref<string>(\n ((multiple ? (value as string[])[0] : (value as string)) || getFirstValidOption(props.options)?.value) ?? \"\",\n )\n const typeahead = createTypeahead()\n const listId = `select-list-${useId()}`\n\n // Lock `value` for a given open to prevent janky change during close animation\n // MultiSelect reads its live selection instead of this per-open snapshot.\n const openingValue = multiple ? \"\" : (value as string)\n\n // Trim and lowercase search value\n const literalSearchTerm = computed(() => searchTerm.value.trim().toLocaleLowerCase())\n const filteredOptions = computed(() => filterOptions(props.options, literalSearchTerm.value, searchPredicate()))\n const firstOption = computed(() => getFirstValidOption(filteredOptions.value))\n\n const requestClose = () => handleOpenChange(false)\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n const multiple = props.multiple\n const value = props.value\n const firstValue = multiple ? (value as string[])[0] : (value as string)\n const currentHighlightedValue = highlightedValue.value\n const targetValue = currentHighlightedValue || firstOption.value?.value || firstValue\n const isFocusedInSearch = document.activeElement === searchInputRef.value\n\n const menuElement = menuRef.value\n\n // Should be generally impossible for the menu element to not exist\n if (!menuElement) {\n return\n }\n\n const triggerHighlightedOption = () => {\n const pointerUpEvent = new PointerEvent(\"pointerup\", {\n bubbles: true,\n cancelable: true,\n pointerType: \"mouse\",\n })\n\n // Find the current highlighted option\n const selectedOption = findOptionByValue(currentHighlightedValue, menuElement)\n selectedOption?.dispatchEvent(pointerUpEvent)\n }\n\n const highlightOption = (val: string, element: Element) => {\n highlightedValue.value = val\n element.scrollIntoView({ block: \"nearest\" })\n }\n\n const highlightSelectedOrFirstOption = () => {\n // Attempt to move highlight to selected item\n const maybeFirstValue = multiple ? (value as string[])[0] : (value as string)\n\n if (maybeFirstValue) {\n const selectedElement = findOptionByValue(maybeFirstValue, menuElement)\n\n if (selectedElement) {\n highlightOption(maybeFirstValue, selectedElement)\n return\n }\n }\n\n // If value isn't set, or the selected node wasn't found in the DOM,\n // attempt to move focus to the first valid option.\n const firstValidOption = getFirstValidOption(props.options)\n\n if (firstValidOption) {\n const firstValidOptionElement = findOptionByValue(firstValidOption.value, menuElement)\n if (firstValidOptionElement) {\n highlightOption(firstValidOption.value, firstValidOptionElement)\n }\n }\n }\n\n // Commands\n switch (key) {\n case \"ArrowDown\": {\n evt.preventDefault()\n\n // If there's no highlighted value, or the highlighted value is not in the DOM\n if (!currentHighlightedValue || !findOptionByValue(currentHighlightedValue, menuElement)) {\n highlightSelectedOrFirstOption()\n return\n }\n\n // Otherwise, move to the next option\n const nextElement = findNextOption(currentHighlightedValue, menuElement)\n const nextValue = nextElement?.getAttribute(\"data-option-id\")\n if (nextElement && nextValue) {\n highlightOption(nextValue, nextElement)\n }\n\n return\n }\n case \"ArrowUp\": {\n evt.preventDefault()\n\n // If there's no highlighted value, or the highlighted value is not in the DOM\n if (!currentHighlightedValue || !findOptionByValue(currentHighlightedValue, menuElement)) {\n highlightSelectedOrFirstOption()\n return\n }\n\n const previousElement = findPreviousOption(targetValue as string, menuElement)\n const previousValue = previousElement?.getAttribute(\"data-option-id\")\n if (previousElement && previousValue) {\n highlightOption(previousValue, previousElement)\n }\n\n return\n }\n case \"Enter\":\n // Prevent default enter behavior from the search input, if present\n evt.preventDefault()\n\n // Send a pointerup event into the currently highlighted option\n triggerHighlightedOption()\n\n return\n case \" \":\n // Allow spaces in search, and don't treat as enter\n // if there is a valid literalSearchTerm.\n if (literalSearchTerm.value && isFocusedInSearch) {\n return\n }\n\n // Prevent space from entering search input\n evt.preventDefault()\n\n // Send a pointerup event into the currently highlighted option\n triggerHighlightedOption()\n\n return\n default:\n break\n }\n\n // If not a command, check for typeahead\n if (isTypeaheadKey(evt)) {\n // Skip typeahead logic when we're focused in the search input\n if (isFocusedInSearch) {\n return\n }\n\n // Extend the current typeahead and get the latest value\n const currentTypeaheadValue = typeahead(key)\n\n // Stop other listeners from reacting\n evt.stopPropagation()\n\n // Attempt to filter options based on the value, starting at the highlighted value\n const firstMatchingOption = getTypeaheadOption(props.options, currentTypeaheadValue, currentHighlightedValue)\n\n if (firstMatchingOption) {\n const matchedNode = findOptionByValue(firstMatchingOption.value, menuElement)\n\n // Only change the highlight if we found the actual node\n if (matchedNode) {\n highlightedValue.value = firstMatchingOption.value\n // Ensure the newly highlighted option is scrolled into view\n matchedNode.scrollIntoView({ block: \"nearest\" })\n }\n }\n }\n }\n\n provide(CustomSelectMenuContextKey, {\n openingValue,\n listId,\n requestClose,\n listRef,\n highlightedValue,\n searchTerm,\n searchInputRef,\n })\n\n // The focused element (the search input, or the list without one) points\n // assistive tech at the highlighted option, when that option is rendered\n const syncActiveDescendant = () => {\n const target = searchInputRef.value || listRef.value\n if (!target || !menuRef.value) {\n return\n }\n\n const highlightedOption = highlightedValue.value ? findOptionByValue(highlightedValue.value, menuRef.value) : null\n if (highlightedOption?.id) {\n target.setAttribute(\"aria-activedescendant\", highlightedOption.id)\n } else {\n target.removeAttribute(\"aria-activedescendant\")\n }\n }\n watch([highlightedValue, filteredOptions], syncActiveDescendant, { flush: \"post\" })\n\n // On mount behavior\n onMounted(() => {\n syncActiveDescendant()\n\n // Like React's mount effect, the scroll target is the highlight at mount\n const initialHighlightedValue = highlightedValue.value\n\n // Ensure initial highlighted option is in view\n // NOTE: Allowing for a render frame ensures content is positioned correctly before scrolling it into view.\n waitForAnimationFrame(() => {\n if (!menuRef.value) {\n return\n }\n\n // Ensure the highlighted option is in view\n const currentOption = findOptionByValue(initialHighlightedValue, menuRef.value)\n // Scroll the selected item into view, and its bottom edge.\n currentOption?.scrollIntoView({ block: \"center\" })\n })\n\n // Send initial focus to the search input, or the list without one (the\n // menu container when there are no options), to capture key events\n const autoFocusTarget = searchInputRef.value || listRef.value || menuRef.value\n if (autoFocusTarget) focusMounted(autoFocusTarget)\n })\n\n // On search behavior (React's layout effect on `filteredOptions`, skipped on mount)\n watch(\n filteredOptions,\n (nextFilteredOptions) => {\n // Impossible while mounted, list ref will exist\n if (!listRef.value) {\n return\n }\n\n // Reset scroll position to the top\n listRef.value.scrollTop = 0\n\n // Highlight first item in the list\n const maybeFirstOption = getFirstValidOption(nextFilteredOptions)\n if (maybeFirstOption) highlightedValue.value = maybeFirstOption.value\n },\n { flush: \"post\" },\n )\n\n return () =>\n h(\n \"div\",\n {\n class: s.MenuInner,\n onKeydown: handleKeyDown,\n ref: menuRef,\n // Without search, the list takes focus (and the tab stop); the container\n // stays focusable so a click on it keeps the keys here\n tabindex: !searchable.value && filteredOptions.value.length ? -1 : 0,\n },\n [\n searchable.value\n ? h(CustomSelectSearch, {\n \"value\": searchTerm.value,\n \"hasResults\": !!filteredOptions.value.length,\n \"onUpdate:value\": (next: string) => {\n searchTerm.value = next\n },\n })\n : null,\n h(CustomSelectList, { filteredOptions: filteredOptions.value }),\n h(CustomSelectActions),\n ],\n )\n },\n})\n\nconst CustomSelectSearch = defineComponent({\n name: \"CustomSelectSearch\",\n props: {\n value: { type: String, required: true },\n /** Whether the list is rendered, for `aria-controls` */\n hasResults: { type: Boolean, required: true },\n },\n emits: {\n \"update:value\": (_value: string) => true,\n },\n setup(props, { emit }) {\n const { props: selectProps } = useSelectContext()\n const { listId, searchInputRef } = useCustomSelectMenuContext()\n const searchRef = shallowRef<HTMLElement | null>(null)\n\n // React's `ref` on Input is its <input>. Read before the menu's mount\n // focus runs (child mounted hooks run first); an exposed component ref\n // is not populated that early.\n onMounted(() => {\n searchInputRef.value = searchRef.value?.querySelector(\"input\") ?? null\n })\n onBeforeUnmount(() => {\n searchInputRef.value = null\n })\n\n return () =>\n h(\"div\", { class: s.Search, ref: searchRef }, [\n h(\n Input,\n {\n \"value\": props.value,\n \"size\": selectProps.searchSize,\n \"placeholder\": selectProps.searchPlaceholder,\n \"aria-label\": selectProps.searchAriaLabel,\n \"onUpdate:value\": (next: string) => emit(\"update:value\", next),\n // The native attribute: it reaches the <input> whether or not\n // Input forwards its `autoComplete` prop (React's Input does)\n \"autocomplete\": \"off\",\n \"autocorrect\": \"off\",\n \"spellcheck\": false,\n \"aria-autocomplete\": \"list\",\n \"role\": \"combobox\",\n // The list, while there is one: with no results it is not rendered\n \"aria-controls\": props.hasResults ? listId : undefined,\n \"aria-expanded\": true,\n },\n {\n startAdornment: () =>\n h(Search, { width: 16, height: 16, class: \"fill-secondary\", fill: \"var(--color-text-secondary)\" }),\n },\n ),\n ])\n },\n})\n\nconst isOptionGroup = <T extends Option>(mixedOption: T | OptionGroup<T>): mixedOption is OptionGroup<T> => {\n return \"options\" in mixedOption\n}\n\nconst isOptionGroupArray = <T extends Option>(arr: Options<T>): arr is OptionGroup<T>[] => {\n return !!arr[0] && isOptionGroup(arr[0])\n}\n\nconst HARD_OPTIONS_LIMIT = 300\n\nconst CustomSelectList = defineComponent({\n name: \"CustomSelectList\",\n props: {\n filteredOptions: { type: Array as PropType<Options<Option>>, required: true },\n },\n setup(props) {\n const { props: selectProps, slots, slotsVersion, triggerId, searchable } = useSelectContext()\n const { listId, listRef } = useCustomSelectMenuContext()\n const setListRef = (el: unknown) => {\n listRef.value = (el as HTMLElement | null) ?? null\n }\n\n return () => {\n void slotsVersion.value\n const { filteredOptions } = props\n\n if (!filteredOptions.length) {\n if (slots.searchEmptyMessage) {\n return h(\"div\", { class: s.SearchEmpty }, slots.searchEmptyMessage())\n }\n\n const { searchEmptyMessage } = selectProps\n return typeof searchEmptyMessage === \"string\"\n ? h(\"p\", { \"class\": s.SearchEmpty, \"data-text-only\": \"true\" }, searchEmptyMessage)\n : h(\"div\", { class: s.SearchEmpty }, [searchEmptyMessage as VNodeChild])\n }\n\n // We hard limit within groups, so at this level we will only limit flat arrays\n const isGrouped = isOptionGroupArray(filteredOptions)\n const hasHardLimit = !isGrouped && filteredOptions.length > HARD_OPTIONS_LIMIT\n\n const options = isGrouped\n ? filteredOptions.map((group) => h(CustomSelectGroup, { key: group.label, group }))\n : (filteredOptions as Option[])\n .slice(0, HARD_OPTIONS_LIMIT)\n .map((option) => h(CustomSelectOption, { key: option.value, option }))\n\n const { ariaLabel, ariaLabelledby } = selectProps\n const customTrigger = !!(slots.trigger || selectProps.trigger)\n return h(\n \"div\",\n {\n \"id\": listId,\n \"class\": s.OptionsList,\n \"ref\": setListRef,\n \"role\": \"listbox\",\n // Named like the trigger: its label, or the default trigger itself\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledby ?? (ariaLabel || customTrigger ? undefined : triggerId),\n \"aria-multiselectable\": selectProps.multiple || undefined,\n // Without search, the list is the focused element\n \"tabindex\": searchable.value ? undefined : 0,\n },\n [\n ...options,\n hasHardLimit ? h(CustomSelectHardLimit, { numHidden: filteredOptions.length - HARD_OPTIONS_LIMIT }) : null,\n ],\n )\n }\n },\n})\n\nconst DEFAULT_OPTIONS_LIMIT = {\n limit: 100,\n label: \"Show all\",\n}\n\nconst CustomSelectGroup = defineComponent({\n name: \"CustomSelectGroup\",\n props: {\n group: { type: Object as PropType<OptionGroup<Option>>, required: true },\n },\n setup(props) {\n const groupId = useId()\n const headingId = useId()\n const { searchTerm, highlightedValue } = useCustomSelectMenuContext()\n const limitExpanded = ref(false)\n\n return () => {\n const { label, options, optionsLimit = DEFAULT_OPTIONS_LIMIT } = props.group\n const hasExpandableLimit = optionsLimit.limit < options.length && !searchTerm.value && !limitExpanded.value\n const hasHardLimit = HARD_OPTIONS_LIMIT < options.length && !hasExpandableLimit\n\n let maybeLimitedOptions = options\n if (hasExpandableLimit) {\n maybeLimitedOptions = options.slice(0, optionsLimit.limit)\n } else if (hasHardLimit) {\n maybeLimitedOptions = options.slice(0, HARD_OPTIONS_LIMIT)\n }\n\n const handleLimitExpanded = () => {\n // Expand options\n limitExpanded.value = true\n\n // Set highlight to the first option from the newly expanded list\n highlightedValue.value = options[optionsLimit.limit]!.value\n }\n\n // A group named by its heading. NOTE: The arrow keys walk every option in\n // document order (findNextOption), so they cross from group to group.\n return h(\"div\", { \"role\": \"group\", \"aria-labelledby\": headingId, \"class\": s.OptionGroup }, [\n // No indicator slot: the heading labels the whole section\n h(\"div\", { id: headingId, class: s.OptionGroupHeading }, label),\n ...maybeLimitedOptions.map((option) => h(CustomSelectOption, { key: option.value, option })),\n hasExpandableLimit\n ? h(CustomSelectExpandableLimit, {\n value: `group-limit-${groupId}`,\n label: optionsLimit.label,\n onPointerUp: handleLimitExpanded,\n })\n : null,\n hasHardLimit ? h(CustomSelectHardLimit, { numHidden: options.length - HARD_OPTIONS_LIMIT }) : null,\n ])\n }\n },\n})\n\nconst CustomSelectHardLimit = defineComponent({\n name: \"CustomSelectHardLimit\",\n props: {\n numHidden: { type: Number, required: true },\n },\n setup(props) {\n const { props: selectProps } = useSelectContext()\n\n return () =>\n h(\"div\", { class: s.OptionHardLimitHeading }, [\n // The note lines up with the option labels above it, so it borrows their indicator column.\n selectProps.checkPosition === \"start\" ? h(\"div\", { class: s.OptionIndicatorSlot }) : null,\n `…and ${props.numHidden.toLocaleString()} more options. Use search to refine results further.`,\n ])\n },\n})\n\nconst CustomSelectExpandableLimit = defineComponent({\n name: \"CustomSelectExpandableLimit\",\n props: {\n value: { type: String, required: true },\n label: { type: String, required: true },\n onPointerUp: { type: Function as PropType<() => void>, required: true },\n },\n setup(props) {\n const { props: selectProps } = useSelectContext()\n const { highlightedValue } = useCustomSelectMenuContext()\n const optionId = useId()\n\n const handlePointerMove = () => {\n if (props.value === highlightedValue.value) {\n return\n }\n\n highlightedValue.value = props.value\n }\n\n const handlePointerLeave = () => {\n // Clear the highlight only if it is this one\n if (highlightedValue.value === props.value) {\n highlightedValue.value = \"\"\n }\n }\n\n // This component acts a LOT like an Option, but has enough bespoke behavior\n // that it cannot literally be one.\n return () => {\n const isHighlighted = props.value === highlightedValue.value\n\n return h(\n \"div\",\n {\n \"id\": optionId,\n \"class\": clsx(s.Option, s.OptionsLimit),\n \"data-option-id\": props.value,\n \"data-highlight\": isHighlighted ? \"\" : undefined,\n // Not selectable: no aria-selected\n \"role\": \"option\",\n \"onPointerup\": props.onPointerUp,\n \"onPointermove\": handlePointerMove,\n \"onPointerleave\": handlePointerLeave,\n },\n [\n h(\"div\", { class: clsx(s.PressableInner, s.OptionInner) }, [\n // The row lines up with the option labels above it, so it borrows their indicator column.\n selectProps.checkPosition === \"start\" ? h(\"div\", { class: s.OptionIndicatorSlot }) : null,\n props.label,\n ]),\n ],\n )\n }\n },\n})\n\nconst INTERNAL_DOM_SELECTION_DATA_ATTR = \"data-option-id\"\n\nconst CustomSelectOption = defineComponent({\n name: \"CustomSelectOption\",\n props: {\n option: { type: Object as PropType<Option>, required: true },\n },\n setup(props) {\n const { props: selectProps, slots, slotsVersion, onSelect } = useSelectContext()\n const { openingValue, requestClose, highlightedValue } = useCustomSelectMenuContext()\n // Referenced by the list's aria-activedescendant while highlighted\n const optionId = useId()\n\n // NOTE: SingleSelect mode keeps the opening value instead of the live value\n // to avoid selecting the item as the select closes.\n const isSelected = () =>\n selectProps.multiple\n ? (selectProps.value as string[]).includes(props.option.value)\n : props.option.value === openingValue\n\n const handlePointerUp = () => {\n if (selectProps.multiple) {\n // Trigger the change, optionally as a remove\n onSelect(props.option, isSelected())\n } else {\n onSelect(props.option)\n // Request the dropdown to close\n requestClose()\n }\n }\n\n const handlePointerMove = () => {\n if (props.option.value === highlightedValue.value) {\n return\n }\n\n highlightedValue.value = props.option.value\n }\n\n const handlePointerLeave = () => {\n // Clear the highlight only if it is this one, removing the active highlight on the menu.\n if (highlightedValue.value === props.option.value) {\n highlightedValue.value = \"\"\n }\n }\n\n const renderOptionView = (option: Option): VNodeChild => {\n if (slots.optionView) return slots.optionView(option)\n if (selectProps.OptionView) return h(selectProps.OptionView, option)\n return option.label\n }\n\n const renderTooltip = (tooltip: NonNullable<Option[\"tooltip\"]>) => {\n const content = tooltip.content\n return typeof content === \"function\"\n ? h(Tooltip, { maxWidth: tooltip.maxWidth, side: \"right\" }, { default: () => h(Info), content })\n : h(Tooltip, { content, maxWidth: tooltip.maxWidth, side: \"right\" }, { default: () => h(Info) })\n }\n\n return () => {\n void slotsVersion.value\n const { option } = props\n const { value, disabled, tooltip } = option\n const selected = isSelected()\n const isHighlighted = value === highlightedValue.value\n const checkPosition = selectProps.checkPosition\n\n return h(\n \"div\",\n {\n \"id\": optionId,\n \"class\": clsx(s.Option, selectProps.optionClassName),\n \"data-highlight\": isHighlighted ? \"\" : undefined,\n \"role\": \"option\",\n // The selection; the highlight is the list's aria-activedescendant\n \"aria-selected\": selected,\n \"data-selected\": selected ? \"\" : undefined,\n // Internal attribute for selecting DOM nodes\n [INTERNAL_DOM_SELECTION_DATA_ATTR]: value,\n // Allow options to behave like a native select, when you can open and select an item in a single click\n \"onPointerup\": disabled ? undefined : handlePointerUp,\n // Pointer move prevents contention between keyboard presses and a still mouse\n \"onPointermove\": disabled ? undefined : handlePointerMove,\n \"onPointerleave\": disabled ? undefined : handlePointerLeave,\n \"aria-disabled\": disabled,\n \"data-disabled\": disabled ? \"\" : undefined,\n },\n [\n h(\"div\", { class: s.PressableInner }, [\n checkPosition === \"start\"\n ? h(\"div\", { \"class\": s.OptionIndicatorSlot, \"data-position\": \"start\" }, [\n selected ? h(Check, { class: s.OptionCheck }) : null,\n ])\n : null,\n h(\"div\", { class: s.OptionLeading }, [\n h(\"div\", { class: s.OptionInner }, [renderOptionView(option), tooltip ? renderTooltip(tooltip) : null]),\n // React's `description && ...`: a 0 (or NaN) renders as text\n option.description &&\n h(\"div\", { class: clsx(s.OptionInner, s.OptionDescription) }, [renderContent(option.description)]),\n ]),\n checkPosition === \"end\"\n ? h(\"div\", { \"class\": s.OptionIndicatorSlot, \"data-position\": \"end\" }, [\n selected ? h(Check, { class: s.OptionCheck }) : null,\n ])\n : null,\n ]),\n ],\n )\n }\n },\n})\n\nconst CustomSelectActions = defineComponent({\n name: \"CustomSelectActions\",\n setup() {\n const { actions } = useSelectContext()\n\n return () => {\n if (actions.value.length === 0) {\n return null\n }\n\n return h(\n \"div\",\n { class: s.ActionsContainer },\n actions.value.map((action) => h(CustomSelectAction, { key: action.id, action })),\n )\n }\n },\n})\n\n/**\n * React handles events of the portalled menu at <body> and stops a synthetic\n * event there: <body>'s own listeners (the Escape stack) still run, the\n * document's and window's do not. Stopping the native event here instead\n * would keep it from <body>.\n */\nconst stopAfterBody = (evt: Event) => {\n const body = (evt.currentTarget as Node | null)?.ownerDocument?.body\n if (!body) {\n evt.stopPropagation()\n return\n }\n body.addEventListener(\n evt.type,\n (event) => {\n if (event === evt) event.stopPropagation()\n },\n { once: true },\n )\n}\n\nconst CustomSelectAction = defineComponent({\n name: \"CustomSelectAction\",\n props: {\n action: { type: Object as PropType<SelectAction>, required: true },\n },\n setup(props) {\n const { onActionSelect } = useSelectContext()\n const { requestClose } = useCustomSelectMenuContext()\n\n const handlePointerUp = () => {\n // Trigger the action through the context helper, not the method on this action (it may be a stale reference)\n onActionSelect(props.action.id)\n // Request to close the dropdown\n requestClose()\n }\n\n const handleKeyDown = (evt: KeyboardEvent) => {\n const key = evt.key\n\n switch (key) {\n case \"Tab\":\n // Allow tabbing to pass propagation as normal, which bubbles up to the focus scope\n break\n case \"Enter\":\n case \" \":\n evt.stopPropagation()\n handlePointerUp()\n break\n case \"Escape\":\n // The menu's key handler ignores Escape; the Escape stack on <body> closes the menu\n stopAfterBody(evt)\n break\n default:\n evt.stopPropagation()\n }\n }\n\n return () => {\n const { label, Icon, className } = props.action\n return h(\"div\", { class: s.Action, onPointerup: handlePointerUp, onKeydown: handleKeyDown, tabindex: 0 }, [\n h(\"div\", { class: clsx(s.ActionInner, className) }, [Icon ? h(Icon, { role: \"presentation\" }) : null, label]),\n ])\n }\n },\n})\n\n// ============================================================\n// Utilities\n// ============================================================\nconst defaultSearchPredicate = (option: Option, searchTerm: string) => option.label.toLowerCase().includes(searchTerm)\n\nconst filterOptions = <T extends Option>(\n options: Options<T>,\n searchTerm: string,\n searchIterator: SearchPredicate<T>,\n): Options<T> => {\n const searchValue = searchTerm.trim().toLocaleLowerCase()\n\n if (!searchValue) {\n return options\n }\n\n const filterOption = (option: T): boolean => searchIterator(option, searchValue)\n\n if (isOptionGroupArray(options)) {\n return options.reduce((acc, group) => {\n const filtered = group.options.filter(filterOption)\n\n if (filtered.length) {\n acc.push({\n ...group,\n options: filtered,\n })\n }\n return acc\n }, [] as OptionGroup<T>[])\n } else {\n return (options as T[]).reduce((acc, option) => {\n if (filterOption(option)) acc.push(option)\n return acc\n }, [] as T[])\n }\n}\n\nconst getFirstValidOption = <T extends Option>(options: Options<T>): T | undefined => {\n if (!options.length) {\n return undefined\n }\n\n let found: T | undefined\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const firstNonDisabled = opt.options.find((i) => !i.disabled)\n if (firstNonDisabled) {\n found = firstNonDisabled\n break\n }\n } else {\n if (!opt.disabled) {\n found = opt\n break\n }\n }\n }\n\n return found\n}\n\nconst getOptionByValue = <T extends Option>(options: Options<T>, value: string): T | undefined => {\n let found: T | undefined\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const exists = opt.options.find((i) => i.value === value)\n if (exists) {\n found = exists\n break\n }\n } else {\n if (opt.value === value) {\n found = opt\n break\n }\n }\n }\n\n return found\n}\n\nconst getOptionsByValues = <T extends Option>(options: Options<T>, values: string[]): T[] => {\n let found: T[] = []\n const lookup = new Set(values)\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n const exists = opt.options.filter((i) => lookup.has(i.value))\n found = found.concat(exists)\n } else {\n if (lookup.has(opt.value)) {\n found.push(opt)\n }\n }\n }\n\n return found\n}\n\nconst MAX_DOM_CRAWLS = 40\n\nconst findOptionByValue = (currentValue: string, container: HTMLElement) =>\n container.querySelector(`[data-option-id=\"${CSS.escape(currentValue)}\"]`)\n\nconst isValidOptionNode = (node: Element) => node.matches(\"[data-option-id]:not([data-disabled])\")\n\n// Steps from the current option to the nearest enabled one, one option row at a\n// time in document order: across groups (siblings would stop at a group's\n// edge), skipping disabled rows, at most MAX_DOM_CRAWLS rows away\nconst findAdjacentOption = (currentValue: string, container: HTMLElement, step: 1 | -1) => {\n const currentOption = findOptionByValue(currentValue, container)\n const rows = Array.from(container.querySelectorAll(\"[data-option-id]\"))\n\n let index = currentOption ? rows.indexOf(currentOption) : -1\n if (index === -1) {\n return undefined\n }\n\n for (let maxSteps = 0; maxSteps < MAX_DOM_CRAWLS; maxSteps += 1) {\n index += step\n const nextNode = rows[index]\n\n if (!nextNode) {\n return undefined\n }\n\n if (isValidOptionNode(nextNode)) {\n return nextNode\n }\n }\n}\n\nconst findNextOption = (currentValue: string, container: HTMLElement) =>\n findAdjacentOption(currentValue, container, 1)\n\nconst findPreviousOption = (currentValue: string, container: HTMLElement) =>\n findAdjacentOption(currentValue, container, -1)\n\nconst createTypeahead = () => {\n let currentValue: string = \"\"\n let timeoutId: ReturnType<typeof setTimeout> | undefined\n\n return (char: string) => {\n // Searching is case-insensitive\n char = char.toLowerCase()\n\n // Add the new character to the current value\n currentValue += char\n\n // Clear the previous timeout if there was one\n if (timeoutId) clearTimeout(timeoutId)\n\n // Reset the value after a brief delay\n timeoutId = setTimeout(() => {\n currentValue = \"\"\n }, 500)\n\n // When a user is typing the same value, like \"llll\", assume they are cycling through items starting with \"l\"\n const isCycling = char.repeat(currentValue.length) === currentValue\n\n // Return the typeahead value\n return isCycling ? char : currentValue\n }\n}\n\nconst isValidTypeaheadChar = (char: string): boolean => /^[a-zA-Z0-9]$/.test(char)\n\n// A shortcut (Ctrl+C, Cmd+A, Alt+letter) or a key another handler took is not typeahead\nconst isTypeaheadKey = (evt: KeyboardEvent): boolean =>\n isValidTypeaheadChar(evt.key) && !evt.ctrlKey && !evt.metaKey && !evt.altKey && !evt.defaultPrevented\n\nconst resolveElement = (instance: unknown): HTMLElement | null => {\n const node = instance && typeof instance === \"object\" && \"$el\" in instance ? (instance as { $el: unknown }).$el : instance\n // A multi-root component's $el is the text node opening its fragment; the\n // element follows it (as in Reka)\n const element = node instanceof Text ? node.nextElementSibling : node\n return element instanceof HTMLElement ? element : null\n}\n\nconst getTypeaheadOption = <T extends Option>(\n options: Options<T>,\n typeaheadValue: string,\n currentHighlightValue?: string,\n): T | undefined => {\n // Ensure options actually exist\n if (!options.length) {\n return undefined\n }\n\n let matchBeforeHighlight: T | undefined\n // If we aren't provided a highlighted value, start from the top (e.g., act like it's found)\n let foundHighlightedValue: boolean = !currentHighlightValue\n\n const optionValidAndMatches = ({ disabled, label, value }: T) => {\n // Side effect of looping\n if (value === currentHighlightValue) {\n foundHighlightedValue = true\n // Don't return highlighted value\n return false\n }\n\n return !disabled && label.toLowerCase().startsWith(typeaheadValue)\n }\n\n for (const opt of options) {\n if (isOptionGroup(opt)) {\n for (const option of opt.options) {\n if (optionValidAndMatches(option)) {\n if (foundHighlightedValue) {\n // We're done after we've found an after match, in any group\n return option\n } else {\n // Keep the first found \"before\" match\n matchBeforeHighlight = matchBeforeHighlight || option\n }\n }\n }\n } else {\n if (optionValidAndMatches(opt)) {\n if (foundHighlightedValue) {\n // We're done after we've found an after match\n return opt\n } else {\n // Keep the first found \"before\" match\n matchBeforeHighlight = matchBeforeHighlight || opt\n }\n }\n }\n }\n\n return matchBeforeHighlight\n}\n\ntype SelectOwnProps = InstanceType<typeof SelectComponent>[\"$props\"]\n\ntype SingleSelectProps = {\n /** Determines if the select should support multiple selection. @default false */\n multiple?: false\n /** Selected value. Bind `v-model:value`. */\n value: string\n onChange?: (option: Option) => void\n \"onUpdate:value\"?: (value: string) => void\n}\n\ntype MultiSelectProps = {\n /** Determines if the select should support multiple selection. @default false */\n multiple: true\n /** Selected values. Bind `v-model:value`. */\n value: string[]\n onChange?: (options: Option[]) => void\n \"onUpdate:value\"?: (value: string[]) => void\n}\n\n/** As in React, `multiple` decides the type of `value` and of the `change` and `update:value` payloads. */\nexport type SelectProps = Omit<SelectOwnProps, \"multiple\" | \"value\" | \"onChange\" | \"onUpdate:value\"> &\n (SingleSelectProps | MultiSelectProps)\n\n/**\n * Select dropdown with option groups, descriptions, search (over 15\n * options), multiple selection and actions. Bind `v-model:value`.\n */\nexport const Select = SelectComponent as typeof SelectComponent & { new (): { $props: SelectProps } }\n"]}
|
|
@@ -115,6 +115,14 @@ export declare const MenuContent: import("vue").DefineComponent<import("vue").Ex
|
|
|
115
115
|
* @default "md"
|
|
116
116
|
*/
|
|
117
117
|
size: PropType<"sm" | "md" | "lg">;
|
|
118
|
+
/**
|
|
119
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
120
|
+
* @default false
|
|
121
|
+
*/
|
|
122
|
+
pill: {
|
|
123
|
+
type: BooleanConstructor;
|
|
124
|
+
default: boolean;
|
|
125
|
+
};
|
|
118
126
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
119
127
|
[key: string]: any;
|
|
120
128
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
@@ -170,10 +178,19 @@ export declare const MenuContent: import("vue").DefineComponent<import("vue").Ex
|
|
|
170
178
|
* @default "md"
|
|
171
179
|
*/
|
|
172
180
|
size: PropType<"sm" | "md" | "lg">;
|
|
181
|
+
/**
|
|
182
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
183
|
+
* @default false
|
|
184
|
+
*/
|
|
185
|
+
pill: {
|
|
186
|
+
type: BooleanConstructor;
|
|
187
|
+
default: boolean;
|
|
188
|
+
};
|
|
173
189
|
}>> & Readonly<{
|
|
174
190
|
onCloseAutoFocus?: ((_event: Event) => any) | undefined;
|
|
175
191
|
}>, {
|
|
176
192
|
layout: "vertical" | "horizontal";
|
|
193
|
+
pill: boolean;
|
|
177
194
|
sideOffset: number;
|
|
178
195
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
179
196
|
/**
|
|
@@ -385,6 +402,14 @@ export declare const MenuSubContent: import("vue").DefineComponent<import("vue")
|
|
|
385
402
|
};
|
|
386
403
|
/** Defines the `max-height` property of the content, in pixels. */
|
|
387
404
|
maxHeight: NumberConstructor;
|
|
405
|
+
/**
|
|
406
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
407
|
+
* @default false
|
|
408
|
+
*/
|
|
409
|
+
pill: {
|
|
410
|
+
type: BooleanConstructor;
|
|
411
|
+
default: boolean;
|
|
412
|
+
};
|
|
388
413
|
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
389
414
|
[key: string]: any;
|
|
390
415
|
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -410,8 +435,17 @@ export declare const MenuSubContent: import("vue").DefineComponent<import("vue")
|
|
|
410
435
|
};
|
|
411
436
|
/** Defines the `max-height` property of the content, in pixels. */
|
|
412
437
|
maxHeight: NumberConstructor;
|
|
438
|
+
/**
|
|
439
|
+
* Rounder list with fully rounded rows, for menus that sit beside pill controls.
|
|
440
|
+
* @default false
|
|
441
|
+
*/
|
|
442
|
+
pill: {
|
|
443
|
+
type: BooleanConstructor;
|
|
444
|
+
default: boolean;
|
|
445
|
+
};
|
|
413
446
|
}>> & Readonly<{}>, {
|
|
414
447
|
width: SizeValue;
|
|
448
|
+
pill: boolean;
|
|
415
449
|
minWidth: SizeValue;
|
|
416
450
|
sideOffset: number;
|
|
417
451
|
alignOffset: number;
|