@osdk/react-components 0.8.0-main-19b791320004e4dd08af9a4e4d30e8fc1f7e721a → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -13
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-Z5MZGFLK.cjs → chunk-66353XCC.cjs} +4 -4
- package/build/cjs/{chunk-Z5MZGFLK.cjs.map → chunk-66353XCC.cjs.map} +1 -1
- package/build/cjs/{chunk-FHHML652.cjs → chunk-EFOD6VDT.cjs} +4 -4
- package/build/cjs/{chunk-FHHML652.cjs.map → chunk-EFOD6VDT.cjs.map} +1 -1
- package/build/cjs/{chunk-DVNYSNQS.cjs → chunk-WII3JKZ5.cjs} +4 -4
- package/build/cjs/{chunk-DVNYSNQS.cjs.map → chunk-WII3JKZ5.cjs.map} +1 -1
- package/build/cjs/{chunk-IG3UBZD2.cjs → chunk-WPIIXXRX.cjs} +3 -3
- package/build/cjs/chunk-WPIIXXRX.cjs.map +1 -0
- package/build/cjs/{chunk-6U6S3VI2.cjs → chunk-YLTIGE7W.cjs} +4 -4
- package/build/cjs/{chunk-6U6S3VI2.cjs.map → chunk-YLTIGE7W.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +4 -4
- package/build/cjs/public/experimental/filter-list.cjs +6 -6
- package/build/cjs/public/experimental/object-table.cjs +8 -8
- package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
- package/build/cjs/public/experimental.cjs +39 -39
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/package.json +8 -8
- package/build/cjs/chunk-IG3UBZD2.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/hooks/useIsMounted.ts","../../src/shared/hooks/useAsyncAction.ts","../../src/action-form/BaseForm.module.css","../../src/action-form/utils/extractValidationRules.ts","../../src/action-form/FormField.module.css","../../src/action-form/FormField.tsx","../../src/action-form/FormFieldApi.ts","../../src/action-form/fields/CustomField.tsx","../../src/action-form/fields/DateRangeInputField.module.css","../../src/action-form/fields/LazyDateRangeCalendar.tsx","../../src/action-form/fields/DateRangeInputField.tsx","../../src/action-form/fields/FilePickerField.module.css","../../src/action-form/fields/FilePickerField.tsx","../../src/action-form/fields/NumberInputField.module.css","../../src/action-form/fields/NumberInputField.tsx","../../src/base-components/icon/BlueprintIcon.tsx","../../src/action-form/fields/ObjectSetField.module.css","../../src/action-form/fields/ObjectSetField.tsx","../../src/action-form/fields/RadioButtonsField.module.css","../../src/action-form/fields/RadioButtonsField.tsx","../../src/action-form/fields/BaseInput.module.css","../../src/action-form/fields/TextAreaField.tsx","../../src/action-form/fields/TextInputField.tsx","../../src/action-form/fields/FormFieldRenderer.tsx","../../src/action-form/fields/FieldBridge.tsx","../../src/action-form/FormHeader.module.css","../../src/action-form/FormHeader.tsx","../../src/action-form/BaseForm.tsx","../../src/action-form/utils/coerceFieldValue.ts","../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../src/action-form/ActionForm.tsx","../../src/public/experimental/action-form.ts"],"names":["useRef","useEffect","useState","useCallback","memo","React","Suspense","DatePickerCommon_default","stopPropagation","DateRangeInputField","useId","formatDatetimeForInput","formatDateForInput","formatDateForDisplay","parseDatetimeFromInput","parseDateFromInput","useDateEditState","parseTimeString","TimePicker","getTimeValue","Popover","classnames","Input","useMemo","Button","Cross","ChevronUp","ChevronDown","SVGIconContainer","Icons","IconSize","typedReactMemo","useOsdkMetadata","useObjectSet","SkeletonBar","RadioGroup","Radio","_extends","DropdownField","DatetimePickerField","useController","useForm","classNames","ActionButton","Tooltip","ErrorIcon","assertUnreachable","useOsdkAction","ActionForm","withOsdkMetrics"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,SAAS,YAAA,GAAe;AAC7B,EAAA,MAAM,YAAA,GAAeA,eAAO,IAAI,CAAA;AAChC,EAAAC,iBAAA,CAAU,SAAS,iBAAA,GAAoB;AACrC,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AAAA,IACzB,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO,YAAA;AACT;;;ACJO,SAAS,eAAe,MAAA,EAAQ;AACrC,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIC,iBAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,iBAAS,MAAS,CAAA;AAC5C,EAAA,MAAM,eAAe,YAAA,EAAa;AAClC,EAAA,MAAM,OAAA,GAAUC,mBAAA,CAAY,OAAA,GAAU,IAAA,KAAS;AAC7C,IAAA,QAAA,CAAS,MAAS,CAAA;AAClB,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,CAAO,GAAG,IAAI,CAAA;AAAA,IACtB,SAAS,GAAA,EAAK;AACZ,MAAA,IAAI,aAAa,OAAA,EAAS;AACxB,QAAA,QAAA,CAAS,GAAG,CAAA;AAAA,MACd;AAAA,IACF,CAAA,SAAE;AACA,MAAA,IAAI,aAAa,OAAA,EAAS;AACxB,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,YAAY,CAAC,CAAA;AACzB,EAAA,MAAM,UAAA,GAAaA,oBAAY,MAAM;AACnC,IAAA,QAAA,CAAS,MAAS,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO;AAAA,IACL,SAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;ACtDA,IAAA,gBAAA,GAAA,EAAA;;;ACwBO,SAAS,uBAAuB,QAAA,EAAU;AAC/C,EAAA,MAAM,QAAQ,EAAC;AACf,EAAA,IAAI,SAAS,UAAA,EAAY;AACvB,IAAA,KAAA,CAAM,QAAA,GAAW,WAAW,QAAA,EAAU;AAAA,MACpC,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,EACH;AACA,EAAA,MAAM,cAAc,EAAC;AACrB,EAAA,QAAQ,SAAS,cAAA;AAAgB,IAC/B,KAAK,cAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,GAAA;AAAA,QACA;AAAA,UACE,QAAA,CAAS,mBAAA;AACb,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,WAAW,QAAA,EAAU;AAAA,UAC/B,IAAA,EAAM,KAAA;AAAA,UACN;AAAA,SACD,CAAA;AACD,QAAA,WAAA,CAAY,MAAM,CAAA,KAAA,KAAS,OAAO,UAAU,QAAA,IAAY,KAAA,GAAQ,MAAM,GAAA,GAAM,IAAA;AAAA,MAC9E;AACA,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,WAAW,QAAA,EAAU;AAAA,UAC/B,IAAA,EAAM,KAAA;AAAA,UACN;AAAA,SACD,CAAA;AACD,QAAA,WAAA,CAAY,MAAM,CAAA,KAAA,KAAS,OAAO,UAAU,QAAA,IAAY,KAAA,GAAQ,MAAM,GAAA,GAAM,IAAA;AAAA,MAC9E;AACA,MAAA;AAAA,IACF;AAAA,IACF,KAAK,YAAA;AAAA,IACL,KAAK,WAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,SAAA;AAAA,QACA;AAAA,UACE,QAAA,CAAS,mBAAA;AACb,MAAA,IAAI,aAAa,IAAA,EAAM;AACrB,QAAA,KAAA,CAAM,SAAA,GAAY;AAAA,UAChB,KAAA,EAAO,SAAA;AAAA,UACP,OAAA,EAAS,WAAW,QAAA,EAAU;AAAA,YAC5B,IAAA,EAAM,WAAA;AAAA,YACN;AAAA,WACD;AAAA,SACH;AAAA,MACF;AACA,MAAA,IAAI,aAAa,IAAA,EAAM;AACrB,QAAA,KAAA,CAAM,SAAA,GAAY;AAAA,UAChB,KAAA,EAAO,SAAA;AAAA,UACP,OAAA,EAAS,WAAW,QAAA,EAAU;AAAA,YAC5B,IAAA,EAAM,WAAA;AAAA,YACN;AAAA,WACD;AAAA,SACH;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAAA,IACF,KAAK,iBAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ,GAAA;AAAA,QACA;AAAA,UACE,QAAA,CAAS,mBAAA;AACb,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,WAAW,QAAA,EAAU;AAAA,UAC/B,IAAA,EAAM,KAAA;AAAA,UACN;AAAA,SACD,CAAA;AACD,QAAA,WAAA,CAAY,GAAA,GAAM,CAAA,KAAA,KAAS,KAAA,YAAiB,IAAA,IAAQ,KAAA,CAAM,SAAQ,GAAI,GAAA,CAAI,OAAA,EAAQ,GAAI,GAAA,GAAM,IAAA;AAAA,MAC9F;AACA,MAAA,IAAI,OAAO,IAAA,EAAM;AACf,QAAA,MAAM,GAAA,GAAM,WAAW,QAAA,EAAU;AAAA,UAC/B,IAAA,EAAM,KAAA;AAAA,UACN;AAAA,SACD,CAAA;AACD,QAAA,WAAA,CAAY,GAAA,GAAM,CAAA,KAAA,KAAS,KAAA,YAAiB,IAAA,IAAQ,KAAA,CAAM,SAAQ,GAAI,GAAA,CAAI,OAAA,EAAQ,GAAI,GAAA,GAAM,IAAA;AAAA,MAC9F;AACA,MAAA;AAAA,IACF;AAAA,IACF,KAAK,aAAA,EACH;AACE,MAAA,MAAM;AAAA,QACJ;AAAA,UACE,QAAA,CAAS,mBAAA;AACb,MAAA,IAAI,WAAW,IAAA,EAAM;AACnB,QAAA,MAAM,GAAA,GAAM,WAAW,QAAA,EAAU;AAAA,UAC/B,IAAA,EAAM,SAAA;AAAA,UACN;AAAA,SACD,CAAA;AACD,QAAA,WAAA,CAAY,UAAU,CAAA,KAAA,KAAS;AAC7B,UAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,YAAA,OAAO,KAAA,CAAM,IAAA,GAAO,OAAA,GAAU,GAAA,GAAM,IAAA;AAAA,UACtC;AACA,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,YAAA,MAAM,SAAA,GAAY,MAAM,IAAA,CAAK,CAAA,CAAA,KAAK,aAAa,IAAA,IAAQ,CAAA,CAAE,OAAO,OAAO,CAAA;AACvE,YAAA,OAAO,YAAY,GAAA,GAAM,IAAA;AAAA,UAC3B;AACA,UAAA,OAAO,IAAA;AAAA,QACT,CAAA;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAGA;AAEJ,EAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,IAAA,MAAM,eAAe,QAAA,CAAS,QAAA;AAC9B,IAAA,WAAA,CAAY,MAAA,GAAS,OAAM,KAAA,KAAS;AAClC,MAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AACvC,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,OAAO,WAAW,QAAA,EAAU;AAAA,QAC1B,IAAA,EAAM,UAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACV,CAAA;AAAA,IACH,CAAA;AAAA,EACF;AACA,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AACvC,IAAA,KAAA,CAAM,QAAA,GAAW,WAAA;AAAA,EACnB;AACA,EAAA,OAAO,KAAA;AACT;AACA,SAAS,UAAA,CAAW,UAAU,KAAA,EAAO;AACnC,EAAA,OAAO,QAAA,CAAS,iBAAA,GAAoB,KAAK,CAAA,IAAK,kBAAkB,KAAK,CAAA;AACvE;AACA,SAAS,kBAAkB,KAAA,EAAO;AAChC,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,UAAA;AACH,MAAA,OAAO,wBAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,CAAA,iBAAA,EAAoB,gBAAA,CAAiB,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA;AAAA,IACxD,KAAK,KAAA;AACH,MAAA,OAAO,CAAA,gBAAA,EAAmB,gBAAA,CAAiB,KAAA,CAAM,GAAG,CAAC,CAAA,CAAA;AAAA,IACvD,KAAK,WAAA;AACH,MAAA,OAAO,CAAA,iBAAA,EAAoB,MAAM,SAAS,CAAA,WAAA,CAAA;AAAA,IAC5C,KAAK,WAAA;AACH,MAAA,OAAO,CAAA,gBAAA,EAAmB,MAAM,SAAS,CAAA,WAAA,CAAA;AAAA,IAC3C,KAAK,SAAA;AACH,MAAA,OAAO,CAAA,0BAAA,EAA6B,WAAA,CAAY,KAAA,CAAM,OAAO,CAAC,CAAA,CAAA;AAAA,IAChE,KAAK,UAAA;AACH,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA;AAEnB;AACA,SAAS,iBAAiB,KAAA,EAAO;AAC/B,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,OAAO,MAAM,kBAAA,EAAmB;AAAA,EAClC;AACA,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;AACA,SAAS,YAAY,KAAA,EAAO;AAC1B,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA,OAAO,GAAG,KAAK,CAAA,EAAA,CAAA;AAAA,EACjB;AACA,EAAA,IAAI,KAAA,GAAQ,OAAO,IAAA,EAAM;AACvB,IAAA,OAAO,CAAA,EAAA,CAAI,KAAA,GAAQ,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,IAAI,KAAA,IAAS,IAAA,GAAO,IAAA,CAAA,EAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,GAAA,CAAA;AAC9C;;;ACxLA,IAAA,iBAAA,GAAA,EAAA;;;ACkBO,IAAM,SAAA,mBAAyBC,YAAA,CAAK,SAAS,WAAA,CAAY;AAAA,EAC9D,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,uBAAoBC,wBAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IAC7C,WAAW,iBAAA,CAAO,aAAA;AAAA,IAClB;AAAA,GACF,EAAG,KAAA,IAAS,IAAA,oBAAqBA,wBAAA,CAAM,cAAc,OAAA,EAAS;AAAA,IAC5D,WAAW,iBAAA,CAAO,kBAAA;AAAA,IAClB,OAAA,EAAS;AAAA,KACR,KAAA,EAAO,UAAA,KAAe,IAAA,oBAAqBA,wBAAA,CAAM,cAAc,MAAA,EAAQ;AAAA,IACxE,WAAW,iBAAA,CAAO,qBAAA;AAAA,IAClB,YAAA,EAAc;AAAA,GAChB,EAAG,GAAA,EAAK,GAAG,CAAC,CAAA,EAAG,UAAU,KAAA,IAAS,IAAA,oBAAqBA,wBAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IAChF,WAAW,iBAAA,CAAO,kBAAA;AAAA,IAClB,IAAA,EAAM;AAAA,KACL,KAAK,CAAA,EAAG,cAAc,IAAA,oBAAqBA,wBAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IACvE,WAAW,iBAAA,CAAO;AAAA,GACpB,EAAG,UAAU,CAAC,CAAA;AAChB,CAAC,CAAA;;;ACDM,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,IAAI,CAAA;AClB/B,IAAM,WAAA,mBAA2BD,YAAAA,CAAK,SAAS,aAAA,CAAc;AAAA,EAClE,cAAA,EAAgB,cAAA;AAAA,EAChB,GAAG;AACL,CAAA,EAAG;AACD,EAAA,uBAAoBC,wBAAAA,CAAM,aAAA,CAAc,cAAA,EAAgB,SAAS,CAAA;AACnE,CAAC,CAAA;;;AC5BD,IAAA,2BAAA,GAAA,EAAA;ACkBA,IAAM,wCAAqCA,wBAAAA,CAAM,KAAK,MAAM,OAAO,kCAAwB,CAAC,CAAA;AACrF,SAAS,sBAAsB,KAAA,EAAO;AAC3C,EAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAcC,gBAAA,EAAU;AAAA,IAChD,QAAA,kBAAuBD,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MAChD,WAAWE,0CAAA,CAAO;AAAA,KACnB;AAAA,qBACaF,wBAAAA,CAAM,aAAA,CAAc,qBAAA,EAAuB,KAAK,CAAC,CAAA;AACnE;;;ACzBA,SAAS,QAAA,GAAW;AAAE,EAAA,OAAO,QAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAG,QAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AA+BnR,IAAM,kBAAA,GAAqB;AAAA,EACzB,WAAWE,0CAAA,CAAa,mBAAA;AAAA,EACxB,IAAA,EAAM,MAAA;AAAA,EACN,OAAA,EAASC,iCAAA;AAAA,EACT,YAAA,EAAc,KAAA;AAAA,EACd,IAAA,EAAM,UAAA;AAAA,EACN,eAAA,EAAiB;AACnB,CAAA;AACO,IAAM,mBAAA,mBAAmCH,wBAAAA,CAAM,IAAA,CAAK,SAASI,oBAAAA,CAAoB;AAAA,EACtF,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,mBAAA,GAAsB,IAAA;AAAA,EACtB,QAAA,GAAW,KAAA;AAAA,EACX,UAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,yBAAyB,CAAC,QAAA;AAChC,EAAA,MAAM,YAAYC,aAAA,EAAM;AACxB,EAAA,MAAM,aAAA,GAAgBV,eAAO,IAAI,CAAA;AACjC,EAAA,MAAM,WAAA,GAAcA,eAAO,IAAI,CAAA;AAC/B,EAAA,MAAM,UAAA,GAAaA,eAAO,IAAI,CAAA;AAC9B,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIE,iBAAS,KAAK,CAAA;AAI1C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,iBAAS,OAAO,CAAA;AAC5D,EAAA,MAAM,CAAC,SAAA,EAAW,OAAO,CAAA,GAAI,KAAA,IAAS,WAAA;AAItC,EAAA,MAAM,YAAA,GAAe,WAAWS,wCAAA,GAAyBC,oCAAA;AACzD,EAAA,MAAM,eAAA,GAAkB,UAAA,KAAe,QAAA,GAAWD,wCAAA,GAAyBE,sCAAA,CAAA;AAC3E,EAAA,MAAM,OAAA,GAAU,SAAA,KAAc,QAAA,GAAWC,wCAAA,GAAyBC,oCAAA,CAAA;AAIlE,EAAA,MAAM,aAAA,GAAgBZ,oBAAY,CAAA,IAAA,KAAQ;AACxC,IAAA,IAAI,QAAQ,IAAA,IAAQ,aAAA,CAAc,IAAA,EAAM,OAAA,EAAS,mBAAmB,CAAA,EAAG;AACrE,MAAA;AAAA,IACF;AACA,IAAA,QAAA,GAAW,CAAC,IAAA,EAAM,OAAA,IAAW,IAAI,CAAC,CAAA;AAAA,EACpC,CAAA,EAAG,CAAC,OAAA,EAAS,QAAA,EAAU,mBAAmB,CAAC,CAAA;AAC3C,EAAA,MAAM,WAAA,GAAcA,oBAAY,CAAA,IAAA,KAAQ;AACtC,IAAA,IAAI,QAAQ,IAAA,IAAQ,aAAA,CAAc,SAAA,EAAW,IAAA,EAAM,mBAAmB,CAAA,EAAG;AACvE,MAAA;AAAA,IACF;AACA,IAAA,QAAA,GAAW,CAAC,SAAA,IAAa,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,SAAA,EAAW,QAAA,EAAU,mBAAmB,CAAC,CAAA;AAC7C,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,cAAA;AAAA,IACX,SAAA,EAAW,gBAAA;AAAA,IACX,UAAA,EAAY,eAAA;AAAA,IACZ,cAAA,EAAgB,cAAA;AAAA,IAChB,YAAA,EAAc,iBAAA;AAAA,IACd,WAAA,EAAa,gBAAA;AAAA,IACb,oBAAA,EAAsB,yBAAA;AAAA,IACtB,aAAA,EAAe,kBAAA;AAAA,IACf,YAAA,EAAc;AAAA,MACZa,kCAAA,CAAiB;AAAA,IACnB,KAAA,EAAO,SAAA;AAAA,IACP,eAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,YAAA;AAAA,IACX,SAAA,EAAW,cAAA;AAAA,IACX,UAAA,EAAY,aAAA;AAAA,IACZ,cAAA,EAAgB,YAAA;AAAA,IAChB,YAAA,EAAc,eAAA;AAAA,IACd,WAAA,EAAa,cAAA;AAAA,IACb,oBAAA,EAAsB,uBAAA;AAAA,IACtB,aAAA,EAAe,gBAAA;AAAA,IACf,YAAA,EAAc;AAAA,MACZA,kCAAA,CAAiB;AAAA,IACnB,KAAA,EAAO,OAAA;AAAA,IACP,eAAA;AAAA,IACA,YAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,GAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX,CAAA;AAKD,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,YAAA,EAAc,OAAO,KAAA;AAC7C,IAAA,MAAM,cAAA,GAAiB,cAAA,GAAiB,gBAAA,GAAmB,SAAA,IAAa,MAAA;AACxE,IAAA,MAAM,YAAA,GAAe,YAAA,GAAe,cAAA,GAAiB,OAAA,IAAW,MAAA;AAChE,IAAA,OAAO,aAAA,CAAc,cAAA,EAAgB,YAAA,EAAc,mBAAmB,CAAA;AAAA,EACxE,CAAA,GAAG;AACH,EAAA,MAAM,YAAA,GAAe,mBAAmB,IAAA,IAAQ,eAAA;AAChD,EAAA,MAAM,UAAA,GAAa,iBAAiB,IAAA,IAAQ,eAAA;AAI5C,EAAA,MAAM,gBAAA,GAAmBb,oBAAY,MAAM;AACzC,IAAA,iBAAA,EAAkB;AAClB,IAAA,iBAAA,CAAkB,OAAO,CAAA;AACzB,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AACtB,EAAA,MAAM,cAAA,GAAiBA,oBAAY,MAAM;AACvC,IAAA,eAAA,EAAgB;AAChB,IAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,IAAA,SAAA,CAAU,IAAI,CAAA;AAAA,EAChB,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAIpB,EAAA,MAAM,eAAA,GAAkBA,oBAAY,CAAA,CAAA,KAAK;AACvC,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,aAAA,IAAiB,QAAA,CAAS,aAAA;AAC5C,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AAGzC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,WAAA,CAAY,YAAY,OAAA,EAAS;AACnC,MAAA;AAAA,IACF;AACA,IAAA,yBAAA,EAA0B;AAAA,EAC5B,CAAA,EAAG,CAAC,yBAAyB,CAAC,CAAA;AAC9B,EAAA,MAAM,aAAA,GAAgBA,oBAAY,CAAA,CAAA,KAAK;AACrC,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,aAAA,IAAiB,QAAA,CAAS,aAAA;AAC5C,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AACzC,MAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,aAAA,CAAc,YAAY,OAAA,EAAS;AACrC,MAAA;AAAA,IACF;AACA,IAAA,uBAAA,EAAwB;AAAA,EAC1B,CAAA,EAAG,CAAC,uBAAuB,CAAC,CAAA;AAM5B,EAAA,MAAM,YAAA,GAAeA,oBAAY,MAAM;AACrC,IAAA,SAAA,CAAU,KAAK,CAAA;AACf,IAAA,gBAAA,EAAiB;AACjB,IAAA,cAAA,EAAe;AACf,IAAA,aAAA,CAAc,SAAS,IAAA,EAAK;AAC5B,IAAA,WAAA,CAAY,SAAS,IAAA,EAAK;AAAA,EAC5B,CAAA,EAAG,CAAC,gBAAA,EAAkB,cAAc,CAAC,CAAA;AAIrC,EAAA,MAAM,kBAAA,GAAqBA,oBAAY,CAAA,CAAA,KAAK;AAC1C,IAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,yBAAA,EAA0B;AAE1B,MAAA,WAAA,CAAY,SAAS,KAAA,EAAM;AAAA,IAC7B,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,KAAA,IAAS,EAAE,QAAA,EAAU;AACxC,MAAA,SAAA,CAAU,KAAK,CAAA;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,CAAC,yBAAA,EAA2B,YAAY,CAAC,CAAA;AAC5C,EAAA,MAAM,gBAAA,GAAmBA,oBAAY,CAAA,CAAA,KAAK;AACxC,IAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,uBAAA,EAAwB;AACxB,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,YAAA,EAAa;AAAA,IACf,WAAW,CAAA,CAAE,GAAA,KAAQ,SAAS,CAAC,CAAA,CAAE,YAAY,MAAA,EAAQ;AAInD,MAAA,MAAM,WAAA,GAAc,UAAA,CAAW,OAAA,EAAS,aAAA,CAAc,gBAAgB,CAAA;AACtE,MAAA,IAAI,eAAe,IAAA,EAAM;AACvB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,WAAA,CAAY,KAAA,EAAM;AAAA,MACpB;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,uBAAA,EAAyB,YAAA,EAAc,MAAM,CAAC,CAAA;AAGlD,EAAA,MAAM,gBAAA,GAAmBA,oBAAY,CAAA,QAAA,KAAY;AAC/C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,SAAA,CAAU,IAAI,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,YAAA,EAAa;AAAA,IACf;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAIjB,EAAA,MAAM,iBAAA,GAAoBA,oBAAY,CAAA,KAAA,KAAS;AAC7C,IAAA,MAAM,QAAA,GAAW,OAAO,IAAA,IAAQ,IAAA;AAChC,IAAA,MAAM,MAAA,GAAS,OAAO,EAAA,IAAM,IAAA;AAC5B,IAAA,QAAA,GAAW,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAC7B,IAAA,IAAI,QAAA,IAAY,IAAA,IAAQ,MAAA,IAAU,IAAA,EAAM;AAGtC,MAAA,gBAAA,EAAiB;AACjB,MAAA,iBAAA,CAAkB,KAAK,CAAA;AACvB,MAAA,WAAA,CAAY,SAAS,KAAA,EAAM;AAAA,IAC7B,CAAA,MAAA,IAAW,QAAA,IAAY,IAAA,IAAQ,MAAA,IAAU,QAAQ,sBAAA,EAAwB;AAEvE,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,MAAA,IAAW,QAAA,IAAY,IAAA,IAAQ,MAAA,IAAU,IAAA,EAAM;AAG7C,MAAA,iBAAA,CAAkB,QAAQ,CAAA;AAC1B,MAAA,eAAA,CAAgB,MAAM,CAAA;AAAA,IACxB;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,sBAAA,EAAwB,cAAc,gBAAA,EAAkB,iBAAA,EAAmB,eAAe,CAAC,CAAA;AAIzG,EAAA,MAAM,qBAAA,GAAwBA,oBAAY,CAAA,UAAA,KAAc;AACtD,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA;AAAA,KACF,GAAIc,kCAAgB,UAAU,CAAA;AAC9B,IAAA,MAAM,IAAA,GAAO,SAAA,IAAa,IAAA,GAAO,IAAI,IAAA,CAAK,UAAU,OAAA,EAAS,CAAA,mBAAI,IAAI,IAAA,EAAK;AAC1E,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA;AAClC,IAAA,QAAA,GAAW,CAAC,IAAA,EAAM,OAAA,IAAW,IAAI,CAAC,CAAA;AAClC,IAAA,iBAAA,CAAkB,IAAI,CAAA;AAAA,EACxB,GAAG,CAAC,SAAA,EAAW,OAAA,EAAS,QAAA,EAAU,iBAAiB,CAAC,CAAA;AACpD,EAAA,MAAM,mBAAA,GAAsBd,oBAAY,CAAA,UAAA,KAAc;AACpD,IAAA,MAAM;AAAA,MACJ,KAAA;AAAA,MACA;AAAA,KACF,GAAIc,kCAAgB,UAAU,CAAA;AAC9B,IAAA,MAAM,IAAA,GAAO,OAAA,IAAW,IAAA,GAAO,IAAI,IAAA,CAAK,QAAQ,OAAA,EAAS,CAAA,mBAAI,IAAI,IAAA,EAAK;AACtE,IAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,OAAA,EAAS,CAAA,EAAG,CAAC,CAAA;AAClC,IAAA,QAAA,GAAW,CAAC,SAAA,IAAa,IAAA,EAAM,IAAI,CAAC,CAAA;AACpC,IAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,EACtB,GAAG,CAAC,SAAA,EAAW,OAAA,EAAS,QAAA,EAAU,eAAe,CAAC,CAAA;AAQlD,EAAA,MAAM,wBAAA,GAA2Bd,oBAAY,MAAM;AACjD,IAAA,MAAM,SAAA,GAAY,cAAA,KAAmB,OAAA,GAAU,aAAA,GAAgB,WAAA;AAC/D,IAAA,SAAA,CAAU,SAAS,KAAA,EAAM;AAAA,EAC3B,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAOnB,EAAA,MAAM,sBAAA,GAAyBA,oBAAY,CAAA,CAAA,KAAK;AAC9C,IAAA,MAAM,OAAA,GAAU,CAAA,CAAE,aAAA,IAAiB,QAAA,CAAS,aAAA;AAC5C,IAAA,IAAI,UAAA,CAAW,OAAA,EAAS,QAAA,CAAS,OAAO,CAAA,EAAG;AACzC,MAAA,YAAA,EAAa;AAAA,IACf,CAAA,MAAO;AACL,MAAA,MAAM,OAAA,GAAU,UAAA,CAAW,OAAA,EAAS,gBAAA,CAAiB,gBAAgB,CAAA;AACrE,MAAA,MAAM,UAAA,GAAa,OAAA,GAAU,OAAA,CAAQ,MAAA,GAAS,CAAC,CAAA;AAC/C,MAAA,UAAA,EAAY,KAAA,EAAM;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAIjB,EAAA,MAAM,gBAAA,GAAmB,SAAA,IAAa,IAAA,IAAQ,OAAA,IAAW,IAAA,GAAO;AAAA,IAC9D,MAAM,SAAA,IAAa,MAAA;AAAA,IACnB,IAAI,OAAA,IAAW;AAAA,GACjB,GAAI,MAAA;AACJ,EAAA,MAAM,UAAA,GAAa,QAAA,mBAAwBE,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IACpE,WAAW,2BAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAca,4BAAA,EAAY;AAAA,IAC9C,KAAA,EAAOC,+BAAa,SAAS,CAAA;AAAA,IAC7B,QAAA,EAAU,qBAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACR,CAAA,kBAAgBd,wBAAAA,CAAM,cAAca,4BAAA,EAAY;AAAA,IAC/C,KAAA,EAAOC,+BAAa,OAAO,CAAA;AAAA,IAC3B,QAAA,EAAU,mBAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACR,CAAC,CAAA,GAAI,MAAA;AACN,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,GAAG,kBAAA;AAAA,IACH,eAAA,EAAiB;AAAA,GACnB;AACA,EAAA,uBAAoBd,wBAAAA,CAAM,aAAA,CAAce,eAAA,CAAQ,IAAA,EAAM;AAAA,IACpD,IAAA,EAAM,MAAA;AAAA,IACN,YAAA,EAAc;AAAA,GAChB,kBAAgBf,wBAAAA,CAAM,aAAA,CAAce,gBAAQ,OAAA,EAAS;AAAA,IACnD,YAAA,EAAc,KAAA;AAAA,IACd,MAAA,kBAAqBf,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MAC9C,WAAW,2BAAA,CAAO;AAAA,KACnB;AAAA,GACH,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IACzC,SAAA,EAAWgB,4BAAWd,0CAAA,CAAa,0BAAA,EAA4B,4BAAO,yBAAA,EAA2B,YAAA,IAAgBA,2CAAa,+BAA+B;AAAA,GAC/J,kBAAgBF,wBAAAA,CAAM,aAAA,CAAciB,aAAO,QAAA,CAAS;AAAA,IAClD,GAAA,EAAK,aAAA;AAAA,IACL,EAAA,EAAI,EAAA,IAAM,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,IACjC,KAAA,EAAO,cAAA;AAAA,IACP,aAAA,EAAe,kBAAA;AAAA,IACf,OAAA,EAAS,gBAAA;AAAA,IACT,MAAA,EAAQ,eAAA;AAAA,IACR,SAAA,EAAW,kBAAA;AAAA,IACX,WAAA,EAAa,gBAAA;AAAA,IACb,eAAA,EAAiB,UAAU,cAAA,KAAmB,OAAA;AAAA,IAC9C,YAAA,EAAc,YAAA;AAAA,IACd,gBAAgB,YAAA,IAAgB;AAAA,GAClC,EAAG,gBAAgB,CAAC,CAAC,mBAAgBjB,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IAC9D,SAAA,EAAWgB,4BAAWd,0CAAA,CAAa,0BAAA,EAA4B,4BAAO,yBAAA,EAA2B,UAAA,IAAcA,2CAAa,+BAA+B;AAAA,GAC7J,kBAAgBF,wBAAAA,CAAM,aAAA,CAAciB,aAAO,QAAA,CAAS;AAAA,IAClD,GAAA,EAAK,WAAA;AAAA,IACL,EAAA,EAAI,EAAA,IAAM,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,IAAA,CAAA,GAAS,MAAA;AAAA,IAC/B,KAAA,EAAO,YAAA;AAAA,IACP,aAAA,EAAe,gBAAA;AAAA,IACf,OAAA,EAAS,cAAA;AAAA,IACT,MAAA,EAAQ,aAAA;AAAA,IACR,SAAA,EAAW,gBAAA;AAAA,IACX,WAAA,EAAa,cAAA;AAAA,IACb,eAAA,EAAiB,UAAU,cAAA,KAAmB,KAAA;AAAA,IAC9C,YAAA,EAAc,UAAA;AAAA,IACd,gBAAgB,UAAA,IAAc;AAAA,KAC7B,gBAAgB,CAAC,CAAC,CAAC,mBAAgBjB,wBAAAA,CAAM,aAAA,CAAce,eAAA,CAAQ,QAAQ,IAAA,kBAAmBf,wBAAAA,CAAM,aAAA,CAAce,gBAAQ,UAAA,EAAY;AAAA,IACnI,UAAA,EAAY;AAAA,GACd,kBAAgBf,wBAAAA,CAAM,aAAA,CAAce,gBAAQ,KAAA,EAAO;AAAA,IACjD,GAAA,EAAK,UAAA;AAAA,IACL,WAAWb,0CAAA,CAAa,qBAAA;AAAA,IACxB,EAAA,EAAI,SAAA;AAAA,IACJ,IAAA,EAAM,QAAA;AAAA,IACN,YAAA,EAAc,mBAAA;AAAA,IAId,UAAA,EAAY;AAAA,GACd,kBAAgBF,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IACzC,OAAA,EAAS,wBAAA;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IACV,YAAA,EAAc,mCAAA;AAAA,IACd,WAAWE,0CAAA,CAAa;AAAA,GACzB,CAAA,kBAAgBF,wBAAAA,CAAM,cAAc,qBAAA,EAAuB;AAAA,IAC1D,QAAA,EAAU,gBAAA;AAAA,IACV,QAAA,EAAU,iBAAA;AAAA,IACV,GAAA;AAAA,IACA;AAAA,GACD,CAAA,EAAG,UAAA,kBAAyBA,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IACtD,OAAA,EAAS,sBAAA;AAAA,IACT,QAAA,EAAU,CAAA;AAAA,IACV,YAAA,EAAc,iCAAA;AAAA,IACd,WAAWE,0CAAA,CAAa;AAAA,GACzB,CAAC,CAAC,CAAC,CAAC,CAAA;AACP,CAAC,CAAA;AAGD,SAAS,aAAA,CAAc,KAAA,EAAO,GAAA,EAAK,mBAAA,EAAqB;AACtD,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,GAAA,IAAO,IAAA,EAAM,OAAO,KAAA;AACzC,EAAA,IAAI,CAAC,uBAAuB,GAAA,CAAI,OAAA,OAAc,KAAA,CAAM,OAAA,IAAW,OAAO,IAAA;AACtE,EAAA,OAAO,GAAA,CAAI,OAAA,EAAQ,GAAI,KAAA,CAAM,OAAA,EAAQ;AACvC;;;AC5YA,IAAA,uBAAA,GAAA,EAAA;;;ACqBO,IAAM,eAAA,mBAA+BH,YAAAA,CAAK,SAAS,iBAAA,CAAkB;AAAA,EAC1E,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA;AAAA;AAAA;AAAA,EAIA,OAAA,EAAS,QAAA;AAAA,EACT,IAAA,GAAO,gBAAA;AAAA,EACP,UAAA,GAAa;AACf,CAAA,EAAG;AACD,EAAA,MAAM,QAAA,GAAWJ,eAAO,IAAI,CAAA;AAC5B,EAAA,MAAM,cAAA,GAAiBG,oBAAY,MAAM;AACvC,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,MAAM,iBAAA,GAAoBA,oBAAY,CAAA,KAAA,KAAS;AAC7C,IAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA;AAC3B,IAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG;AACvC,MAAA,QAAA,GAAW,IAAI,CAAA;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,OAAA,EAAS;AACX,MAAA,QAAA,GAAW,KAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,QAAA,GAAW,KAAA,CAAM,CAAC,CAAA,IAAK,IAAI,CAAA;AAAA,IAC7B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,OAAO,CAAC,CAAA;AACtB,EAAA,MAAM,WAAA,GAAcA,oBAAY,CAAA,KAAA,KAAS;AACvC,IAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,QAAA,GAAW,IAAI,CAAA;AACf,IAAA,IAAI,QAAA,CAAS,WAAW,IAAA,EAAM;AAC5B,MAAA,QAAA,CAAS,QAAQ,KAAA,GAAQ,EAAA;AAAA,IAC3B;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAA,MAAM,aAAA,GAAgBA,oBAAY,CAAA,KAAA,KAAS;AACzC,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAC9C,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA,cAAA,EAAe;AAAA,IACjB;AAAA,EACF,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AACnB,EAAA,MAAM,WAAA,GAAcoB,gBAAQ,MAAM,cAAA,CAAe,KAAK,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AAChE,EAAA,MAAM,WAAW,WAAA,IAAe,IAAA;AAChC,EAAA,MAAM,YAAA,GAAeA,gBAAQ,MAAM,eAAA,CAAgB,MAAM,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACpE,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOElB,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MACzB,EAAA;AAAA,MACA,WAAW,uBAAA,CAAO,qBAAA;AAAA,MAClB,QAAA,EAAU,CAAA;AAAA,MACV,IAAA,EAAM,QAAA;AAAA,MACN,YAAA,EAAc,aAAA;AAAA,MACd,OAAA,EAAS,cAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,cAAA,EAAgB,SAAS,IAAA,IAAQ;AAAA,KACnC,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc,OAAA,EAAS;AAAA,MAC3C,GAAA,EAAK,QAAA;AAAA,MACL,IAAA,EAAM,MAAA;AAAA,MACN,WAAW,uBAAA,CAAO,yBAAA;AAAA,MAClB,QAAA,EAAU,OAAA;AAAA,MACV,MAAA,EAAQ,YAAA;AAAA,MACR,QAAA,EAAU,iBAAA;AAAA,MACV,QAAA,EAAU;AAAA,KACX,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,MAAA,EAAQ;AAAA,MAC3C,WAAWgB,2BAAAA,CAAW,uBAAA,CAAO,oBAAoB,CAAC,QAAA,IAAY,wBAAO,yBAAyB;AAAA,KAChG,EAAG,WAAA,IAAe,IAAI,CAAA,EAAG,QAAA;AAAA;AAAA,oBAIzBhB,wBAAAA,CAAM,aAAA,CAAcmB,aAAA,EAAQ;AAAA,MAC1B,WAAW,uBAAA,CAAO,mBAAA;AAAA,MAClB,OAAA,EAAS,WAAA;AAAA,MACT,YAAA,EAAc;AAAA,KAChB,kBAAgBnB,wBAAAA,CAAM,aAAA,CAAcoB,WAAA,EAAO,IAAI,CAAC,CAAA,kBAAgBpB,wBAAAA,CAAM,aAAA,CAAc,MAAA,EAAQ;AAAA,MAC1F,WAAW,uBAAA,CAAO;AAAA,KACpB,EAAG,UAAU,CAAC;AAAA;AAElB,CAAC,CAAA;AACD,SAAS,gBAAgB,MAAA,EAAQ;AAC/B,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAM,OAAA,CAAQ,MAAM,IAAI,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,GAAI,MAAA;AACpD;AACA,SAAS,eAAe,KAAA,EAAO;AAC7B,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAM,GAAA,CAAI,CAAA,CAAA,KAAK,EAAE,IAAI,CAAA,CAAE,KAAK,IAAI,CAAA;AAAA,EACzC;AACA,EAAA,OAAO,KAAA,CAAM,IAAA;AACf;;;ACzHA,IAAA,wBAAA,GAAA,EAAA;;;ACkCA,IAAM,mBAAA,GAAsB,+CAAA;AAC5B,IAAM,YAAA,GAAe,CAAA;AACrB,IAAM,YAAA,GAAe,EAAA;AACd,SAAS,gBAAA,CAAiB;AAAA,EAC/B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,CAAC,cAAc,eAAe,CAAA,GAAIH,iBAAS,MAAM,sBAAA,CAAuB,KAAK,CAAC,CAAA;AACpF,EAAA,MAAM,YAAA,GAAeF,eAAO,KAAK,CAAA;AAGjC,EAAA,IAAI,YAAA,CAAa,YAAY,KAAA,EAAO;AAClC,IAAA,YAAA,CAAa,OAAA,GAAU,KAAA;AACvB,IAAA,MAAM,aAAA,GAAgB,kBAAkB,YAAY,CAAA;AACpD,IAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,MAAA,eAAA,CAAgB,sBAAA,CAAuB,KAAK,CAAC,CAAA;AAAA,IAC/C;AAAA,EACF;AACA,EAAA,MAAM,iBAAA,GAAoBG,oBAAY,CAAA,QAAA,KAAY;AAChD,IAAA,IAAI,CAAC,YAAA,CAAa,QAAQ,CAAA,EAAG;AAC3B,MAAA;AAAA,IACF;AACA,IAAA,eAAA,CAAgB,QAAQ,CAAA;AACxB,IAAA,QAAA,GAAW,iBAAA,CAAkB,QAAQ,CAAC,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACb,EAAA,MAAM,SAAA,GAAYA,oBAAY,CAAA,SAAA,KAAa;AACzC,IAAA,MAAM,OAAA,GAAU,iBAAA,CAAkB,YAAY,CAAA,IAAK,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQ,aAAa,IAAA,IAAQ,YAAA,CAAA;AACnC,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,OAAA,GAAU,KAAA,EAAO,KAAK,GAAG,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,uBAAuB,IAAI,CAAA;AAC7C,IAAA,eAAA,CAAgB,SAAS,CAAA;AACzB,IAAA,QAAA,GAAW,IAAI,CAAA;AAAA,EACjB,GAAG,CAAC,YAAA,EAAc,UAAU,IAAA,EAAM,GAAA,EAAK,GAAG,CAAC,CAAA;AAC3C,EAAA,MAAM,aAAA,GAAgBA,oBAAY,CAAA,CAAA,KAAK;AACrC,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,SAAA,IAAa,CAAA,CAAE,QAAQ,WAAA,EAAa;AAChD,MAAA;AAAA,IACF;AACA,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,SAAA,CAAU,CAAA,CAAE,GAAA,KAAQ,SAAA,GAAY,CAAA,GAAI,EAAE,CAAA;AAAA,EACxC,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACd,EAAA,MAAM,YAAA,GAAeA,oBAAY,MAAM;AACrC,IAAA,SAAA,CAAU,CAAC,CAAA;AAAA,EACb,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACd,EAAA,MAAM,cAAA,GAAiBA,oBAAY,MAAM;AACvC,IAAA,SAAA,CAAU,EAAE,CAAA;AAAA,EACd,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AACd,EAAA,uBAAoBE,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IAC7C,WAAW,wBAAA,CAAO,sBAAA;AAAA,IAClB,cAAA,EAAgB,SAAS,IAAA,IAAQ;AAAA,GACnC,kBAAgBA,wBAAAA,CAAM,aAAA,CAAciB,WAAAA,EAAO;AAAA,IACzC,EAAA;AAAA,IACA,WAAW,wBAAA,CAAO,oBAAA;AAAA,IAClB,IAAA,EAAM,MAAA;AAAA,IACN,SAAA,EAAW,SAAA;AAAA,IACX,KAAA,EAAO,YAAA;AAAA,IACP,aAAA,EAAe,iBAAA;AAAA,IACf,SAAA,EAAW,aAAA;AAAA,IACX;AAAA,GACD,CAAA,kBAAgBjB,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IAC1C,WAAW,wBAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAcmB,aAAAA,EAAQ;AAAA,IAC1C,WAAW,wBAAA,CAAO,yBAAA;AAAA,IAClB,YAAA,EAAc,WAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX,kBAAgBnB,wBAAAA,CAAM,aAAA,CAAcqB,eAAA,EAAW;AAAA,IAC7C,IAAA,EAAM;AAAA,GACP,CAAC,CAAA,kBAAgBrB,wBAAAA,CAAM,cAAcmB,aAAAA,EAAQ;AAAA,IAC5C,WAAW,wBAAA,CAAO,yBAAA;AAAA,IAClB,YAAA,EAAc,WAAA;AAAA,IACd,QAAA,EAAU,EAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACX,kBAAgBnB,wBAAAA,CAAM,aAAA,CAAcsB,iBAAA,EAAa;AAAA,IAC/C,IAAA,EAAM;AAAA,GACP,CAAC,CAAC,CAAC,CAAA;AACN;AACA,SAAS,aAAa,IAAA,EAAM;AAC1B,EAAA,OAAO,mBAAA,CAAoB,KAAK,IAAI,CAAA;AACtC;AACA,SAAS,kBAAkB,IAAA,EAAM;AAC/B,EAAA,IAAI,SAAS,EAAA,EAAI;AACf,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,OAAO,IAAI,CAAA;AAC1B,EAAA,OAAO,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,GAAI,IAAA,GAAO,MAAA;AACvC;AACA,SAAS,uBAAuB,KAAA,EAAO;AACrC,EAAA,OAAO,KAAA,IAAS,IAAA,GAAO,MAAA,CAAO,KAAK,CAAA,GAAI,EAAA;AACzC;AACA,SAAS,KAAA,CAAM,KAAA,EAAO,GAAA,EAAK,GAAA,EAAK;AAC9B,EAAA,IAAI,GAAA,IAAO,IAAA,IAAQ,KAAA,GAAQ,GAAA,EAAK,OAAO,GAAA;AACvC,EAAA,IAAI,GAAA,IAAO,IAAA,IAAQ,KAAA,GAAQ,GAAA,EAAK,OAAO,GAAA;AACvC,EAAA,OAAO,KAAA;AACT;ACnHO,IAAM,aAAA,mBAA6BtB,wBAAAA,CAAM,IAAA,CAAK,SAAS,eAAA,CAAgB;AAAA,EAC5E,IAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AACrC,EAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAcuB,sBAAA,EAAkB;AAAA,IACxD,UAAU,IAAA,CAAK,IAAA;AAAA,IACf,OAAO,IAAA,CAAK;AAAA,GACd,EAAG,KAAA,IAAS,IAAA,GAAO,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBAAmBvB,wBAAAA,CAAM,aAAA,CAAc,MAAA,EAAQ;AAAA,IAC9E,GAAA,EAAK,CAAA;AAAA,IACL,CAAA;AAAA,IACA,QAAA,EAAU;AAAA,GACX,CAAC,CAAA,GAAI,EAAE,CAAA;AACV,CAAC,CAAA;AAMD,SAAS,OAAA,CAAQ,MAAM,IAAA,EAAM;AAC3B,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,wBAAAA,CAAM,QAAA,CAAS,MAAMwB,WAAA,CAAM,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AACjF,EAAAxB,wBAAAA,CAAM,SAAA,CAAU,SAAS,aAAA,GAAgB;AACvC,IAAA,IAAI,SAAA,GAAY,IAAA;AAChB,IAAA,MAAM,eAAA,GAAkBwB,WAAA,CAAM,QAAA,CAAS,IAAA,EAAM,IAAI,CAAA;AACjD,IAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,MAAA,YAAA,CAAa,eAAe,CAAA;AAAA,IAC9B,CAAA,MAAO;AACL,MAAA,KAAKA,YAAM,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA,CAAE,KAAK,MAAM;AACrC,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,YAAA,CAAaA,WAAA,CAAM,QAAA,CAAS,IAAA,EAAM,IAAI,CAAC,CAAA;AAAA,QACzC;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AACA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,KAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACf,EAAA,OAAO,SAAA;AACT;;;ACxDA,IAAA,sBAAA,GAAA,EAAA;;;ACyBA,IAAM,mBAAA,GAAsB;AAAA,EAC1B,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AACA,IAAM,YAAYC,cAAA,CAAS,QAAA;AAC3B,IAAM,qBAAA,GAAwB,2BAAA;AACvB,IAAM,cAAA,GAAiBC,gCAAA,CAAe,SAAS,gBAAA,CAAiB;AAAA,EACrE,KAAA;AAAA,EACA,YAAA,GAAe;AACjB,CAAA,EAAG;AACD,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,uBAAoB1B,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,MAC7C,SAAA,EAAWgB,2BAAAA,CAAW,sBAAA,CAAO,kBAAA,EAAoB,uBAAO,uBAAuB;AAAA,OAC9E,YAAY,CAAA;AAAA,EACjB;AACA,EAAA,uBAAoBhB,wBAAAA,CAAM,aAAA,CAAc,qBAAA,EAAuB;AAAA,IAC7D,SAAA,EAAW;AAAA,GACZ,CAAA;AACH,CAAC,CAAA;AACD,IAAM,qBAAA,mBAAqCA,wBAAAA,CAAM,IAAA,CAAK,SAAS,uBAAA,CAAwB;AAAA,EACrF;AACF,CAAA,EAAG;AACD,EAAA,MAAM,aAAA,GAAgB,UAAU,mBAAA,CAAoB,GAAA;AACpD,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX,GAAI2B,sBAAgB,aAAa,CAAA;AACjC,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA,EAAW,gBAAA;AAAA,IACX,KAAA,EAAO;AAAA,GACT,GAAIC,0BAAa,SAAA,EAAW;AAAA;AAAA,IAE1B,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,MAAM,cAAc,QAAA,IAAY,IAAA;AAChC,EAAA,MAAM,OAAO5B,wBAAAA,CAAM,OAAA,CAAQ,MAAM,QAAA,IAAY,IAAA,IAAQ,UAAU,QAAA,IAAY,QAAA,CAAS,IAAA,IAAQ,IAAA,GAAO,gBAAgB,QAAA,CAAS,IAAI,IAAI,mBAAA,EAAqB,CAAC,QAAQ,CAAC,CAAA;AACnK,EAAA,MAAM,WAAA,GAAc,UAAA,KAAe,GAAA,IAAO,CAAC,WAAA,IAAe,EAAE,mBAAA,IAAuB,QAAA,CAAA,GAAY,QAAA,EAAU,WAAA,GAAc,QAAA,CAAS,iBAAA;AAIhI,EAAA,MAAM,gBAAA,GAAmB,mBAAmB,CAAC,WAAA;AAC7C,EAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IAC7C,WAAW,sBAAA,CAAO;AAAA,GACpB,EAAG,mCAAgCA,wBAAAA,CAAM,cAAcA,wBAAAA,CAAM,QAAA,EAAU,MAAM,wBAAA,EAA0B,yBAAyB,oBAAiBA,wBAAAA,CAAM,cAAcA,wBAAAA,CAAM,QAAA,EAAU,sBAAmBA,wBAAAA,CAAM,cAAc,aAAA,EAAe;AAAA,IACzO,IAAA;AAAA,IACA,IAAA,EAAM;AAAA,GACP,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,cAAA,EAAgB;AAAA,IACnD,WAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA,EAAO,cAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACZ,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AACD,IAAM,cAAA,mBAA8BA,wBAAAA,CAAM,IAAA,CAAK,SAAS,gBAAA,CAAiB;AAAA,EACvE,WAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,UAAU,UAAA,IAAc,IAAA;AAC9B,EAAA,MAAM,KAAA,GAAQ,WAAA,KAAgB,UAAA,KAAe,GAAA,GAAM,QAAA,GAAW,SAAA,CAAA;AAC9D,EAAA,MAAM,YAAA,GAAe,aAAa,CAAC,OAAA;AACnC,EAAA,MAAM,SAAA,GAAY,KAAA,IAAS,IAAA,IAAQ,CAAC,WAAW,CAAC,SAAA;AAChD,EAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAcA,wBAAAA,CAAM,QAAA,EAAU,IAAA,EAAM,YAAA,IAAgB,yBAAA,EAA2B,SAAA,oBAA0BA,wBAAAA,CAAM,aAAA,CAAc,MAAA,EAAQ;AAAA,IAC7J,WAAW,sBAAA,CAAO,uBAAA;AAAA,IAClB,IAAA,EAAM;AAAA,GACR,EAAG,mBAAmB,KAAA,CAAM,OAAO,EAAE,CAAA,EAAG,CAAC,YAAA,IAAgB,CAAC,SAAA,oBAA0BA,yBAAM,aAAA,CAAc,MAAA,EAAQ,MAAM,CAAA,EAAG,WAAA,CAAY,UAAU,CAAC,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC,CAAA;AAC9J,CAAC,CAAA;AACD,IAAM,wBAAA,mBAAwCA,wBAAAA,CAAM,aAAA,CAAc6B,6BAAA,EAAa;AAAA,EAC7E,WAAW,sBAAA,CAAO;AACpB,CAAC,CAAA;AACD,IAAM,yBAAA,mBAAyC7B,wBAAAA,CAAM,aAAA,CAAc6B,6BAAA,EAAa;AAAA,EAC9E,WAAW,sBAAA,CAAO;AACpB,CAAC,CAAA;AACD,SAAS,YAAY,KAAA,EAAO;AAC1B,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,MAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACxB,EAAA,OAAO,OAAO,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA,GAAQ,IAAI,cAAA,EAAe;AACxD;AACA,SAAS,gBAAgB,OAAA,EAAS;AAChC,EAAA,OAAO;AAAA,IACL,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,OAAO,OAAA,CAAQ;AAAA,GACjB;AACF;;;ACjHA,IAAA,yBAAA,GAAA,EAAA;;;ACqBO,IAAM,iBAAA,GAAoBH,gCAAA,CAAe,SAAS,mBAAA,CAAoB;AAAA,EAC3E,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,gBAAgBR,eAAAA,CAAQ,MAAM,KAAA,IAAS,IAAA,GAAO,QAAQ,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,KAAA,KAAU,KAAK,CAAA,EAAG,KAAA,GAAQ,QAAW,CAAC,OAAA,EAAS,KAAK,CAAC,CAAA;AACjI,EAAA,MAAM,iBAAA,GAAoBpB,oBAAY,CAAA,SAAA,KAAa;AACjD,IAAA,MAAM,QAAQ,OAAA,CAAQ,IAAA,CAAK,CAAA,GAAA,KAAO,GAAA,CAAI,UAAU,SAAS,CAAA;AACzD,IAAA,QAAA,GAAW,KAAA,EAAO,SAAS,IAAI,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AACtB,EAAA,uBAAoBE,wBAAAA,CAAM,aAAA,CAAc8B,qBAAA,EAAY;AAAA,IAClD,EAAA;AAAA,IACA,WAAW,yBAAA,CAAO,cAAA;AAAA,IAClB,oBAAoB,WAAA,IAAe,UAAA;AAAA,IACnC,KAAA,EAAO,aAAA;AAAA,IACP,aAAA,EAAe;AAAA,KACd,OAAA,CAAQ,GAAA,CAAI,4BAAuB9B,wBAAAA,CAAM,cAAc,SAAA,EAAW;AAAA,IACnE,KAAK,MAAA,CAAO,KAAA;AAAA,IACZ;AAAA,GACD,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AACD,IAAM,SAAA,mBAAyBD,YAAAA,CAAK,SAAS,WAAA,CAAY;AAAA,EACvD;AACF,CAAA,EAAG;AACD,EAAA,uBAAoBC,wBAAAA,CAAM,aAAA,CAAc,OAAA,EAAS;AAAA,IAC/C,WAAW,yBAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc+B,YAAM,IAAA,EAAM;AAAA,IAC9C,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,WAAW,yBAAA,CAAO;AAAA,GACpB,kBAAgB/B,wBAAAA,CAAM,aAAA,CAAc+B,YAAM,SAAA,EAAW;AAAA,IACnD,WAAW,yBAAA,CAAO;AAAA,GACnB,CAAC,CAAA,kBAAgB/B,wBAAAA,CAAM,cAAc,MAAA,EAAQ;AAAA,IAC5C,WAAW,yBAAA,CAAO;AAAA,GACpB,EAAG,MAAA,CAAO,KAAK,CAAC,CAAA;AAClB,CAAC,CAAA;;;ACzDD,IAAA,iBAAA,GAAA,EAAA;;;ACAA,SAASgC,SAAAA,GAAW;AAAE,EAAA,OAAOA,SAAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAGA,SAAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAoBnR,IAAM,cAAA,GAAiB;AAAA,EACrB,MAAA,EAAQ;AACV,CAAA;AACO,SAAS,aAAA,CAAc;AAAA,EAC5B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,cAAA,GAAiBlC,mBAAAA,CAAY,CAAA,KAAA,qBAAsBE,wBAAAA,CAAM,cAAc,UAAA,EAAYgC,SAAAA,CAAS,EAAC,EAAG,KAAA,EAAO;AAAA,IAC3G,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA,EAAO;AAAA,GACR,CAAC,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACjB,EAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAciB,WAAAA,EAAO;AAAA,IAC7C,EAAA;AAAA,IACA,WAAW,iBAAA,CAAO,aAAA;AAAA,IAClB,OAAO,KAAA,IAAS,EAAA;AAAA,IAChB,aAAA,EAAe,QAAA;AAAA,IACf,WAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA,EAAQ,cAAA;AAAA,IACR,cAAA,EAAgB,SAAS,IAAA,IAAQ;AAAA,GAClC,CAAA;AACH;AC/BO,SAAS,cAAA,CAAe;AAAA,EAC7B,EAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,uBAAoBjB,wBAAAA,CAAM,aAAA,CAAciB,WAAAA,EAAO;AAAA,IAC7C,EAAA;AAAA,IACA,WAAW,iBAAA,CAAO,aAAA;AAAA,IAClB,IAAA,EAAM,MAAA;AAAA,IACN,OAAO,KAAA,IAAS,EAAA;AAAA,IAChB,aAAA,EAAe,QAAA;AAAA,IACf,WAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA,EAAgB,SAAS,IAAA,IAAQ;AAAA,GAClC,CAAA;AACH;;;ACvCA,SAASe,SAAAA,GAAW;AAAE,EAAA,OAAOA,SAAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAGA,SAAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AA8B5Q,IAAM,iBAAA,mBAAiCjC,YAAAA,CAAK,SAAS,mBAAA,CAAoB;AAAA,EAC9E,eAAA;AAAA,EACA,KAAA;AAAA,EACA,kBAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,eAAA;AACJ,EAAA,uBAAoBC,wBAAAA,CAAM,aAAA,CAAc,SAAA,EAAW;AAAA,IACjD,KAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAU,eAAA,CAAgB,QAAA;AAAA,IAC1B,UAAA,EAAY,mBAAA,KAAwB,SAAA,GAAY,UAAA,GAAa,MAAA;AAAA,IAC7D,KAAA;AAAA,IACA;AAAA,KACC,oBAAA,CAAqB,eAAA,EAAiB,KAAA,EAAO,kBAAA,EAAoB,KAAK,CAAC,CAAA;AAC5E,CAAC,CAAA;AACD,SAAS,oBAAA,CAAqB,eAAA,EAAiB,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO;AACrE,EAAA,QAAQ,gBAAgB,cAAA;AAAgB,IACtC,KAAK,kBAAA;AACH,MAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAc,mBAAA,EAAqBgC,SAAAA,CAAS;AAAA,QACpE,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA,EAAO,kBAAkB,KAAK,CAAA;AAAA,QAC9B,QAAA;AAAA,QACA,kBAAkB,eAAA,CAAgB;AAAA,OACpC,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,YAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,cAAA,EAAgBgC,SAAAA,CAAS;AAAA,QAC/D,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA,EAAO,KAAA,IAAS,IAAA,GAAO,MAAA,CAAO,KAAK,CAAA,GAAI,EAAA;AAAA,QACvC,QAAA;AAAA,QACA,aAAa,eAAA,CAAgB,WAAA;AAAA,QAC7B;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,WAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,aAAA,EAAegC,SAAAA,CAAS;AAAA,QAC9D,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA,EAAO,KAAA,IAAS,IAAA,GAAO,MAAA,CAAO,KAAK,CAAA,GAAI,EAAA;AAAA,QACvC,QAAA;AAAA,QACA,aAAa,eAAA,CAAgB,WAAA;AAAA,QAC7B;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,UAAA,EACH;AACE,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAciC,+BAAA,EAAeD,SAAAA,CAAS;AAAA,QAC9D,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA;AAAA,QACA,QAAA;AAAA,QACA,aAAa,eAAA,CAAgB,WAAA;AAAA,QAC7B;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC;AAAA,IACF,KAAK,iBAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAckC,qCAAA,EAAqBF,SAAAA,CAAS;AAAA,QACpE,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,aAAa,eAAA,CAAgB,WAAA;AAAA,QAG7B,KAAA,EAAO,KAAA,YAAiB,IAAA,GAAO,KAAA,GAAQ,IAAA;AAAA,QACvC,QAAA;AAAA,QACA;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,eAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,iBAAA,EAAmBgC,SAAAA,CAAS;AAAA,QAClE,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,QAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,WAAA,EAAagC,SAAAA,CAAS;AAAA,QAC5D,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA;AAAA,QACA,QAAA;AAAA,QACA;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,cAAA;AAEH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,gBAAA,EAAkBgC,SAAAA,CAAS;AAAA,QACjE,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA,EAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,IAAA;AAAA,QAC3C,QAAA;AAAA,QACA,aAAa,eAAA,CAAgB,WAAA;AAAA,QAC7B;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,aAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,eAAA,EAAiBgC,SAAAA,CAAS;AAAA,QAChE,IAAI,eAAA,CAAgB,QAAA;AAAA,QACpB,KAAA,EAAO,kBAAkB,KAAK,CAAA;AAAA,QAC9B,QAAA;AAAA,QACA;AAAA,OACF,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC,KAAK,YAAA;AACH,MAAA,uBAAoBhC,wBAAAA,CAAM,aAAA,CAAc,cAAA,EAAgBgC,SAAAA,CAAS;AAAA,QAC/D,IAAI,eAAA,CAAgB;AAAA,OACtB,EAAG,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IACzC;AACE,MAAA,OAAO,gCAAgC,eAAe,CAAA;AAAA;AAE5D;AACA,SAAS,kBAAkB,KAAA,EAAO;AAChC,EAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,KAAK,KAAK,KAAA,CAAM,MAAA,KAAW,GAAG,OAAO,WAAA;AACxD,EAAA,MAAM,QAAQ,KAAA,CAAM,CAAC,aAAa,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA;AACpD,EAAA,MAAM,MAAM,KAAA,CAAM,CAAC,aAAa,IAAA,GAAO,KAAA,CAAM,CAAC,CAAA,GAAI,IAAA;AAClD,EAAA,IAAI,KAAA,IAAS,IAAA,IAAQ,GAAA,IAAO,IAAA,EAAM,OAAO,WAAA;AACzC,EAAA,OAAO,CAAC,OAAO,GAAG,CAAA;AACpB;AAGA,SAAS,YAAY,KAAA,EAAO;AAC1B,EAAA,OAAO,KAAA,CAAM,KAAA,CAAM,CAAA,CAAA,KAAK,CAAA,YAAa,IAAI,CAAA;AAC3C;AACA,SAAS,kBAAkB,KAAA,EAAO;AAChC,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,MAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,WAAA,CAAY,KAAK,CAAA,EAAG;AAC9C,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAA;AACT;AACA,SAAS,gCAAgC,KAAA,EAAO;AAC9C,EAAA,MAAM,IAAI,KAAA,CAAM,CAAA,2BAAA,EAA8B,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAC/D;;;AC1IA,IAAM,qCAAqB,IAAI,GAAA,CAAI,CAAC,eAAA,EAAiB,UAAU,CAAC,CAAA;AACzD,IAAM,WAAA,mBAA2BjC,YAAAA,CAAK,SAAS,aAAA,CAAc;AAAA,EAClE,QAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,KAAA,GAAQmB,gBAAQ,MAAM,sBAAA,CAAuB,QAAQ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AACxE,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO;AAAA,MACL,QAAA;AAAA,MACA,MAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA;AACT,MACEiB,2BAAA,CAAc;AAAA,IAChB,MAAM,QAAA,CAAS,QAAA;AAAA,IACf,OAAA;AAAA,IACA;AAAA,GACD,CAAA;AACD,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,GAAA,CAAI,QAAA,CAAS,cAAc,CAAA;AACnE,EAAA,MAAM,YAAA,GAAerC,oBAAY,CAAA,QAAA,KAAY;AAC3C,IAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,IAAA,gBAAA,GAAmB,QAAA,CAAS,UAAU,QAAQ,CAAA;AAI9C,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,MAAA,EAAO;AAAA,IACT;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAA,EAAQ,kBAAkB,QAAA,CAAS,QAAA,EAAU,YAAY,CAAC,CAAA;AAKxE,EAAA,MAAM,UAAA,GAAaA,oBAAY,CAAA,CAAA,KAAK;AAClC,IAAA,IAAI,CAAA,CAAE,aAAA,CAAc,QAAA,CAAS,CAAA,CAAE,aAAa,CAAA,EAAG;AAC7C,MAAA;AAAA,IACF;AACA,IAAA,MAAA,EAAO;AAAA,EACT,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AACX,EAAA,uBAAoBE,wBAAAA,CAAM,aAAA,CAAc,iBAAA,EAAmB;AAAA,IACzD,KAAA;AAAA,IACA,eAAA,EAAiB,QAAA;AAAA,IACjB,kBAAA,EAAoB,YAAA;AAAA,IACpB,MAAA,EAAQ,UAAA;AAAA,IACR,OAAO,UAAA,EAAY;AAAA,GACpB,CAAA;AACH,CAAC,CAAA;;;ACrED,IAAA,kBAAA,GAAA,EAAA;;;ACkBO,IAAM,UAAA,mBAA0BD,YAAAA,CAAK,SAAS,YAAA,CAAa;AAAA,EAChE;AACF,CAAA,EAAG;AACD,EAAA,uBAAoBC,wBAAAA,CAAM,aAAA,CAAc,IAAA,EAAM;AAAA,IAC5C,WAAW,kBAAA,CAAO;AAAA,KACjB,KAAK,CAAA;AACV,CAAC,CAAA;;;ACGM,IAAM,QAAA,mBAAwBD,YAAAA,CAAK,SAAS,UAAA,CAAW;AAAA,EAC5D,SAAA;AAAA,EACA,gBAAA;AAAA,EACA,SAAA,EAAW,mBAAA;AAAA,EACX,kBAAA;AAAA,EACA,QAAA;AAAA,EACA,gBAAA,GAAmB,KAAA;AAAA,EACnB,SAAA,GAAY,KAAA;AAAA,EACZ,SAAA,GAAY,KAAA;AAAA,EACZ;AACF,CAAA,EAAG;AACD,EAAA,MAAM,eAAe,mBAAA,IAAuB,IAAA;AAC5C,EAAA,MAAM,aAAA,GAAgBmB,gBAAQ,MAAM,kBAAA,CAAmB,gBAAgB,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAC5F,EAAA,MAAM;AAAA,IACJ,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,EAAW;AAAA,MACT;AAAA;AACF,MACEkB,qBAAA,CAAQ;AAAA;AAAA;AAAA;AAAA,IAIV,IAAA,EAAM,WAAA;AAAA,IACN,GAAI,YAAA,GAAe;AAAA,MACjB,MAAA,EAAQ;AAAA,KACV,GAAI;AAAA,MACF;AAAA;AACF,GACD,CAAA;AACD,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIvC,iBAAS,KAAK,CAAA;AAClE,EAAA,MAAM;AAAA,IACJ,SAAA,EAAW,YAAA;AAAA,IACX,KAAA,EAAO,eAAA;AAAA,IACP,OAAA,EAAS,aAAA;AAAA,IACT;AAAA,GACF,GAAI,eAAe,QAAQ,CAAA;AAC3B,EAAA,MAAM,yBAAyB,eAAA,IAAmB,IAAA,GAAO,2BAA2B,KAAA,GAAQ,eAAA,CAAgB,UAE1G,mBAAA,GAAsB,MAAA;AACxB,EAAA,MAAM,gBAAA,GAAmBC,mBAAAA,CAAY,OAAM,CAAA,KAAK;AAC9C,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,qBAAA,CAAsB,IAAI,CAAA;AAC1B,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,EAAQ;AAC9B,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA;AAAA,IACF;AAOA,IAAA,MAAM,aAAA,CAAc,mBAAA,IAAuB,SAAA,EAAW,CAAA;AAAA,EACxD,GAAG,CAAC,OAAA,EAAS,aAAA,EAAe,mBAAA,EAAqB,SAAS,CAAC,CAAA;AAC3D,EAAA,MAAM,iBAAA,GAAoBA,mBAAAA,CAAY,CAAC,QAAA,EAAU,KAAA,KAAU;AACzD,IAAA,UAAA,EAAW;AACX,IAAA,kBAAA,GAAqB,UAAU,KAAK,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,UAAA,EAAY,kBAAkB,CAAC,CAAA;AACnC,EAAA,MAAM,gBAAgB,SAAA,IAAa,YAAA;AACnC,EAAA,MAAM,kBAAkBoB,eAAAA,CAAQ,MAAM,IAAI,GAAA,CAAI,gBAAA,CAAiB,IAAI,CAAA,CAAA,KAAK,CAAC,CAAA,CAAE,QAAA,EAAU,EAAE,KAAK,CAAC,CAAC,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAGnH,EAAA,MAAM,YAAA,GAAe,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,IAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,MAAO;AAAA,IACjE,KAAA,EAAO,eAAA,CAAgB,GAAA,CAAI,GAAG,CAAA,IAAK,GAAA;AAAA,IACnC,OAAA,EAAS,OAAO,OAAA,IAAW;AAAA,GAC7B,CAAE,CAAA;AACF,EAAA,MAAM,gBAAA,GAAmB,aAAa,MAAA,GAAS,CAAA;AAC/C,EAAA,MAAM,kBAAA,GAAqB,mBAAmB,yBAAA,GAA4B,sBAAA;AAC1E,EAAA,uBAAoBlB,wBAAAA,CAAM,aAAA,CAAc,MAAA,EAAQ;AAAA,IAC9C,SAAA,EAAWqC,2BAAA,CAAW,gBAAA,CAAO,QAAA,EAAU,SAAS,CAAA;AAAA,IAChD,QAAA,EAAU;AAAA,KACT,SAAA,IAAa,IAAA,oBAAqBrC,wBAAAA,CAAM,cAAc,UAAA,EAAY;AAAA,IACnE,KAAA,EAAO;AAAA,GACR,GAAG,SAAA,IAAa,gBAAA,CAAiB,WAAW,CAAA,oBAAkBA,wBAAAA,CAAM,aAAA,CAAc,KAAA,EAAO;AAAA,IACxF,IAAA,EAAM,QAAA;AAAA,IACN,YAAA,EAAc,qBAAA;AAAA,IACd,WAAW,gBAAA,CAAO;AAAA,KACjB,aAAa,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IACzD,WAAW,gBAAA,CAAO;AAAA,KACjB,gBAAA,CAAiB,GAAA,CAAI,8BAAyBA,wBAAAA,CAAM,cAAc,WAAA,EAAa;AAAA,IAChF,KAAK,QAAA,CAAS,QAAA;AAAA,IACd,QAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA,EAAkB;AAAA,GACnB,CAAC,CAAC,mBAAgBA,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IAC5C,WAAW,gBAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc,cAAA,EAAgB;AAAA,IAClD;AAAA,GACD,CAAA,kBAAgBA,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,IAC1C,WAAW,gBAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc,YAAA,EAAc;AAAA,IAChD,SAAA,EAAW,aAAA;AAAA,IACX,gBAAA,EAAkB,oBAAoB,kBAAA,IAAsB,gBAAA;AAAA,IAC5D,YAAA,EAAc;AAAA,GACf,CAAC,CAAC,CAAC,CAAA;AACN,CAAC;AACD,IAAM,oBAAA,GAAuB,CAAA;AAG7B,IAAM,aAAA,GAAgB,MAAM,IAAA,CAAK;AAAA,EAC/B,MAAA,EAAQ;AACV,CAAA,EAAG,CAAC,CAAA,EAAG,CAAA,qBAAmBA,wBAAAA,CAAM,cAAc,KAAA,EAAO;AAAA,EACnD,GAAA,EAAK,CAAA;AAAA,EACL,WAAW,gBAAA,CAAO;AACpB,CAAA,kBAAgBA,wBAAAA,CAAM,aAAA,CAAc6B,6BAAA,EAAa;AAAA,EAC/C,WAAW,gBAAA,CAAO;AACpB,CAAC,CAAA,kBAAgB7B,wBAAAA,CAAM,aAAA,CAAc6B,6BAAA,EAAa;AAAA,EAChD,WAAW,gBAAA,CAAO;AACpB,CAAC,CAAC,CAAC,CAAA;AACH,SAAS,mBAAmB,gBAAA,EAAkB;AAC5C,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,KAAA,MAAW,OAAO,gBAAA,EAAkB;AAClC,IAAA,MAAM,QAAQ,GAAA,CAAI,mBAAA;AAClB,IAAA,IAAI,kBAAkB,KAAA,EAAO;AAC3B,MAAA,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA,GAAI,KAAA,CAAM,YAAA;AAAA,IAC/B;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AACA,IAAM,YAAA,mBAA4B9B,YAAAA,CAAK,SAAS,cAAA,CAAe;AAAA,EAC7D,SAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,WAAA,GAAc,YAAY,kBAAA,GAAqB,QAAA;AACrD,EAAA,MAAM,MAAA,mBAAsBC,wBAAAA,CAAM,aAAA,CAAcsC,8BAAA,EAAc;AAAA,IAC5D,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,UAAU,gBAAA,IAAoB;AAAA,KAC7B,WAAW,CAAA;AACd,EAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,uBAAoBtC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,IAAA,EAAM;AAAA,IACpD,WAAA,EAAa;AAAA,GACf,kBAAgBvC,wBAAAA,CAAM,aAAA,CAAcuC,0BAAQ,OAAA,EAAS;AAAA,IACnD,MAAA,kBAAqBvC,wBAAAA,CAAM,aAAA,CAAc,MAAA,EAAQ;AAAA,MAC/C,WAAW,gBAAA,CAAO;AAAA,KACnB;AAAA,GACH,EAAG,MAAM,CAAA,kBAAgBA,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,MAAA,EAAQ,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,0BAAQ,UAAA,EAAY,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,KAAA,EAAO,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,KAAA,EAAO,IAAI,CAAA,EAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAC5P,CAAC,CAAA;AAED,SAAS,cAAA,CAAe;AAAA,EACtB;AACF,CAAA,EAAG;AACD,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,MAAM,QAAQ,YAAA,CAAa,MAAA;AAC3B,EAAA,uBAAoBvC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,MAAM,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,0BAAQ,OAAA,EAAS,IAAA,kBAAmBvC,wBAAAA,CAAM,cAAc,MAAA,EAAQ;AAAA,IAC3J,WAAW,gBAAA,CAAO;AAAA,GACpB,kBAAgBA,wBAAAA,CAAM,aAAA,CAAcwC,WAAA,EAAW;AAAA,IAC7C,IAAA,EAAM;AAAA,GACP,CAAA,EAAG,KAAA,KAAU,CAAA,GAAI,SAAA,GAAY,GAAG,KAAK,CAAA,OAAA,CAAS,CAAC,CAAA,kBAAgBxC,wBAAAA,CAAM,aAAA,CAAcuC,0BAAQ,MAAA,EAAQ,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,UAAA,EAAY,sBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,yBAAA,CAAQ,OAAO,IAAA,kBAAmBvC,wBAAAA,CAAM,aAAA,CAAcuC,0BAAQ,KAAA,EAAO,IAAI,mBAAgBvC,wBAAAA,CAAM,cAAc,IAAA,EAAM;AAAA,IACvT,WAAW,gBAAA,CAAO;AAAA,KACjB,YAAA,CAAa,GAAA,CAAI,2BAAsBA,wBAAAA,CAAM,cAAc,IAAA,EAAM;AAAA,IAClE,KAAK,KAAA,CAAM;AAAA,qBACGA,wBAAAA,CAAM,cAAc,QAAA,EAAU,IAAA,EAAM,MAAM,KAAA,EAAO,GAAG,CAAA,EAAG,GAAA,EAAK,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACjG;;;ACnKO,SAAS,gBAAA,CAAiB,eAAe,QAAA,EAAU;AACxD,EAAA,IAAI,YAAY,IAAA,EAAM;AACpB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,IAAA,OAAO,QAAA;AAAA,EACT;AAGA,EAAA,IAAI,OAAO,kBAAkB,QAAA,EAAU;AACrC,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,QAAQ,aAAA;AAAe,IACrB,KAAK,QAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,YAAA;AACH,MAAA,OAAO,OAAO,QAAA,KAAa,QAAA,GAAW,QAAA,GAAW,OAAO,QAAQ,CAAA;AAAA,IAClE,KAAK,SAAA;AAAA,IACL,KAAK,MAAA,EACH;AACE,MAAA,MAAM,WAAA,GAAc,cAAc,QAAQ,CAAA;AAC1C,MAAA,OAAO,WAAA,IAAe,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,WAAW,CAAA,GAAI,MAAA;AAAA,IACzD;AAAA,IACF,KAAK,QAAA,EACH;AACE,MAAA,OAAO,cAAc,QAAQ,CAAA;AAAA,IAC/B;AAAA,IACF,KAAK,SAAA,EACH;AACE,MAAA,IAAI,OAAO,aAAa,SAAA,EAAW;AACjC,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,IAAI,QAAA,KAAa,QAAQ,OAAO,IAAA;AAChC,MAAA,IAAI,QAAA,KAAa,SAAS,OAAO,KAAA;AACjC,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,IACF,KAAK,UAAA;AAAA,IACL,KAAK,WAAA,EACH;AACE,MAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,QAAA,OAAO,OAAO,KAAA,CAAM,IAAA,CAAK,MAAM,QAAQ,CAAC,IAAI,MAAA,GAAY,QAAA;AAAA,MAC1D;AACA,MAAA,IAAI,oBAAoB,IAAA,EAAM;AAC5B,QAAA,OAAO,SAAS,WAAA,EAAY;AAAA,MAC9B;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,IACF,KAAK,YAAA;AAAA,IACL,KAAK,gBAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT;AACE,MAAA,OAAO,QAAA;AAAA;AAEb;AACA,SAAS,cAAc,QAAA,EAAU;AAC/B,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,aAAa,QAAA,EAAU;AAChC,IAAA,MAAM,OAAA,GAAU,SAAS,IAAA,EAAK;AAC9B,IAAA,IAAI,OAAA,KAAY,IAAI,OAAO,MAAA;AAC3B,IAAA,MAAM,MAAA,GAAS,OAAO,OAAO,CAAA;AAC7B,IAAA,OAAO,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,GAAI,MAAA,GAAY,MAAA;AAAA,EAC5C;AACA,EAAA,OAAO,MAAA;AACT;;;ACpEO,SAAS,2BAA2B,QAAA,EAAU;AACnD,EAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,UAAU,EAAE,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM,oBAAA,CAAqB,GAAA,EAAK,KAAK,CAAC,CAAA;AACnG;AACA,IAAM,cAAc,EAAC;AAQrB,SAAS,oBAAA,CAAqB,KAAK,KAAA,EAAO;AACxC,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,QAAA,EAAU,GAAA;AAAA,IACV,KAAA,EAAO,GAAA;AAAA,IACP,UAAA,EAAY,CAAC,KAAA,CAAM,QAAA;AAAA,IACnB,WAAW,KAAA,CAAM;AAAA,GACnB;AACA,EAAA,MAAM,YAAY,KAAA,CAAM,IAAA;AACxB,EAAA,IAAI,OAAO,cAAc,QAAA,EAAU;AACjC,IAAA,QAAQ,UAAU,IAAA;AAAM,MACtB,KAAK,WAAA;AACH,QAAA,OAAO;AAAA,UACL,GAAG,IAAA;AAAA,UACH,cAAA,EAAgB,YAAA;AAAA,UAChB,mBAAA,EAAqB;AAAA,YACnB,KAAA,EAAO;AAAA;AACT,SACF;AAAA,MACF,KAAK,QAAA;AAAA,MACL,KAAK,WAAA;AAEH,QAAA,OAAO;AAAA,UACL,GAAG,IAAA;AAAA,UACH,cAAA,EAAgB,UAAA;AAAA,UAChB,mBAAA,EAAqB;AAAA,YACnB,KAAA,EAAO;AAAA;AACT,SACF;AAAA,MACF,KAAK,QAAA;AACH,QAAA,OAAO;AAAA,UACL,GAAG,IAAA;AAAA,UACH,cAAA,EAAgB,YAAA;AAAA,UAChB,qBAAqB;AAAC,SACxB;AAAA;AACJ,EACF;AACA,EAAA,QAAQ,SAAA;AAAW,IACjB,KAAK,QAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,SAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,YAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,YAAA;AAAA,QAChB,qBAAqB;AAAC,OACxB;AAAA,IACF,KAAK,SAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,eAAA;AAAA,QAChB,mBAAA,EAAqB;AAAA,UACnB,SAAS,CAAC;AAAA,YACR,KAAA,EAAO,MAAA;AAAA,YACP,KAAA,EAAO;AAAA,WACT,EAAG;AAAA,YACD,KAAA,EAAO,OAAA;AAAA,YACP,KAAA,EAAO;AAAA,WACR;AAAA;AACH,OACF;AAAA,IACF,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,cAAA;AAAA,QAChB,qBAAqB;AAAC,OACxB;AAAA,IACF,KAAK,UAAA;AAAA,IACL,KAAK,WAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,iBAAA;AAAA,QAChB,qBAAqB;AAAC,OACxB;AAAA,IACF,KAAK,YAAA;AAAA,IACL,KAAK,gBAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,aAAA;AAAA,QAChB,qBAAqB;AAAC,OACxB;AAAA,IACF;AACE,MAAA,OAAOyC,oCAAkB,SAAS,CAAA;AAAA;AAExC;;;ACxHA,SAAST,SAAAA,GAAW;AAAE,EAAA,OAAOA,SAAAA,GAAW,OAAO,MAAA,GAAS,MAAA,CAAO,OAAO,IAAA,EAAK,GAAI,SAAU,CAAA,EAAG;AAAE,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAAE,MAAA,IAAI,CAAA,GAAI,UAAU,CAAC,CAAA;AAAG,MAAA,KAAA,IAAS,CAAA,IAAK,CAAA,EAAG,CAAC,IAAI,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,GAAI,EAAE,CAAC,CAAA,CAAA;AAAA,IAAI;AAAE,IAAA,OAAO,CAAA;AAAA,EAAG,CAAA,EAAGA,SAAAA,CAAS,KAAA,CAAM,IAAA,EAAM,SAAS,CAAA;AAAG;AAwBnR,IAAM,0BAA0B,EAAC;AAC1B,IAAM,UAAA,GAAaN,gCAAA,CAAe,SAAS,YAAA,CAAa;AAAA,EAC7D,gBAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA,SAAA,EAAW,mBAAA;AAAA,EACX,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,QAAA;AAAA,EACA,oBAAA,EAAsB,qBAAA;AAAA,EACtB,SAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM;AAAA,IACJ,WAAA,EAAa,eAAA;AAAA,IACb;AAAA,GACF,GAAIgB,2BAAc,gBAAgB,CAAA;AAClC,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA,EAAS,eAAA;AAAA,IACT,KAAA,EAAO;AAAA,GACT,GAAIf,sBAAgB,gBAAgB,CAAA;AACpC,EAAA/B,iBAAAA,CAAU,SAAS,iBAAA,GAAoB;AACrC,IAAA,IAAI,iBAAiB,IAAA,EAAM;AACzB,MAAA,OAAA,GAAU;AAAA,QACR,IAAA,EAAM,SAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,IACH;AAAA,EACF,CAAA,EAAG,CAAC,aAAA,EAAe,OAAO,CAAC,CAAA;AAC3B,EAAA,MAAM,aAAa,QAAA,EAAU,UAAA;AAC7B,EAAA,MAAM,sBAAA,GAAyBsB,gBAAQ,MAAM;AAC3C,IAAA,IAAI,wBAAwB,IAAA,EAAM;AAChC,MAAA,OAAO,IAAA;AAAA,IACT;AAIA,IAAA,OAAO,oBAAA,CAAqB,IAAI,CAAA,GAAA,MAAQ;AAAA,MACtC,GAAG,GAAA;AAAA,MACH,QAAA,EAAU,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAA;AAAA,MAC7B,WAAW,UAAA,GAAa,MAAA,CAAO,GAAA,CAAI,QAAQ,CAAC,CAAA,EAAG,IAAA;AAAA,MAC/C,cAAc,GAAA,CAAI;AAAA,KACpB,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,oBAAA,EAAsB,UAAU,CAAC,CAAA;AACrC,EAAA,MAAM,wBAAA,GAA2BA,eAAAA,CAAQ,MAAM,sBAAA,KAA2B,QAAA,IAAY,IAAA,GAAO,0BAAA,CAA2B,QAAQ,CAAA,GAAI,uBAAA,CAAA,EAA0B,CAAC,sBAAA,EAAwB,QAAQ,CAAC,CAAA;AAChM,EAAA,MAAM,eAAA,GAAkBpB,oBAAY,CAAA,QAAA,KAAY;AAC9C,IAAA,MAAM,UAAU,EAAC;AACjB,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,EAAG;AACnD,MAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,gBAAA,CAAiB,aAAa,GAAG,CAAA,EAAG,MAAM,KAAK,CAAA;AAAA,IAChE;AACA,IAAA,OAAO,OAAA;AAAA,EACT,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AACf,EAAA,MAAM,YAAA,GAAeA,mBAAAA,CAAY,OAAM,YAAA,KAAgB;AACrD,IAAA,MAAM,SAAA,GAAY,gBAAgB,YAAY,CAAA;AAC9C,IAAA,IAAI;AACF,MAAA,IAAI,YAAY,IAAA,EAAM;AACpB,QAAA,MAAM,QAAA,CAAS,WAAW,eAAe,CAAA;AAAA,MAC3C,CAAA,MAAO;AACL,QAAA,MAAM,MAAA,GAAS,MAAM,eAAA,CAAgB,SAAS,CAAA;AAC9C,QAAA,SAAA,GAAY,MAAM,CAAA;AAAA,MACpB;AAAA,IACF,SAAS,CAAA,EAAG;AACV,MAAA,OAAA,GAAU;AAAA,QACR,IAAA,EAAM,YAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,IACH;AAAA,EACF,GAAG,CAAC,eAAA,EAAiB,UAAU,eAAA,EAAiB,SAAA,EAAW,OAAO,CAAC,CAAA;AACnE,EAAA,MAAM,sBAAA,GAAyBA,mBAAAA,CAAY,CAAC,QAAA,EAAU,KAAA,KAAU;AAC9D,IAAA,iBAAA,GAAoB,CAAA,IAAA,MAAS;AAAA,MAC3B,GAAG,IAAA;AAAA,MACH,CAAC,QAAQ,GAAG;AAAA,KACd,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,SAAA,IAAa,QAAA,EAAU,WAAA,IAAe,gBAAA,CAAiB,OAAA;AAC7E,EAAA,MAAM,eAAe,mBAAA,IAAuB,IAAA;AAC5C,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,SAAA,EAAW,aAAA;AAAA,IACX,gBAAA,EAAkB,wBAAA;AAAA,IAClB,QAAA,EAAU,YAAA;AAAA,IACV,gBAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA,EAAW,eAAA;AAAA,IACX,kBAAA,EAAoB;AAAA,GACtB;AACA,EAAA,IAAI,CAAC,YAAA,EAAc;AACjB,IAAA,uBAAoBE,wBAAAA,CAAM,aAAA,CAAc,QAAA,EAAU,WAAW,CAAA;AAAA,EAC/D;AACA,EAAA,uBAAoBA,wBAAAA,CAAM,aAAA,CAAc,UAAUgC,SAAAA,CAAS,IAAI,WAAA,EAAa;AAAA,IAC1E,SAAA,EAAW;AAAA,GACZ,CAAC,CAAA;AACJ,CAAC,CAAA;;;AClGM,IAAMW,WAAAA,GAAaC,iCAAA,CAAgB,UAAA,EAAa,YAAY","file":"chunk-DVNYSNQS.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns a ref whose `.current` is `true` while the component is mounted\n * and `false` after unmount. Use to guard async state updates.\n */\nexport function useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(function trackMountedState() {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted.js\";\n/**\n * Wraps an async callback with pending and error state tracking.\n *\n * - `isPending` is true while the action is executing\n * - `error` holds the error from the last rejection (cleared on next execute or via clearError)\n * - `execute` calls the action with pending/error bookkeeping\n * - `clearError` resets the error to undefined\n */\nexport function useAsyncAction(action) {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState(undefined);\n const isMountedRef = useIsMounted();\n const execute = useCallback(async (...args) => {\n setError(undefined);\n setIsPending(true);\n try {\n await action(...args);\n } catch (err) {\n if (isMountedRef.current) {\n setError(err);\n }\n } finally {\n if (isMountedRef.current) {\n setIsPending(false);\n }\n }\n }, [action, isMountedRef]);\n const clearError = useCallback(() => {\n setError(undefined);\n }, []);\n return {\n isPending,\n error,\n execute,\n clearError\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n padding: var(--osdk-form-content-padding);\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-top: var(--osdk-surface-border-width) solid\n var(--osdk-form-footer-border-color);\n padding-block: var(--osdk-form-content-padding);\n padding-inline: var(--osdk-form-content-padding);\n}\n\n.osdkFormSubmitButton {\n margin-inline-start: auto;\n}\n\n.osdkFormErrorIndicator {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-form-footer-error-color);\n font-size: var(--osdk-form-footer-error-font-size);\n cursor: help;\n}\n\n/* Replaces Tooltip.Trigger's default <button> with a <span> to avoid\n nested buttons. inline-flex keeps a real layout box for tooltip anchoring. */\n.osdkTooltipTriggerWrapper {\n display: inline-flex;\n}\n\n/* Loading skeleton — mimics label + input per field */\n.osdkFormSkeletonField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormSkeletonLabel {\n width: 30%;\n height: var(--osdk-form-label-font-size);\n}\n\n.osdkFormSkeletonInput {\n width: 100%;\n height: var(--osdk-input-min-height);\n}\n\n.osdkFormErrorList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Derives react-hook-form validation rules from a field definition's\n * constraint props (min, max, minLength, etc.) and the optional\n * user-provided `validate` function.\n *\n * Called at rule-building time so that `onValidationError` can inject\n * custom messages into the RHF rules object.\n */\nexport function extractValidationRules(fieldDef) {\n const rules = {};\n if (fieldDef.isRequired) {\n rules.required = getMessage(fieldDef, {\n type: \"required\"\n });\n }\n const validateFns = {};\n switch (fieldDef.fieldComponent) {\n case \"NUMBER_INPUT\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => typeof value === \"number\" && value < min ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => typeof value === \"number\" && value > max ? msg : true;\n }\n break;\n }\n case \"TEXT_INPUT\":\n case \"TEXT_AREA\":\n {\n const {\n minLength,\n maxLength\n } = fieldDef.fieldComponentProps;\n if (minLength != null) {\n rules.minLength = {\n value: minLength,\n message: getMessage(fieldDef, {\n type: \"minLength\",\n minLength\n })\n };\n }\n if (maxLength != null) {\n rules.maxLength = {\n value: maxLength,\n message: getMessage(fieldDef, {\n type: \"maxLength\",\n maxLength\n })\n };\n }\n break;\n }\n case \"DATETIME_PICKER\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => value instanceof Date && value.getTime() < min.getTime() ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => value instanceof Date && value.getTime() > max.getTime() ? msg : true;\n }\n break;\n }\n case \"FILE_PICKER\":\n {\n const {\n maxSize\n } = fieldDef.fieldComponentProps;\n if (maxSize != null) {\n const msg = getMessage(fieldDef, {\n type: \"maxSize\",\n maxSize\n });\n validateFns.maxSize = value => {\n if (value instanceof File) {\n return value.size > maxSize ? msg : true;\n }\n if (Array.isArray(value)) {\n const oversized = value.some(f => f instanceof File && f.size > maxSize);\n return oversized ? msg : true;\n }\n return true;\n };\n }\n break;\n }\n // DROPDOWN, RADIO_BUTTONS, CUSTOM, OBJECT_SET: only `required` applies\n default:\n break;\n }\n if (fieldDef.validate != null) {\n const userValidate = fieldDef.validate;\n validateFns.custom = async value => {\n const result = await userValidate(value);\n if (result == null) {\n return true;\n }\n return getMessage(fieldDef, {\n type: \"validate\",\n message: result\n });\n };\n }\n if (Object.keys(validateFns).length > 0) {\n rules.validate = validateFns;\n }\n return rules;\n}\nfunction getMessage(fieldDef, error) {\n return fieldDef.onValidationError?.(error) ?? getDefaultMessage(error);\n}\nfunction getDefaultMessage(error) {\n switch (error.type) {\n case \"required\":\n return \"This field is required\";\n case \"min\":\n return `Must be at least ${formatConstraint(error.min)}`;\n case \"max\":\n return `Must be at most ${formatConstraint(error.max)}`;\n case \"minLength\":\n return `Must be at least ${error.minLength} characters`;\n case \"maxLength\":\n return `Must be at most ${error.maxLength} characters`;\n case \"maxSize\":\n return `File must be smaller than ${formatBytes(error.maxSize)}`;\n case \"validate\":\n return error.message;\n }\n}\nfunction formatConstraint(value) {\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n error,\n onBlur,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, label != null && /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")), children, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error), helperText != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A form field definition specifies configuration for a single field\n */\n\n/**\n * A discriminated union describing which validation rule failed and the\n * constraint data the user needs to build a meaningful error message.\n */\n\n/**\n * Maps field types to their corresponding props\n */\n\n/**\n * Datetime picker field props.\n *\n * When `formatDate` is omitted, ISO-like format is used (YYYY-MM-DD / YYYY-MM-DD HH:mm).\n */\n\n/**\n * A date range represented as a start/end tuple.\n * Either element may be `null` when the range is partially selected.\n */\n\n/** Default empty range — both bounds are null. */\nexport const EMPTY_RANGE = [null, null];\n\n/**\n * Date range input field props.\n *\n * Renders two text inputs (start / end) with a shared calendar popover\n * that supports range selection.\n */\n\n/**\n * Dropdown field props with selectable items\n */\n\n/**\n * Text area field props\n */\n\n/**\n * Number input field props\n */\n\n/**\n * Radio buttons field props\n */\n\n/**\n * Option interface for radio button options\n */\n\n/**\n * Object set field displays the summary of the count of the given object set\n */\n\n/**\n * Custom field props for user-defined renderers\n */\n\n/**\n * Extracts parameters from an ActionDefinition\n */\n\n/**\n * Extracts the value type for a specific parameter\n *\n * TODO: Re-use `BaseType`\n */\n\n/**\n * Extracts the parameter type descriptor for a specific action parameter.\n */\n\n/**\n * Available form field component types\n */\n\n/**\n * Describes the data type of a form field, independent of OSDK.\n * Mirrors ActionMetadata.DataType to keep the rendering layer OSDK-agnostic.\n */\n\n/**\n * Props managed by form state infrastructure (FieldBridge / RHF).\n * Fields with onChange participate in form state → value and onChange are managed\n * externally. Read-only fields (no onChange, e.g. ObjectSetField) keep value in\n * fieldComponentProps so it bypasses form state cloning.\n */\n\n/**\n * An OSDK-agnostic field definition used by BaseForm and FormFieldRenderer.\n * Contains only the information needed to render a single field — no generics,\n * no compile-time parameter constraints.\n *\n * Implemented as a distributed mapped type: switching on `fieldComponent`\n * narrows `fieldComponentProps` to the correct props type automatically.\n */\n\n/**\n * Gets valid form field types for a given property type\n */","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/* DateRangeInputField — two separate bordered inputs + shared popover */\n\n/* Outer container that holds both inputs side by side.\n Acts as Popover.Trigger — suppress the focus ring when\n focus returns here after the popover closes. */\n.osdkDateRangeContainer {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n outline: none;\n}\n\n/* Each input wrapper gets flex: 1 to split equally */\n.osdkDateRangeInputWrapper {\n flex: 1;\n min-width: 0;\n}\n\n/* Two TimePickers side-by-side, each centered under its calendar month.\n Negative horizontal margin counters the popover padding so the border-top\n spans the full width of the popover. */\n.osdkDateRangeTimeRow {\n display: flex;\n gap: var(--osdk-time-picker-gap);\n padding-top: var(--osdk-time-picker-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n margin-top: var(--osdk-time-picker-margin-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n border-top: var(--osdk-time-picker-border-top);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { Suspense } from \"react\";\nimport styles from \"./DatePickerCommon.module.css\";\nconst DateRangeCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateRangeCalendar.js\"));\nexport function LazyDateRangeCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDatePickerFallback\n })\n }, /*#__PURE__*/React.createElement(DateRangeCalendarLazy, props));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useId, useRef, useState } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, formatDatetimeForInput, getTimeValue, parseDateFromInput, parseDatetimeFromInput, parseTimeString } from \"../../shared/dateUtils.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { stopPropagation } from \"./calendarShared.js\";\nimport commonStyles from \"./DatePickerCommon.module.css\";\nimport styles from \"./DateRangeInputField.module.css\";\nimport { LazyDateRangeCalendar } from \"./LazyDateRangeCalendar.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport { useDateEditState } from \"./useDateEditState.js\";\n// Shared props for both start/end inputs. role=\"combobox\" because each input\n// triggers a shared popup (the calendar popover) — matching WAI-ARIA combobox pattern.\nconst SHARED_INPUT_PROPS = {\n className: commonStyles.osdkDatePickerInput,\n type: \"text\",\n onClick: stopPropagation,\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-haspopup\": \"dialog\"\n};\nexport const DateRangeInputField = /*#__PURE__*/React.memo(function DateRangeInputField({\n id,\n value,\n onChange,\n min,\n max,\n placeholderStart,\n placeholderEnd,\n allowSingleDayRange = true,\n showTime = false,\n formatDate,\n parseDate\n}) {\n const shouldCloseOnSelection = !showTime;\n const popoverId = useId();\n const startInputRef = useRef(null);\n const endInputRef = useRef(null);\n const popoverRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n // Tracks which input (start/end) owns the shared calendar popover.\n // Used to restore focus to the correct input when Tab-cycling through\n // focus boundaries and when the calendar selects a range endpoint.\n const [activeBoundary, setActiveBoundary] = useState(\"start\");\n const [startDate, endDate] = value ?? EMPTY_RANGE;\n\n // editFormatFn produces a parsable string for typing (e.g. \"2024-01-15\" or \"2024-01-15 14:30\").\n // displayFormatFn produces a human-readable string for idle state (e.g. \"Jan 15, 2024\").\n const editFormatFn = showTime ? formatDatetimeForInput : formatDateForInput;\n const displayFormatFn = formatDate ?? (showTime ? formatDatetimeForInput : formatDateForDisplay);\n const parseFn = parseDate ?? (showTime ? parseDatetimeFromInput : parseDateFromInput);\n\n // Wrap onChange to handle tuple construction and overlap rejection.\n // Clearing (null) is always allowed; overlap is checked for non-null dates.\n const startOnChange = useCallback(date => {\n if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {\n return;\n }\n onChange?.([date, endDate ?? null]);\n }, [endDate, onChange, allowSingleDayRange]);\n const endOnChange = useCallback(date => {\n if (date != null && isOverlapping(startDate, date, allowSingleDayRange)) {\n return;\n }\n onChange?.([startDate ?? null, date]);\n }, [startDate, onChange, allowSingleDayRange]);\n const {\n isEditing: isEditingStart,\n dateValue: startParsedValue,\n inputError: startInputError,\n displayedValue: displayedStart,\n startEditing: beginStartEditing,\n stopEditing: stopStartEditing,\n commitAndStopEditing: commitStartAndStopEditing,\n setInputValue: setStartInputValue,\n setDateValue: setStartDateValue\n } = useDateEditState({\n value: startDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: startOnChange\n });\n const {\n isEditing: isEditingEnd,\n dateValue: endParsedValue,\n inputError: endInputError,\n displayedValue: displayedEnd,\n startEditing: beginEndEditing,\n stopEditing: stopEndEditing,\n commitAndStopEditing: commitEndAndStopEditing,\n setInputValue: setEndInputValue,\n setDateValue: setEndDateValue\n } = useDateEditState({\n value: endDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: endOnChange\n });\n\n // --- Cross-input error: overlapping range (live feedback while typing) ---\n // Blur/Enter handlers prevent overlapping values from being committed,\n // so this only fires during editing for immediate red-border feedback.\n const hasOverlapError = (() => {\n if (!isEditingStart && !isEditingEnd) return false;\n const effectiveStart = isEditingStart ? startParsedValue : startDate ?? undefined;\n const effectiveEnd = isEditingEnd ? endParsedValue : endDate ?? undefined;\n return isOverlapping(effectiveStart, effectiveEnd, allowSingleDayRange);\n })();\n const startInvalid = startInputError != null || hasOverlapError;\n const endInvalid = endInputError != null || hasOverlapError;\n\n // --- Focus handlers ---\n\n const handleStartFocus = useCallback(() => {\n beginStartEditing();\n setActiveBoundary(\"start\");\n setIsOpen(true);\n }, [beginStartEditing]);\n const handleEndFocus = useCallback(() => {\n beginEndEditing();\n setActiveBoundary(\"end\");\n setIsOpen(true);\n }, [beginEndEditing]);\n\n // --- Blur handlers ---\n\n const handleStartBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n // Focus moved into the popover portal — the field is still logically\n // active, so suppress the blur from bubbling to parent containers.\n e.stopPropagation();\n return;\n }\n if (endInputRef.current === related) {\n return;\n }\n commitStartAndStopEditing();\n }, [commitStartAndStopEditing]);\n const handleEndBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n e.stopPropagation();\n return;\n }\n if (startInputRef.current === related) {\n return;\n }\n commitEndAndStopEditing();\n }, [commitEndAndStopEditing]);\n\n // --- Popover helpers ---\n\n // Shared close sequence: dismiss the popover, reset both editing states,\n // and blur both inputs so focus doesn't linger after the calendar disappears.\n const closePopover = useCallback(() => {\n setIsOpen(false);\n stopStartEditing();\n stopEndEditing();\n startInputRef.current?.blur();\n endInputRef.current?.blur();\n }, [stopStartEditing, stopEndEditing]);\n\n // --- Keyboard handlers ---\n\n const handleStartKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitStartAndStopEditing();\n // Auto-advance to end\n endInputRef.current?.focus();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && e.shiftKey) {\n setIsOpen(false);\n }\n }, [commitStartAndStopEditing, closePopover]);\n const handleEndKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitEndAndStopEditing();\n closePopover();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && !e.shiftKey && isOpen) {\n // Tab from the end input bridges focus into the popover. The popover\n // doesn't auto-focus on open (to keep the cursor in the input for typing),\n // so we manually focus the first interactive element (nav button or select).\n const firstButton = popoverRef.current?.querySelector(\"button, select\");\n if (firstButton != null) {\n e.preventDefault();\n firstButton.focus();\n }\n }\n }, [commitEndAndStopEditing, closePopover, isOpen]);\n\n // Called by base-ui when the popover opens or closes (e.g. click outside, Escape).\n const handleOpenChange = useCallback(nextOpen => {\n if (nextOpen) {\n setIsOpen(true);\n } else {\n closePopover();\n }\n }, [closePopover]);\n\n // --- Calendar handlers ---\n\n const handleRangeSelect = useCallback(range => {\n const newStart = range?.from ?? null;\n const newEnd = range?.to ?? null;\n onChange?.([newStart, newEnd]);\n if (newStart != null && newEnd == null) {\n // Start selected — commit the start and advance to end.\n // displayedValue handles the display format after stopEditing.\n stopStartEditing();\n setActiveBoundary(\"end\");\n endInputRef.current?.focus();\n } else if (newStart != null && newEnd != null && shouldCloseOnSelection) {\n // Full range selected — close and blur.\n closePopover();\n } else if (newStart != null && newEnd != null) {\n // Full range selected but popover stays open (showTime) —\n // inputs remain in editing mode, so update with editFormatFn.\n setStartDateValue(newStart);\n setEndDateValue(newEnd);\n }\n }, [onChange, shouldCloseOnSelection, closePopover, stopStartEditing, setStartDateValue, setEndDateValue]);\n\n // --- Time handlers ---\n\n const handleStartTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = startDate != null ? new Date(startDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([base, endDate ?? null]);\n setStartDateValue(base);\n }, [startDate, endDate, onChange, setStartDateValue]);\n const handleEndTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = endDate != null ? new Date(endDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([startDate ?? null, base]);\n setEndDateValue(base);\n }, [startDate, endDate, onChange, setEndDateValue]);\n\n // --- Focus boundary handlers ---\n // Visually-hidden sentinels at the top/bottom of the popover that trap Tab\n // cycling between the text inputs and calendar.\n\n // Start boundary (top): Shift+Tab past the first calendar element redirects\n // focus to whichever input is currently active.\n const handleStartFocusBoundary = useCallback(() => {\n const activeRef = activeBoundary === \"start\" ? startInputRef : endInputRef;\n activeRef.current?.focus();\n }, [activeBoundary]);\n\n // End boundary (bottom): Two cases —\n // (1) Tab past the last calendar element (focus came from inside the popover)\n // → close the popover and blur both inputs.\n // (2) Focus entered from outside the popover (e.g. reverse Tab from the page)\n // → redirect to the last interactive element inside the popover.\n const handleEndFocusBoundary = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n closePopover();\n } else {\n const buttons = popoverRef.current?.querySelectorAll(\"button, select\");\n const lastButton = buttons?.[buttons.length - 1];\n lastButton?.focus();\n }\n }, [closePopover]);\n\n // --- Calendar selected range ---\n\n const calendarSelected = startDate != null || endDate != null ? {\n from: startDate ?? undefined,\n to: endDate ?? undefined\n } : undefined;\n const timeFooter = showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeTimeRow\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(startDate),\n onChange: handleStartTimeChange,\n label: \"Start time\"\n }), /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(endDate),\n onChange: handleEndTimeChange,\n label: \"End time\"\n })) : undefined;\n const sharedInputProps = {\n ...SHARED_INPUT_PROPS,\n \"aria-controls\": popoverId\n };\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: handleOpenChange\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n nativeButton: false,\n render: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeContainer\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, startInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: startInputRef,\n id: id != null ? `${id}-start` : undefined,\n value: displayedStart,\n onValueChange: setStartInputValue,\n onFocus: handleStartFocus,\n onBlur: handleStartBlur,\n onKeyDown: handleStartKeyDown,\n placeholder: placeholderStart,\n \"aria-expanded\": isOpen && activeBoundary === \"start\",\n \"aria-label\": \"Start date\",\n \"aria-invalid\": startInvalid || undefined\n }, sharedInputProps))), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, endInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: endInputRef,\n id: id != null ? `${id}-end` : undefined,\n value: displayedEnd,\n onValueChange: setEndInputValue,\n onFocus: handleEndFocus,\n onBlur: handleEndBlur,\n onKeyDown: handleEndKeyDown,\n placeholder: placeholderEnd,\n \"aria-expanded\": isOpen && activeBoundary === \"end\",\n \"aria-label\": \"End date\",\n \"aria-invalid\": endInvalid || undefined\n }, sharedInputProps)))), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n ref: popoverRef,\n className: commonStyles.osdkDatePickerPopover,\n id: popoverId,\n role: \"dialog\",\n \"aria-label\": \"date range picker\"\n // Disable base-ui's automatic focus restoration to the trigger on close.\n // We manage focus ourselves via closePopover() which blurs the inputs.\n ,\n finalFocus: false\n }, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleStartFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"Start of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n }), /*#__PURE__*/React.createElement(LazyDateRangeCalendar, {\n selected: calendarSelected,\n onSelect: handleRangeSelect,\n min: min,\n max: max\n }), timeFooter, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleEndFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"End of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n })))));\n});\n\n/** True when the end boundary is before (or same-day when disallowed) the start. */\nfunction isOverlapping(start, end, allowSingleDayRange) {\n if (start == null || end == null) return false;\n if (!allowSingleDayRange && end.getTime() === start.getTime()) return true;\n return end.getTime() < start.getTime();\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n background: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n background: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:focus-visible {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n }\n}\n\n/* display: none fully removes the input from the a11y tree, avoiding\n nested-interactive inside the role=\"button\" trigger. Programmatic\n .click() still opens the file dialog. */\n.osdkFilePickerHiddenInput {\n display: none;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background: none;\n border: none;\n font-family: inherit;\n font-size: inherit;\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse label (right section) */\n.osdkFilePickerBrowse {\n flex-shrink: 0;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: var(--osdk-file-picker-browse-padding);\n border-left: var(--osdk-file-picker-browse-border-left);\n background: var(--osdk-file-picker-browse-bg);\n color: var(--osdk-file-picker-browse-color);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n pointer-events: none;\n transition: background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:hover .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-hover);\n}\n\n.osdkFilePickerTrigger:active .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-active);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n error,\n isMulti,\n accept,\n // maxSize is enforced by form-level validation (extractValidationRules),\n // not here. Silently dropping oversized files would leave the user with\n // no indication of why their selection disappeared.\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\"\n}) {\n const inputRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return (\n /*#__PURE__*/\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n React.createElement(\"div\", {\n id: id,\n className: styles.osdkFilePickerTrigger,\n tabIndex: 0,\n role: \"button\",\n \"aria-label\": \"Choose file\",\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n tabIndex: -1\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder)\n }, displayText ?? text), hasValue &&\n /*#__PURE__*/\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n React.createElement(Button, {\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\"\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFilePickerBrowse\n }, buttonText))\n );\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\nexport function NumberInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n min,\n max,\n step\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = clamp(current + delta, min, max);\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step, min, max]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}\nfunction clamp(value, min, max) {\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty)\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n\n &[data-orientation=\"horizontal\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-font-family);\n font-size: var(--osdk-typography-font-size-default);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default);\n cursor: pointer;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options,\n orientation\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n \"data-orientation\": orientation ?? \"vertical\",\n value: selectedLabel,\n onValueChange: handleValueChange\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option\n}) {\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n error,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n render: renderTextarea,\n \"aria-invalid\": error != null || undefined\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n minLength,\n maxLength\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n \"aria-invalid\": error != null || undefined\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { FormField } from \"../FormField.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DateRangeInputField } from \"./DateRangeInputField.js\";\nimport { DatetimePickerField } from \"./DatetimePickerField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n error\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperTextPlacement !== \"tooltip\" ? helperText : undefined,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error) {\n switch (fieldDefinition.fieldComponent) {\n case \"DATE_RANGE_INPUT\":\n return /*#__PURE__*/React.createElement(DateRangeInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToDateRange(value),\n onChange: onChange,\n placeholderStart: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatetimePickerField, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\nfunction coerceToDateRange(value) {\n if (!Array.isArray(value) || value.length !== 2) return EMPTY_RANGE;\n const start = value[0] instanceof Date ? value[0] : null;\n const end = value[1] instanceof Date ? value[1] : null;\n if (start == null && end == null) return EMPTY_RANGE;\n return [start, end];\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { extractValidationRules } from \"../utils/extractValidationRules.js\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nconst SELECT_LIKE_FIELDS = new Set([\"RADIO_BUTTONS\", \"DROPDOWN\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange\n}) {\n const rules = useMemo(() => extractValidationRules(fieldDef), [fieldDef]);\n const {\n field: {\n onChange,\n onBlur,\n value\n },\n fieldState: {\n error: fieldError\n }\n } = useController({\n name: fieldDef.fieldKey,\n control,\n rules\n });\n const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n // Select-like fields are \"pick once\" interactions — mark as touched\n // immediately so RHF revalidates (clears errors) on selection rather\n // than waiting for focus to leave the container.\n if (isSelectLike) {\n onBlur();\n }\n }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);\n\n // Ignore blur events where focus stays within the field container\n // (e.g. moving between radio buttons in a group). Only fire RHF's\n // onBlur when focus truly leaves the field.\n const handleBlur = useCallback(e => {\n if (e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n onBlur();\n }, [onBlur]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange,\n onBlur: handleBlur,\n error: fieldError?.message\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-header-inline-padding);\n border-bottom: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { useAsyncAction } from \"../shared/hooks/useAsyncAction.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n fieldDefinitions,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className\n}) {\n const isControlled = controlledFormState != null;\n const defaultValues = useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);\n const {\n control,\n trigger,\n getValues,\n formState: {\n errors\n }\n } = useForm({\n // Validate on blur first, then revalidate on change after the first\n // error. This gives the user a chance to finish typing before seeing\n // errors, while staying responsive once an error is surfaced.\n mode: \"onTouched\",\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = useState(false);\n const {\n isPending: isSubmitting,\n error: submissionError,\n execute: executeSubmit,\n clearError\n } = useAsyncAction(onSubmit);\n const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message\n // TODO: provide better error message\n : \"Submission failed\" : undefined;\n const handleFormSubmit = useCallback(async e => {\n e.preventDefault();\n setHasAttemptedSubmit(true);\n const isValid = await trigger();\n if (!isValid) {\n return;\n }\n\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n await executeSubmit(controlledFormState ?? getValues());\n }, [trigger, executeSubmit, controlledFormState, getValues]);\n const handleFieldChange = useCallback((fieldKey, value) => {\n clearError();\n onFieldValueChange?.(fieldKey, value);\n }, [clearError, onFieldValueChange]);\n const isFormPending = isPending || isSubmitting;\n const labelByFieldKey = useMemo(() => new Map(fieldDefinitions.map(d => [d.fieldKey, d.label])), [fieldDefinitions]);\n\n // RHF reuses the same errors object reference across renders so we cannot memoize errorEntries\n const errorEntries = Object.entries(errors).map(([key, entry]) => ({\n label: labelByFieldKey.get(key) ?? key,\n message: entry?.message ?? \"Invalid\"\n }));\n const areErrorsPresent = errorEntries.length > 0;\n const buttonErrorMessage = areErrorsPresent ? \"Some fields are invalid\" : submissionErrorMessage;\n return /*#__PURE__*/React.createElement(\"form\", {\n className: classNames(styles.osdkForm, className),\n onSubmit: handleFormSubmit\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && fieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\",\n \"aria-label\": \"Loading form fields\",\n className: styles.osdkFormFields\n }, FORM_SKELETON), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, fieldDefinitions.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ErrorIndicator, {\n errorEntries: errorEntries\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSubmitButton\n }, /*#__PURE__*/React.createElement(SubmitButton, {\n isPending: isFormPending,\n isSubmitDisabled: isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent,\n errorMessage: buttonErrorMessage\n }))));\n});\nconst SKELETON_FIELD_COUNT = 3;\n\n// Mimics the label + input layout of real form fields.\nconst FORM_SKELETON = Array.from({\n length: SKELETON_FIELD_COUNT\n}, (_, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: styles.osdkFormSkeletonField\n}, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonLabel\n}), /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonInput\n})));\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}\nconst SubmitButton = /*#__PURE__*/memo(function SubmitButtonFn({\n isPending,\n isSubmitDisabled,\n errorMessage\n}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : \"Submit\";\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"submit\",\n variant: \"primary\",\n disabled: isSubmitDisabled || isPending\n }, buttonLabel);\n if (errorMessage == null) {\n return button;\n }\n return /*#__PURE__*/React.createElement(Tooltip.Root, {\n defaultOpen: true\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTooltipTriggerWrapper\n })\n }, button), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), errorMessage))));\n});\n// memo omitted: errorEntries is always a new array (RHF reuses the same errors ref)\nfunction ErrorIndicator({\n errorEntries\n}) {\n if (errorEntries.length === 0) {\n return null;\n }\n const count = errorEntries.length;\n return /*#__PURE__*/React.createElement(Tooltip.Root, null, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormErrorIndicator\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n size: 14\n }), count === 1 ? \"1 issue\" : `${count} issues`)), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), /*#__PURE__*/React.createElement(\"ul\", {\n className: styles.osdkFormErrorList\n }, errorEntries.map(entry => /*#__PURE__*/React.createElement(\"li\", {\n key: entry.label\n }, /*#__PURE__*/React.createElement(\"strong\", null, entry.label, \":\"), \" \", entry.message)))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\nconst EMPTY_ITEMS = [];\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n case \"interface\":\n // TODO: provide correct items\n return {\n ...base,\n fieldComponent: \"DROPDOWN\",\n fieldComponentProps: {\n items: EMPTY_ITEMS\n }\n };\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useOsdkAction } from \"@osdk/react/experimental\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => ({\n ...def,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n defaultValue: def.defaultValue\n }));\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n fieldDefinitions: rendererFieldDefinitions,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm = withOsdkMetrics(_ActionForm, \"ActionForm\");\nexport { BaseForm } from \"../../action-form/BaseForm.js\";"]}
|
|
1
|
+
{"version":3,"sources":["../../src/shared/hooks/useIsMounted.ts","../../src/shared/hooks/useAsyncAction.ts","../../src/action-form/BaseForm.module.css","../../src/action-form/utils/extractValidationRules.ts","../../src/action-form/FormField.module.css","../../src/action-form/FormField.tsx","../../src/action-form/FormFieldApi.ts","../../src/action-form/fields/CustomField.tsx","../../src/action-form/fields/DateRangeInputField.module.css","../../src/action-form/fields/LazyDateRangeCalendar.tsx","../../src/action-form/fields/DateRangeInputField.tsx","../../src/action-form/fields/FilePickerField.module.css","../../src/action-form/fields/FilePickerField.tsx","../../src/action-form/fields/NumberInputField.module.css","../../src/action-form/fields/NumberInputField.tsx","../../src/base-components/icon/BlueprintIcon.tsx","../../src/action-form/fields/ObjectSetField.module.css","../../src/action-form/fields/ObjectSetField.tsx","../../src/action-form/fields/RadioButtonsField.module.css","../../src/action-form/fields/RadioButtonsField.tsx","../../src/action-form/fields/BaseInput.module.css","../../src/action-form/fields/TextAreaField.tsx","../../src/action-form/fields/TextInputField.tsx","../../src/action-form/fields/FormFieldRenderer.tsx","../../src/action-form/fields/FieldBridge.tsx","../../src/action-form/FormHeader.module.css","../../src/action-form/FormHeader.tsx","../../src/action-form/BaseForm.tsx","../../src/action-form/utils/coerceFieldValue.ts","../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../src/action-form/ActionForm.tsx","../../src/public/experimental/action-form.ts"],"names":["useRef","useEffect","useState","useCallback","memo","React","Suspense","DatePickerCommon_default","stopPropagation","DateRangeInputField","useId","formatDatetimeForInput","formatDateForInput","formatDateForDisplay","parseDatetimeFromInput","parseDateFromInput","useDateEditState","parseTimeString","TimePicker","getTimeValue","Popover","classnames","Input","useMemo","Button","Cross","ChevronUp","ChevronDown","SVGIconContainer","Icons","IconSize","typedReactMemo","useOsdkMetadata","useObjectSet","SkeletonBar","RadioGroup","Radio","_extends","DropdownField","DatetimePickerField","useController","useForm","classNames","ActionButton","Tooltip","ErrorIcon","assertUnreachable","useOsdkAction","ActionForm","withOsdkMetrics"],"mappings":"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","file":"chunk-WII3JKZ5.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns a ref whose `.current` is `true` while the component is mounted\n * and `false` after unmount. Use to guard async state updates.\n */\nexport function useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(function trackMountedState() {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted.js\";\n/**\n * Wraps an async callback with pending and error state tracking.\n *\n * - `isPending` is true while the action is executing\n * - `error` holds the error from the last rejection (cleared on next execute or via clearError)\n * - `execute` calls the action with pending/error bookkeeping\n * - `clearError` resets the error to undefined\n */\nexport function useAsyncAction(action) {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState(undefined);\n const isMountedRef = useIsMounted();\n const execute = useCallback(async (...args) => {\n setError(undefined);\n setIsPending(true);\n try {\n await action(...args);\n } catch (err) {\n if (isMountedRef.current) {\n setError(err);\n }\n } finally {\n if (isMountedRef.current) {\n setIsPending(false);\n }\n }\n }, [action, isMountedRef]);\n const clearError = useCallback(() => {\n setError(undefined);\n }, []);\n return {\n isPending,\n error,\n execute,\n clearError\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n padding: var(--osdk-form-content-padding);\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-top: var(--osdk-surface-border-width) solid\n var(--osdk-form-footer-border-color);\n padding-block: var(--osdk-form-content-padding);\n padding-inline: var(--osdk-form-content-padding);\n}\n\n.osdkFormSubmitButton {\n margin-inline-start: auto;\n}\n\n.osdkFormErrorIndicator {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-form-footer-error-color);\n font-size: var(--osdk-form-footer-error-font-size);\n cursor: help;\n}\n\n/* Replaces Tooltip.Trigger's default <button> with a <span> to avoid\n nested buttons. inline-flex keeps a real layout box for tooltip anchoring. */\n.osdkTooltipTriggerWrapper {\n display: inline-flex;\n}\n\n/* Loading skeleton — mimics label + input per field */\n.osdkFormSkeletonField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormSkeletonLabel {\n width: 30%;\n height: var(--osdk-form-label-font-size);\n}\n\n.osdkFormSkeletonInput {\n width: 100%;\n height: var(--osdk-input-min-height);\n}\n\n.osdkFormErrorList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Derives react-hook-form validation rules from a field definition's\n * constraint props (min, max, minLength, etc.) and the optional\n * user-provided `validate` function.\n *\n * Called at rule-building time so that `onValidationError` can inject\n * custom messages into the RHF rules object.\n */\nexport function extractValidationRules(fieldDef) {\n const rules = {};\n if (fieldDef.isRequired) {\n rules.required = getMessage(fieldDef, {\n type: \"required\"\n });\n }\n const validateFns = {};\n switch (fieldDef.fieldComponent) {\n case \"NUMBER_INPUT\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => typeof value === \"number\" && value < min ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => typeof value === \"number\" && value > max ? msg : true;\n }\n break;\n }\n case \"TEXT_INPUT\":\n case \"TEXT_AREA\":\n {\n const {\n minLength,\n maxLength\n } = fieldDef.fieldComponentProps;\n if (minLength != null) {\n rules.minLength = {\n value: minLength,\n message: getMessage(fieldDef, {\n type: \"minLength\",\n minLength\n })\n };\n }\n if (maxLength != null) {\n rules.maxLength = {\n value: maxLength,\n message: getMessage(fieldDef, {\n type: \"maxLength\",\n maxLength\n })\n };\n }\n break;\n }\n case \"DATETIME_PICKER\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => value instanceof Date && value.getTime() < min.getTime() ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => value instanceof Date && value.getTime() > max.getTime() ? msg : true;\n }\n break;\n }\n case \"FILE_PICKER\":\n {\n const {\n maxSize\n } = fieldDef.fieldComponentProps;\n if (maxSize != null) {\n const msg = getMessage(fieldDef, {\n type: \"maxSize\",\n maxSize\n });\n validateFns.maxSize = value => {\n if (value instanceof File) {\n return value.size > maxSize ? msg : true;\n }\n if (Array.isArray(value)) {\n const oversized = value.some(f => f instanceof File && f.size > maxSize);\n return oversized ? msg : true;\n }\n return true;\n };\n }\n break;\n }\n // DROPDOWN, RADIO_BUTTONS, CUSTOM, OBJECT_SET: only `required` applies\n default:\n break;\n }\n if (fieldDef.validate != null) {\n const userValidate = fieldDef.validate;\n validateFns.custom = async value => {\n const result = await userValidate(value);\n if (result == null) {\n return true;\n }\n return getMessage(fieldDef, {\n type: \"validate\",\n message: result\n });\n };\n }\n if (Object.keys(validateFns).length > 0) {\n rules.validate = validateFns;\n }\n return rules;\n}\nfunction getMessage(fieldDef, error) {\n return fieldDef.onValidationError?.(error) ?? getDefaultMessage(error);\n}\nfunction getDefaultMessage(error) {\n switch (error.type) {\n case \"required\":\n return \"This field is required\";\n case \"min\":\n return `Must be at least ${formatConstraint(error.min)}`;\n case \"max\":\n return `Must be at most ${formatConstraint(error.max)}`;\n case \"minLength\":\n return `Must be at least ${error.minLength} characters`;\n case \"maxLength\":\n return `Must be at most ${error.maxLength} characters`;\n case \"maxSize\":\n return `File must be smaller than ${formatBytes(error.maxSize)}`;\n case \"validate\":\n return error.message;\n }\n}\nfunction formatConstraint(value) {\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-label-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n error,\n onBlur,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, label != null && /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")), children, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error), helperText != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A form field definition specifies configuration for a single field\n */\n\n/**\n * A discriminated union describing which validation rule failed and the\n * constraint data the user needs to build a meaningful error message.\n */\n\n/**\n * Maps field types to their corresponding props\n */\n\n/**\n * Datetime picker field props.\n *\n * When `formatDate` is omitted, ISO-like format is used (YYYY-MM-DD / YYYY-MM-DD HH:mm).\n */\n\n/**\n * A date range represented as a start/end tuple.\n * Either element may be `null` when the range is partially selected.\n */\n\n/** Default empty range — both bounds are null. */\nexport const EMPTY_RANGE = [null, null];\n\n/**\n * Date range input field props.\n *\n * Renders two text inputs (start / end) with a shared calendar popover\n * that supports range selection.\n */\n\n/**\n * Dropdown field props with selectable items\n */\n\n/**\n * Text area field props\n */\n\n/**\n * Number input field props\n */\n\n/**\n * Radio buttons field props\n */\n\n/**\n * Option interface for radio button options\n */\n\n/**\n * Object set field displays the summary of the count of the given object set\n */\n\n/**\n * Custom field props for user-defined renderers\n */\n\n/**\n * Extracts parameters from an ActionDefinition\n */\n\n/**\n * Extracts the value type for a specific parameter\n *\n * TODO: Re-use `BaseType`\n */\n\n/**\n * Extracts the parameter type descriptor for a specific action parameter.\n */\n\n/**\n * Available form field component types\n */\n\n/**\n * Describes the data type of a form field, independent of OSDK.\n * Mirrors ActionMetadata.DataType to keep the rendering layer OSDK-agnostic.\n */\n\n/**\n * Props managed by form state infrastructure (FieldBridge / RHF).\n * Fields with onChange participate in form state → value and onChange are managed\n * externally. Read-only fields (no onChange, e.g. ObjectSetField) keep value in\n * fieldComponentProps so it bypasses form state cloning.\n */\n\n/**\n * An OSDK-agnostic field definition used by BaseForm and FormFieldRenderer.\n * Contains only the information needed to render a single field — no generics,\n * no compile-time parameter constraints.\n *\n * Implemented as a distributed mapped type: switching on `fieldComponent`\n * narrows `fieldComponentProps` to the correct props type automatically.\n */\n\n/**\n * Gets valid form field types for a given property type\n */","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/* DateRangeInputField — two separate bordered inputs + shared popover */\n\n/* Outer container that holds both inputs side by side.\n Acts as Popover.Trigger — suppress the focus ring when\n focus returns here after the popover closes. */\n.osdkDateRangeContainer {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n outline: none;\n}\n\n/* Each input wrapper gets flex: 1 to split equally */\n.osdkDateRangeInputWrapper {\n flex: 1;\n min-width: 0;\n}\n\n/* Two TimePickers side-by-side, each centered under its calendar month.\n Negative horizontal margin counters the popover padding so the border-top\n spans the full width of the popover. */\n.osdkDateRangeTimeRow {\n display: flex;\n gap: var(--osdk-time-picker-gap);\n padding-top: var(--osdk-time-picker-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n margin-top: var(--osdk-time-picker-margin-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n border-top: var(--osdk-time-picker-border-top);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { Suspense } from \"react\";\nimport styles from \"./DatePickerCommon.module.css\";\nconst DateRangeCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateRangeCalendar.js\"));\nexport function LazyDateRangeCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDatePickerFallback\n })\n }, /*#__PURE__*/React.createElement(DateRangeCalendarLazy, props));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useId, useRef, useState } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, formatDatetimeForInput, getTimeValue, parseDateFromInput, parseDatetimeFromInput, parseTimeString } from \"../../shared/dateUtils.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { stopPropagation } from \"./calendarShared.js\";\nimport commonStyles from \"./DatePickerCommon.module.css\";\nimport styles from \"./DateRangeInputField.module.css\";\nimport { LazyDateRangeCalendar } from \"./LazyDateRangeCalendar.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport { useDateEditState } from \"./useDateEditState.js\";\n// Shared props for both start/end inputs. role=\"combobox\" because each input\n// triggers a shared popup (the calendar popover) — matching WAI-ARIA combobox pattern.\nconst SHARED_INPUT_PROPS = {\n className: commonStyles.osdkDatePickerInput,\n type: \"text\",\n onClick: stopPropagation,\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-haspopup\": \"dialog\"\n};\nexport const DateRangeInputField = /*#__PURE__*/React.memo(function DateRangeInputField({\n id,\n value,\n onChange,\n min,\n max,\n placeholderStart,\n placeholderEnd,\n allowSingleDayRange = true,\n showTime = false,\n formatDate,\n parseDate\n}) {\n const shouldCloseOnSelection = !showTime;\n const popoverId = useId();\n const startInputRef = useRef(null);\n const endInputRef = useRef(null);\n const popoverRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n // Tracks which input (start/end) owns the shared calendar popover.\n // Used to restore focus to the correct input when Tab-cycling through\n // focus boundaries and when the calendar selects a range endpoint.\n const [activeBoundary, setActiveBoundary] = useState(\"start\");\n const [startDate, endDate] = value ?? EMPTY_RANGE;\n\n // editFormatFn produces a parsable string for typing (e.g. \"2024-01-15\" or \"2024-01-15 14:30\").\n // displayFormatFn produces a human-readable string for idle state (e.g. \"Jan 15, 2024\").\n const editFormatFn = showTime ? formatDatetimeForInput : formatDateForInput;\n const displayFormatFn = formatDate ?? (showTime ? formatDatetimeForInput : formatDateForDisplay);\n const parseFn = parseDate ?? (showTime ? parseDatetimeFromInput : parseDateFromInput);\n\n // Wrap onChange to handle tuple construction and overlap rejection.\n // Clearing (null) is always allowed; overlap is checked for non-null dates.\n const startOnChange = useCallback(date => {\n if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {\n return;\n }\n onChange?.([date, endDate ?? null]);\n }, [endDate, onChange, allowSingleDayRange]);\n const endOnChange = useCallback(date => {\n if (date != null && isOverlapping(startDate, date, allowSingleDayRange)) {\n return;\n }\n onChange?.([startDate ?? null, date]);\n }, [startDate, onChange, allowSingleDayRange]);\n const {\n isEditing: isEditingStart,\n dateValue: startParsedValue,\n inputError: startInputError,\n displayedValue: displayedStart,\n startEditing: beginStartEditing,\n stopEditing: stopStartEditing,\n commitAndStopEditing: commitStartAndStopEditing,\n setInputValue: setStartInputValue,\n setDateValue: setStartDateValue\n } = useDateEditState({\n value: startDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: startOnChange\n });\n const {\n isEditing: isEditingEnd,\n dateValue: endParsedValue,\n inputError: endInputError,\n displayedValue: displayedEnd,\n startEditing: beginEndEditing,\n stopEditing: stopEndEditing,\n commitAndStopEditing: commitEndAndStopEditing,\n setInputValue: setEndInputValue,\n setDateValue: setEndDateValue\n } = useDateEditState({\n value: endDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: endOnChange\n });\n\n // --- Cross-input error: overlapping range (live feedback while typing) ---\n // Blur/Enter handlers prevent overlapping values from being committed,\n // so this only fires during editing for immediate red-border feedback.\n const hasOverlapError = (() => {\n if (!isEditingStart && !isEditingEnd) return false;\n const effectiveStart = isEditingStart ? startParsedValue : startDate ?? undefined;\n const effectiveEnd = isEditingEnd ? endParsedValue : endDate ?? undefined;\n return isOverlapping(effectiveStart, effectiveEnd, allowSingleDayRange);\n })();\n const startInvalid = startInputError != null || hasOverlapError;\n const endInvalid = endInputError != null || hasOverlapError;\n\n // --- Focus handlers ---\n\n const handleStartFocus = useCallback(() => {\n beginStartEditing();\n setActiveBoundary(\"start\");\n setIsOpen(true);\n }, [beginStartEditing]);\n const handleEndFocus = useCallback(() => {\n beginEndEditing();\n setActiveBoundary(\"end\");\n setIsOpen(true);\n }, [beginEndEditing]);\n\n // --- Blur handlers ---\n\n const handleStartBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n // Focus moved into the popover portal — the field is still logically\n // active, so suppress the blur from bubbling to parent containers.\n e.stopPropagation();\n return;\n }\n if (endInputRef.current === related) {\n return;\n }\n commitStartAndStopEditing();\n }, [commitStartAndStopEditing]);\n const handleEndBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n e.stopPropagation();\n return;\n }\n if (startInputRef.current === related) {\n return;\n }\n commitEndAndStopEditing();\n }, [commitEndAndStopEditing]);\n\n // --- Popover helpers ---\n\n // Shared close sequence: dismiss the popover, reset both editing states,\n // and blur both inputs so focus doesn't linger after the calendar disappears.\n const closePopover = useCallback(() => {\n setIsOpen(false);\n stopStartEditing();\n stopEndEditing();\n startInputRef.current?.blur();\n endInputRef.current?.blur();\n }, [stopStartEditing, stopEndEditing]);\n\n // --- Keyboard handlers ---\n\n const handleStartKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitStartAndStopEditing();\n // Auto-advance to end\n endInputRef.current?.focus();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && e.shiftKey) {\n setIsOpen(false);\n }\n }, [commitStartAndStopEditing, closePopover]);\n const handleEndKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitEndAndStopEditing();\n closePopover();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && !e.shiftKey && isOpen) {\n // Tab from the end input bridges focus into the popover. The popover\n // doesn't auto-focus on open (to keep the cursor in the input for typing),\n // so we manually focus the first interactive element (nav button or select).\n const firstButton = popoverRef.current?.querySelector(\"button, select\");\n if (firstButton != null) {\n e.preventDefault();\n firstButton.focus();\n }\n }\n }, [commitEndAndStopEditing, closePopover, isOpen]);\n\n // Called by base-ui when the popover opens or closes (e.g. click outside, Escape).\n const handleOpenChange = useCallback(nextOpen => {\n if (nextOpen) {\n setIsOpen(true);\n } else {\n closePopover();\n }\n }, [closePopover]);\n\n // --- Calendar handlers ---\n\n const handleRangeSelect = useCallback(range => {\n const newStart = range?.from ?? null;\n const newEnd = range?.to ?? null;\n onChange?.([newStart, newEnd]);\n if (newStart != null && newEnd == null) {\n // Start selected — commit the start and advance to end.\n // displayedValue handles the display format after stopEditing.\n stopStartEditing();\n setActiveBoundary(\"end\");\n endInputRef.current?.focus();\n } else if (newStart != null && newEnd != null && shouldCloseOnSelection) {\n // Full range selected — close and blur.\n closePopover();\n } else if (newStart != null && newEnd != null) {\n // Full range selected but popover stays open (showTime) —\n // inputs remain in editing mode, so update with editFormatFn.\n setStartDateValue(newStart);\n setEndDateValue(newEnd);\n }\n }, [onChange, shouldCloseOnSelection, closePopover, stopStartEditing, setStartDateValue, setEndDateValue]);\n\n // --- Time handlers ---\n\n const handleStartTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = startDate != null ? new Date(startDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([base, endDate ?? null]);\n setStartDateValue(base);\n }, [startDate, endDate, onChange, setStartDateValue]);\n const handleEndTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = endDate != null ? new Date(endDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([startDate ?? null, base]);\n setEndDateValue(base);\n }, [startDate, endDate, onChange, setEndDateValue]);\n\n // --- Focus boundary handlers ---\n // Visually-hidden sentinels at the top/bottom of the popover that trap Tab\n // cycling between the text inputs and calendar.\n\n // Start boundary (top): Shift+Tab past the first calendar element redirects\n // focus to whichever input is currently active.\n const handleStartFocusBoundary = useCallback(() => {\n const activeRef = activeBoundary === \"start\" ? startInputRef : endInputRef;\n activeRef.current?.focus();\n }, [activeBoundary]);\n\n // End boundary (bottom): Two cases —\n // (1) Tab past the last calendar element (focus came from inside the popover)\n // → close the popover and blur both inputs.\n // (2) Focus entered from outside the popover (e.g. reverse Tab from the page)\n // → redirect to the last interactive element inside the popover.\n const handleEndFocusBoundary = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n closePopover();\n } else {\n const buttons = popoverRef.current?.querySelectorAll(\"button, select\");\n const lastButton = buttons?.[buttons.length - 1];\n lastButton?.focus();\n }\n }, [closePopover]);\n\n // --- Calendar selected range ---\n\n const calendarSelected = startDate != null || endDate != null ? {\n from: startDate ?? undefined,\n to: endDate ?? undefined\n } : undefined;\n const timeFooter = showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeTimeRow\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(startDate),\n onChange: handleStartTimeChange,\n label: \"Start time\"\n }), /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(endDate),\n onChange: handleEndTimeChange,\n label: \"End time\"\n })) : undefined;\n const sharedInputProps = {\n ...SHARED_INPUT_PROPS,\n \"aria-controls\": popoverId\n };\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: handleOpenChange\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n nativeButton: false,\n render: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeContainer\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, startInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: startInputRef,\n id: id != null ? `${id}-start` : undefined,\n value: displayedStart,\n onValueChange: setStartInputValue,\n onFocus: handleStartFocus,\n onBlur: handleStartBlur,\n onKeyDown: handleStartKeyDown,\n placeholder: placeholderStart,\n \"aria-expanded\": isOpen && activeBoundary === \"start\",\n \"aria-label\": \"Start date\",\n \"aria-invalid\": startInvalid || undefined\n }, sharedInputProps))), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, endInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: endInputRef,\n id: id != null ? `${id}-end` : undefined,\n value: displayedEnd,\n onValueChange: setEndInputValue,\n onFocus: handleEndFocus,\n onBlur: handleEndBlur,\n onKeyDown: handleEndKeyDown,\n placeholder: placeholderEnd,\n \"aria-expanded\": isOpen && activeBoundary === \"end\",\n \"aria-label\": \"End date\",\n \"aria-invalid\": endInvalid || undefined\n }, sharedInputProps)))), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n ref: popoverRef,\n className: commonStyles.osdkDatePickerPopover,\n id: popoverId,\n role: \"dialog\",\n \"aria-label\": \"date range picker\"\n // Disable base-ui's automatic focus restoration to the trigger on close.\n // We manage focus ourselves via closePopover() which blurs the inputs.\n ,\n finalFocus: false\n }, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleStartFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"Start of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n }), /*#__PURE__*/React.createElement(LazyDateRangeCalendar, {\n selected: calendarSelected,\n onSelect: handleRangeSelect,\n min: min,\n max: max\n }), timeFooter, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleEndFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"End of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n })))));\n});\n\n/** True when the end boundary is before (or same-day when disallowed) the start. */\nfunction isOverlapping(start, end, allowSingleDayRange) {\n if (start == null || end == null) return false;\n if (!allowSingleDayRange && end.getTime() === start.getTime()) return true;\n return end.getTime() < start.getTime();\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n background: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n background: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:focus-visible {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n }\n}\n\n/* display: none fully removes the input from the a11y tree, avoiding\n nested-interactive inside the role=\"button\" trigger. Programmatic\n .click() still opens the file dialog. */\n.osdkFilePickerHiddenInput {\n display: none;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background: none;\n border: none;\n font-family: inherit;\n font-size: inherit;\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse label (right section) */\n.osdkFilePickerBrowse {\n flex-shrink: 0;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: var(--osdk-file-picker-browse-padding);\n border-left: var(--osdk-file-picker-browse-border-left);\n background: var(--osdk-file-picker-browse-bg);\n color: var(--osdk-file-picker-browse-color);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n pointer-events: none;\n transition: background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:hover .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-hover);\n}\n\n.osdkFilePickerTrigger:active .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-active);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n error,\n isMulti,\n accept,\n // maxSize is enforced by form-level validation (extractValidationRules),\n // not here. Silently dropping oversized files would leave the user with\n // no indication of why their selection disappeared.\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\"\n}) {\n const inputRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.stopPropagation();\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return (\n /*#__PURE__*/\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n React.createElement(\"div\", {\n id: id,\n className: styles.osdkFilePickerTrigger,\n tabIndex: 0,\n role: \"button\",\n \"aria-label\": \"Choose file\",\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n tabIndex: -1\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder)\n }, displayText ?? text), hasValue &&\n /*#__PURE__*/\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n React.createElement(Button, {\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\"\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFilePickerBrowse\n }, buttonText))\n );\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\nexport function NumberInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n min,\n max,\n step\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = clamp(current + delta, min, max);\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step, min, max]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}\nfunction clamp(value, min, max) {\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty)\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n\n &[data-orientation=\"horizontal\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-font-family);\n font-size: var(--osdk-typography-font-size-default);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default);\n cursor: pointer;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options,\n orientation\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n \"data-orientation\": orientation ?? \"vertical\",\n value: selectedLabel,\n onValueChange: handleValueChange\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option\n}) {\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n error,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n render: renderTextarea,\n \"aria-invalid\": error != null || undefined\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n minLength,\n maxLength\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n \"aria-invalid\": error != null || undefined\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { FormField } from \"../FormField.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DateRangeInputField } from \"./DateRangeInputField.js\";\nimport { DatetimePickerField } from \"./DatetimePickerField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n error\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperTextPlacement !== \"tooltip\" ? helperText : undefined,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error) {\n switch (fieldDefinition.fieldComponent) {\n case \"DATE_RANGE_INPUT\":\n return /*#__PURE__*/React.createElement(DateRangeInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToDateRange(value),\n onChange: onChange,\n placeholderStart: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatetimePickerField, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\nfunction coerceToDateRange(value) {\n if (!Array.isArray(value) || value.length !== 2) return EMPTY_RANGE;\n const start = value[0] instanceof Date ? value[0] : null;\n const end = value[1] instanceof Date ? value[1] : null;\n if (start == null && end == null) return EMPTY_RANGE;\n return [start, end];\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { extractValidationRules } from \"../utils/extractValidationRules.js\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nconst SELECT_LIKE_FIELDS = new Set([\"RADIO_BUTTONS\", \"DROPDOWN\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange\n}) {\n const rules = useMemo(() => extractValidationRules(fieldDef), [fieldDef]);\n const {\n field: {\n onChange,\n onBlur,\n value\n },\n fieldState: {\n error: fieldError\n }\n } = useController({\n name: fieldDef.fieldKey,\n control,\n rules\n });\n const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n // Select-like fields are \"pick once\" interactions — mark as touched\n // immediately so RHF revalidates (clears errors) on selection rather\n // than waiting for focus to leave the container.\n if (isSelectLike) {\n onBlur();\n }\n }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);\n\n // Ignore blur events where focus stays within the field container\n // (e.g. moving between radio buttons in a group). Only fire RHF's\n // onBlur when focus truly leaves the field.\n const handleBlur = useCallback(e => {\n if (e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n onBlur();\n }, [onBlur]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange,\n onBlur: handleBlur,\n error: fieldError?.message\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-header-inline-padding);\n border-bottom: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { useAsyncAction } from \"../shared/hooks/useAsyncAction.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n fieldDefinitions,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className\n}) {\n const isControlled = controlledFormState != null;\n const defaultValues = useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);\n const {\n control,\n trigger,\n getValues,\n formState: {\n errors\n }\n } = useForm({\n // Validate on blur first, then revalidate on change after the first\n // error. This gives the user a chance to finish typing before seeing\n // errors, while staying responsive once an error is surfaced.\n mode: \"onTouched\",\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = useState(false);\n const {\n isPending: isSubmitting,\n error: submissionError,\n execute: executeSubmit,\n clearError\n } = useAsyncAction(onSubmit);\n const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message\n // TODO: provide better error message\n : \"Submission failed\" : undefined;\n const handleFormSubmit = useCallback(async e => {\n e.preventDefault();\n setHasAttemptedSubmit(true);\n const isValid = await trigger();\n if (!isValid) {\n return;\n }\n\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n await executeSubmit(controlledFormState ?? getValues());\n }, [trigger, executeSubmit, controlledFormState, getValues]);\n const handleFieldChange = useCallback((fieldKey, value) => {\n clearError();\n onFieldValueChange?.(fieldKey, value);\n }, [clearError, onFieldValueChange]);\n const isFormPending = isPending || isSubmitting;\n const labelByFieldKey = useMemo(() => new Map(fieldDefinitions.map(d => [d.fieldKey, d.label])), [fieldDefinitions]);\n\n // RHF reuses the same errors object reference across renders so we cannot memoize errorEntries\n const errorEntries = Object.entries(errors).map(([key, entry]) => ({\n label: labelByFieldKey.get(key) ?? key,\n message: entry?.message ?? \"Invalid\"\n }));\n const areErrorsPresent = errorEntries.length > 0;\n const buttonErrorMessage = areErrorsPresent ? \"Some fields are invalid\" : submissionErrorMessage;\n return /*#__PURE__*/React.createElement(\"form\", {\n className: classNames(styles.osdkForm, className),\n onSubmit: handleFormSubmit\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && fieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\",\n \"aria-label\": \"Loading form fields\",\n className: styles.osdkFormFields\n }, FORM_SKELETON), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, fieldDefinitions.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange\n }))), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ErrorIndicator, {\n errorEntries: errorEntries\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSubmitButton\n }, /*#__PURE__*/React.createElement(SubmitButton, {\n isPending: isFormPending,\n isSubmitDisabled: isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent,\n errorMessage: buttonErrorMessage\n }))));\n});\nconst SKELETON_FIELD_COUNT = 3;\n\n// Mimics the label + input layout of real form fields.\nconst FORM_SKELETON = Array.from({\n length: SKELETON_FIELD_COUNT\n}, (_, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: styles.osdkFormSkeletonField\n}, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonLabel\n}), /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonInput\n})));\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}\nconst SubmitButton = /*#__PURE__*/memo(function SubmitButtonFn({\n isPending,\n isSubmitDisabled,\n errorMessage\n}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : \"Submit\";\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"submit\",\n variant: \"primary\",\n disabled: isSubmitDisabled || isPending\n }, buttonLabel);\n if (errorMessage == null) {\n return button;\n }\n return /*#__PURE__*/React.createElement(Tooltip.Root, {\n defaultOpen: true\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTooltipTriggerWrapper\n })\n }, button), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), errorMessage))));\n});\n// memo omitted: errorEntries is always a new array (RHF reuses the same errors ref)\nfunction ErrorIndicator({\n errorEntries\n}) {\n if (errorEntries.length === 0) {\n return null;\n }\n const count = errorEntries.length;\n return /*#__PURE__*/React.createElement(Tooltip.Root, null, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormErrorIndicator\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n size: 14\n }), count === 1 ? \"1 issue\" : `${count} issues`)), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), /*#__PURE__*/React.createElement(\"ul\", {\n className: styles.osdkFormErrorList\n }, errorEntries.map(entry => /*#__PURE__*/React.createElement(\"li\", {\n key: entry.label\n }, /*#__PURE__*/React.createElement(\"strong\", null, entry.label, \":\"), \" \", entry.message)))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\nconst EMPTY_ITEMS = [];\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n case \"interface\":\n // TODO: provide correct items\n return {\n ...base,\n fieldComponent: \"DROPDOWN\",\n fieldComponentProps: {\n items: EMPTY_ITEMS\n }\n };\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport { useOsdkAction } from \"@osdk/react/experimental\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => ({\n ...def,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n defaultValue: def.defaultValue\n }));\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n fieldDefinitions: rendererFieldDefinitions,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm = withOsdkMetrics(_ActionForm, \"ActionForm\");\nexport { BaseForm } from \"../../action-form/BaseForm.js\";"]}
|