openstack-uicore-foundation 5.0.49-beta.1 → 5.0.49

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.
Files changed (103) hide show
  1. package/.claude/rules/openstack-uicore-foundation-components.md +67 -0
  2. package/.claude/rules/openstack-uicore-foundation-project.md +69 -0
  3. package/.claude/rules/openstack-uicore-foundation-security.md +39 -0
  4. package/.claude/settings.local.json +7 -0
  5. package/.codegraph/.gitignore +5 -0
  6. package/docs/plans/2026-04-09-showconfirmdialog-react16-compat.md +83 -0
  7. package/docs/plans/2026-04-22-dropzone-pooling-ux.md +129 -0
  8. package/docs/plans/2026-04-23-uploadv3-duplicate-file-max-reached.md +109 -0
  9. package/docs/plans/2026-04-23-uploadv3-premature-complete-on-202.md +99 -0
  10. package/docs/plans/2026-07-06-file-size-field-unit-prop.md +20 -0
  11. package/docs/plans/2026-07-30-node-22-migration.md +139 -0
  12. package/docs/plans/clickup-barrel-mui-dragalong.md +43 -0
  13. package/docs/plans/clickup-order-ledger-extraction.md +44 -0
  14. package/docs/plans/clickup-uploadv3-progress-bar-large-files.md +42 -0
  15. package/lib/components/index.js +1 -1
  16. package/lib/components/index.js.map +1 -1
  17. package/lib/components/inputs/access-levels-input.js.map +1 -1
  18. package/lib/components/inputs/attendee-input.js.map +1 -1
  19. package/lib/components/inputs/company-input-v2.js.map +1 -1
  20. package/lib/components/inputs/company-input.js.map +1 -1
  21. package/lib/components/inputs/country-dropdown.js.map +1 -1
  22. package/lib/components/inputs/country-input.js.map +1 -1
  23. package/lib/components/inputs/event-input.js.map +1 -1
  24. package/lib/components/inputs/group-input.js.map +1 -1
  25. package/lib/components/inputs/language-input.js.map +1 -1
  26. package/lib/components/inputs/member-input.js.map +1 -1
  27. package/lib/components/inputs/organization-input.js.map +1 -1
  28. package/lib/components/inputs/promocode-input.js.map +1 -1
  29. package/lib/components/inputs/registration-company-input.js.map +1 -1
  30. package/lib/components/inputs/speaker-input.js.map +1 -1
  31. package/lib/components/inputs/sponsor-input.js.map +1 -1
  32. package/lib/components/inputs/summit-input.js.map +1 -1
  33. package/lib/components/inputs/tag-input.js.map +1 -1
  34. package/lib/components/inputs/ticket-types-input.js.map +1 -1
  35. package/lib/components/inputs/upload-input-v2.js +1 -1
  36. package/lib/components/inputs/upload-input-v2.js.map +1 -1
  37. package/lib/components/inputs/upload-input-v3.js +1 -1
  38. package/lib/components/inputs/upload-input-v3.js.map +1 -1
  39. package/lib/components/mui/addon-type-select.js +2 -0
  40. package/lib/components/mui/addon-type-select.js.map +1 -0
  41. package/lib/components/mui/auth-button.js +1 -1
  42. package/lib/components/mui/auth-button.js.map +1 -1
  43. package/lib/components/mui/bulk-edit-table.js +1 -1
  44. package/lib/components/mui/bulk-edit-table.js.map +1 -1
  45. package/lib/components/mui/drag-n-drop-list.js +1 -1
  46. package/lib/components/mui/drag-n-drop-list.js.map +1 -1
  47. package/lib/components/mui/editable-table.js +1 -1
  48. package/lib/components/mui/editable-table.js.map +1 -1
  49. package/lib/components/mui/formik-inputs/additional-input-list-v2.js +2 -0
  50. package/lib/components/mui/formik-inputs/additional-input-list-v2.js.map +1 -0
  51. package/lib/components/mui/formik-inputs/additional-input-list.js +1 -1
  52. package/lib/components/mui/formik-inputs/additional-input-list.js.map +1 -1
  53. package/lib/components/mui/formik-inputs/additional-input-v2.js +2 -0
  54. package/lib/components/mui/formik-inputs/additional-input-v2.js.map +1 -0
  55. package/lib/components/mui/formik-inputs/additional-input.js +1 -1
  56. package/lib/components/mui/formik-inputs/additional-input.js.map +1 -1
  57. package/lib/components/mui/formik-inputs/addon-type-select.js +2 -0
  58. package/lib/components/mui/formik-inputs/addon-type-select.js.map +1 -0
  59. package/lib/components/mui/formik-inputs/company-input.js.map +1 -1
  60. package/lib/components/mui/formik-inputs/sponsor-input.js.map +1 -1
  61. package/lib/components/mui/formik-inputs/sponsorship-input.js.map +1 -1
  62. package/lib/components/mui/formik-inputs/sponsorship-summit-select.js.map +1 -1
  63. package/lib/components/mui/formik-inputs/upload.js +1 -1
  64. package/lib/components/mui/formik-inputs/upload.js.map +1 -1
  65. package/lib/components/mui/grid-filter.js.map +1 -1
  66. package/lib/components/mui/nav-bar.js +1 -1
  67. package/lib/components/mui/nav-bar.js.map +1 -1
  68. package/lib/components/mui/sortable-table-v2.js +2 -0
  69. package/lib/components/mui/sortable-table-v2.js.map +1 -0
  70. package/lib/components/mui/sortable-table.js +1 -1
  71. package/lib/components/mui/sortable-table.js.map +1 -1
  72. package/lib/components/mui/sponsor-addon-select.js.map +1 -1
  73. package/lib/components/mui/sponsor-order-grid.js +1 -1
  74. package/lib/components/mui/sponsor-order-grid.js.map +1 -1
  75. package/lib/components/mui/summits-dropdown.js +1 -1
  76. package/lib/components/mui/summits-dropdown.js.map +1 -1
  77. package/lib/components/mui/table/custom-table-pagination.js.map +1 -1
  78. package/lib/components/mui/table/extra-rows.js.map +1 -1
  79. package/lib/components/mui/table.js +1 -1
  80. package/lib/components/mui/table.js.map +1 -1
  81. package/lib/components/mui/upload-dialog.js +1 -1
  82. package/lib/components/mui/upload-dialog.js.map +1 -1
  83. package/lib/components/sponsored-project-input.js.map +1 -1
  84. package/lib/css/components/index.css +1 -1
  85. package/lib/css/components/index.css.map +1 -1
  86. package/lib/css/components/mui/editable-table.css +1 -1
  87. package/lib/css/components/mui/editable-table.css.map +1 -1
  88. package/lib/css/components/mui/sortable-table-v2.css +2 -0
  89. package/lib/css/components/mui/sortable-table-v2.css.map +1 -0
  90. package/lib/css/components/mui/sortable-table.css +1 -1
  91. package/lib/css/components/mui/sortable-table.css.map +1 -1
  92. package/lib/css/components/mui/table.css +1 -1
  93. package/lib/css/components/mui/table.css.map +1 -1
  94. package/lib/utils/query-actions.js +1 -1
  95. package/lib/utils/query-actions.js.map +1 -1
  96. package/lib/utils/theme.js +1 -1
  97. package/lib/utils/theme.js.map +1 -1
  98. package/package.json +1 -1
  99. package/lib/components/mui/formik-inputs/summit-addon-select.js +0 -2
  100. package/lib/components/mui/formik-inputs/summit-addon-select.js.map +0 -1
  101. package/lib/components/mui/summit-addon-select.js +0 -2
  102. package/lib/components/mui/summit-addon-select.js.map +0 -1
  103. package/package-lock.json +0 -22291
@@ -1 +1 @@
1
- {"version":3,"file":"components/mui/editable-table.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,8BAA+B,GAAIH,GAChB,iBAAZC,QACdA,QAAQ,+BAAiCD,IAEzCD,EAAK,+BAAiCC,GACvC,CATD,CASGK,MAAM,I,mICTT,MAAM,EAA+BC,QAAQ,4B,aCA7C,MAAM,EAA+BA,QAAQ,+B,aC6B7C,MAAMC,EAAU,CACdC,QAASC,IAAAA,cAACC,IAAO,CAACC,MAAM,YACxBC,QAASH,IAAAA,cAACI,IAAW,CAACF,MAAM,YAC5BG,MAAOL,IAAAA,cAACM,IAAK,CAACJ,MAAM,UACpBK,KAAMP,IAAAA,cAACQ,IAAI,CAACN,MAAM,UAGdO,EAAgBA,EACpBC,OACAC,QACAC,OACAC,WAAW,GACXC,YACAC,WACAC,oBAAoB,UACpBC,qBAAqB,UACrBC,mBAAmB,SACnBC,oBAAoB,aAEpBnB,IAAAA,cAACoB,EAAAA,OAAM,CAACV,KAAMA,EAAMW,QAASN,GAC3Bf,IAAAA,cAACsB,EAAAA,YAAW,CAACC,GAAI,CAAEC,EAAG,GAAKC,UAAU,OACnCzB,IAAAA,cAAC0B,EAAAA,WAAU,CAACC,QAAQ,MAAMhB,IAE5BX,IAAAA,cAAC4B,EAAAA,QAAO,MACR5B,IAAAA,cAAC6B,EAAAA,cAAa,CAACN,GAAI,CAAEC,EAAG,IACtBxB,IAAAA,cAAA,OAAK8B,MAAO,CAAEC,QAAS,OAAQC,WAAY,WACxClC,EAAQe,IACPb,IAAAA,cAAA,OAAK8B,MAAO,CAAEG,YAAa,KAAOnC,EAAQe,IAE5Cb,IAAAA,cAAC0B,EAAAA,WAAU,CAACC,QAAQ,SAASf,KAGjCZ,IAAAA,cAAC4B,EAAAA,QAAO,CAACL,GAAI,CAAEW,OAAQ,uBACvBlC,IAAAA,cAACmC,EAAAA,cAAa,KACZnC,IAAAA,cAACoC,EAAAA,OAAM,CACLC,WAAS,EACTC,QAASvB,EACTb,MAAOiB,EACPQ,QAAQ,WACRJ,GAAI,CAAEgB,WAAY,SAAUC,SAAU,MAErCtB,GAEHlB,IAAAA,cAACoC,EAAAA,OAAM,CACLC,WAAS,EACTC,QAASxB,EACTZ,MAAOe,EACPU,QAAQ,YACRJ,GAAI,CAAEgB,WAAY,SAAUC,SAAU,MAErCxB,KAMTP,EAAcgC,UAAY,CACxB/B,KAAMgC,IAAAA,KACN/B,MAAO+B,IAAAA,OAAiBC,WACxB/B,KAAM8B,IAAAA,OAAiBC,WACvB9B,SAAU6B,IAAAA,OACV5B,UAAW4B,IAAAA,KAAeC,WAC1B5B,SAAU2B,IAAAA,KAAeC,WACzB3B,kBAAmB0B,IAAAA,OACnBzB,mBAAoByB,IAAAA,OACpBxB,iBAAkBwB,IAAAA,OAClBvB,kBAAmBuB,IAAAA,QAGrBjC,EAAcmC,aAAe,CAC3BlC,MAAM,EACNG,SAAU,UACVG,kBAAmB,UACnBC,mBAAoB,UACpBC,iBAAkB,SAClBC,kBAAmB,U,gECzDrB,MAAM0B,EAAa,gCACbC,EAAgC,oBAAfC,WAA6BA,WAA+B,oBAAXC,OAAyBA,OAAS,CAAC,EA0F3G,EA7E0BC,EACxBtC,QACAC,OACAC,WAAW,GACXG,oBAAoB,UACpBE,mBAAmB,SACnBD,qBAAqB,UACrBE,oBAAoB,cAEpB,IAAK2B,EAAQD,GACX,MAAM,IAAIvC,MACR,iJAKJ,OAAOwC,EAAQD,GAAY,CACzBlC,QACAC,OACAC,WACAG,oBACAE,mBACAD,qBACAE,qBACA,C,yECrFJ,MAAM,EAA+BtB,QAAQ,iC,0CCmB7C,MAAMqD,EAAgB,CACpB,8BAA+B,CAC7BlB,WAAY,WACZmB,UAAW,UAEb,kCAAmC,CACjCjD,MAAO,qBACPkD,SAAU,OACVC,WAAY,UAEd,6BAA8B,CAC5BnD,MAAO,qBACPkD,SAAU,OACVC,WAAY,UAEd,6BAA8B,CAC5BtB,QAAS,QAEX,oCAAqC,CACnCuB,WAAY,SAIVC,EAAwB,CAACC,EAAAA,GAAkBC,EAAAA,GAAiBC,EAAAA,IAE5DC,EAAwBA,EAAGC,YAAWC,UAASC,cAAaC,eAAcC,sBAC9E,MAAMC,EAAiBjE,EAAAA,SAAc,IAC9BgE,EACET,EAAsBW,SAASL,GAClCN,EACA,IAAIA,EAAuBM,GAASM,MAAK,CAACC,EAAGC,IAAMD,EAAIC,IAH9B,CAACR,IAI7B,CAACA,EAASG,IAUb,OACEhE,EAAAA,cAACsE,IAAe,CACd7C,UAAU,MACV8C,MAAOX,GAAa,EACpBY,mBAAoBP,EACpBQ,YAAaZ,EACba,KAAMZ,EAAc,EACpBC,aAfqBY,CAACC,EAAGC,KAC3Bd,EAAac,EAAU,EAAE,EAevBC,oBAAqBd,EAZQe,IAC/Bf,EAAgBgB,SAASD,EAAGE,OAAOC,MAAO,IAAI,OAWqBC,EACjEC,iBAAkBC,IAAAA,UAAY,2BAC9B9D,GAAI2B,GACJ,EAINS,EAAsBlB,UAAY,CAChCmB,UAAWlB,IAAAA,OACXmB,QAASnB,IAAAA,OAAiBC,WAC1BmB,YAAapB,IAAAA,OAAiBC,WAC9BoB,aAAcrB,IAAAA,KAAeC,WAC7BqB,gBAAiBtB,IAAAA,MAGnB,S,mEChFA,MA2BA,EA3B4B4C,EAC1BC,WACAC,UAAWC,GAASA,EAAKC,KACzBC,oBACAC,mBACAC,0BACA5E,wBACI6E,gBACsB7C,EAAAA,EAAAA,SAAkB,CAC1CtC,MAAOgF,GAAqBN,IAAAA,UAAY,wBACxCzE,KAC8B,mBAArBgF,EACHA,EAAiBJ,EAAQC,IACzBG,GACA,GAAGP,IAAAA,UAAY,iCAAiCG,EAAQC,KAC9DM,KAAM,UACNC,kBAAkB,EAClB/E,qBACAD,kBACE6E,GAA2BR,IAAAA,UAAY,yBAIzCE,EAASE,EAAKQ,GAChB,C,gGCtBF,MAGMC,EAAoBA,EAAGC,OAAMC,aACjCpG,EAAAA,cAACqG,IAAG,CACF9E,GAAK+E,IACH,MAAMC,GAAOC,EAAAA,EAAAA,OAAMF,EAAMG,QAAQC,WAAWC,MAL7B,KAMf,MAAO,CACLC,SAAU,WACVC,IAAK,EACLC,OAAQ,EACR,CAACX,GAAO,EACRY,MAZW,GAaXC,cAAe,OACfC,QAASb,EAAU,EAAI,EACvBc,WAAY,oBACZR,WAAY,sBAA+B,SAATP,EAAkB,QAAU,WAAWI,kBAC1E,IAKPL,EAAkBzD,UAAY,CAC5B0D,KAAMzD,IAAAA,MAAgB,CAAC,OAAQ,UAAUC,WACzCyD,QAAS1D,IAAAA,MAGX,S,oICzBA,MAAMyE,EAAwBA,EAAGC,MAAKC,UAASC,UAASC,SAAQhG,QACzD6F,EAAII,SAKPxH,EAAAA,cAACyH,IAAc,CACbC,OAAQL,IAAYD,EAAIO,UACxBC,UAAWP,IAAYD,EAAIO,YAA0B,IAAbL,EAAiB,OAAS,MAClEhF,QAASA,IAAMiF,EAAOH,EAAIO,WAAsB,EAAXL,GACrC/F,GAAIA,GAEH6F,EAAIS,OACJR,IAAYD,EAAIO,UACf3H,EAAAA,cAACqG,IAAG,CAAC5E,UAAU,OAAOF,GAAIuG,EAAAA,iBACV,IAAbR,EACGjC,IAAAA,UAAY,yBACZA,IAAAA,UAAY,yBAEhB,MAjBC9D,EAAKvB,EAAAA,cAAA,QAAM8B,MAAOP,GAAK6F,EAAIS,QAAiBT,EAAIS,OAsB3DV,EAAsB1E,UAAY,CAChC2E,IAAK1E,IAAAA,OAAiBC,WACtB0E,QAAS3E,IAAAA,OACT4E,QAAS5E,IAAAA,MAAgB,CAAC,GAAI,IAC9B6E,OAAQ7E,IAAAA,KACRnB,GAAImB,IAAAA,QAGN,S,mHCjCA,MAAMqF,EAAe,CACnB1E,WAAY,SACZ2E,aAAc,cAyBhB,EAtByBC,EAAGC,MAAKd,SAE7BpH,EAAAA,cAAA,QAAM8B,MAAOiG,GACVX,EAAIe,OACHf,EAAIe,OAAOD,GACTE,IAAUF,EAAId,EAAIO,YACpBO,EAAId,EAAIO,WACN3H,EAAAA,cAACqI,IAAS,CAACjF,SAAS,UAEpBpD,EAAAA,cAACsI,IAAS,CAAClF,SAAS,UAEpBgE,EAAImB,aACNvI,EAAAA,cAACwI,EAAAA,EAAY,CAACC,UAAWrB,EAAImB,cAC1BL,EAAId,EAAIO,YAGXO,EAAId,EAAIO,W,wJClBhB,MAAMe,EAAaA,EACjBC,WACA/E,YACAC,UACAC,cACAC,eACAC,sBAEA,MAAM,aAAE4E,EAAY,aAAEC,EAAY,cAAEC,IAAkBC,EAAAA,EAAAA,KAEtD,OACE/I,EAAAA,cAACqG,IAAG,CAAC9E,GAAI,CAAEwF,MAAO,SAChB/G,EAAAA,cAACgJ,IAAK,CAACC,UAAW,EAAG1H,GAAI,CAAEwF,MAAO,OAAQmC,GAAI,IAC5ClJ,EAAAA,cAACqG,IAAG,CAAC9E,GAAI,CAAEqF,SAAU,aACnB5G,EAAAA,cAACmJ,IAAc,CACbC,IAAKR,EACLnH,UAAWuH,IACXzH,GAAI,CAAE8H,aAAc,EAAGC,UAAW,SAEjCX,GAEH3I,EAAAA,cAACkG,EAAAA,EAAiB,CAACC,KAAK,OAAOC,QAASyC,IACxC7I,EAAAA,cAACkG,EAAAA,EAAiB,CAACC,KAAK,QAAQC,QAAS0C,KAG1CjF,GAAWC,GAAeC,GACzB/D,EAAAA,cAAC2D,EAAAA,QAAqB,CACpBC,UAAWA,EACXC,QAASA,EACTC,YAAaA,EACbC,aAAcA,EACdC,gBAAiBA,KAInB,EAIV0E,EAAWjG,UAAY,CACrBkG,SAAUjG,IAAAA,KACVkB,UAAWlB,IAAAA,OACXmB,QAASnB,IAAAA,OACToB,YAAapB,IAAAA,OACbqB,aAAcrB,IAAAA,KACdsB,gBAAiBtB,IAAAA,MAGnB,S,+pBCzDO,MAKM6G,EAAmB,CAC9BC,gBAAiB,mBACjBtJ,MAAO,iBAGIuJ,EAAiB,CAC5BjI,EAAG,EACHkI,UAAW,SACXC,cAAe,SACf5C,MAAO,GACPvE,SAAU,GACVoH,SAAU,IAGCC,EAAwBC,IAAe,CAClDC,YAAa,OACbvH,SACEsH,GApBmC,EAFR,IACD,MA4BjBE,EAAoB5C,GAAG6C,EAAA,CAClCzH,SAAU4E,EAAIL,OA3BwB,IA4BlCK,EAAIL,OAAS,CACfA,MAAOK,EAAIL,MACX6C,SAAUxC,EAAIL,QAILmD,EAAmBA,CAAChC,EAAKiC,IACpCA,GAAejC,EAAIiC,GAAeZ,EAAmB,CAAC,EAE3Ca,EAAkBA,CAAClC,EAAKiC,EAAaE,IAAaJ,EAAAA,EAAAA,EAAA,GAC1DR,GACCY,GAAiB,CACnBtD,MAAOsD,EACP7H,SAAU6H,EACVT,SAAUS,IAETH,EAAiBhC,EAAKiC,G,+CC7C3B,MAyBA,EAzBsBpB,KACpB,MAAMH,EAAe5I,EAAAA,OAAa,OAC3B6I,EAAcyB,GAAmBtK,EAAAA,UAAe,IAChD8I,EAAeyB,GAAoBvK,EAAAA,UAAe,GAEnDwK,EAAcxK,EAAAA,aAAkB,KACpC,MAAMyK,EAAK7B,EAAa8B,QACnBD,IACLH,EAAgBG,EAAGE,WAAa,GAChCJ,EAAiBK,KAAKC,KAAKJ,EAAGE,WAAaF,EAAGK,aAAeL,EAAGM,aAAY,GAC3E,IAYH,OAVA/K,EAAAA,WAAgB,KACd,MAAMyK,EAAK7B,EAAa8B,QACxB,GAAKD,EAKL,OAHAD,IACAC,EAAGO,iBAAiB,SAAUR,GAEvB,IAAMC,EAAGQ,oBAAoB,SAAUT,EAAY,GACzD,CAACA,IAEG,CAAE5B,eAAcC,eAAcC,gBAAe,C,sFCpBtD,MAAMN,EAAeA,EAAGG,WAAUF,gBAChC,MAAMW,EAAMpJ,EAAAA,OAAa,OAClBkL,EAAeC,GAAoBnL,EAAAA,UAAe,GAEnDoL,EAA0C,iBAAd3C,EAC5B4C,EAAcD,GAAsBzC,EAAS2C,OAAS7C,EAEtD8C,EAAiBF,EAAc1C,EAAS6C,MAAM,EAAG/C,GAAa,MAAQE,EACtE8C,EAAeJ,GAAyBH,EAAXvC,EAAsC,GAEzE,OACE3I,EAAAA,cAAC0L,IAAO,CAAC/K,MAAO8K,EAAcE,UAAU,MAAMC,gBAAiB,CAAEC,QAAS,CAAEtK,GAAI,CAAE6B,SAAU,aAC1FpD,EAAAA,cAAA,QACEoJ,IAAKA,EACL0C,aAAcA,KACR1C,EAAIsB,UAAYU,GAClBD,EAAiB/B,EAAIsB,QAAQK,YAAc3B,EAAIsB,QAAQqB,YAAY,EAEvEjK,MAAO,CAAEC,QAAS,QAASiK,SAAU,SAAUC,aAAc,WAAY1J,WAAY,WAErFvC,EAAAA,cAAA,QAAM8B,MAAO,CAAEuB,WAAY,WAAakI,IAElC,EAId/C,EAAa/F,UAAY,CACvBkG,SAAUjG,IAAAA,OACV+F,UAAW/F,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,UAGlD,S,qDCnCO,MAcMc,EAAmB,GACnBC,EAAkB,GAClBC,EAAiB,E,kCCf9B,SAAgB,iBAAmB,uB,WCDnCjE,EAAOD,QAAUK,QAAQ,wC,WCAzBJ,EAAOD,QAAUK,QAAQ,4B,WCAzBJ,EAAOD,QAAUK,QAAQ,kC,WCAzBJ,EAAOD,QAAUK,QAAQ,4B,WCAzBJ,EAAOD,QAAUK,QAAQ,6B,WCAzBJ,EAAOD,QAAUK,QAAQ,2B,WCAzBJ,EAAOD,QAAUK,QAAQ,4B,WCAzBJ,EAAOD,QAAUK,QAAQ,gB,WCAzBJ,EAAOD,QAAUK,QAAQ,oB,WCAzBJ,EAAOD,QAAUK,QAAQ,uB,UCAzBJ,EAAOD,QAAUK,QAAQ,sB,WCAzBJ,EAAOD,QAAUK,QAAQ,sB,WCAzBJ,EAAOD,QAAUK,QAAQ,0B,WCAzBJ,EAAOD,QAAUK,QAAQ,0B,WCAzBJ,EAAOD,QAAUK,QAAQ,+B,WCAzBJ,EAAOD,QAAUK,QAAQ,0B,UCAzBJ,EAAOD,QAAUK,QAAQ,yB,SCAzBJ,EAAOD,QAAUK,QAAQ,+B,WCAzBJ,EAAOD,QAAUK,QAAQ,wB,WCAzBJ,EAAOD,QAAUK,QAAQ,uB,WCAzBJ,EAAOD,QAAUK,QAAQ,a,WCAzBJ,EAAOD,QAAUK,QAAQ,6B,WCAzBJ,EAAOD,QAAUK,QAAQ,mB,WCAzBJ,EAAOD,QAAUK,QAAQ,a,WCAzBJ,EAAOD,QAAUK,QAAQ,Q,GCCrBqM,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBjH,IAAjBkH,EACH,OAAOA,EAAa7M,QAGrB,IAAIC,EAASyM,EAAyBE,GAAY,CAGjD5M,QAAS,CAAC,GAOX,OAHA8M,EAAoBF,GAAU3M,EAAQA,EAAOD,QAAS2M,GAG/C1M,EAAOD,OACf,C,MCrBA2M,EAAoBI,EAAK9M,IACxB,IAAI+M,EAAS/M,GAAUA,EAAOgN,WAC7B,IAAOhN,EAAiB,QACxB,IAAM,EAEP,OADA0M,EAAoBO,EAAEF,EAAQ,CAAEpI,EAAGoI,IAC5BA,CAAM,C,WCLdL,EAAoBO,EAAI,CAAClN,EAASmN,KACjC,IAAI,IAAIC,KAAOD,EACXR,EAAoBU,EAAEF,EAAYC,KAAST,EAAoBU,EAAErN,EAASoN,IAC5EE,OAAOC,eAAevN,EAASoN,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,C,WCNDT,EAAoBU,EAAI,CAACK,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,E,WCClFhB,EAAoBoB,EAAK/N,IACH,oBAAXgO,QAA0BA,OAAOC,aAC1CX,OAAOC,eAAevN,EAASgO,OAAOC,YAAa,CAAEvI,MAAO,WAE7D4H,OAAOC,eAAevN,EAAS,aAAc,CAAE0F,OAAO,GAAO,C,o6BCmC9D,MAoBMwI,EAAeA,EAAGxI,QAAOyI,YAAWC,SAAQC,iBAChD,MAAOC,EAAYC,GAAiB/N,EAAAA,SAAekF,IAC5C8I,EAAYC,GAAiBjO,EAAAA,UAAe,IAC5CK,EAAO6N,GAAYlO,EAAAA,SAAe,MAEzCA,EAAAA,WAAgB,KACd+N,EAAc7I,GACdgJ,EAAS,KAAK,GACb,CAAChJ,IAEJ,MAAMiJ,EAA2BC,IAC/B,MAAM,QAAEC,EAAO,QAAEC,GA/BCC,EAACrJ,EAAO2I,KAC5B,IAAKA,EAAY,MAAO,CAAEQ,SAAS,GAGnC,GACER,EAAWW,QAC+B,mBAAnCX,EAAWW,OAAOC,aAEzB,IAEE,OADAZ,EAAWW,OAAOC,aAAavJ,GACxB,CAAEmJ,SAAS,EAAMC,QAAS,KACnC,CAAE,MAAOI,GACP,MAAO,CAAEL,SAAS,EAAOC,QAASI,EAAIJ,QACxC,CAGF,MAAO,CAAED,SAAS,EAAM,EAeOE,CAAcH,EAAUP,GAEjDQ,GACFH,EAAS,MACTN,EAAOQ,GAAU,IAEjBF,EAASI,EACX,EAGIK,EAAiBC,IACP,UAAVA,EAAEhC,MACJgC,EAAEC,iBACFV,EAAwBL,GAC1B,EAGF,OAAIH,EAEA3N,EAAAA,cAAC8O,EAAAA,UAAS,CACRC,WAAS,EACT7J,MAAO4I,EACPkB,SAAWJ,IACTb,EAAca,EAAE3J,OAAOC,OACnB7E,GAAO6N,EAAS,KAAK,EAE3BN,OAAQA,KACNO,EAAwBL,EAAW,EAErCmB,UAAWN,EACXO,KAAK,QACL7M,WAAS,EACTV,QAAQ,WACRtB,QAASA,EACT8O,WAAY9O,IAMhBL,EAAAA,cAACqG,IAAG,CACF9E,GAAI,CACFQ,QAAS,OACTC,WAAY,SACZ4E,SAAU,WACVG,MAAO,OACPqI,OAAQ,QAEVtD,aAAcA,IAAMmC,GAAc,GAClCoB,aAAcA,IAAMpB,GAAc,IAElCjO,EAAAA,cAAA,QAAM8B,MAAO,CAAEwN,KAAM,EAAGjM,WAAY,WAAa6B,GAChD8I,GACChO,EAAAA,cAACuP,IAAQ,CACPnM,SAAS,QACT7B,GAAI,CACF0F,QAAS,GACTL,SAAU,WACV4I,MAAO,EACP,UAAW,CACTvI,QAAS,MAKb,EAIJwI,EAAmBA,EACvBC,UAAU,GACVC,OAAO,GACP/L,YACAC,UACAC,cACAC,eACAC,kBACAuD,SACAqI,UAAU,CAAEvI,QAAS,GAAIC,QAAS,EAAG6C,YAAa,MAClD3E,UAAWC,GAASA,EAAKC,KACzBmK,SACAC,YACAvK,WACAwK,eACAnK,mBACAoK,UAAU,CAAC,MAGX,MAAOC,EAAaC,GAAkBlQ,EAAAA,SAAe,OAE/C,QAAEqH,EAAO,QAAEC,GAAYsI,EAEvBO,EAAYA,CAACjI,EAAKkI,EAAS,CAAC,IAACnG,EAAAA,EAAA,GAC9BmG,IACAlG,EAAAA,EAAAA,IAAiBhC,EAAK0H,EAAQzF,cAG7BkG,GAAe/K,EAAAA,EAAAA,GAAoB,CACvCC,WACAC,UACAI,mBACA3E,mBAAoB,YAGhBqP,EAAaA,CAAClJ,EAAKc,IACC,mBAAjBd,EAAImJ,SAA0BnJ,EAAImJ,SAASrI,KAASd,EAAImJ,SAmBjE,OACEvQ,EAAAA,cAAC0I,EAAAA,EAAU,CACT9E,UAAWA,GAAa+L,EAAKrE,OAC7BzH,QAASA,EACTC,YAAaA,EACbC,aAAcA,EACdC,gBAAiBA,GAEjBhE,EAAAA,cAACwQ,IAAK,CAACjP,GAAE0I,EAAAA,EAAA,IAAOJ,EAAAA,EAAAA,IAAqB6F,EAAQpE,SAAY0E,IAEvDhQ,EAAAA,cAACyQ,IAAS,CAAClP,GAAI,CAAEiI,gBAAiB,YAChCxJ,EAAAA,cAAC0Q,IAAQ,KACNhB,EAAQiB,KAAKvJ,GACZpH,EAAAA,cAAC4Q,IAAS,CACRhE,IAAKxF,EAAIO,UACTpG,GAAE0I,EAAAA,EAAA,IACGD,EAAAA,EAAAA,IAAiB5C,IAAI,IACxB/D,WAAY,UACR+D,EAAIyJ,QAAU,CAAC,GAErBC,MAAO1J,EAAI0J,OAAS,QAEpB9Q,EAAAA,cAACmH,EAAAA,EAAqB,CACpBC,IAAKA,EACLC,QAASA,EACTC,QAASA,EACTC,OAAQA,EACRhG,GAAI,CAAE8B,WAAY,eAIvBwM,GACC7P,EAAAA,cAAC4Q,IAAS,CAACrP,GAAE0I,EAAAA,EAAA,GAAOR,EAAAA,IAAc,IAAEpG,WAAY,aAEjDyM,GACC9P,EAAAA,cAAC4Q,IAAS,CACRrP,GAAE0I,EAAAA,EAAA,GACGR,EAAAA,IAAc,IACjB1C,MAAO,GACPvE,SAAU,GACVoH,SAAU,GACVvG,WAAY,aAIjBkC,GACCvF,EAAAA,cAAC4Q,IAAS,CAACrP,GAAE0I,EAAAA,EAAA,GAAOR,EAAAA,IAAc,IAAEpG,WAAY,eAKtDrD,EAAAA,cAAC+Q,IAAS,KACPpB,EAAKgB,KAAKzI,GACTlI,EAAAA,cAAC0Q,IAAQ,CAAC9D,IAAK1E,EAAIjC,IAChByJ,EAAQiB,KAAKvJ,GACZpH,EAAAA,cAAC4Q,IAAS,CACRhE,IAAK,GAAG1E,EAAIjC,MAAMmB,EAAIO,YACtBrF,QAASA,IAzED0O,EAAC9I,EAAKP,KAE5B,MAAMsJ,EAASvB,EAAQwB,MAAM9J,GAAQA,EAAIO,YAAcA,IACnDsJ,GAAUX,EAAWW,EAAQ/I,IAC/BgI,EAAe,CAAEiB,MAAOjJ,EAAIjC,GAAI0B,aAClC,EAoE6BqJ,CAAgB9I,EAAKd,EAAIO,WACxCpG,GAAE0I,EAAAA,EAAA,IACGD,EAAAA,EAAAA,IAAiB5C,IACjB+I,EAAUjI,EAAG+B,EAAA,CACdmH,OAAQd,EAAWlJ,EAAKc,GAAO,UAAY,UAC3CmJ,QAASf,EAAWlJ,EAAKc,GAAO,gBAAa/C,GACzCiC,EAAIkK,QAAU,CAAC,MAItBhB,EAAWlJ,EAAKc,GACflI,EAAAA,cAAC0N,EAAY,CACXxI,MAAOgD,EAAId,EAAIO,WACfgG,UACEsC,GACAA,EAAYkB,QAAUjJ,EAAIjC,IAC1BgK,EAAYtI,YAAcP,EAAIO,UAEhCiG,OAAQA,CAACQ,EAAUC,IAlFhBkD,EAACJ,EAAOxJ,EAAWyG,EAAUC,KAC9C0B,GAAgB1B,GAClB0B,EAAaoB,EAAOxJ,EAAWyG,GAEjC8B,EAAe,KAAK,EA+EAqB,CACErJ,EAAIjC,GACJmB,EAAIO,UACJyG,EACAC,GAGJR,WAAYzG,EAAIyG,aAGlB7N,EAAAA,cAACiI,EAAAA,EAAgB,CAACC,IAAKA,EAAKd,IAAKA,OAItCyI,GACC7P,EAAAA,cAAC4Q,IAAS,CACRrP,GAAE0I,EAAAA,EAAA,IACGG,EAAAA,EAAAA,IAAgBlC,EAAK0H,EAAQzF,cAAY,IAC5C9G,WAAY,WAEdmO,UAAWC,EAAAA,EAAOC,kBAElB1R,EAAAA,cAAC2R,EAAAA,WAAU,CACTrP,QAASA,IAAMuN,EAAO3H,GACtBgH,KAAK,QACL,aAAY7J,IAAAA,UAAY,iBAExBrF,EAAAA,cAACuP,IAAQ,QAIdO,GACC9P,EAAAA,cAAC4Q,IAAS,CACRE,MAAM,SACNvP,GAAE0I,EAAAA,EAAA,IACGG,EAAAA,EAAAA,IAAgBlC,EAAK0H,EAAQzF,YAAa,KAAG,IAChD9G,WAAY,WAEdmO,UAAWC,EAAAA,EAAOC,kBAElB1R,EAAAA,cAACoC,IAAM,CACLT,QAAQ,OACRzB,MAAM,UACNgP,KAAK,QACL5M,QAASA,IAAMwN,EAAU5H,GACzB3G,GAAI,CACF6B,SAAU,SACVC,WAAY,SACZuO,WAAY,SACZP,QAAS,UACTnR,MAAO,qBAGRgI,EAAI2J,YACDxM,IAAAA,UAAY,qBACZA,IAAAA,UAAY,qBAIrBE,GACCvF,EAAAA,cAAC4Q,IAAS,CACRrP,GAAE0I,EAAAA,EAAA,IACGG,EAAAA,EAAAA,IAAgBlC,EAAK0H,EAAQzF,cAAY,IAC5C9G,WAAY,WAEdmO,UAAWC,EAAAA,EAAOC,kBAElB1R,EAAAA,cAAC2R,EAAAA,WAAU,CACTrP,QAASA,IAAM+N,EAAanI,GAC5BgH,KAAK,QACL,aAAY7J,IAAAA,UAAY,mBAExBrF,EAAAA,cAAC8R,IAAU,aAQd,EAIjBrC,EAAiBhN,UAAY,CAC3BiN,QAAShN,IAAAA,QACPA,IAAAA,MAAgB,CACdiF,UAAWjF,IAAAA,OAAiBC,WAC5BkF,OAAQnF,IAAAA,KACRqE,MAAOrE,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,SAC9CoO,MAAOpO,IAAAA,OACP8E,SAAU9E,IAAAA,KACV6N,SAAU7N,IAAAA,UAAoB,CAACA,IAAAA,KAAgBA,IAAAA,OAC/CmL,WAAYnL,IAAAA,MAAgB,CAAE8L,OAAQ9L,IAAAA,SACtCyF,OAAQzF,IAAAA,QAGZiN,KAAMjN,IAAAA,QAAkBA,IAAAA,QACxBkB,UAAWlB,IAAAA,OAEXmB,QAASnB,IAAAA,OACToB,YAAapB,IAAAA,OACbqB,aAAcrB,IAAAA,KACdsB,gBAAiBtB,IAAAA,KACjB6E,OAAQ7E,IAAAA,KACRkN,QAASlN,IAAAA,MAAgB,CACvB2E,QAAS3E,IAAAA,OACT4E,QAAS5E,IAAAA,MAAgB,CAAC,GAAI,IAC9ByH,YAAazH,IAAAA,SAEf8C,QAAS9C,IAAAA,KACTmN,OAAQnN,IAAAA,KACRoN,UAAWpN,IAAAA,KACX6C,SAAU7C,IAAAA,KACVqN,aAAcrN,IAAAA,KACdkD,iBAAkBlD,IAAAA,MAGpB,U","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Info\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Warning\"","webpack://openstack-uicore-foundation/./src/components/mui/confirm-dialog.js","webpack://openstack-uicore-foundation/./src/components/mui/showConfirmDialog.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TablePagination\"","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/CustomTablePagination.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/create-delete-handler.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/scroll-fade-overlay.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/sortable-header-content.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/table-cell-content.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/table-shell.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/table-styles.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/use-scroll-fade.js","webpack://openstack-uicore-foundation/./src/components/mui/truncate-text.js","webpack://openstack-uicore-foundation/./src/utils/constants.js","webpack://openstack-uicore-foundation/./src/components/mui/tables/components/styles.module.less?7b04","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Check\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/CheckCircle\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Close\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Delete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Box\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Button\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Paper\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Table\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableBody\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableCell\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableContainer\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableHead\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableRow\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableSortLabel\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Tooltip\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/styles\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/utils\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"lodash/isBoolean\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/./src/components/mui/tables/editable-table/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Info\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Warning\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Typography\n} from \"@mui/material\";\nimport CheckCircle from \"@mui/icons-material/CheckCircle\";\nimport Error from \"@mui/icons-material/Error\";\nimport Info from \"@mui/icons-material/Info\";\nimport Warning from \"@mui/icons-material/Warning\";\n\nconst iconMap = {\n warning: <Warning color=\"warning\" />,\n success: <CheckCircle color=\"success\" />,\n error: <Error color=\"error\" />,\n info: <Info color=\"info\" />\n};\n\nconst ConfirmDialog = ({\n open,\n title,\n text,\n iconType = \"\",\n onConfirm,\n onCancel,\n confirmButtonText = \"Confirm\",\n confirmButtonColor = \"primary\",\n cancelButtonText = \"Cancel\",\n cancelButtonColor = \"primary\"\n}) => (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle sx={{ p: 2 }} component=\"div\">\n <Typography variant=\"h5\">{title}</Typography>\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ p: 2 }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {iconMap[iconType] && (\n <div style={{ marginRight: 10 }}>{iconMap[iconType]}</div>\n )}\n <Typography variant=\"body1\">{text}</Typography>\n </div>\n </DialogContent>\n <Divider sx={{ margin: \"10px 0px 10px 0px\" }} />\n <DialogActions>\n <Button\n fullWidth\n onClick={onCancel}\n color={cancelButtonColor}\n variant=\"outlined\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {cancelButtonText}\n </Button>\n <Button\n fullWidth\n onClick={onConfirm}\n color={confirmButtonColor}\n variant=\"contained\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nConfirmDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n iconType: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n confirmButtonText: PropTypes.string,\n confirmButtonColor: PropTypes.string,\n cancelButtonText: PropTypes.string,\n cancelButtonColor: PropTypes.string\n};\n\nConfirmDialog.defaultProps = {\n open: false,\n iconType: \"warning\",\n confirmButtonText: \"Confirm\",\n confirmButtonColor: \"primary\",\n cancelButtonText: \"Cancel\",\n cancelButtonColor: \"default\"\n};\n\nexport default ConfirmDialog;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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, { useState, useEffect } from \"react\";\nimport ConfirmDialog from \"./confirm-dialog\";\n\n/**\n * Imperative confirm dialog API.\n *\n * SETUP (required):\n * Place <GlobalConfirmDialog /> at the root of your app:\n *\n * import { GlobalConfirmDialog } from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * function App() {\n * return (\n * <>\n * <YourApp />\n * <GlobalConfirmDialog />\n * </>\n * );\n * }\n *\n * USAGE (works from any file — the bridge is shared via globalThis):\n * import showConfirmDialog from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * const confirmed = await showConfirmDialog({\n * title: 'Delete Item?',\n * text: 'This cannot be undone'\n * });\n */\n\n// Shared bridge reference stored on globalThis so that all webpack bundles\n// (table, sortable-table, show-confirm-dialog, index, etc.) read/write the\n// same callback. A module-level variable would be duplicated per bundle.\nconst BRIDGE_KEY = \"__oif_confirm_dialog_bridge__\";\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : {};\n\n/**\n * @param param0\n * @param param0.title\n * @param param0.text\n * @param param0.iconType\n * @param param0.confirmButtonText\n * @param param0.cancelButtonText\n * @param param0.confirmButtonColor\n * @param param0.cancelButtonColor\n * @returns {Promise<boolean>}\n */\nconst showConfirmDialog = ({\n title,\n text,\n iconType = \"\",\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n confirmButtonColor = \"primary\",\n cancelButtonColor = \"primary\"\n}) => {\n if (!_global[BRIDGE_KEY]) {\n throw new Error(\n \"[openstack-uicore-foundation] showConfirmDialog: <GlobalConfirmDialog /> is not mounted. \" +\n \"Add <GlobalConfirmDialog /> to the root of your app.\"\n );\n }\n\n return _global[BRIDGE_KEY]({\n title,\n text,\n iconType,\n confirmButtonText,\n cancelButtonText,\n confirmButtonColor,\n cancelButtonColor\n });\n};\n\n/**\n * Global confirm dialog component. Place at the root of your app:\n *\n * <App>\n * ...\n * <GlobalConfirmDialog />\n * </App>\n *\n * Then call showConfirmDialog() anywhere.\n */\nexport const GlobalConfirmDialog = () => {\n const [dialogState, setDialogState] = useState(null);\n\n useEffect(() => {\n _global[BRIDGE_KEY] = (options) => {\n return new Promise((resolve) => {\n setDialogState({ ...options, open: true, onResolve: resolve });\n });\n };\n return () => { _global[BRIDGE_KEY] = null; };\n }, []);\n\n const handleConfirm = () => {\n if (dialogState?.onResolve) dialogState.onResolve(true);\n setDialogState(null);\n };\n\n const handleCancel = () => {\n if (dialogState?.onResolve) dialogState.onResolve(false);\n setDialogState(null);\n };\n\n if (!dialogState) return null;\n\n return (\n <ConfirmDialog\n open={dialogState.open}\n title={dialogState.title}\n text={dialogState.text}\n iconType={dialogState.iconType}\n confirmButtonText={dialogState.confirmButtonText}\n cancelButtonText={dialogState.cancelButtonText}\n confirmButtonColor={dialogState.confirmButtonColor}\n cancelButtonColor={dialogState.cancelButtonColor}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n};\n\nexport default showConfirmDialog;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/TablePagination\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport PropTypes from \"prop-types\";\nimport { DEFAULT_PER_PAGE, FIFTY_PER_PAGE, TWENTY_PER_PAGE } from \"../../../../utils/constants\";\n\nconst PAGINATION_SX = {\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-selectLabel\": {\n color: \"rgba(0, 0, 0, 0.6)\",\n fontSize: \"12px\",\n fontWeight: \"normal\"\n },\n \".MuiTablePagination-select\": {\n color: \"rgba(0, 0, 0, 0.6)\",\n fontSize: \"12px\",\n fontWeight: \"normal\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n};\n\nconst BASE_PER_PAGE_OPTIONS = [DEFAULT_PER_PAGE, TWENTY_PER_PAGE, FIFTY_PER_PAGE];\n\nconst CustomTablePagination = ({ totalRows, perPage, currentPage, onPageChange, onPerPageChange }) => {\n const perPageOptions = React.useMemo(() => {\n if (!onPerPageChange) return [perPage];\n return BASE_PER_PAGE_OPTIONS.includes(perPage)\n ? BASE_PER_PAGE_OPTIONS\n : [...BASE_PER_PAGE_OPTIONS, perPage].sort((a, b) => a - b);\n }, [perPage, onPerPageChange]);\n\n const handlePageChange = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleRowsPerPageChange = (ev) => {\n onPerPageChange(parseInt(ev.target.value, 10));\n };\n\n return (\n <TablePagination\n component=\"div\"\n count={totalRows ?? 0}\n rowsPerPageOptions={perPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handlePageChange}\n onRowsPerPageChange={onPerPageChange ? handleRowsPerPageChange : undefined}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={PAGINATION_SX}\n />\n );\n};\n\nCustomTablePagination.propTypes = {\n totalRows: PropTypes.number,\n perPage: PropTypes.number.isRequired,\n currentPage: PropTypes.number.isRequired,\n onPageChange: PropTypes.func.isRequired,\n onPerPageChange: PropTypes.func\n};\n\nexport default CustomTablePagination;\n","import T from \"i18n-react/dist/i18n-react\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\n\nconst createDeleteHandler = ({\n onDelete,\n getName = (item) => item.name,\n deleteDialogTitle,\n deleteDialogBody,\n deleteDialogConfirmText,\n confirmButtonColor\n}) => async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: deleteDialogTitle || T.translate(\"general.are_you_sure\"),\n text:\n typeof deleteDialogBody === \"function\"\n ? deleteDialogBody(getName(item))\n : deleteDialogBody ||\n `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor,\n confirmButtonText:\n deleteDialogConfirmText || T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n};\n\nexport default createDeleteHandler;\n","import * as React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport PropTypes from \"prop-types\";\nimport { alpha } from \"@mui/material/styles\";\n\nconst FADE_WIDTH = 64;\nconst FADE_OPACITY = 0.85;\n\nconst ScrollFadeOverlay = ({ side, visible }) => (\n <Box\n sx={(theme) => {\n const tint = alpha(theme.palette.background.paper, FADE_OPACITY);\n return {\n position: \"absolute\",\n top: 0,\n bottom: 0,\n [side]: 0,\n width: FADE_WIDTH,\n pointerEvents: \"none\",\n opacity: visible ? 1 : 0,\n transition: \"opacity 0.2s ease\",\n background: `linear-gradient(to ${side === \"left\" ? \"right\" : \"left\"}, ${tint}, transparent)`\n };\n }}\n />\n);\n\nScrollFadeOverlay.propTypes = {\n side: PropTypes.oneOf([\"left\", \"right\"]).isRequired,\n visible: PropTypes.bool\n};\n\nexport default ScrollFadeOverlay;\n","import * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport PropTypes from \"prop-types\";\nimport { visuallyHidden } from \"@mui/utils\";\n\nconst SortableHeaderContent = ({ col, sortCol, sortDir, onSort, sx }) => {\n if (!col.sortable) {\n return sx ? <span style={sx}>{col.header}</span> : col.header;\n }\n\n return (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={sortCol === col.columnKey && sortDir === -1 ? \"desc\" : \"asc\"}\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n sx={sx}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n );\n};\n\nSortableHeaderContent.propTypes = {\n col: PropTypes.object.isRequired,\n sortCol: PropTypes.string,\n sortDir: PropTypes.oneOf([1, -1]),\n onSort: PropTypes.func,\n sx: PropTypes.object\n};\n\nexport default SortableHeaderContent;\n","import * as React from \"react\";\nimport isBoolean from \"lodash/isBoolean\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport TruncateText from \"../../truncate-text\";\n\nconst contentStyle = {\n fontWeight: \"normal\",\n overflowWrap: \"break-word\",\n};\n\nconst TableCellContent = ({ row, col }) => {\n return (\n <span style={contentStyle}>\n {col.render ? (\n col.render(row)\n ) : isBoolean(row[col.columnKey]) ? (\n row[col.columnKey] ? (\n <CheckIcon fontSize=\"large\" />\n ) : (\n <CloseIcon fontSize=\"large\" />\n )\n ) : col.truncateText ? (\n <TruncateText charLimit={col.truncateText}>\n {row[col.columnKey]}\n </TruncateText>\n ) : (\n row[col.columnKey]\n )}\n </span>\n );\n};\n\nexport default TableCellContent;","import * as React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Paper from \"@mui/material/Paper\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport PropTypes from \"prop-types\";\nimport CustomTablePagination from \"./CustomTablePagination\";\nimport useScrollFade from \"./use-scroll-fade\";\nimport ScrollFadeOverlay from \"./scroll-fade-overlay\";\n\nconst TableShell = ({\n children,\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange\n}) => {\n const { containerRef, showLeftFade, showRightFade } = useScrollFade();\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <Box sx={{ position: \"relative\" }}>\n <TableContainer\n ref={containerRef}\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n {children}\n </TableContainer>\n <ScrollFadeOverlay side=\"left\" visible={showLeftFade} />\n <ScrollFadeOverlay side=\"right\" visible={showRightFade} />\n </Box>\n\n {perPage && currentPage && onPageChange && (\n <CustomTablePagination\n totalRows={totalRows}\n perPage={perPage}\n currentPage={currentPage}\n onPageChange={onPageChange}\n onPerPageChange={onPerPageChange}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nTableShell.propTypes = {\n children: PropTypes.node,\n totalRows: PropTypes.number,\n perPage: PropTypes.number,\n currentPage: PropTypes.number,\n onPageChange: PropTypes.func,\n onPerPageChange: PropTypes.func\n};\n\nexport default TableShell;\n","export const MIN_WIDTH_SMALL = 690; // sm breakpoint content width\nexport const MIN_WIDTH_WIDE = 910; // md breakpoint content width\nexport const SMALL_TABLE_MAX_COLUMNS = 3; // fewer than 4 data columns = small\nexport const DEFAULT_COLUMN_MIN_WIDTH = 40; // floor for columns with no explicit width\n\nexport const ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nexport const ACTION_CELL_SX = {\n p: 0,\n textAlign: \"center\",\n verticalAlign: \"middle\",\n width: 40,\n minWidth: 40,\n maxWidth: 40\n};\n\nexport const getResponsiveTableSx = (dataColumnCount) => ({\n tableLayout: \"auto\",\n minWidth:\n dataColumnCount <= SMALL_TABLE_MAX_COLUMNS ? MIN_WIDTH_SMALL : MIN_WIDTH_WIDE\n});\n\n// same bucket used for minWidth: fewer columns can stay uncollapsed longer\nexport const getActionsMenuBreakpoint = (dataColumnCount) =>\n dataColumnCount <= SMALL_TABLE_MAX_COLUMNS ? \"md\" : \"lg\";\n\nexport const getColumnWidthSx = (col) => ({\n minWidth: col.width ?? DEFAULT_COLUMN_MIN_WIDTH,\n ...(col.width && {\n width: col.width,\n maxWidth: col.width\n })\n});\n\nexport const getArchivedRowSx = (row, disableProp) =>\n disableProp && row[disableProp] ? ARCHIVED_CELL_SX : {};\n\nexport const getActionCellSx = (row, disableProp, widthOverride) => ({\n ...ACTION_CELL_SX,\n ...(widthOverride && {\n width: widthOverride,\n minWidth: widthOverride,\n maxWidth: widthOverride\n }),\n ...getArchivedRowSx(row, disableProp)\n});\n","import * as React from \"react\";\n\nconst useScrollFade = () => {\n const containerRef = React.useRef(null);\n const [showLeftFade, setShowLeftFade] = React.useState(false);\n const [showRightFade, setShowRightFade] = React.useState(false);\n\n const updateFades = React.useCallback(() => {\n const el = containerRef.current;\n if (!el) return;\n setShowLeftFade(el.scrollLeft > 0);\n setShowRightFade(Math.ceil(el.scrollLeft + el.clientWidth) < el.scrollWidth);\n }, []);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return undefined;\n\n updateFades();\n el.addEventListener(\"scroll\", updateFades);\n\n return () => el.removeEventListener(\"scroll\", updateFades);\n }, [updateFades]);\n\n return { containerRef, showLeftFade, showRightFade };\n};\n\nexport default useScrollFade;\n","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\nconst TruncateText = ({ children, charLimit }) => {\n const ref = React.useRef(null);\n const [isOverflowing, setIsOverflowing] = React.useState(false);\n\n const shouldCharTruncate = typeof charLimit === \"number\";\n const isTruncated = shouldCharTruncate && children.length > charLimit;\n\n const displayContent = isTruncated ? children.slice(0, charLimit) + \"...\" : children;\n const tooltipTitle = isTruncated ? children : isOverflowing ? children : \"\";\n\n return (\n <Tooltip title={tooltipTitle} placement=\"top\" componentsProps={{ tooltip: { sx: { fontSize: \"1.2rem\" } } }}>\n <span\n ref={ref}\n onMouseEnter={() => {\n if (ref.current && !shouldCharTruncate)\n setIsOverflowing(ref.current.scrollWidth > ref.current.offsetWidth);\n }}\n style={{ display: \"block\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}\n >\n <span style={{ fontWeight: \"normal\" }}>{displayContent}</span>\n </span>\n </Tooltip>\n );\n};\n\nTruncateText.propTypes = {\n children: PropTypes.string,\n charLimit: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nexport default TruncateText;\n","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\nexport const BPS = 100;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const ASYNC_SELECT_SAFETY_TIMEOUT = 15000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\n\nexport const FILE_UPLOAD_STATUS = {\n PENDING: \"PENDING\",\n DEADLINE_ALERT: \"DEADLINE ALERT\",\n DEADLINE_MISSED: \"DEADLINE MISSED\",\n COMPLETE: \"COMPLETE\"\n};\n\nexport const FILE_UPLOAD_STATUS_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"success.light\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"error\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"warning.light\",\n [FILE_UPLOAD_STATUS.PENDING]: \"default\"\n};\n\nexport const FILE_UPLOAD_STATUS_BKGR_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"white\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"#D32F2F0A\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"#EF6C000A\",\n [FILE_UPLOAD_STATUS.PENDING]: \"white\"\n};\n\nexport const DATE_FORMAT = \"MM/DD/YYYY\";\nexport const DATETIME_FORMAT = \"MM/DD/YYYY hh:mm a\";\n\nexport const SPONSOR_FORMS_METAFIELD_CLASS = {\n FORM: \"Form\",\n ITEM: \"Item\"\n};\n\nexport const SPONSOR_ORDER_GRID_ITEM_TYPES = {\n CHARGE: \"Charge\",\n PAYMENT: \"Payment\",\n REFUND: \"Refund\",\n DISCOUNT: \"Discount\",\n CANCELLED: \"Cancelled\"\n};","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"KNETxMZ1aGPbDi44wmnH\"};","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@mui/icons-material/Check\");","module.exports = require(\"@mui/icons-material/CheckCircle\");","module.exports = require(\"@mui/icons-material/Close\");","module.exports = require(\"@mui/icons-material/Delete\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/material/Box\");","module.exports = require(\"@mui/material/Button\");","module.exports = require(\"@mui/material/Paper\");","module.exports = require(\"@mui/material/Table\");","module.exports = require(\"@mui/material/TableBody\");","module.exports = require(\"@mui/material/TableCell\");","module.exports = require(\"@mui/material/TableContainer\");","module.exports = require(\"@mui/material/TableHead\");","module.exports = require(\"@mui/material/TableRow\");","module.exports = require(\"@mui/material/TableSortLabel\");","module.exports = require(\"@mui/material/Tooltip\");","module.exports = require(\"@mui/material/styles\");","module.exports = require(\"@mui/utils\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"lodash/isBoolean\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableRow from \"@mui/material/TableRow\";\nimport { IconButton, TextField } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport styles from \"../components/styles.module.less\";\n\nimport TableCellContent from \"../components/table-cell-content\";\nimport TableShell from \"../components/table-shell\";\nimport createDeleteHandler from \"../components/create-delete-handler\";\nimport SortableHeaderContent from \"../components/sortable-header-content\";\nimport {\n getResponsiveTableSx,\n getColumnWidthSx,\n getArchivedRowSx,\n getActionCellSx,\n ACTION_CELL_SX\n} from \"../components/table-styles\";\n\nconst validateValue = (value, validation) => {\n if (!validation) return { isValid: true };\n\n // validate with yup schema\n if (\n validation.schema &&\n typeof validation.schema.validateSync === \"function\"\n ) {\n try {\n validation.schema.validateSync(value);\n return { isValid: true, message: null };\n } catch (err) {\n return { isValid: false, message: err.message };\n }\n }\n\n return { isValid: true };\n};\n\n// Updated component to handle editable cells with hover edit icon\nconst EditableCell = ({ value, isEditing, onBlur, validation }) => {\n const [inputValue, setInputValue] = React.useState(value);\n const [isHovering, setIsHovering] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n setInputValue(value);\n setError(null);\n }, [value]);\n\n const handleValidationAndSave = (newValue) => {\n const { isValid, message } = validateValue(newValue, validation);\n\n if (isValid) {\n setError(null);\n onBlur(newValue, true);\n } else {\n setError(message);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleValidationAndSave(inputValue);\n }\n };\n\n if (isEditing) {\n return (\n <TextField\n autoFocus\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n if (error) setError(null);\n }}\n onBlur={() => {\n handleValidationAndSave(inputValue);\n }}\n onKeyDown={handleKeyDown}\n size=\"small\"\n fullWidth\n variant=\"standard\"\n error={!!error}\n helperText={error}\n />\n );\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\"\n }}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n <span style={{ flex: 1, fontWeight: \"normal\" }}>{value}</span>\n {isHovering && (\n <EditIcon\n fontSize=\"small\"\n sx={{\n opacity: 0.5,\n position: \"absolute\",\n right: 0,\n \"&:hover\": {\n opacity: 1\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MuiTableEditable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null },\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n onCellChange, // New prop for handling cell value changes\n deleteDialogBody,\n tableSx = {}\n}) => {\n // State to track which cell is currently being edited\n const [editingCell, setEditingCell] = React.useState(null);\n\n const { sortCol, sortDir } = options;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...getArchivedRowSx(row, options.disableProp)\n });\n\n const handleDelete = createDeleteHandler({\n onDelete,\n getName,\n deleteDialogBody,\n confirmButtonColor: \"warning\"\n });\n\n const isEditable = (col, row) =>\n typeof col.editable === \"function\" ? col.editable(row) : !!col.editable;\n\n // Handler for starting edit mode on a cell\n const handleCellClick = (row, columnKey) => {\n // Check if the column is editable\n const column = columns.find((col) => col.columnKey === columnKey);\n if (column && isEditable(column, row)) {\n setEditingCell({ rowId: row.id, columnKey });\n }\n };\n\n // Handler for saving changes when editing is complete\n const handleCellBlur = (rowId, columnKey, newValue, isValid) => {\n if (onCellChange && isValid) {\n onCellChange(rowId, columnKey, newValue);\n }\n setEditingCell(null);\n };\n\n return (\n <TableShell\n totalRows={totalRows ?? data.length}\n perPage={perPage}\n currentPage={currentPage}\n onPageChange={onPageChange}\n onPerPageChange={onPerPageChange}\n >\n <Table sx={{ ...getResponsiveTableSx(columns.length), ...tableSx }}>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n ...getColumnWidthSx(col),\n fontWeight: \"normal\",\n ...(col.headSx || {})\n }}\n align={col.align ?? \"left\"}\n >\n <SortableHeaderContent\n col={col}\n sortCol={sortCol}\n sortDir={sortDir}\n onSort={onSort}\n sx={{ fontWeight: \"normal\" }}\n />\n </TableCell>\n ))}\n {onEdit && (\n <TableCell sx={{ ...ACTION_CELL_SX, fontWeight: \"normal\" }} />\n )}\n {onArchive && (\n <TableCell\n sx={{\n ...ACTION_CELL_SX,\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n fontWeight: \"normal\"\n }}\n />\n )}\n {onDelete && (\n <TableCell sx={{ ...ACTION_CELL_SX, fontWeight: \"normal\" }} />\n )}\n </TableRow>\n </TableHead>\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {columns.map((col) => (\n <TableCell\n key={`${row.id}-${col.columnKey}`}\n onClick={() => handleCellClick(row, col.columnKey)}\n sx={{\n ...getColumnWidthSx(col),\n ...getCellSx(row, {\n cursor: isEditable(col, row) ? \"pointer\" : \"default\",\n padding: isEditable(col, row) ? \"8px 16px\" : undefined,\n ...(col.cellSx || {})\n })\n }}\n >\n {isEditable(col, row) ? (\n <EditableCell\n value={row[col.columnKey]}\n isEditing={\n editingCell &&\n editingCell.rowId === row.id &&\n editingCell.columnKey === col.columnKey\n }\n onBlur={(newValue, isValid) =>\n handleCellBlur(\n row.id,\n col.columnKey,\n newValue,\n isValid\n )\n }\n validation={col.validation}\n />\n ) : (\n <TableCellContent row={row} col={col} />\n )}\n </TableCell>\n ))}\n {onEdit && (\n <TableCell\n sx={{\n ...getActionCellSx(row, options.disableProp),\n fontWeight: \"normal\"\n }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n onClick={() => onEdit(row)}\n size=\"small\"\n aria-label={T.translate(\"general.edit\")}\n >\n <EditIcon />\n </IconButton>\n </TableCell>\n )}\n {onArchive && (\n <TableCell\n align=\"center\"\n sx={{\n ...getActionCellSx(row, options.disableProp, 80),\n fontWeight: \"normal\"\n }}\n className={styles.dottedBorderLeft}\n >\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: \"normal\",\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\",\n color: \"rgba(0,0,0,0.56)\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {onDelete && (\n <TableCell\n sx={{\n ...getActionCellSx(row, options.disableProp),\n fontWeight: \"normal\"\n }}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n onClick={() => handleDelete(row)}\n size=\"small\"\n aria-label={T.translate(\"general.delete\")}\n >\n <DeleteIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableShell>\n );\n};\n\nMuiTableEditable.propTypes = {\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n header: PropTypes.node,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n align: PropTypes.string,\n sortable: PropTypes.bool,\n editable: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n validation: PropTypes.shape({ schema: PropTypes.object }),\n render: PropTypes.func\n })\n ),\n data: PropTypes.arrayOf(PropTypes.object),\n totalRows: PropTypes.number,\n // Pagination only renders when all three are provided — see line 366.\n perPage: PropTypes.number,\n currentPage: PropTypes.number,\n onPageChange: PropTypes.func,\n onPerPageChange: PropTypes.func,\n onSort: PropTypes.func,\n options: PropTypes.shape({\n sortCol: PropTypes.string,\n sortDir: PropTypes.oneOf([1, -1]),\n disableProp: PropTypes.string\n }),\n getName: PropTypes.func,\n onEdit: PropTypes.func,\n onArchive: PropTypes.func,\n onDelete: PropTypes.func,\n onCellChange: PropTypes.func,\n deleteDialogBody: PropTypes.func\n};\n\nexport default MuiTableEditable;\n"],"names":["root","factory","exports","module","define","amd","this","require","iconMap","warning","React","Warning","color","success","CheckCircle","error","Error","info","Info","ConfirmDialog","open","title","text","iconType","onConfirm","onCancel","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","Dialog","onClose","DialogTitle","sx","p","component","Typography","variant","Divider","DialogContent","style","display","alignItems","marginRight","margin","DialogActions","Button","fullWidth","onClick","whiteSpace","minWidth","propTypes","PropTypes","isRequired","defaultProps","BRIDGE_KEY","_global","globalThis","window","showConfirmDialog","PAGINATION_SX","marginTop","fontSize","fontWeight","marginLeft","BASE_PER_PAGE_OPTIONS","DEFAULT_PER_PAGE","TWENTY_PER_PAGE","FIFTY_PER_PAGE","CustomTablePagination","totalRows","perPage","currentPage","onPageChange","onPerPageChange","perPageOptions","includes","sort","a","b","TablePagination","count","rowsPerPageOptions","rowsPerPage","page","handlePageChange","_","newPage","onRowsPerPageChange","ev","parseInt","target","value","undefined","labelRowsPerPage","T","createDeleteHandler","onDelete","getName","item","name","deleteDialogTitle","deleteDialogBody","deleteDialogConfirmText","async","type","showCancelButton","id","ScrollFadeOverlay","side","visible","Box","theme","tint","alpha","palette","background","paper","position","top","bottom","width","pointerEvents","opacity","transition","SortableHeaderContent","col","sortCol","sortDir","onSort","sortable","TableSortLabel","active","columnKey","direction","header","visuallyHidden","contentStyle","overflowWrap","TableCellContent","row","render","isBoolean","CheckIcon","CloseIcon","truncateText","TruncateText","charLimit","TableShell","children","containerRef","showLeftFade","showRightFade","useScrollFade","Paper","elevation","mb","TableContainer","ref","borderRadius","boxShadow","ARCHIVED_CELL_SX","backgroundColor","ACTION_CELL_SX","textAlign","verticalAlign","maxWidth","getResponsiveTableSx","dataColumnCount","tableLayout","getColumnWidthSx","_objectSpread","getArchivedRowSx","disableProp","getActionCellSx","widthOverride","setShowLeftFade","setShowRightFade","updateFades","el","current","scrollLeft","Math","ceil","clientWidth","scrollWidth","addEventListener","removeEventListener","isOverflowing","setIsOverflowing","shouldCharTruncate","isTruncated","length","displayContent","slice","tooltipTitle","Tooltip","placement","componentsProps","tooltip","onMouseEnter","offsetWidth","overflow","textOverflow","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","EditableCell","isEditing","onBlur","validation","inputValue","setInputValue","isHovering","setIsHovering","setError","handleValidationAndSave","newValue","isValid","message","validateValue","schema","validateSync","err","handleKeyDown","e","preventDefault","TextField","autoFocus","onChange","onKeyDown","size","helperText","height","onMouseLeave","flex","EditIcon","right","MuiTableEditable","columns","data","options","onEdit","onArchive","onCellChange","tableSx","editingCell","setEditingCell","getCellSx","baseSx","handleDelete","isEditable","editable","Table","TableHead","TableRow","map","TableCell","headSx","align","TableBody","handleCellClick","column","find","rowId","cursor","padding","cellSx","handleCellBlur","className","styles","dottedBorderLeft","IconButton","lineHeight","is_archived","DeleteIcon"],"sourceRoot":""}
1
+ {"version":3,"file":"components/mui/editable-table.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Info\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Warning\"","webpack://openstack-uicore-foundation/./src/components/mui/confirm-dialog.js","webpack://openstack-uicore-foundation/./src/components/mui/showConfirmDialog.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TablePagination\"","webpack://openstack-uicore-foundation/./src/components/mui/table/CustomTablePagination.js","webpack://openstack-uicore-foundation/./src/components/mui/table/table-cell-content.js","webpack://openstack-uicore-foundation/./src/components/mui/truncate-text.js","webpack://openstack-uicore-foundation/./src/utils/constants.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Check\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/CheckCircle\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Close\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Delete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Box\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Button\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Paper\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Table\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableBody\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableCell\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableContainer\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableHead\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableRow\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/TableSortLabel\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material/Tooltip\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/utils\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"lodash/isBoolean\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/./src/components/mui/editable-table/mui-table-editable.module.less?19a7","webpack://openstack-uicore-foundation/./src/components/mui/editable-table/mui-table-editable.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Info\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Warning\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Typography\n} from \"@mui/material\";\nimport CheckCircle from \"@mui/icons-material/CheckCircle\";\nimport Error from \"@mui/icons-material/Error\";\nimport Info from \"@mui/icons-material/Info\";\nimport Warning from \"@mui/icons-material/Warning\";\n\nconst iconMap = {\n warning: <Warning color=\"warning\" />,\n success: <CheckCircle color=\"success\" />,\n error: <Error color=\"error\" />,\n info: <Info color=\"info\" />\n};\n\nconst ConfirmDialog = ({\n open,\n title,\n text,\n iconType = \"\",\n onConfirm,\n onCancel,\n confirmButtonText = \"Confirm\",\n confirmButtonColor = \"primary\",\n cancelButtonText = \"Cancel\",\n cancelButtonColor = \"primary\"\n}) => (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle sx={{ p: 2 }} component=\"div\">\n <Typography variant=\"h5\">{title}</Typography>\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ p: 2 }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {iconMap[iconType] && (\n <div style={{ marginRight: 10 }}>{iconMap[iconType]}</div>\n )}\n <Typography variant=\"body1\">{text}</Typography>\n </div>\n </DialogContent>\n <Divider sx={{ margin: \"10px 0px 10px 0px\" }} />\n <DialogActions>\n <Button\n fullWidth\n onClick={onCancel}\n color={cancelButtonColor}\n variant=\"outlined\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {cancelButtonText}\n </Button>\n <Button\n fullWidth\n onClick={onConfirm}\n color={confirmButtonColor}\n variant=\"contained\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nConfirmDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n iconType: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n confirmButtonText: PropTypes.string,\n confirmButtonColor: PropTypes.string,\n cancelButtonText: PropTypes.string,\n cancelButtonColor: PropTypes.string\n};\n\nConfirmDialog.defaultProps = {\n open: false,\n iconType: \"warning\",\n confirmButtonText: \"Confirm\",\n confirmButtonColor: \"primary\",\n cancelButtonText: \"Cancel\",\n cancelButtonColor: \"default\"\n};\n\nexport default ConfirmDialog;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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, { useState, useEffect } from \"react\";\nimport ConfirmDialog from \"./confirm-dialog\";\n\n/**\n * Imperative confirm dialog API.\n *\n * SETUP (required):\n * Place <GlobalConfirmDialog /> at the root of your app:\n *\n * import { GlobalConfirmDialog } from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * function App() {\n * return (\n * <>\n * <YourApp />\n * <GlobalConfirmDialog />\n * </>\n * );\n * }\n *\n * USAGE (works from any file — the bridge is shared via globalThis):\n * import showConfirmDialog from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * const confirmed = await showConfirmDialog({\n * title: 'Delete Item?',\n * text: 'This cannot be undone'\n * });\n */\n\n// Shared bridge reference stored on globalThis so that all webpack bundles\n// (table, sortable-table, show-confirm-dialog, index, etc.) read/write the\n// same callback. A module-level variable would be duplicated per bundle.\nconst BRIDGE_KEY = \"__oif_confirm_dialog_bridge__\";\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : {};\n\n/**\n * @param param0\n * @param param0.title\n * @param param0.text\n * @param param0.iconType\n * @param param0.confirmButtonText\n * @param param0.cancelButtonText\n * @param param0.confirmButtonColor\n * @param param0.cancelButtonColor\n * @returns {Promise<boolean>}\n */\nconst showConfirmDialog = ({\n title,\n text,\n iconType = \"\",\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n confirmButtonColor = \"primary\",\n cancelButtonColor = \"primary\"\n}) => {\n if (!_global[BRIDGE_KEY]) {\n throw new Error(\n \"[openstack-uicore-foundation] showConfirmDialog: <GlobalConfirmDialog /> is not mounted. \" +\n \"Add <GlobalConfirmDialog /> to the root of your app.\"\n );\n }\n\n return _global[BRIDGE_KEY]({\n title,\n text,\n iconType,\n confirmButtonText,\n cancelButtonText,\n confirmButtonColor,\n cancelButtonColor\n });\n};\n\n/**\n * Global confirm dialog component. Place at the root of your app:\n *\n * <App>\n * ...\n * <GlobalConfirmDialog />\n * </App>\n *\n * Then call showConfirmDialog() anywhere.\n */\nexport const GlobalConfirmDialog = () => {\n const [dialogState, setDialogState] = useState(null);\n\n useEffect(() => {\n _global[BRIDGE_KEY] = (options) => {\n return new Promise((resolve) => {\n setDialogState({ ...options, open: true, onResolve: resolve });\n });\n };\n return () => { _global[BRIDGE_KEY] = null; };\n }, []);\n\n const handleConfirm = () => {\n if (dialogState?.onResolve) dialogState.onResolve(true);\n setDialogState(null);\n };\n\n const handleCancel = () => {\n if (dialogState?.onResolve) dialogState.onResolve(false);\n setDialogState(null);\n };\n\n if (!dialogState) return null;\n\n return (\n <ConfirmDialog\n open={dialogState.open}\n title={dialogState.title}\n text={dialogState.text}\n iconType={dialogState.iconType}\n confirmButtonText={dialogState.confirmButtonText}\n cancelButtonText={dialogState.cancelButtonText}\n confirmButtonColor={dialogState.confirmButtonColor}\n cancelButtonColor={dialogState.cancelButtonColor}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n};\n\nexport default showConfirmDialog;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/material/TablePagination\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 * as React from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport TablePagination from \"@mui/material/TablePagination\";\nimport PropTypes from \"prop-types\";\nimport { DEFAULT_PER_PAGE, FIFTY_PER_PAGE, TWENTY_PER_PAGE } from \"../../../utils/constants\";\n\nconst PAGINATION_SX = {\n \".MuiTablePagination-toolbar\": {\n alignItems: \"baseline\",\n marginTop: \"1.6rem\"\n },\n \".MuiTablePagination-selectLabel\": {\n color: \"rgba(0, 0, 0, 0.6)\",\n fontSize: \"12px\",\n fontWeight: \"normal\"\n },\n \".MuiTablePagination-select\": {\n color: \"rgba(0, 0, 0, 0.6)\",\n fontSize: \"12px\",\n fontWeight: \"normal\"\n },\n \".MuiTablePagination-spacer\": {\n display: \"none\"\n },\n \".MuiTablePagination-displayedRows\": {\n marginLeft: \"auto\"\n }\n};\n\nconst BASE_PER_PAGE_OPTIONS = [DEFAULT_PER_PAGE, TWENTY_PER_PAGE, FIFTY_PER_PAGE];\n\nconst CustomTablePagination = ({ totalRows, perPage, currentPage, onPageChange, onPerPageChange }) => {\n const perPageOptions = React.useMemo(() => {\n if (!onPerPageChange) return [perPage];\n return BASE_PER_PAGE_OPTIONS.includes(perPage)\n ? BASE_PER_PAGE_OPTIONS\n : [...BASE_PER_PAGE_OPTIONS, perPage].sort((a, b) => a - b);\n }, [perPage, onPerPageChange]);\n\n const handlePageChange = (_, newPage) => {\n onPageChange(newPage + 1);\n };\n\n const handleRowsPerPageChange = (ev) => {\n onPerPageChange(parseInt(ev.target.value, 10));\n };\n\n return (\n <TablePagination\n component=\"div\"\n count={totalRows ?? 0}\n rowsPerPageOptions={perPageOptions}\n rowsPerPage={perPage}\n page={currentPage - 1}\n onPageChange={handlePageChange}\n onRowsPerPageChange={onPerPageChange ? handleRowsPerPageChange : undefined}\n labelRowsPerPage={T.translate(\"mui_table.rows_per_page\")}\n sx={PAGINATION_SX}\n />\n );\n};\n\nCustomTablePagination.propTypes = {\n totalRows: PropTypes.number,\n perPage: PropTypes.number.isRequired,\n currentPage: PropTypes.number.isRequired,\n onPageChange: PropTypes.func.isRequired,\n onPerPageChange: PropTypes.func\n};\n\nexport default CustomTablePagination;\n","import * as React from \"react\";\nimport isBoolean from \"lodash/isBoolean\";\nimport CheckIcon from \"@mui/icons-material/Check\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport TruncateText from \"../truncate-text\";\n\nconst contentStyle = {\n fontWeight: \"normal\",\n overflowWrap: \"break-word\",\n};\n\nconst TableCellContent = ({ row, col }) => {\n return (\n <span style={contentStyle}>\n {isBoolean(row[col.columnKey]) ? (\n row[col.columnKey] ? (\n <CheckIcon fontSize=\"large\" />\n ) : (\n <CloseIcon fontSize=\"large\" />\n )\n ) : col.render ? (\n col.render(row)\n ) : col.truncateText ? (\n <TruncateText charLimit={col.truncateText}>\n {row[col.columnKey]}\n </TruncateText>\n ) : (\n row[col.columnKey]\n )}\n </span>\n );\n};\n\nexport default TableCellContent;","import * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Tooltip from \"@mui/material/Tooltip\";\n\nconst TruncateText = ({ children, charLimit }) => {\n const ref = React.useRef(null);\n const [isOverflowing, setIsOverflowing] = React.useState(false);\n\n const shouldCharTruncate = typeof charLimit === \"number\";\n const isTruncated = shouldCharTruncate && children.length > charLimit;\n\n const displayContent = isTruncated ? children.slice(0, charLimit) + \"...\" : children;\n const tooltipTitle = isTruncated ? children : isOverflowing ? children : \"\";\n\n return (\n <Tooltip title={tooltipTitle} placement=\"top\" componentsProps={{ tooltip: { sx: { fontSize: \"1.2rem\" } } }}>\n <span\n ref={ref}\n onMouseEnter={() => {\n if (ref.current && !shouldCharTruncate)\n setIsOverflowing(ref.current.scrollWidth > ref.current.offsetWidth);\n }}\n style={{ display: \"block\", overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}\n >\n <span style={{ fontWeight: \"normal\" }}>{displayContent}</span>\n </span>\n </Tooltip>\n );\n};\n\nTruncateText.propTypes = {\n children: PropTypes.string,\n charLimit: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n};\n\nexport default TruncateText;\n","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\nexport const BPS = 100;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const ASYNC_SELECT_SAFETY_TIMEOUT = 15000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\n\nexport const FILE_UPLOAD_STATUS = {\n PENDING: \"PENDING\",\n DEADLINE_ALERT: \"DEADLINE ALERT\",\n DEADLINE_MISSED: \"DEADLINE MISSED\",\n COMPLETE: \"COMPLETE\"\n};\n\nexport const FILE_UPLOAD_STATUS_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"success.light\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"error\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"warning.light\",\n [FILE_UPLOAD_STATUS.PENDING]: \"default\"\n};\n\nexport const FILE_UPLOAD_STATUS_BKGR_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"white\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"#D32F2F0A\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"#EF6C000A\",\n [FILE_UPLOAD_STATUS.PENDING]: \"white\"\n};\n\nexport const DATE_FORMAT = \"MM/DD/YYYY\";\nexport const DATETIME_FORMAT = \"MM/DD/YYYY hh:mm a\";\n\nexport const SPONSOR_FORMS_METAFIELD_CLASS = {\n FORM: \"Form\",\n ITEM: \"Item\"\n};\n\nexport const SPONSOR_ORDER_GRID_ITEM_TYPES = {\n CHARGE: \"Charge\",\n PAYMENT: \"Payment\",\n REFUND: \"Refund\",\n DISCOUNT: \"Discount\",\n CANCELLED: \"Cancelled\"\n};","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@mui/icons-material/Check\");","module.exports = require(\"@mui/icons-material/CheckCircle\");","module.exports = require(\"@mui/icons-material/Close\");","module.exports = require(\"@mui/icons-material/Delete\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/material/Box\");","module.exports = require(\"@mui/material/Button\");","module.exports = require(\"@mui/material/Paper\");","module.exports = require(\"@mui/material/Table\");","module.exports = require(\"@mui/material/TableBody\");","module.exports = require(\"@mui/material/TableCell\");","module.exports = require(\"@mui/material/TableContainer\");","module.exports = require(\"@mui/material/TableHead\");","module.exports = require(\"@mui/material/TableRow\");","module.exports = require(\"@mui/material/TableSortLabel\");","module.exports = require(\"@mui/material/Tooltip\");","module.exports = require(\"@mui/utils\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"lodash/isBoolean\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// extracted by mini-css-extract-plugin\nexport default {\"dottedBorderLeft\":\"Z35249KJgMpoE1f5td0j\"};","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 * as React from \"react\";\nimport PropTypes from \"prop-types\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport Box from \"@mui/material/Box\";\nimport Button from \"@mui/material/Button\";\nimport Table from \"@mui/material/Table\";\nimport TableBody from \"@mui/material/TableBody\";\nimport TableCell from \"@mui/material/TableCell\";\nimport TableContainer from \"@mui/material/TableContainer\";\nimport TableHead from \"@mui/material/TableHead\";\nimport TableSortLabel from \"@mui/material/TableSortLabel\";\nimport TableRow from \"@mui/material/TableRow\";\nimport Paper from \"@mui/material/Paper\";\nimport { IconButton, TextField } from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport { visuallyHidden } from \"@mui/utils\";\nimport styles from \"./mui-table-editable.module.less\";\n\nimport showConfirmDialog from \"../showConfirmDialog\";\nimport TableCellContent from \"../table/table-cell-content\";\nimport CustomTablePagination from \"../table/CustomTablePagination\";\n\nconst ARCHIVED_CELL_SX = {\n backgroundColor: \"background.light\",\n color: \"text.disabled\"\n};\n\nconst validateValue = (value, validation) => {\n if (!validation) return { isValid: true };\n\n // validate with yup schema\n if (\n validation.schema &&\n typeof validation.schema.validateSync === \"function\"\n ) {\n try {\n validation.schema.validateSync(value);\n return { isValid: true, message: null };\n } catch (err) {\n return { isValid: false, message: err.message };\n }\n }\n\n return { isValid: true };\n};\n\n// Updated component to handle editable cells with hover edit icon\nconst EditableCell = ({ value, isEditing, onBlur, validation }) => {\n const [inputValue, setInputValue] = React.useState(value);\n const [isHovering, setIsHovering] = React.useState(false);\n const [error, setError] = React.useState(null);\n\n React.useEffect(() => {\n setInputValue(value);\n setError(null);\n }, [value]);\n\n const handleValidationAndSave = (newValue) => {\n const { isValid, message } = validateValue(newValue, validation);\n\n if (isValid) {\n setError(null);\n onBlur(newValue, true);\n } else {\n setError(message);\n }\n };\n\n const handleKeyDown = (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleValidationAndSave(inputValue);\n }\n };\n\n if (isEditing) {\n return (\n <TextField\n autoFocus\n value={inputValue}\n onChange={(e) => {\n setInputValue(e.target.value);\n if (error) setError(null);\n }}\n onBlur={() => {\n handleValidationAndSave(inputValue);\n }}\n onKeyDown={handleKeyDown}\n size=\"small\"\n fullWidth\n variant=\"standard\"\n error={!!error}\n helperText={error}\n />\n );\n }\n\n return (\n <Box\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n width: \"100%\",\n height: \"100%\"\n }}\n onMouseEnter={() => setIsHovering(true)}\n onMouseLeave={() => setIsHovering(false)}\n >\n <span style={{ flex: 1, fontWeight: \"normal\" }}>{value}</span>\n {isHovering && (\n <EditIcon\n fontSize=\"small\"\n sx={{\n opacity: 0.5,\n position: \"absolute\",\n right: 0,\n \"&:hover\": {\n opacity: 1\n }\n }}\n />\n )}\n </Box>\n );\n};\n\nconst MuiTableEditable = ({\n columns = [],\n data = [],\n totalRows,\n perPage,\n currentPage,\n onPageChange,\n onPerPageChange,\n onSort,\n options = { sortCol: \"\", sortDir: 1, disableProp: null },\n getName = (item) => item.name,\n onEdit,\n onArchive,\n onDelete,\n onCellChange, // New prop for handling cell value changes\n deleteDialogBody,\n tableSx = {}\n}) => {\n // State to track which cell is currently being edited\n const [editingCell, setEditingCell] = React.useState(null);\n\n const { sortCol, sortDir } = options;\n\n const getArchivedCellSx = (row) =>\n options.disableProp && row[options.disableProp] ? ARCHIVED_CELL_SX : null;\n\n const getCellSx = (row, baseSx = {}) => ({\n ...baseSx,\n ...(getArchivedCellSx(row) || {})\n });\n\n const handleDelete = async (item) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: deleteDialogBody\n ? deleteDialogBody(getName(item))\n : `${T.translate(\"general.row_remove_warning\")} ${getName(item)}`,\n type: \"warning\",\n showCancelButton: true,\n confirmButtonColor: \"warning\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (isConfirmed) {\n onDelete(item.id);\n }\n };\n\n const isEditable = (col, row) =>\n typeof col.editable === \"function\" ? col.editable(row) : !!col.editable;\n\n // Handler for starting edit mode on a cell\n const handleCellClick = (row, columnKey) => {\n // Check if the column is editable\n const column = columns.find((col) => col.columnKey === columnKey);\n if (column && isEditable(column, row)) {\n setEditingCell({ rowId: row.id, columnKey });\n }\n };\n\n // Handler for saving changes when editing is complete\n const handleCellBlur = (rowId, columnKey, newValue, isValid) => {\n if (onCellChange && isValid) {\n onCellChange(rowId, columnKey, newValue);\n }\n setEditingCell(null);\n };\n\n return (\n <Box sx={{ width: \"100%\" }}>\n <Paper elevation={0} sx={{ width: \"100%\", mb: 2 }}>\n <TableContainer\n component={Paper}\n sx={{ borderRadius: 0, boxShadow: \"none\" }}\n >\n <Table sx={tableSx}>\n {/* TABLE HEADER */}\n <TableHead sx={{ backgroundColor: \"#EAEAEA\" }}>\n <TableRow>\n {columns.map((col) => (\n <TableCell\n key={col.columnKey}\n sx={{\n width: col.width,\n minWidth: col.width,\n maxWidth: col.width,\n fontWeight: \"normal\"\n }}\n align={col.align ?? \"left\"}\n >\n {col.sortable ? (\n <TableSortLabel\n active={sortCol === col.columnKey}\n direction={\n sortCol === col.columnKey && sortDir === -1\n ? \"desc\"\n : \"asc\"\n }\n onClick={() => onSort(col.columnKey, sortDir * -1)}\n sx={{ fontWeight: \"normal\" }}\n >\n {col.header}\n {sortCol === col.columnKey ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {sortDir === -1\n ? T.translate(\"mui_table.sorted_desc\")\n : T.translate(\"mui_table.sorted_asc\")}\n </Box>\n ) : null}\n </TableSortLabel>\n ) : (\n <span style={{ fontWeight: \"normal\" }}>{col.header}</span>\n )}\n </TableCell>\n ))}\n {onEdit && (\n <TableCell sx={{ width: 40, fontWeight: \"normal\" }} />\n )}\n {onArchive && (\n <TableCell sx={{ width: 80, fontWeight: \"normal\" }} />\n )}\n {onDelete && (\n <TableCell sx={{ width: 40, fontWeight: \"normal\" }} />\n )}\n </TableRow>\n </TableHead>\n {/* TABLE BODY */}\n <TableBody>\n {data.map((row) => (\n <TableRow key={row.id}>\n {columns.map((col) => (\n <TableCell\n key={`${row.id}-${col.columnKey}`}\n onClick={() => handleCellClick(row, col.columnKey)}\n sx={getCellSx(row, {\n cursor: isEditable(col, row) ? \"pointer\" : \"default\",\n padding: isEditable(col, row) ? \"8px 16px\" : undefined\n })}\n >\n {isEditable(col, row) ? (\n <EditableCell\n value={row[col.columnKey]}\n isEditing={\n editingCell &&\n editingCell.rowId === row.id &&\n editingCell.columnKey === col.columnKey\n }\n onBlur={(newValue, isValid) =>\n handleCellBlur(\n row.id,\n col.columnKey,\n newValue,\n isValid\n )\n }\n validation={col.validation}\n />\n ) : (\n <TableCellContent row={row} col={col} />\n )}\n </TableCell>\n ))}\n {onEdit && (\n <TableCell\n sx={getCellSx(row)}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n onClick={() => onEdit(row)}\n size=\"small\"\n aria-label={T.translate(\"general.edit\")}\n >\n <EditIcon />\n </IconButton>\n </TableCell>\n )}\n {onArchive && (\n <TableCell\n align=\"center\"\n sx={{\n ...getCellSx(row, { width: 80, fontWeight: \"normal\" })\n }}\n className={styles.dottedBorderLeft}\n >\n <Button\n variant=\"text\"\n color=\"inherit\"\n size=\"small\"\n onClick={() => onArchive(row)}\n sx={{\n fontSize: \"1.3rem\",\n fontWeight: \"normal\",\n lineHeight: \"2.2rem\",\n padding: \"4px 5px\",\n color: \"rgba(0,0,0,0.56)\"\n }}\n >\n {row.is_archived\n ? T.translate(\"general.unarchive\")\n : T.translate(\"general.archive\")}\n </Button>\n </TableCell>\n )}\n {onDelete && (\n <TableCell\n sx={getCellSx(row)}\n className={styles.dottedBorderLeft}\n >\n <IconButton\n onClick={() => handleDelete(row)}\n size=\"small\"\n aria-label={T.translate(\"general.delete\")}\n >\n <DeleteIcon />\n </IconButton>\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n {perPage && currentPage && onPageChange && (\n <CustomTablePagination\n totalRows={totalRows ?? data.length}\n perPage={perPage}\n currentPage={currentPage}\n onPageChange={onPageChange}\n onPerPageChange={onPerPageChange}\n />\n )}\n </Paper>\n </Box>\n );\n};\n\nMuiTableEditable.propTypes = {\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n columnKey: PropTypes.string.isRequired,\n header: PropTypes.node,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n align: PropTypes.string,\n sortable: PropTypes.bool,\n editable: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n validation: PropTypes.shape({ schema: PropTypes.object }),\n render: PropTypes.func\n })\n ),\n data: PropTypes.arrayOf(PropTypes.object),\n totalRows: PropTypes.number,\n // Pagination only renders when all three are provided — see line 366.\n perPage: PropTypes.number,\n currentPage: PropTypes.number,\n onPageChange: PropTypes.func,\n onPerPageChange: PropTypes.func,\n onSort: PropTypes.func,\n options: PropTypes.shape({\n sortCol: PropTypes.string,\n sortDir: PropTypes.oneOf([1, -1]),\n disableProp: PropTypes.string\n }),\n getName: PropTypes.func,\n onEdit: PropTypes.func,\n onArchive: PropTypes.func,\n onDelete: PropTypes.func,\n onCellChange: PropTypes.func,\n deleteDialogBody: PropTypes.func\n};\n\nexport default MuiTableEditable;\n"],"names":["root","factory","exports","module","define","amd","this","require","iconMap","warning","React","Warning","color","success","CheckCircle","error","Error","info","Info","ConfirmDialog","open","title","text","iconType","onConfirm","onCancel","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","Dialog","onClose","DialogTitle","sx","p","component","Typography","variant","Divider","DialogContent","style","display","alignItems","marginRight","margin","DialogActions","Button","fullWidth","onClick","whiteSpace","minWidth","propTypes","PropTypes","isRequired","defaultProps","BRIDGE_KEY","_global","globalThis","window","showConfirmDialog","PAGINATION_SX","marginTop","fontSize","fontWeight","marginLeft","BASE_PER_PAGE_OPTIONS","DEFAULT_PER_PAGE","TWENTY_PER_PAGE","FIFTY_PER_PAGE","CustomTablePagination","totalRows","perPage","currentPage","onPageChange","onPerPageChange","perPageOptions","includes","sort","a","b","TablePagination","count","rowsPerPageOptions","rowsPerPage","page","handlePageChange","_","newPage","onRowsPerPageChange","ev","parseInt","target","value","undefined","labelRowsPerPage","T","contentStyle","overflowWrap","TableCellContent","row","col","isBoolean","columnKey","CheckIcon","CloseIcon","render","truncateText","TruncateText","charLimit","children","ref","isOverflowing","setIsOverflowing","shouldCharTruncate","isTruncated","length","displayContent","slice","tooltipTitle","Tooltip","placement","componentsProps","tooltip","onMouseEnter","current","scrollWidth","offsetWidth","overflow","textOverflow","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","ARCHIVED_CELL_SX","backgroundColor","EditableCell","isEditing","onBlur","validation","inputValue","setInputValue","isHovering","setIsHovering","setError","handleValidationAndSave","newValue","isValid","message","validateValue","schema","validateSync","err","handleKeyDown","e","preventDefault","TextField","autoFocus","onChange","onKeyDown","size","helperText","Box","position","width","height","onMouseLeave","flex","EditIcon","opacity","right","MuiTableEditable","columns","data","onSort","options","sortCol","sortDir","disableProp","getName","item","name","onEdit","onArchive","onDelete","onCellChange","deleteDialogBody","tableSx","editingCell","setEditingCell","getCellSx","baseSx","_objectSpread","getArchivedCellSx","isEditable","editable","Paper","elevation","mb","TableContainer","borderRadius","boxShadow","Table","TableHead","TableRow","map","TableCell","maxWidth","align","sortable","TableSortLabel","active","direction","header","visuallyHidden","TableBody","id","handleCellClick","column","find","rowId","cursor","padding","handleCellBlur","className","styles","IconButton","lineHeight","is_archived","async","type","showCancelButton","handleDelete","DeleteIcon"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(()=>(()=>{"use strict";var e={5446:(e,t,r)=>{r.d(t,{default:()=>O});var n=r(2015),a=r.n(n),o=r(9825),i=r.n(o);const l=require("@dnd-kit/core"),s=require("@dnd-kit/sortable");var c=r(8619),d=r(1116),u=r.n(d);const m=require("@dnd-kit/utilities");function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function f(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){u()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}const y=({id:e,item:t,index:r,renderItem:n})=>{const{attributes:o,listeners:i,setNodeRef:l,transform:d,transition:u,isDragging:p}=(0,s.useSortable)({id:e});return a().createElement(c.Box,{ref:l,style:{transform:m.CSS.Transform.toString(d),transition:[u,"background 0.2s ease"].filter(Boolean).join(", "),zIndex:p?1:"auto",position:"relative"},sx:{background:p?"#f0f0f0":"inherit"}},n(t,r,{isDragging:p,dragHandleProps:f(f({},i),o)}))};y.propTypes={id:i().string.isRequired,item:i().object.isRequired,index:i().number,renderItem:i().func.isRequired};const g=y;function b(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function v(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?b(Object(r),!0).forEach((function(t){u()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):b(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}const x=({items:e,getItemId:t,onReorder:r,updateOrderKey:n="order",orderOffset:a=0})=>({sensors:(0,l.useSensors)((0,l.useSensor)(l.PointerSensor),(0,l.useSensor)(l.KeyboardSensor,{coordinateGetter:s.sortableKeyboardCoordinates})),collisionDetection:l.closestCenter,handleDragEnd:({active:o,over:i})=>{if(!i||o.id===i.id)return;const l=e.findIndex(((e,r)=>t(e,r)===o.id)),c=e.findIndex(((e,r)=>t(e,r)===i.id));if(-1===l||-1===c)return;const d=(0,s.arrayMove)(e,l,c).map(((e,t)=>n?v(v({},e),{},{[n]:a+t+1}):e));r(d,{active:o,over:i,oldIndex:l,newIndex:c})}}),h=(e,t,r)=>void 0!==e[r]&&null!==e[r]?String(e[r]):`new-${t}`,E=({items:e,onReorder:t,renderItem:r,idKey:n="id",updateOrderKey:o="order"})=>{const{sensors:i,collisionDetection:d,handleDragEnd:u}=x({items:e,getItemId:(e,t)=>h(e,t,n),updateOrderKey:o,onReorder:(e,{active:r,over:n})=>t(e,{active:r,over:n})});return a().createElement(l.DndContext,{sensors:i,collisionDetection:d,onDragEnd:u},a().createElement(s.SortableContext,{items:e.map(((e,t)=>h(e,t,n))),strategy:s.verticalListSortingStrategy},a().createElement(c.Box,{sx:{width:"100%"}},e.map(((e,t)=>a().createElement(g,{key:h(e,t,n),id:h(e,t,n),item:e,index:t,renderItem:r}))))))};E.propTypes={items:i().array.isRequired,onReorder:i().func.isRequired,renderItem:i().func.isRequired,idKey:i().string,updateOrderKey:i().string};const O=E},9299:(e,t,r)=>{var n=r(2015),a=r.n(n),o=r(9825),i=r.n(o),l=r(8619),s=r(8177),c=r.n(s),d=r(1519),u=r.n(d);const m=require("@mui/icons-material/Info");var p=r.n(m);const f=require("@mui/icons-material/Warning");var y=r.n(f);const g={warning:a().createElement(y(),{color:"warning"}),success:a().createElement(c(),{color:"success"}),error:a().createElement(u(),{color:"error"}),info:a().createElement(p(),{color:"info"})},b=({open:e,title:t,text:r,iconType:n="",onConfirm:o,onCancel:i,confirmButtonText:s="Confirm",confirmButtonColor:c="primary",cancelButtonText:d="Cancel",cancelButtonColor:u="primary"})=>a().createElement(l.Dialog,{open:e,onClose:i},a().createElement(l.DialogTitle,{sx:{p:2},component:"div"},a().createElement(l.Typography,{variant:"h5"},t)),a().createElement(l.Divider,null),a().createElement(l.DialogContent,{sx:{p:2}},a().createElement("div",{style:{display:"flex",alignItems:"center"}},g[n]&&a().createElement("div",{style:{marginRight:10}},g[n]),a().createElement(l.Typography,{variant:"body1"},r))),a().createElement(l.Divider,{sx:{margin:"10px 0px 10px 0px"}}),a().createElement(l.DialogActions,null,a().createElement(l.Button,{fullWidth:!0,onClick:i,color:u,variant:"outlined",sx:{whiteSpace:"nowrap",minWidth:100}},d),a().createElement(l.Button,{fullWidth:!0,onClick:o,color:c,variant:"contained",sx:{whiteSpace:"nowrap",minWidth:100}},s)));b.propTypes={open:i().bool,title:i().string.isRequired,text:i().string.isRequired,iconType:i().string,onConfirm:i().func.isRequired,onCancel:i().func.isRequired,confirmButtonText:i().string,confirmButtonColor:i().string,cancelButtonText:i().string,cancelButtonColor:i().string},b.defaultProps={open:!1,iconType:"warning",confirmButtonText:"Confirm",confirmButtonColor:"primary",cancelButtonText:"Cancel",cancelButtonColor:"default"}},2497:(e,t,r)=>{r.d(t,{default:()=>P});var n=r(6031),a=r.n(n),o=r(2015),i=r.n(o),l=r(8619),s=r(3294);const c=require("i18n-react/dist/i18n-react");var d=r.n(c);const u=require("@mui/icons-material/Delete");var m=r.n(u);const p=require("@mui/icons-material/Add");var f=r.n(p),y=r(9314),g=r(4768),b=r(7994),v=r(3209);const x=({item:e,itemIdx:t,baseName:r,onAdd:n,onDelete:a,onDeleteValue:o,entityId:c,isAddDisabled:u,MetaFieldValuesComponent:p})=>{const{errors:x,touched:h,values:E,setFieldValue:O}=(0,s.useFormikContext)(),C=e=>`${r}[${t}].${e}`,_=(0,s.getIn)(E,C("type")),D=(0,s.getIn)(x,`${r}[${t}]`),j=(0,s.getIn)(h,`${r}[${t}]`),w=(null==j?void 0:j.values)&&(null==D?void 0:D.values)&&"string"==typeof D.values;return i().createElement(l.Grid2,{container:!0,spacing:2,sx:{alignItems:"center"}},i().createElement(l.Grid2,{size:11},i().createElement(l.Box,{sx:{border:"1px solid #0000001F",borderRadius:"4px",p:2,my:2}},i().createElement(l.Grid2,{container:!0,spacing:2,sx:{alignItems:"start"}},i().createElement(l.Grid2,{size:4},i().createElement(l.InputLabel,{htmlFor:C("name")},d().translate("additional_inputs.title")),i().createElement(y.default,{name:C("name"),margin:"none",placeholder:d().translate("additional_inputs.placeholders.title"),fullWidth:!0})),i().createElement(l.Grid2,{size:4},i().createElement(l.InputLabel,{htmlFor:C("type")},d().translate("additional_inputs.type")),i().createElement(g.default,{name:C("type"),placeholder:d().translate("additional_inputs.placeholders.type"),onChange:e=>{const t=e.target.value;O(C("type"),t),v.in.includes(t)||O(C("values"),[])}},v.GV.map((e=>i().createElement(l.MenuItem,{key:e,value:e},e))))),i().createElement(l.Grid2,{size:4,sx:{alignSelf:"end"}},i().createElement(b.default,{name:C("is_required"),label:d().translate("additional_inputs.required")}))),v.in.includes(_)&&i().createElement(i().Fragment,null,i().createElement(l.Divider,{sx:{mt:2}}),i().createElement(p,{field:e,fieldIndex:t,baseName:r,onMetaFieldTypeValueDeleted:o,entityId:c}),w&&i().createElement(l.FormHelperText,{error:!0,sx:{mt:1}},D.values)),"Quantity"===_&&i().createElement(l.Grid2,{container:!0,spacing:2,sx:{alignItems:"start",mt:2}},i().createElement(l.Grid2,{size:4},i().createElement(y.default,{id:C("minimum_quantity"),name:C("minimum_quantity"),type:"number",margin:"none",fullWidth:!0,label:d().translate("additional_inputs.minimum"),placeholder:d().translate("additional_inputs.placeholders.minimum_quantity")})),i().createElement(l.Grid2,{size:4},i().createElement(y.default,{id:C("maximum_quantity"),name:C("maximum_quantity"),type:"number",margin:"none",fullWidth:!0,label:d().translate("additional_inputs.maximum"),placeholder:d().translate("additional_inputs.placeholders.maximum_quantity")}))))),i().createElement(l.Grid2,{size:1},i().createElement(l.Box,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:1}},i().createElement(l.Button,{variant:"outlined","aria-label":"delete",sx:{width:40,height:40,minWidth:"auto",borderRadius:"50%",padding:0},onClick:()=>a(e,t)},i().createElement(m(),null)),i().createElement(l.Button,{variant:"contained","aria-label":"add",disabled:u,sx:{width:40,height:40,minWidth:"auto",borderRadius:"50%",padding:0},onClick:n},i().createElement(f(),null)))))};var h=r(1116),E=r.n(h);const O=require("@mui/icons-material/Close");var C=r.n(O);const _=require("@mui/icons-material/DragIndicator");var D=r.n(_),j=r(5446),w=r(6130);function I(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function B(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?I(Object(r),!0).forEach((function(t){E()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}const q=({field:e,fieldIndex:t,baseName:r="meta_fields",onMetaFieldTypeValueDeleted:n,entityId:o})=>{const{values:c,setFieldValue:u}=(0,s.useFormikContext)(),m=c[r]||[],p=[...e.values].sort(((e,t)=>e.order-t.order)),g=(e,n)=>`${r}[${t}].values[${e}].${n}`;return i().createElement(l.Box,null,i().createElement(j.default,{items:p,onReorder:e=>{const n=m.map(((r,n)=>n===t?B(B({},r),{},{values:e}):r));u(r,n)},renderItem:(s,c,{isDragging:p,dragHandleProps:f}={})=>{const v=e.values.findIndex((e=>e.id&&e.id===s.id||e===s)),x=-1!==v?v:c;return i().createElement(l.Box,{key:s.id||`value-${x}`},i().createElement(l.Grid2,{container:!0,spacing:2,sx:{alignItems:"start",background:p?"#ebebeb":"inherit",boxShadow:p?"0px 5px 15px rgba(0,0,0,0.3)":"none",transition:"transform 0.2s ease, box-shadow 0.2s ease",transform:p?"scale(1.02)":"none",py:2}},i().createElement(l.Grid2,{size:1,sx:{display:"flex",alignItems:"center"}},i().createElement(l.IconButton,a()({},f,{"aria-label":"drag to reorder",sx:{cursor:"grab"}}),i().createElement(D(),null))),i().createElement(l.Grid2,{size:4},i().createElement(y.default,{name:g(x,"name"),placeholder:d().translate("meta_fields.placeholders.name"),margin:"none",fullWidth:!0})),i().createElement(l.Grid2,{size:4},i().createElement(y.default,{name:g(x,"value"),placeholder:d().translate("meta_fields.placeholders.value"),margin:"none",fullWidth:!0,InputProps:{endAdornment:i().createElement(l.IconButton,{onClick:()=>(async(a,i)=>{if(!await(0,w.default)({title:d().translate("general.are_you_sure"),text:d().translate("meta_fields.delete_value_warning"),iconType:"warning",confirmButtonColor:"#DD6B55",confirmButtonText:d().translate("general.yes_delete")}))return;const l=()=>{const e=m.map(((e,r)=>r===t?B(B({},e),{},{values:e.values.filter(((e,t)=>t!==i))}):e));u(r,e)};e.id&&a.id&&n?n(o,e.id,a.id).then((()=>l())).catch((()=>{})):l()})(s,x),"aria-label":"remove value"},i().createElement(C(),null))}})),i().createElement(l.Grid2,{size:3},i().createElement(b.default,{name:g(x,"is_default"),label:d().translate("meta_fields.is_default"),onChange:e=>((e,n)=>{const a=m.map(((r,a)=>a!==t?r:B(B({},r),{},{values:r.values.map(((t,r)=>n?B(B({},t),{},{is_default:r===e}):r===e?B(B({},t),{},{is_default:!1}):t))})));u(r,a)})(x,e.target.checked)}))),i().createElement(l.Divider,null))},idKey:"id",updateOrderKey:"order"}),i().createElement(l.Grid2,{container:!0,spacing:2,sx:{mt:2},offset:4},i().createElement(l.Button,{startIcon:i().createElement(f(),null),disabled:(()=>e.values.length>0&&e.values.some((e=>{var t,r;return!(null!==(t=e.name)&&void 0!==t&&t.trim()&&null!==(r=e.value)&&void 0!==r&&r.trim())})))(),onClick:()=>{const e=m.map(((e,r)=>{if(r!==t)return e;const n=e.values??[],a=Math.max(0,...n.map((e=>e.order??0)))+1;return B(B({},e),{},{values:[...n,{value:"",name:"",is_default:!1,order:a}]})}));u(r,e)},variant:"text"},d().translate("meta_fields.add_value"))))},P=e=>i().createElement(x,a()({},e,{MetaFieldValuesComponent:q}))},7994:(e,t,r)=>{r.d(t,{default:()=>y});var n=r(6031),a=r.n(n),o=r(2462),i=r.n(o),l=r(2015),s=r.n(l),c=r(9825),d=r.n(c),u=r(8619),m=r(3294);const p=["name","label","margin"],f=e=>{let{name:t,label:r,margin:n="normal"}=e,o=i()(e,p);const[l,c]=(0,m.useField)({name:t,type:"checkbox"});return s().createElement(u.FormControl,{fullWidth:!0,margin:n,error:c.touched&&Boolean(c.error)},s().createElement(u.FormControlLabel,{control:s().createElement(u.Checkbox,a()({name:t},l,{checked:l.value},o)),label:r}),c.touched&&c.error&&s().createElement(u.FormHelperText,null,c.error))};f.propTypes={name:d().string.isRequired,label:d().string.isRequired};const y=f},4768:(e,t,r)=>{r.d(t,{default:()=>b});var n=r(6031),a=r.n(n),o=r(2462),i=r.n(o),l=r(2015),s=r.n(l),c=r(9825),d=r.n(c),u=r(8619);const m=require("@mui/icons-material/Clear");var p=r.n(m),f=r(3294);const y=["name","label","placeholder","children","isClearable"],g=e=>{let{name:t,label:r,placeholder:n,children:o,isClearable:l}=e,c=i()(e,y);const[d,m,g]=(0,f.useField)(t),b=(null==d?void 0:d.value)&&""!==d.value||Boolean(n);return s().createElement(u.FormControl,{fullWidth:!0,error:m.touched&&Boolean(m.error)},r&&s().createElement(u.InputLabel,{htmlFor:t,id:`${t}-label`,shrink:b},r),s().createElement(u.Select,a()({name:t,id:t},d,{labelId:`${t}-label`,label:r,notched:b,displayEmpty:!0,renderValue:e=>e&&""!==e?e:s().createElement("span",{style:{color:"#aaa"}},n),endAdornment:l&&d.value?s().createElement(u.InputAdornment,{position:"end",sx:{mr:2}},s().createElement(u.IconButton,{size:"small",onClick:e=>{e.stopPropagation(),g.setValue("")}},s().createElement(p(),{fontSize:"small"}))):null},c),o),m.touched&&m.error&&s().createElement(u.FormHelperText,null,m.error))};g.propTypes={name:d().string.isRequired,children:d().node.isRequired,placeholder:d().string,isClearable:d().bool};const b=g},9314:(e,t,r)=>{r.d(t,{default:()=>y});var n=r(6031),a=r.n(n),o=r(2462),i=r.n(o),l=r(2015),s=r.n(l),c=r(9825),d=r.n(c),u=r(8619),m=r(3294);const p=["name","label","maxLength","required"],f=e=>{var t;let{name:r,label:n,maxLength:o,required:l=!1}=e,c=i()(e,p);const[d,f]=(0,m.useField)(r),y=(null===(t=d.value)||void 0===t?void 0:t.length)||0;let g="";return n&&(g=l?`${n} *`:n),s().createElement(u.Box,null,s().createElement(u.TextField,a()({name:r,label:g},d,{onBlur:d.onBlur,margin:"normal",error:f.touched&&Boolean(f.error),helperText:f.touched&&f.error,slotProps:{htmlInput:{maxLength:o}}},c)),o&&s().createElement(u.Typography,{sx:{fontSize:"1.2rem",color:"#00000099",pl:2}},o-y+" characters left"))};f.propTypes={name:d().string.isRequired,label:d().string,maxLength:d().number,required:d().bool};const y=f},6130:(e,t,r)=>{r.d(t,{default:()=>o});r(1116),r(2015),r(9299);const n="__oif_confirm_dialog_bridge__",a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:{},o=({title:e,text:t,iconType:r="",confirmButtonText:o="Confirm",cancelButtonText:i="Cancel",confirmButtonColor:l="primary",cancelButtonColor:s="primary"})=>{if(!a[n])throw new Error("[openstack-uicore-foundation] showConfirmDialog: <GlobalConfirmDialog /> is not mounted. Add <GlobalConfirmDialog /> to the root of your app.");return a[n]({title:e,text:t,iconType:r,confirmButtonText:o,cancelButtonText:i,confirmButtonColor:l,cancelButtonColor:s})}},3209:(e,t,r)=>{r.d(t,{GV:()=>a,in:()=>n});const n=["CheckBoxList","ComboBox","RadioButtonList"],a=["CheckBox",...n,"Text","TextArea","Quantity","DateTime","Time"]},1116:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},6031:e=>{e.exports=require("@babel/runtime/helpers/extends")},2462:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},8177:e=>{e.exports=require("@mui/icons-material/CheckCircle")},1519:e=>{e.exports=require("@mui/icons-material/Error")},8619:e=>{e.exports=require("@mui/material")},3294:e=>{e.exports=require("formik")},9825:e=>{e.exports=require("prop-types")},2015:e=>{e.exports=require("react")}},t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}(()=>{r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t}})(),(()=>{r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}})(),(()=>{r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var n={};r.r(n),r.d(n,{default:()=>h});var a=r(6031),o=r.n(a),i=r(2015),l=r.n(i),s=r(1116),c=r.n(s),d=r(3294);const u=require("i18n-react");var m=r.n(u),p=r(6130),f=r(3209);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function g(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){c()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}const b={name:"",type:"",is_required:!1,minimum_quantity:0,maximum_quantity:0,values:[]},v=({name:e,onDelete:t,onDeleteValue:r,entityId:n,AdditionalInputComponent:a})=>{const{values:o,setFieldValue:s,errors:c,setFieldTouched:u}=(0,d.useFormikContext)(),y=o[e]||[];(0,i.useEffect)((()=>{0===y.length&&s(e,[g(g({},b),{},{_key:`draft_${Date.now()}`})])}),[y.length]);const v=()=>{s(e,[...y,g(g({},b),{},{_key:`draft_${Date.now()}`})])},x=async(r,a)=>{if(!await(0,p.default)({title:m().translate("general.are_you_sure"),text:`${m().translate("additional_inputs.delete_warning")} ${r.name}`,iconType:"warning",confirmButtonColor:"#DD6B55",confirmButtonText:m().translate("general.yes_delete")}))return;const o=()=>{const t=y.filter(((e,t)=>t!==a));0===t.length&&t.push(g(g({},b),{},{_key:`draft_${Date.now()}`})),s(e,t),u(e,[],!1)};r.id&&t?t(n,r.id).then((()=>o())).catch((e=>console.error("Error deleting field from API",e))):o()},h=()=>{const t=(0,d.getIn)(c,e);if(t&&Array.isArray(t)){if(t.some((e=>e&&Object.keys(e).length>0)))return!0}return y.some((e=>{var t;if(null===(t=e.name)||void 0===t||!t.trim()||!e.type)return!0;if(f.in.includes(e.type)){if(!e.values||0===e.values.length)return!0;if(e.values.some((e=>{var t,r;return!(null!==(t=e.name)&&void 0!==t&&t.trim()&&null!==(r=e.value)&&void 0!==r&&r.trim())})))return!0}return!1}))};return l().createElement(l().Fragment,null,y.map(((t,o)=>l().createElement(a,{key:t.id||t._key,item:t,itemIdx:o,baseName:e,onAdd:v,onDelete:x,onDeleteValue:r,entityId:n,isAddDisabled:h()}))))};var x=r(2497);const h=e=>l().createElement(v,o()({},e,{AdditionalInputComponent:x.default}));return n})()));
2
+ //# sourceMappingURL=additional-input-list-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components/mui/formik-inputs/additional-input-list-v2.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,8BAA+B,GAAIH,GAChB,iBAAZC,QACdA,QAAQ,+BAAiCD,IAEzCD,EAAK,+BAAiCC,GACvC,CATD,CASGK,MAAM,I,0GCTT,MAAM,EAA+BC,QAAQ,iBCAvC,EAA+BA,QAAQ,qB,iCCA7C,MAAM,EAA+BA,QAAQ,sB,ikBCqB7C,MAAMC,EAAeA,EAAGC,KAAIC,OAAMC,QAAOC,iBACvC,MAAM,WACJC,EAAU,UACVC,EAAS,WACTC,EAAU,UACVC,EAAS,WACTC,EAAU,WACVC,IACEC,EAAAA,EAAAA,aAAY,CAAEV,OAElB,OACEW,IAAAA,cAACC,EAAAA,IAAG,CACFC,IAAKP,EACLQ,MAAO,CACLP,UAAWQ,EAAAA,IAAIC,UAAUC,SAASV,GAClCC,WAAY,CAACA,EAAY,wBAAwBU,OAAOC,SAASC,KAAK,MACtEC,OAAQZ,EAAa,EAAI,OACzBa,SAAU,YAEZC,GAAI,CAAEC,WAAYf,EAAa,UAAY,YAE1CN,EAAWF,EAAMC,EAAO,CACvBO,aACAgB,gBAAeC,EAAAA,EAAA,GAAOrB,GAAcD,KAElC,EAIVL,EAAa4B,UAAY,CACvB3B,GAAI4B,IAAAA,OAAiBC,WACrB5B,KAAM2B,IAAAA,OAAiBC,WACvB3B,MAAO0B,IAAAA,OACPzB,WAAYyB,IAAAA,KAAeC,YAG7B,U,ikBC/BA,MAgCA,EAhCyBC,EACvBC,QACAC,YACAC,YACAC,iBAAiB,QACjBC,cAAc,MAwBP,CAAEC,SAtBOC,EAAAA,EAAAA,aACdC,EAAAA,EAAAA,WAAUC,EAAAA,gBACVD,EAAAA,EAAAA,WAAUE,EAAAA,eAAgB,CAAEC,iBAAkBC,EAAAA,+BAoB9BC,mBAAoBC,EAAAA,cAAeC,cAjB/BA,EAAGC,SAAQC,WAC/B,IAAKA,GAAQD,EAAO9C,KAAO+C,EAAK/C,GAAI,OAEpC,MAAMgD,EAAWjB,EAAMkB,WAAU,CAAChD,EAAMiD,IAAMlB,EAAU/B,EAAMiD,KAAOJ,EAAO9C,KACtEmD,EAAWpB,EAAMkB,WAAU,CAAChD,EAAMiD,IAAMlB,EAAU/B,EAAMiD,KAAOH,EAAK/C,KAE1E,IAAkB,IAAdgD,IAAiC,IAAdG,EAAiB,OAExC,MAAMC,GAAYC,EAAAA,EAAAA,WAAUtB,EAAOiB,EAAUG,GAAUG,KAAI,CAACrD,EAAMsD,IAChErB,EAAcR,EAAAA,EAAA,GACLzB,GAAI,IAAE,CAACiC,GAAiBC,EAAcoB,EAAM,IACjDtD,IAGNgC,EAAUmB,EAAW,CAAEN,SAAQC,OAAMC,WAAUG,YAAW,ICtBxDnB,EAAYA,CAAC/B,EAAMC,EAAOsD,SACdC,IAAhBxD,EAAKuD,IAAwC,OAAhBvD,EAAKuD,GAC9BE,OAAOzD,EAAKuD,IACZ,OAAOtD,IAEPyD,EAAgBA,EACpB5B,QACAE,YACA9B,aACAqD,QAAQ,KACRtB,iBAAiB,YAEjB,MAAM,QAAEE,EAAO,mBAAEO,EAAkB,cAAEE,GAAkBf,EAAiB,CACtEC,QACAC,UAAWA,CAAC/B,EAAMiD,IAAMlB,EAAU/B,EAAMiD,EAAGM,GAC3CtB,iBACAD,UAAWA,CAACmB,GAAaN,SAAQC,UAAWd,EAAUmB,EAAW,CAAEN,SAAQC,WAG7E,OACEpC,IAAAA,cAACiD,EAAAA,WAAU,CACTxB,QAASA,EACTO,mBAAoBA,EACpBkB,UAAWhB,GAEXlC,IAAAA,cAACmD,EAAAA,gBAAe,CACd/B,MAAOA,EAAMuB,KAAI,CAACrD,EAAMiD,IAAMlB,EAAU/B,EAAMiD,EAAGM,KACjDO,SAAUC,EAAAA,6BAEVrD,IAAAA,cAACC,EAAAA,IAAG,CAACW,GAAI,CAAE0C,MAAO,SACflC,EAAMuB,KAAI,CAACrD,EAAMC,IAChBS,IAAAA,cAACZ,EAAY,CACXmE,IAAKlC,EAAU/B,EAAMC,EAAOsD,GAC5BxD,GAAIgC,EAAU/B,EAAMC,EAAOsD,GAC3BvD,KAAMA,EACNC,MAAOA,EACPC,WAAYA,QAKT,EAIjBwD,EAAchC,UAAY,CACxBI,MAAOH,IAAAA,MAAgBC,WACvBI,UAAWL,IAAAA,KAAeC,WAC1B1B,WAAYyB,IAAAA,KAAeC,WAC3B2B,MAAO5B,IAAAA,OACPM,eAAgBN,IAAAA,QAGlB,S,2GCnFA,MAAM,EAA+B9B,QAAQ,4B,aCA7C,MAAM,EAA+BA,QAAQ,+B,aC6B7C,MAAMqE,EAAU,CACdC,QAASzD,IAAAA,cAAC0D,IAAO,CAACC,MAAM,YACxBC,QAAS5D,IAAAA,cAAC6D,IAAW,CAACF,MAAM,YAC5BG,MAAO9D,IAAAA,cAAC+D,IAAK,CAACJ,MAAM,UACpBK,KAAMhE,IAAAA,cAACiE,IAAI,CAACN,MAAM,UAGdO,EAAgBA,EACpBC,OACAC,QACAC,OACAC,WAAW,GACXC,YACAC,WACAC,oBAAoB,UACpBC,qBAAqB,UACrBC,mBAAmB,SACnBC,oBAAoB,aAEpB5E,IAAAA,cAAC6E,EAAAA,OAAM,CAACV,KAAMA,EAAMW,QAASN,GAC3BxE,IAAAA,cAAC+E,EAAAA,YAAW,CAACnE,GAAI,CAAEoE,EAAG,GAAKC,UAAU,OACnCjF,IAAAA,cAACkF,EAAAA,WAAU,CAACC,QAAQ,MAAMf,IAE5BpE,IAAAA,cAACoF,EAAAA,QAAO,MACRpF,IAAAA,cAACqF,EAAAA,cAAa,CAACzE,GAAI,CAAEoE,EAAG,IACtBhF,IAAAA,cAAA,OAAKG,MAAO,CAAEmF,QAAS,OAAQC,WAAY,WACxC/B,EAAQc,IACPtE,IAAAA,cAAA,OAAKG,MAAO,CAAEqF,YAAa,KAAOhC,EAAQc,IAE5CtE,IAAAA,cAACkF,EAAAA,WAAU,CAACC,QAAQ,SAASd,KAGjCrE,IAAAA,cAACoF,EAAAA,QAAO,CAACxE,GAAI,CAAE6E,OAAQ,uBACvBzF,IAAAA,cAAC0F,EAAAA,cAAa,KACZ1F,IAAAA,cAAC2F,EAAAA,OAAM,CACLC,WAAS,EACTC,QAASrB,EACTb,MAAOiB,EACPO,QAAQ,WACRvE,GAAI,CAAEkF,WAAY,SAAUC,SAAU,MAErCpB,GAEH3E,IAAAA,cAAC2F,EAAAA,OAAM,CACLC,WAAS,EACTC,QAAStB,EACTZ,MAAOe,EACPS,QAAQ,YACRvE,GAAI,CAAEkF,WAAY,SAAUC,SAAU,MAErCtB,KAMTP,EAAclD,UAAY,CACxBmD,KAAMlD,IAAAA,KACNmD,MAAOnD,IAAAA,OAAiBC,WACxBmD,KAAMpD,IAAAA,OAAiBC,WACvBoD,SAAUrD,IAAAA,OACVsD,UAAWtD,IAAAA,KAAeC,WAC1BsD,SAAUvD,IAAAA,KAAeC,WACzBuD,kBAAmBxD,IAAAA,OACnByD,mBAAoBzD,IAAAA,OACpB0D,iBAAkB1D,IAAAA,OAClB2D,kBAAmB3D,IAAAA,QAGrBiD,EAAc8B,aAAe,CAC3B7B,MAAM,EACNG,SAAU,UACVG,kBAAmB,UACnBC,mBAAoB,UACpBC,iBAAkB,SAClBC,kBAAmB,U,sGCxGrB,MAAM,EAA+BzF,QAAQ,8B,aCA7C,MAAM,EAA+BA,QAAQ,8B,aCA7C,MAAM,EAA+BA,QAAQ,2B,qDCmC7C,MA2KA,EA3K4B8G,EAC1B3G,OACA4G,UACAC,WACAC,QACAC,WACAC,gBACAC,WACAC,gBACAC,+BAEA,MAAM,OAAEC,EAAM,QAAEC,EAAO,OAAEC,EAAM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAE7CC,EAAkBC,GAAc,GAAGb,KAAYD,MAAYc,IAC3DC,GAAcC,EAAAA,EAAAA,OAAMN,EAAQG,EAAe,SAU3CI,GAAcD,EAAAA,EAAAA,OAAMR,EAAQ,GAAGP,KAAYD,MAC3CkB,GAAeF,EAAAA,EAAAA,OAAMP,EAAS,GAAGR,KAAYD,MAE7CmB,GACJD,aAAY,EAAZA,EAAcR,UACdO,aAAW,EAAXA,EAAaP,SACiB,iBAAvBO,EAAYP,OAErB,OACE5G,IAAAA,cAACsH,EAAAA,MAAK,CAACC,WAAS,EAACC,QAAS,EAAG5G,GAAI,CAAE2E,WAAY,WAC7CvF,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,IACXzH,IAAAA,cAACC,EAAAA,IAAG,CACFW,GAAI,CACF8G,OAAQ,sBACRC,aAAc,MACd3C,EAAG,EACH4C,GAAI,IAGN5H,IAAAA,cAACsH,EAAAA,MAAK,CAACC,WAAS,EAACC,QAAS,EAAG5G,GAAI,CAAE2E,WAAY,UAC7CvF,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAAC6H,EAAAA,WAAU,CAACC,QAASf,EAAe,SACjCgB,IAAAA,UAAY,4BAEf/H,IAAAA,cAACgI,EAAAA,QAAkB,CACjBC,KAAMlB,EAAe,QACrBtB,OAAO,OACPyC,YAAaH,IAAAA,UACX,wCAEFnC,WAAS,KAGb5F,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAAC6H,EAAAA,WAAU,CAACC,QAASf,EAAe,SACjCgB,IAAAA,UAAY,2BAEf/H,IAAAA,cAACmI,EAAAA,QAAe,CACdF,KAAMlB,EAAe,QACrBmB,YAAaH,IAAAA,UACX,uCAEFK,SAlDYC,IACxB,MAAMC,EAAUD,EAAEE,OAAOC,MACzB3B,EAAcE,EAAe,QAASuB,GACjCG,EAAAA,GAA6BC,SAASJ,IACzCzB,EAAcE,EAAe,UAAW,GAC1C,GA+Ca4B,EAAAA,GAAgBhG,KAAKiG,GACpB5I,IAAAA,cAAC6I,EAAAA,SAAQ,CAACtF,IAAKqF,EAAWJ,MAAOI,GAC9BA,OAKT5I,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,EAAG7G,GAAI,CAAEkI,UAAW,QAC/B9I,IAAAA,cAAC+I,EAAAA,QAAiB,CAChBd,KAAMlB,EAAe,eACrBiC,MAAOjB,IAAAA,UAAY,kCAIxBU,EAAAA,GAA6BC,SAASzB,IACrCjH,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAACoF,EAAAA,QAAO,CAACxE,GAAI,CAAEqI,GAAI,KACnBjJ,IAAAA,cAACyG,EAAwB,CACvByC,MAAO5J,EACP6J,WAAYjD,EACZC,SAAUA,EACViD,4BAA6B9C,EAC7BC,SAAUA,IAEXc,GACCrH,IAAAA,cAACqJ,EAAAA,eAAc,CAACvF,OAAK,EAAClD,GAAI,CAAEqI,GAAI,IAC7B9B,EAAYP,SAKJ,aAAhBK,GACCjH,IAAAA,cAACsH,EAAAA,MAAK,CAACC,WAAS,EAACC,QAAS,EAAG5G,GAAI,CAAE2E,WAAY,QAAS0D,GAAI,IAC1DjJ,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAACgI,EAAAA,QAAkB,CACjB3I,GAAI0H,EAAe,oBACnBkB,KAAMlB,EAAe,oBACrBuC,KAAK,SACL7D,OAAO,OACPG,WAAS,EACToD,MAAOjB,IAAAA,UAAY,6BACnBG,YAAaH,IAAAA,UAAY,sDAG7B/H,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAACgI,EAAAA,QAAkB,CACjB3I,GAAI0H,EAAe,oBACnBkB,KAAMlB,EAAe,oBACrBuC,KAAK,SACL7D,OAAO,OACPG,WAAS,EACToD,MAAOjB,IAAAA,UAAY,6BACnBG,YAAaH,IAAAA,UAAY,yDAOrC/H,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAACC,EAAAA,IAAG,CACFW,GAAI,CACF0E,QAAS,OACTiE,cAAe,SACfhE,WAAY,SACZiE,IAAK,IAGPxJ,IAAAA,cAAC2F,EAAAA,OAAM,CACLR,QAAQ,WACR,aAAW,SACXvE,GAAI,CACF0C,MAAO,GACPmG,OAAQ,GACR1D,SAAU,OACV4B,aAAc,MACd+B,QAAS,GAEX7D,QAASA,IAAMQ,EAAS/G,EAAM4G,IAE9BlG,IAAAA,cAAC2J,IAAU,OAEb3J,IAAAA,cAAC2F,EAAAA,OAAM,CACLR,QAAQ,YACR,aAAW,MACXyE,SAAUpD,EACV5F,GAAI,CACF0C,MAAO,GACPmG,OAAQ,GACR1D,SAAU,OACV4B,aAAc,MACd+B,QAAS,GAEX7D,QAASO,GAETpG,IAAAA,cAAC6J,IAAO,SAIR,E,uBC1MZ,MAAM,EAA+B1K,QAAQ,6B,aCA7C,MAAM,EAA+BA,QAAQ,qC,kmBCyB7C,MA4LA,EA5L0B2K,EACxBZ,QACAC,aACAhD,WAAW,cACXiD,8BACA7C,eAEA,MAAM,OAAEK,EAAM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAE5BiD,EAAanD,EAAOT,IAAa,GACjC6D,EAAe,IAAId,EAAMtC,QAAQqD,MAAK,CAACC,EAAGC,IAAMD,EAAEE,MAAQD,EAAEC,QAE5DC,EAAsBA,CAACC,EAAYtD,IACvC,GAAGb,KAAYgD,aAAsBmB,MAAetD,IAwJtD,OACEhH,IAAAA,cAACC,EAAAA,IAAG,KACFD,IAAAA,cAACuK,EAAAA,QAAe,CACdnJ,MAAO4I,EACP1I,UA1JakJ,IACjB,MAAMC,EAAgBV,EAAWpH,KAAI,CAAC+H,EAAGnI,IACvCA,IAAM4G,EAAUpI,EAAAA,EAAA,GAAQ2J,GAAC,IAAE9D,OAAQ4D,IAAcE,IAEnD7D,EAAcV,EAAUsE,EAAc,EAuJlCjL,WAjFuBmL,CAACC,EAAKC,GAAe/K,aAAYgB,mBAAoB,CAAC,KACjF,MAAMgK,EAAgB5B,EAAMtC,OAAOtE,WAChCyI,GAAOA,EAAE1L,IAAM0L,EAAE1L,KAAOuL,EAAIvL,IAAO0L,IAAMH,IAEtCN,GAAgC,IAAnBQ,EAAuBA,EAAgBD,EAE1D,OACE7K,IAAAA,cAACC,EAAAA,IAAG,CAACsD,IAAKqH,EAAIvL,IAAM,SAASiL,KAC3BtK,IAAAA,cAACsH,EAAAA,MAAK,CACJC,WAAS,EACTC,QAAS,EACT5G,GAAI,CACF2E,WAAY,QACZ1E,WAAYf,EAAa,UAAY,UACrCkL,UAAWlL,EACP,+BACA,OACJD,WAAY,4CACZD,UAAWE,EAAa,cAAgB,OACxCmL,GAAI,IAGNjL,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,EAAG7G,GAAI,CAAE0E,QAAS,OAAQC,WAAY,WACjDvF,IAAAA,cAACkL,EAAAA,WAAUC,IAAA,GACLrK,EAAe,CACnB,aAAW,kBACXF,GAAI,CAAEwK,OAAQ,UAEdpL,IAAAA,cAACqL,IAAiB,QAGtBrL,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAACgI,EAAAA,QAAkB,CACjBC,KAAMoC,EAAoBC,EAAY,QACtCpC,YAAaH,IAAAA,UACX,iCAEFtC,OAAO,OACPG,WAAS,KAGb5F,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAACgI,EAAAA,QAAkB,CACjBC,KAAMoC,EAAoBC,EAAY,SACtCpC,YAAaH,IAAAA,UACX,kCAEFtC,OAAO,OACPG,WAAS,EACT0F,WAAY,CACVC,aACEvL,IAAAA,cAACkL,EAAAA,WAAU,CACTrF,QAASA,IAjFD2F,OAAOC,EAAgBnB,KAS/C,UAR0BoB,EAAAA,EAAAA,SAAkB,CAC1CtH,MAAO2D,IAAAA,UAAY,wBACnB1D,KAAM0D,IAAAA,UAAY,oCAClBzD,SAAU,UACVI,mBAAoB,UACpBD,kBAAmBsD,IAAAA,UAAY,wBAGf,OAElB,MAAM4D,EAAwBA,KAC5B,MAAMC,EAAY7B,EAAWpH,KAAI,CAAC+H,EAAGnI,IACnCA,IAAM4G,EAAUpI,EAAAA,EAAA,GACP2J,GAAC,IAAE9D,OAAQ8D,EAAE9D,OAAOrG,QAAO,CAACsL,EAAGtM,IAAUA,IAAU+K,MACxDI,IAEN7D,EAAcV,EAAUyF,EAAU,EAGhC1C,EAAM7J,IAAMoM,EAAepM,IAAM+J,EACnCA,EAA4B7C,EAAU2C,EAAM7J,GAAIoM,EAAepM,IAC9DyM,MAAK,IAAMH,MACXI,OAAM,SAEPJ,GACF,EAuD+BK,CAAkBpB,EAAKN,GACtC,aAAW,gBAEXtK,IAAAA,cAACiM,IAAS,WAMpBjM,IAAAA,cAACsH,EAAAA,MAAK,CAACG,KAAM,GACXzH,IAAAA,cAAC+I,EAAAA,QAAiB,CAChBd,KAAMoC,EAAoBC,EAAY,cACtCtB,MAAOjB,IAAAA,UAAY,0BACnBK,SAAWC,GAnHK6D,EAAC5B,EAAY6B,KACvC,MAAMP,EAAY7B,EAAWpH,KAAI,CAAC+H,EAAGnI,IAC/BA,IAAM4G,EAAmBuB,EAC7B3J,EAAAA,EAAA,GACK2J,GAAC,IACJ9D,OAAQ8D,EAAE9D,OAAOjE,KAAI,CAACoI,EAAGqB,IACnBD,EAASpL,EAAAA,EAAA,GAAYgK,GAAC,IAAEsB,WAAYD,IAAO9B,IACxC8B,IAAO9B,EAAUvJ,EAAAA,EAAA,GAAQgK,GAAC,IAAEsB,YAAY,IAAUtB,QAI/DlE,EAAcV,EAAUyF,EAAU,EAyGtBM,CAAoB5B,EAAYjC,EAAEE,OAAO4D,aAKjDnM,IAAAA,cAACoF,EAAAA,QAAO,MACJ,EAUJvC,MAAM,KACNtB,eAAe,UAEjBvB,IAAAA,cAACsH,EAAAA,MAAK,CAACC,WAAS,EAACC,QAAS,EAAG5G,GAAI,CAAEqI,GAAI,GAAKqD,OAAQ,GAClDtM,IAAAA,cAAC2F,EAAAA,OAAM,CACL4G,UAAWvM,IAAAA,cAAC6J,IAAO,MACnBD,SA5H2B4C,KAC7BtD,EAAMtC,OAAO6F,OAAS,GACjBvD,EAAMtC,OAAO8F,MAAM3B,IAAC,IAAA4B,EAAAC,EAAA,QAAY,QAAPD,EAAC5B,EAAE9C,YAAI,IAAA0E,GAANA,EAAQE,QAAkB,QAARD,EAAC7B,EAAEvC,aAAK,IAAAoE,GAAPA,EAASC,OAAO,IA0HtDL,GACV3G,QA5JeiH,KACrB,MAAMlB,EAAY7B,EAAWpH,KAAI,CAAC+H,EAAGnI,KACnC,GAAIA,IAAM4G,EAAY,OAAOuB,EAC7B,MAAMqC,EAAgBrC,EAAE9D,QAAU,GAC5BoG,EACJC,KAAKC,IAAI,KAAMH,EAAcpK,KAAKoI,GAAMA,EAAEX,OAAS,KAAM,EAC3D,OAAArJ,EAAAA,EAAA,GACK2J,GAAC,IACJ9D,OAAQ,IACHmG,EACH,CAAEvE,MAAO,GAAIP,KAAM,GAAIoE,YAAY,EAAOjC,MAAO4C,KAClD,IAGLnG,EAAcV,EAAUyF,EAAU,EA+I5BzG,QAAQ,QAEP4C,IAAAA,UAAY,2BAGb,EC5LV,EAJ2BoF,GACzBnN,IAAAA,cAACiG,EAAmBkF,IAAA,GAAKgC,EAAK,CAAE1G,yBAA0BqD,I,8KCKtDf,EAAoBqE,IAAkD,IAAjD,KAAEnF,EAAI,MAAEe,EAAK,OAAEvD,EAAS,UAAoB2H,EAAPD,EAAKE,IAAAD,EAAAE,GACnE,MAAOpE,EAAOqE,IAAQC,EAAAA,EAAAA,UAAS,CAAEvF,OAAMqB,KAAM,aAE7C,OACEtJ,IAAAA,cAACyN,EAAAA,YAAW,CACV7H,WAAS,EACTH,OAAQA,EACR3B,MAAOyJ,EAAK5G,SAAWnG,QAAQ+M,EAAKzJ,QAEpC9D,IAAAA,cAAC0N,EAAAA,iBAAgB,CACfC,QACE3N,IAAAA,cAAC4N,EAAAA,SAAQzC,IAAA,CACPlD,KAAMA,GACFiB,EAAK,CACTiD,QAASjD,EAAMV,OAEX2E,IAGRnE,MAAOA,IAERuE,EAAK5G,SAAW4G,EAAKzJ,OACpB9D,IAAAA,cAACqJ,EAAAA,eAAc,KAAEkE,EAAKzJ,OAEZ,EAIlBiF,EAAkB/H,UAAY,CAC5BiH,KAAMhH,IAAAA,OAAiBC,WACvB8H,MAAO/H,IAAAA,OAAiBC,YAG1B,S,kICxDA,MAAM,EAA+B/B,QAAQ,6B,uFC0BvCgJ,EAAkBiF,IAOlB,IAPmB,KACvBnF,EAAI,MACJe,EAAK,YACLd,EAAW,SACX2F,EAAQ,YACRC,GAEDV,EADIW,EAAIV,IAAAD,EAAAE,GAEP,MAAOpE,EAAOqE,EAAMS,IAAWR,EAAAA,EAAAA,UAASvF,GAQlCgG,GADW/E,aAAK,EAALA,EAAOV,QAAyB,KAAhBU,EAAMV,OACNhI,QAAQ0H,GAEzC,OACElI,IAAAA,cAACyN,EAAAA,YAAW,CAAC7H,WAAS,EAAC9B,MAAOyJ,EAAK5G,SAAWnG,QAAQ+M,EAAKzJ,QACxDkF,GACChJ,IAAAA,cAAC6H,EAAAA,WAAU,CAACC,QAASG,EAAM5I,GAAI,GAAG4I,UAAciG,OAAQD,GACrDjF,GAGLhJ,IAAAA,cAACmO,EAAAA,OAAMhD,IAAA,CACLlD,KAAMA,EACN5I,GAAI4I,GAEAiB,EAAK,CACTkF,QAAS,GAAGnG,UACZe,MAAOA,EACPqF,QAASJ,EACTK,cAAY,EACZC,YAAcC,GACPA,GAAyB,KAAbA,EAGVA,EAFExO,IAAAA,cAAA,QAAMG,MAAO,CAAEwD,MAAO,SAAWuE,GAI5CqD,aACEuC,GAAe5E,EAAMV,MACnBxI,IAAAA,cAACyO,EAAAA,eAAc,CAAC9N,SAAS,MAAMC,GAAI,CAAE8N,GAAI,IACvC1O,IAAAA,cAACkL,EAAAA,WAAU,CAACzD,KAAK,QAAQ5B,QAjChB8I,IACnBA,EAAGC,kBACHZ,EAAQa,SAAS,GAAG,GAgCR7O,IAAAA,cAAC8O,IAAS,CAACC,SAAS,YAGtB,MAGFhB,GAEHF,GAEFN,EAAK5G,SAAW4G,EAAKzJ,OACpB9D,IAAAA,cAACqJ,EAAAA,eAAc,KAAEkE,EAAKzJ,OAEZ,EAIlBqE,EAAgBnH,UAAY,CAC1BiH,KAAMhH,IAAAA,OAAiBC,WACvB2M,SAAU5M,IAAAA,KAAeC,WACzBgH,YAAajH,IAAAA,OACb6M,YAAa7M,IAAAA,MAGf,S,4LC5EM+G,EAAqBoF,IAMrB,IAAA4B,EAAA,IANsB,KAC1B/G,EAAI,MACJe,EAAK,UACLiG,EAAS,SACTC,GAAW,GAEZ9B,EADID,EAAKE,IAAAD,EAAAE,GAER,MAAOpE,EAAOqE,IAAQC,EAAAA,EAAAA,UAASvF,GACzBkH,GAA2B,QAAXH,EAAA9F,EAAMV,aAAK,IAAAwG,OAAA,EAAXA,EAAavC,SAAU,EAE7C,IAAI2C,EAAa,GAMjB,OAJIpG,IACFoG,EAAaF,EAAW,GAAGlG,MAAYA,GAIvChJ,IAAAA,cAACC,EAAAA,IAAG,KACFD,IAAAA,cAACqP,EAAAA,UAASlE,IAAA,CACRlD,KAAMA,EACNe,MAAOoG,GACHlG,EAAK,CACToG,OAAQpG,EAAMoG,OACd7J,OAAO,SACP3B,MAAOyJ,EAAK5G,SAAWnG,QAAQ+M,EAAKzJ,OACpCyL,WAAYhC,EAAK5G,SAAW4G,EAAKzJ,MACjC0L,UAAW,CACTC,UAAW,CACTR,eAIA9B,IAEL8B,GACCjP,IAAAA,cAACkF,EAAAA,WAAU,CAACtE,GAAI,CAAEmO,SAAU,SAAUpL,MAAO,YAAa+L,GAAI,IACxDT,EAAYE,EAAf,oBAGD,EAIVnH,EAAmBhH,UAAY,CAC7BiH,KAAMhH,IAAAA,OAAiBC,WACvB8H,MAAO/H,IAAAA,OACPgO,UAAWhO,IAAAA,OACXiO,SAAUjO,IAAAA,MAGZ,S,gECrBA,MAAM0O,EAAa,gCACbC,EAAgC,oBAAfC,WAA6BA,WAA+B,oBAAXC,OAAyBA,OAAS,CAAC,EA0F3G,EA7E0BpE,EACxBtH,QACAC,OACAC,WAAW,GACXG,oBAAoB,UACpBE,mBAAmB,SACnBD,qBAAqB,UACrBE,oBAAoB,cAEpB,IAAKgL,EAAQD,GACX,MAAM,IAAI5L,MACR,iJAKJ,OAAO6L,EAAQD,GAAY,CACzBvL,QACAC,OACAC,WACAG,oBACAE,mBACAD,qBACAE,qBACA,C,4CCrFG,MAgCM6D,EAA+B,CAC1C,eACA,WACA,mBAGWE,EAAkB,CAC7B,cACGF,EACH,OACA,WACA,WACA,WACA,O,WC7CF1J,EAAOD,QAAUK,QAAQ,wC,WCAzBJ,EAAOD,QAAUK,QAAQ,iC,WCAzBJ,EAAOD,QAAUK,QAAQ,iD,WCAzBJ,EAAOD,QAAUK,QAAQ,kC,WCAzBJ,EAAOD,QAAUK,QAAQ,4B,WCAzBJ,EAAOD,QAAUK,QAAQ,gB,WCAzBJ,EAAOD,QAAUK,QAAQ,S,WCAzBJ,EAAOD,QAAUK,QAAQ,a,WCAzBJ,EAAOD,QAAUK,QAAQ,Q,GCCrB4Q,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBnN,IAAjBoN,EACH,OAAOA,EAAapR,QAGrB,IAAIC,EAASgR,EAAyBE,GAAY,CAGjDnR,QAAS,CAAC,GAOX,OAHAqR,EAAoBF,GAAUlR,EAAQA,EAAOD,QAASkR,GAG/CjR,EAAOD,OACf,C,MCrBAkR,EAAoBI,EAAKrR,IACxB,IAAIsR,EAAStR,GAAUA,EAAOuR,WAC7B,IAAOvR,EAAiB,QACxB,IAAM,EAEP,OADAiR,EAAoBO,EAAEF,EAAQ,CAAEnG,EAAGmG,IAC5BA,CAAM,C,WCLdL,EAAoBO,EAAI,CAACzR,EAAS0R,KACjC,IAAI,IAAIjN,KAAOiN,EACXR,EAAoBS,EAAED,EAAYjN,KAASyM,EAAoBS,EAAE3R,EAASyE,IAC5EmN,OAAOC,eAAe7R,EAASyE,EAAK,CAAEqN,YAAY,EAAMC,IAAKL,EAAWjN,IAE1E,C,WCNDyM,EAAoBS,EAAI,CAACK,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,E,WCClFf,EAAoBmB,EAAKrS,IACH,oBAAXsS,QAA0BA,OAAOC,aAC1CX,OAAOC,eAAe7R,EAASsS,OAAOC,YAAa,CAAE7I,MAAO,WAE7DkI,OAAOC,eAAe7R,EAAS,aAAc,CAAE0J,OAAO,GAAO,C,mHCL9D,MAAM,EAA+BrJ,QAAQ,c,kmBCmB7C,MAAMmS,EAAqB,CACzBrJ,KAAM,GACNqB,KAAM,GACNiI,aAAa,EACbC,iBAAkB,EAClBC,iBAAkB,EAClB7K,OAAQ,IAsGV,EAnGgC8K,EAC9BzJ,OACA5B,WACAC,gBACAC,WACAoL,+BAEA,MAAM,OAAE/K,EAAM,cAAEC,EAAa,OAAEH,EAAM,gBAAEkL,IAAoB9K,EAAAA,EAAAA,oBAErDiD,EAAanD,EAAOqB,IAAS,IAEnC4J,EAAAA,EAAAA,YAAU,KACkB,IAAtB9H,EAAW0C,QACb5F,EAAcoB,EAAM,CAAAlH,EAAAA,EAAA,GACbuQ,GAAkB,IAAEQ,KAAM,SAASC,KAAKC,WAEjD,GACC,CAACjI,EAAW0C,SAEf,MAAMwF,EAAgBA,KACpBpL,EAAcoB,EAAM,IACf8B,EAAUhJ,EAAAA,EAAA,GACRuQ,GAAkB,IAAEQ,KAAM,SAASC,KAAKC,WAC7C,EAGEE,EAAe1G,MAAOlM,EAAMC,KAWhC,UAV0BmM,EAAAA,EAAAA,SAAkB,CAC1CtH,MAAO2D,IAAAA,UAAY,wBACnB1D,KAAM,GAAG0D,IAAAA,UAAY,uCACnBzI,EAAK2I,OAEP3D,SAAU,UACVI,mBAAoB,UACpBD,kBAAmBsD,IAAAA,UAAY,wBAGf,OAElB,MAAMoK,EAAeA,KACnB,MAAM3H,EAAYT,EAAWxJ,QAAO,CAACsL,EAAGjJ,IAAQA,IAAQrD,IAC/B,IAArBiL,EAAUiC,QACZjC,EAAU4H,KAAIrR,EAAAA,EAAC,CAAC,EAAIuQ,GAAkB,IAAEQ,KAAM,SAASC,KAAKC,WAE9DnL,EAAcoB,EAAMuC,GACpBoH,EAAgB3J,EAAM,IAAI,EAAM,EAG9B3I,EAAKD,IAAMgH,EACbA,EAASE,EAAUjH,EAAKD,IACrByM,MAAK,IAAMqG,MACXpG,OAAOsG,GAAQC,QAAQxO,MAAM,gCAAiCuO,KAEjEF,GACF,EAGII,EAA0BA,KAC9B,MAAMpL,GAAcD,EAAAA,EAAAA,OAAMR,EAAQuB,GAClC,GAAId,GAAeqL,MAAMC,QAAQtL,GAAc,CAI7C,GAHsBA,EAAYuF,MAC/B2F,GAAQA,GAAO3B,OAAOgC,KAAKL,GAAK5F,OAAS,IAEzB,OAAO,CAC5B,CAEA,OAAO1C,EAAW2C,MAAMxD,IAAU,IAAAyJ,EAChC,GAAe,QAAXA,EAACzJ,EAAMjB,YAAI,IAAA0K,IAAVA,EAAY9F,SAAW3D,EAAMI,KAAM,OAAO,EAC/C,GAAIb,EAAAA,GAA6BC,SAASQ,EAAMI,MAAO,CACrD,IAAKJ,EAAMtC,QAAkC,IAAxBsC,EAAMtC,OAAO6F,OAAc,OAAO,EAIvD,GAH4BvD,EAAMtC,OAAO8F,MACtC3B,IAAC,IAAA4B,EAAAC,EAAA,QAAY,QAAPD,EAAC5B,EAAE9C,YAAI,IAAA0E,GAANA,EAAQE,QAAkB,QAARD,EAAC7B,EAAEvC,aAAK,IAAAoE,GAAPA,EAASC,OAAM,IAEnB,OAAO,CAClC,CAEA,OAAO,CAAK,GACZ,EAGJ,OACE7M,IAAAA,cAAAA,IAAAA,SAAA,KACG+J,EAAWpH,KAAI,CAACrD,EAAM4G,IACrBlG,IAAAA,cAAC2R,EAAwB,CACvBpO,IAAKjE,EAAKD,IAAMC,EAAKwS,KACrBxS,KAAMA,EACN4G,QAASA,EACTC,SAAU8B,EACV7B,MAAO6L,EACP5L,SAAU6L,EACV5L,cAAeA,EACfC,SAAUA,EACVC,cAAe+L,QAGlB,E,cC1GP,MAIA,EAJ+BpF,GAC7BnN,IAAAA,cAAC0R,EAAuBvG,IAAA,GAAKgC,EAAK,CAAEwE,yBAA0BiB,EAAAA,W","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/external commonjs \"@dnd-kit/core\"","webpack://openstack-uicore-foundation/external commonjs \"@dnd-kit/sortable\"","webpack://openstack-uicore-foundation/external commonjs \"@dnd-kit/utilities\"","webpack://openstack-uicore-foundation/./src/components/mui/DragNDropList/sortable-item.js","webpack://openstack-uicore-foundation/./src/components/mui/DragNDropList/hooks/useDndKitReorder.js","webpack://openstack-uicore-foundation/./src/components/mui/DragNDropList/index.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Info\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Warning\"","webpack://openstack-uicore-foundation/./src/components/mui/confirm-dialog.js","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Delete\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Add\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-core.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Close\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/DragIndicator\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/meta-field-values-v2.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-v2.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Clear\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-textfield.js","webpack://openstack-uicore-foundation/./src/components/mui/showConfirmDialog.js","webpack://openstack-uicore-foundation/./src/utils/constants.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/CheckCircle\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"formik\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"i18n-react\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-list-core.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/additional-input/additional-input-list-v2.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@dnd-kit/core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@dnd-kit/sortable\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@dnd-kit/utilities\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { Box } from \"@mui/material\";\n\nconst SortableItem = ({ id, item, index, renderItem }) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({ id });\n\n return (\n <Box\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition: [transition, \"background 0.2s ease\"].filter(Boolean).join(\", \"),\n zIndex: isDragging ? 1 : \"auto\",\n position: \"relative\"\n }}\n sx={{ background: isDragging ? \"#f0f0f0\" : \"inherit\" }}\n >\n {renderItem(item, index, {\n isDragging,\n dragHandleProps: { ...listeners, ...attributes }\n })}\n </Box>\n );\n};\n\nSortableItem.propTypes = {\n id: PropTypes.string.isRequired,\n item: PropTypes.object.isRequired,\n index: PropTypes.number,\n renderItem: PropTypes.func.isRequired\n};\n\nexport default SortableItem;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 {\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport { sortableKeyboardCoordinates, arrayMove } from \"@dnd-kit/sortable\";\n\n// Shared dnd-kit wiring for reorderable lists/tables: sensors, collision\n// detection, and the base order computation (orderOffset + idx + 1).\n// orderOffset lets a paginated consumer add its page offset on top without\n// duplicating the sensor/collision setup or the id-matching logic.\nconst useDndKitReorder = ({\n items,\n getItemId,\n onReorder,\n updateOrderKey = \"order\",\n orderOffset = 0\n}) => {\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates })\n );\n\n const handleDragEnd = ({ active, over }) => {\n if (!over || active.id === over.id) return;\n\n const oldIndex = items.findIndex((item, i) => getItemId(item, i) === active.id);\n const newIndex = items.findIndex((item, i) => getItemId(item, i) === over.id);\n\n if (oldIndex === -1 || newIndex === -1) return;\n\n const reordered = arrayMove(items, oldIndex, newIndex).map((item, idx) =>\n updateOrderKey\n ? { ...item, [updateOrderKey]: orderOffset + idx + 1 }\n : item\n );\n\n onReorder(reordered, { active, over, oldIndex, newIndex });\n };\n\n return { sensors, collisionDetection: closestCenter, handleDragEnd };\n};\n\nexport default useDndKitReorder;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport { DndContext } from \"@dnd-kit/core\";\nimport { SortableContext, verticalListSortingStrategy } from \"@dnd-kit/sortable\";\nimport { Box } from \"@mui/material\";\n\nimport SortableItem from \"./sortable-item\";\nimport useDndKitReorder from \"./hooks/useDndKitReorder\";\n\n// Items without an idKey value fall back to a positional id (new-${index}).\n// Because that id is recomputed from the current index every render, after a\n// reorder it identifies whatever item now occupies that slot, not the item it\n// originally pointed to - React will reuse that item's fiber instead of\n// remounting it. Harmless if renderItem is stateless/positional (e.g. Formik\n// fields bound by values[index]), but consumers relying on local/uncontrolled\n// state inside renderItem should assign a stable id (e.g. crypto.randomUUID())\n// to new items instead of leaving idKey undefined.\nconst getItemId = (item, index, idKey) =>\n item[idKey] !== undefined && item[idKey] !== null\n ? String(item[idKey])\n : `new-${index}`;\n\nconst DragNDropList = ({\n items,\n onReorder,\n renderItem,\n idKey = \"id\",\n updateOrderKey = \"order\"\n}) => {\n const { sensors, collisionDetection, handleDragEnd } = useDndKitReorder({\n items,\n getItemId: (item, i) => getItemId(item, i, idKey),\n updateOrderKey,\n onReorder: (reordered, { active, over }) => onReorder(reordered, { active, over })\n });\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetection}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={items.map((item, i) => getItemId(item, i, idKey))}\n strategy={verticalListSortingStrategy}\n >\n <Box sx={{ width: \"100%\" }}>\n {items.map((item, index) => (\n <SortableItem\n key={getItemId(item, index, idKey)}\n id={getItemId(item, index, idKey)}\n item={item}\n index={index}\n renderItem={renderItem}\n />\n ))}\n </Box>\n </SortableContext>\n </DndContext>\n );\n};\n\nDragNDropList.propTypes = {\n items: PropTypes.array.isRequired,\n onReorder: PropTypes.func.isRequired,\n renderItem: PropTypes.func.isRequired,\n idKey: PropTypes.string,\n updateOrderKey: PropTypes.string\n};\n\nexport default DragNDropList;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Info\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Warning\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Divider,\n Typography\n} from \"@mui/material\";\nimport CheckCircle from \"@mui/icons-material/CheckCircle\";\nimport Error from \"@mui/icons-material/Error\";\nimport Info from \"@mui/icons-material/Info\";\nimport Warning from \"@mui/icons-material/Warning\";\n\nconst iconMap = {\n warning: <Warning color=\"warning\" />,\n success: <CheckCircle color=\"success\" />,\n error: <Error color=\"error\" />,\n info: <Info color=\"info\" />\n};\n\nconst ConfirmDialog = ({\n open,\n title,\n text,\n iconType = \"\",\n onConfirm,\n onCancel,\n confirmButtonText = \"Confirm\",\n confirmButtonColor = \"primary\",\n cancelButtonText = \"Cancel\",\n cancelButtonColor = \"primary\"\n}) => (\n <Dialog open={open} onClose={onCancel}>\n <DialogTitle sx={{ p: 2 }} component=\"div\">\n <Typography variant=\"h5\">{title}</Typography>\n </DialogTitle>\n <Divider />\n <DialogContent sx={{ p: 2 }}>\n <div style={{ display: \"flex\", alignItems: \"center\" }}>\n {iconMap[iconType] && (\n <div style={{ marginRight: 10 }}>{iconMap[iconType]}</div>\n )}\n <Typography variant=\"body1\">{text}</Typography>\n </div>\n </DialogContent>\n <Divider sx={{ margin: \"10px 0px 10px 0px\" }} />\n <DialogActions>\n <Button\n fullWidth\n onClick={onCancel}\n color={cancelButtonColor}\n variant=\"outlined\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {cancelButtonText}\n </Button>\n <Button\n fullWidth\n onClick={onConfirm}\n color={confirmButtonColor}\n variant=\"contained\"\n sx={{ whiteSpace: \"nowrap\", minWidth: 100 }}\n >\n {confirmButtonText}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nConfirmDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n iconType: PropTypes.string,\n onConfirm: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n confirmButtonText: PropTypes.string,\n confirmButtonColor: PropTypes.string,\n cancelButtonText: PropTypes.string,\n cancelButtonColor: PropTypes.string\n};\n\nConfirmDialog.defaultProps = {\n open: false,\n iconType: \"warning\",\n confirmButtonText: \"Confirm\",\n confirmButtonColor: \"primary\",\n cancelButtonText: \"Cancel\",\n cancelButtonColor: \"default\"\n};\n\nexport default ConfirmDialog;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18n-react/dist/i18n-react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Delete\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Add\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport {\n Box,\n Button,\n Divider,\n FormHelperText,\n Grid2,\n InputLabel,\n MenuItem\n} from \"@mui/material\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport DeleteIcon from \"@mui/icons-material/Delete\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikSelect from \"../mui-formik-select\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\nimport {\n METAFIELD_TYPES,\n METAFIELD_TYPES_WITH_OPTIONS\n} from \"../../../../utils/constants\";\n\nconst AdditionalInputCore = ({\n item,\n itemIdx,\n baseName,\n onAdd,\n onDelete,\n onDeleteValue,\n entityId,\n isAddDisabled,\n MetaFieldValuesComponent\n}) => {\n const { errors, touched, values, setFieldValue } = useFormikContext();\n\n const buildFieldName = (fieldName) => `${baseName}[${itemIdx}].${fieldName}`;\n const currentType = getIn(values, buildFieldName(\"type\"));\n\n const handleTypeChange = (e) => {\n const newType = e.target.value;\n setFieldValue(buildFieldName(\"type\"), newType);\n if (!METAFIELD_TYPES_WITH_OPTIONS.includes(newType)) {\n setFieldValue(buildFieldName(\"values\"), []);\n }\n };\n\n const fieldErrors = getIn(errors, `${baseName}[${itemIdx}]`);\n const fieldTouched = getIn(touched, `${baseName}[${itemIdx}]`);\n\n const showValuesError =\n fieldTouched?.values &&\n fieldErrors?.values &&\n typeof fieldErrors.values === \"string\";\n\n return (\n <Grid2 container spacing={2} sx={{ alignItems: \"center\" }}>\n <Grid2 size={11}>\n <Box\n sx={{\n border: \"1px solid #0000001F\",\n borderRadius: \"4px\",\n p: 2,\n my: 2\n }}\n >\n <Grid2 container spacing={2} sx={{ alignItems: \"start\" }}>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"name\")}>\n {T.translate(\"additional_inputs.title\")}\n </InputLabel>\n <MuiFormikTextField\n name={buildFieldName(\"name\")}\n margin=\"none\"\n placeholder={T.translate(\n \"additional_inputs.placeholders.title\"\n )}\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <InputLabel htmlFor={buildFieldName(\"type\")}>\n {T.translate(\"additional_inputs.type\")}\n </InputLabel>\n <MuiFormikSelect\n name={buildFieldName(\"type\")}\n placeholder={T.translate(\n \"additional_inputs.placeholders.type\"\n )}\n onChange={handleTypeChange}\n >\n {METAFIELD_TYPES.map((fieldType) => (\n <MenuItem key={fieldType} value={fieldType}>\n {fieldType}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </Grid2>\n <Grid2 size={4} sx={{ alignSelf: \"end\" }}>\n <MuiFormikCheckbox\n name={buildFieldName(\"is_required\")}\n label={T.translate(\"additional_inputs.required\")}\n />\n </Grid2>\n </Grid2>\n {METAFIELD_TYPES_WITH_OPTIONS.includes(currentType) && (\n <>\n <Divider sx={{ mt: 2 }} />\n <MetaFieldValuesComponent\n field={item}\n fieldIndex={itemIdx}\n baseName={baseName}\n onMetaFieldTypeValueDeleted={onDeleteValue}\n entityId={entityId}\n />\n {showValuesError && (\n <FormHelperText error sx={{ mt: 1 }}>\n {fieldErrors.values}\n </FormHelperText>\n )}\n </>\n )}\n {currentType === \"Quantity\" && (\n <Grid2 container spacing={2} sx={{ alignItems: \"start\", mt: 2 }}>\n <Grid2 size={4}>\n <MuiFormikTextField\n id={buildFieldName(\"minimum_quantity\")}\n name={buildFieldName(\"minimum_quantity\")}\n type=\"number\"\n margin=\"none\"\n fullWidth\n label={T.translate(\"additional_inputs.minimum\")}\n placeholder={T.translate(\"additional_inputs.placeholders.minimum_quantity\")}\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n id={buildFieldName(\"maximum_quantity\")}\n name={buildFieldName(\"maximum_quantity\")}\n type=\"number\"\n margin=\"none\"\n fullWidth\n label={T.translate(\"additional_inputs.maximum\")}\n placeholder={T.translate(\"additional_inputs.placeholders.maximum_quantity\")}\n />\n </Grid2>\n </Grid2>\n )}\n </Box>\n </Grid2>\n <Grid2 size={1}>\n <Box\n sx={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n gap: 1\n }}\n >\n <Button\n variant=\"outlined\"\n aria-label=\"delete\"\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={() => onDelete(item, itemIdx)}\n >\n <DeleteIcon />\n </Button>\n <Button\n variant=\"contained\"\n aria-label=\"add\"\n disabled={isAddDisabled}\n sx={{\n width: 40,\n height: 40,\n minWidth: \"auto\",\n borderRadius: \"50%\",\n padding: 0\n }}\n onClick={onAdd}\n >\n <AddIcon />\n </Button>\n </Box>\n </Grid2>\n </Grid2>\n );\n};\n\nexport default AdditionalInputCore;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Close\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/DragIndicator\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { useFormikContext } from \"formik\";\nimport { Box, Button, Grid2, Divider, IconButton } from \"@mui/material\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport AddIcon from \"@mui/icons-material/Add\";\nimport DragIndicatorIcon from \"@mui/icons-material/DragIndicator\";\nimport DragAndDropList from \"../../DragNDropList\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport MuiFormikTextField from \"../mui-formik-textfield\";\nimport MuiFormikCheckbox from \"../mui-formik-checkbox\";\n\nconst MetaFieldValuesV2 = ({\n field,\n fieldIndex,\n baseName = \"meta_fields\",\n onMetaFieldTypeValueDeleted,\n entityId\n}) => {\n const { values, setFieldValue } = useFormikContext();\n\n const metaFields = values[baseName] || [];\n const sortedValues = [...field.values].sort((a, b) => a.order - b.order);\n\n const buildValueFieldName = (valueIndex, fieldName) =>\n `${baseName}[${fieldIndex}].values[${valueIndex}].${fieldName}`;\n\n const onReorder = (newValues) => {\n const newMetaFields = metaFields.map((f, i) =>\n i === fieldIndex ? { ...f, values: newValues } : f\n );\n setFieldValue(baseName, newMetaFields);\n };\n\n const handleAddValue = () => {\n const newFields = metaFields.map((f, i) => {\n if (i !== fieldIndex) return f;\n const currentValues = f.values ?? [];\n const nextOrder =\n Math.max(0, ...currentValues.map((v) => v.order ?? 0)) + 1;\n return {\n ...f,\n values: [\n ...currentValues,\n { value: \"\", name: \"\", is_default: false, order: nextOrder }\n ]\n };\n });\n setFieldValue(baseName, newFields);\n };\n\n const handleDefaultChange = (valueIndex, checked) => {\n const newFields = metaFields.map((f, i) => {\n if (i !== fieldIndex) return f;\n return {\n ...f,\n values: f.values.map((v, vi) => {\n if (checked) return { ...v, is_default: vi === valueIndex };\n return vi === valueIndex ? { ...v, is_default: false } : v;\n })\n };\n });\n setFieldValue(baseName, newFields);\n };\n\n const isMetafieldValueIncomplete = () => {\n if (field.values.length > 0) {\n return field.values.some((v) => !v.name?.trim() || !v.value?.trim());\n }\n return false;\n };\n\n const handleRemoveValue = async (metaFieldValue, valueIndex) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: T.translate(\"meta_fields.delete_value_warning\"),\n iconType: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeValueFromFields = () => {\n const newFields = metaFields.map((f, i) =>\n i === fieldIndex\n ? { ...f, values: f.values.filter((_, index) => index !== valueIndex) }\n : f\n );\n setFieldValue(baseName, newFields);\n };\n\n if (field.id && metaFieldValue.id && onMetaFieldTypeValueDeleted) {\n onMetaFieldTypeValueDeleted(entityId, field.id, metaFieldValue.id)\n .then(() => removeValueFromFields())\n .catch(() => {});\n } else {\n removeValueFromFields();\n }\n };\n\n const renderMetaFieldValue = (val, sortedIndex, { isDragging, dragHandleProps } = {}) => {\n const originalIndex = field.values.findIndex(\n (v) => (v.id && v.id === val.id) || v === val\n );\n const valueIndex = originalIndex !== -1 ? originalIndex : sortedIndex;\n\n return (\n <Box key={val.id || `value-${valueIndex}`}>\n <Grid2\n container\n spacing={2}\n sx={{\n alignItems: \"start\",\n background: isDragging ? \"#ebebeb\" : \"inherit\",\n boxShadow: isDragging\n ? \"0px 5px 15px rgba(0,0,0,0.3)\"\n : \"none\",\n transition: \"transform 0.2s ease, box-shadow 0.2s ease\",\n transform: isDragging ? \"scale(1.02)\" : \"none\",\n py: 2\n }}\n >\n <Grid2 size={1} sx={{ display: \"flex\", alignItems: \"center\" }}>\n <IconButton\n {...dragHandleProps}\n aria-label=\"drag to reorder\"\n sx={{ cursor: \"grab\" }}\n >\n <DragIndicatorIcon />\n </IconButton>\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"name\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.name\"\n )}\n margin=\"none\"\n fullWidth\n />\n </Grid2>\n <Grid2 size={4}>\n <MuiFormikTextField\n name={buildValueFieldName(valueIndex, \"value\")}\n placeholder={T.translate(\n \"meta_fields.placeholders.value\"\n )}\n margin=\"none\"\n fullWidth\n InputProps={{\n endAdornment: (\n <IconButton\n onClick={() => handleRemoveValue(val, valueIndex)}\n aria-label=\"remove value\"\n >\n <CloseIcon />\n </IconButton>\n )\n }}\n />\n </Grid2>\n <Grid2 size={3}>\n <MuiFormikCheckbox\n name={buildValueFieldName(valueIndex, \"is_default\")}\n label={T.translate(\"meta_fields.is_default\")}\n onChange={(e) =>\n handleDefaultChange(valueIndex, e.target.checked)\n }\n />\n </Grid2>\n </Grid2>\n <Divider />\n </Box>\n );\n };\n\n return (\n <Box>\n <DragAndDropList\n items={sortedValues}\n onReorder={onReorder}\n renderItem={renderMetaFieldValue}\n idKey=\"id\"\n updateOrderKey=\"order\"\n />\n <Grid2 container spacing={2} sx={{ mt: 2 }} offset={4}>\n <Button\n startIcon={<AddIcon />}\n disabled={isMetafieldValueIncomplete()}\n onClick={handleAddValue}\n variant=\"text\"\n >\n {T.translate(\"meta_fields.add_value\")}\n </Button>\n </Grid2>\n </Box>\n );\n};\n\nexport default MetaFieldValuesV2;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport AdditionalInputCore from \"./additional-input-core\";\nimport MetaFieldValuesV2 from \"./meta-field-values-v2\";\n\nconst AdditionalInputV2 = (props) => (\n <AdditionalInputCore {...props} MetaFieldValuesComponent={MetaFieldValuesV2} />\n);\n\nexport default AdditionalInputV2;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikCheckbox = ({ name, label, margin = \"normal\", ...props }) => {\n const [field, meta] = useField({ name, type: \"checkbox\" });\n\n return (\n <FormControl\n fullWidth\n margin={margin}\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Checkbox\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckbox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikCheckbox;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Clear\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Select,\n FormHelperText,\n FormControl,\n InputAdornment,\n IconButton,\n InputLabel\n} from \"@mui/material\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSelect = ({\n name,\n label,\n placeholder,\n children,\n isClearable,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const handleClear = (ev) => {\n ev.stopPropagation();\n helpers.setValue(\"\");\n };\n\n const hasValue = field?.value && field.value !== \"\";\n const shouldShrink = hasValue || Boolean(placeholder);\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n {label && (\n <InputLabel htmlFor={name} id={`${name}-label`} shrink={shouldShrink}>\n {label}\n </InputLabel>\n )}\n <Select\n name={name}\n id={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n labelId={`${name}-label`}\n label={label}\n notched={shouldShrink}\n displayEmpty\n renderValue={(selected) => {\n if (!selected || selected === \"\") {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return selected;\n }}\n endAdornment={\n isClearable && field.value ? (\n <InputAdornment position=\"end\" sx={{ mr: 2 }}>\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {children}\n </Select>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSelect.propTypes = {\n name: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n placeholder: PropTypes.string,\n isClearable: PropTypes.bool\n};\n\nexport default MuiFormikSelect;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, TextField, Typography } from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikTextField = ({\n name,\n label,\n maxLength,\n required = false,\n ...props\n}) => {\n const [field, meta] = useField(name);\n const currentLength = field.value?.length || 0;\n\n let finalLabel = \"\";\n\n if (label) {\n finalLabel = required ? `${label} *` : label;\n }\n\n return (\n <Box>\n <TextField\n name={name}\n label={finalLabel}\n {...field}\n onBlur={field.onBlur}\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n helperText={meta.touched && meta.error}\n slotProps={{\n htmlInput: {\n maxLength\n }\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n {maxLength && (\n <Typography sx={{ fontSize: \"1.2rem\", color: \"#00000099\", pl: 2 }}>\n {`${maxLength - currentLength} characters left`}\n </Typography>\n )}\n </Box>\n );\n};\n\nMuiFormikTextField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n required: PropTypes.bool\n};\n\nexport default MuiFormikTextField;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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, { useState, useEffect } from \"react\";\nimport ConfirmDialog from \"./confirm-dialog\";\n\n/**\n * Imperative confirm dialog API.\n *\n * SETUP (required):\n * Place <GlobalConfirmDialog /> at the root of your app:\n *\n * import { GlobalConfirmDialog } from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * function App() {\n * return (\n * <>\n * <YourApp />\n * <GlobalConfirmDialog />\n * </>\n * );\n * }\n *\n * USAGE (works from any file — the bridge is shared via globalThis):\n * import showConfirmDialog from\n * 'openstack-uicore-foundation/lib/components/mui/show-confirm-dialog';\n *\n * const confirmed = await showConfirmDialog({\n * title: 'Delete Item?',\n * text: 'This cannot be undone'\n * });\n */\n\n// Shared bridge reference stored on globalThis so that all webpack bundles\n// (table, sortable-table, show-confirm-dialog, index, etc.) read/write the\n// same callback. A module-level variable would be duplicated per bundle.\nconst BRIDGE_KEY = \"__oif_confirm_dialog_bridge__\";\nconst _global = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : {};\n\n/**\n * @param param0\n * @param param0.title\n * @param param0.text\n * @param param0.iconType\n * @param param0.confirmButtonText\n * @param param0.cancelButtonText\n * @param param0.confirmButtonColor\n * @param param0.cancelButtonColor\n * @returns {Promise<boolean>}\n */\nconst showConfirmDialog = ({\n title,\n text,\n iconType = \"\",\n confirmButtonText = \"Confirm\",\n cancelButtonText = \"Cancel\",\n confirmButtonColor = \"primary\",\n cancelButtonColor = \"primary\"\n}) => {\n if (!_global[BRIDGE_KEY]) {\n throw new Error(\n \"[openstack-uicore-foundation] showConfirmDialog: <GlobalConfirmDialog /> is not mounted. \" +\n \"Add <GlobalConfirmDialog /> to the root of your app.\"\n );\n }\n\n return _global[BRIDGE_KEY]({\n title,\n text,\n iconType,\n confirmButtonText,\n cancelButtonText,\n confirmButtonColor,\n cancelButtonColor\n });\n};\n\n/**\n * Global confirm dialog component. Place at the root of your app:\n *\n * <App>\n * ...\n * <GlobalConfirmDialog />\n * </App>\n *\n * Then call showConfirmDialog() anywhere.\n */\nexport const GlobalConfirmDialog = () => {\n const [dialogState, setDialogState] = useState(null);\n\n useEffect(() => {\n _global[BRIDGE_KEY] = (options) => {\n return new Promise((resolve) => {\n setDialogState({ ...options, open: true, onResolve: resolve });\n });\n };\n return () => { _global[BRIDGE_KEY] = null; };\n }, []);\n\n const handleConfirm = () => {\n if (dialogState?.onResolve) dialogState.onResolve(true);\n setDialogState(null);\n };\n\n const handleCancel = () => {\n if (dialogState?.onResolve) dialogState.onResolve(false);\n setDialogState(null);\n };\n\n if (!dialogState) return null;\n\n return (\n <ConfirmDialog\n open={dialogState.open}\n title={dialogState.title}\n text={dialogState.text}\n iconType={dialogState.iconType}\n confirmButtonText={dialogState.confirmButtonText}\n cancelButtonText={dialogState.cancelButtonText}\n confirmButtonColor={dialogState.confirmButtonColor}\n cancelButtonColor={dialogState.cancelButtonColor}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n );\n};\n\nexport default showConfirmDialog;\n","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\nexport const BPS = 100;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const ASYNC_SELECT_SAFETY_TIMEOUT = 15000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\n\nexport const FILE_UPLOAD_STATUS = {\n PENDING: \"PENDING\",\n DEADLINE_ALERT: \"DEADLINE ALERT\",\n DEADLINE_MISSED: \"DEADLINE MISSED\",\n COMPLETE: \"COMPLETE\"\n};\n\nexport const FILE_UPLOAD_STATUS_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"success.light\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"error\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"warning.light\",\n [FILE_UPLOAD_STATUS.PENDING]: \"default\"\n};\n\nexport const FILE_UPLOAD_STATUS_BKGR_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"white\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"#D32F2F0A\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"#EF6C000A\",\n [FILE_UPLOAD_STATUS.PENDING]: \"white\"\n};\n\nexport const DATE_FORMAT = \"MM/DD/YYYY\";\nexport const DATETIME_FORMAT = \"MM/DD/YYYY hh:mm a\";\n\nexport const SPONSOR_FORMS_METAFIELD_CLASS = {\n FORM: \"Form\",\n ITEM: \"Item\"\n};\n\nexport const SPONSOR_ORDER_GRID_ITEM_TYPES = {\n CHARGE: \"Charge\",\n PAYMENT: \"Payment\",\n REFUND: \"Refund\",\n DISCOUNT: \"Discount\",\n CANCELLED: \"Cancelled\"\n};","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"@mui/icons-material/CheckCircle\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/material\");","module.exports = require(\"formik\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"i18n-react\");","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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, { useEffect } from \"react\";\nimport { useFormikContext, getIn } from \"formik\";\nimport T from \"i18n-react\";\nimport showConfirmDialog from \"../../showConfirmDialog\";\nimport { METAFIELD_TYPES_WITH_OPTIONS } from \"../../../../utils/constants\";\n\nconst DEFAULT_META_FIELD = {\n name: \"\",\n type: \"\",\n is_required: false,\n minimum_quantity: 0,\n maximum_quantity: 0,\n values: []\n};\n\nconst AdditionalInputListCore = ({\n name,\n onDelete,\n onDeleteValue,\n entityId,\n AdditionalInputComponent\n}) => {\n const { values, setFieldValue, errors, setFieldTouched } = useFormikContext();\n\n const metaFields = values[name] || [];\n\n useEffect(() => {\n if (metaFields.length === 0) {\n setFieldValue(name, [\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n }\n }, [metaFields.length]);\n\n const handleAddItem = () => {\n setFieldValue(name, [\n ...metaFields,\n { ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` }\n ]);\n };\n\n const handleRemove = async (item, index) => {\n const isConfirmed = await showConfirmDialog({\n title: T.translate(\"general.are_you_sure\"),\n text: `${T.translate(\"additional_inputs.delete_warning\")} ${\n item.name\n }`,\n iconType: \"warning\",\n confirmButtonColor: \"#DD6B55\",\n confirmButtonText: T.translate(\"general.yes_delete\")\n });\n\n if (!isConfirmed) return;\n\n const removeFromUI = () => {\n const newValues = metaFields.filter((_, idx) => idx !== index);\n if (newValues.length === 0) {\n newValues.push({ ...DEFAULT_META_FIELD, _key: `draft_${Date.now()}` });\n }\n setFieldValue(name, newValues);\n setFieldTouched(name, [], false);\n };\n\n if (item.id && onDelete) {\n onDelete(entityId, item.id)\n .then(() => removeFromUI())\n .catch((err) => console.error(\"Error deleting field from API\", err));\n } else {\n removeFromUI();\n }\n };\n\n const areMetafieldsIncomplete = () => {\n const fieldErrors = getIn(errors, name);\n if (fieldErrors && Array.isArray(fieldErrors)) {\n const hasRealErrors = fieldErrors.some(\n (err) => err && Object.keys(err).length > 0\n );\n if (hasRealErrors) return true;\n }\n\n return metaFields.some((field) => {\n if (!field.name?.trim() || !field.type) return true;\n if (METAFIELD_TYPES_WITH_OPTIONS.includes(field.type)) {\n if (!field.values || field.values.length === 0) return true;\n const hasIncompleteValues = field.values.some(\n (v) => !v.name?.trim() || !v.value?.trim()\n );\n if (hasIncompleteValues) return true;\n }\n\n return false;\n });\n };\n\n return (\n <>\n {metaFields.map((item, itemIdx) => (\n <AdditionalInputComponent\n key={item.id || item._key}\n item={item}\n itemIdx={itemIdx}\n baseName={name}\n onAdd={handleAddItem}\n onDelete={handleRemove}\n onDeleteValue={onDeleteValue}\n entityId={entityId}\n isAddDisabled={areMetafieldsIncomplete()}\n />\n ))}\n </>\n );\n};\n\nexport default AdditionalInputListCore;\n","/**\n * Copyright 2026 OpenStack Foundation\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 * http://www.apache.org/licenses/LICENSE-2.0\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 from \"react\";\nimport AdditionalInputListCore from \"./additional-input-list-core\";\nimport AdditionalInputV2 from \"./additional-input-v2\";\n\nconst AdditionalInputListV2 = (props) => (\n <AdditionalInputListCore {...props} AdditionalInputComponent={AdditionalInputV2} />\n);\n\nexport default AdditionalInputListV2;\n"],"names":["root","factory","exports","module","define","amd","this","require","SortableItem","id","item","index","renderItem","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","React","Box","ref","style","CSS","Transform","toString","filter","Boolean","join","zIndex","position","sx","background","dragHandleProps","_objectSpread","propTypes","PropTypes","isRequired","useDndKitReorder","items","getItemId","onReorder","updateOrderKey","orderOffset","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","collisionDetection","closestCenter","handleDragEnd","active","over","oldIndex","findIndex","i","newIndex","reordered","arrayMove","map","idx","idKey","undefined","String","DragNDropList","DndContext","onDragEnd","SortableContext","strategy","verticalListSortingStrategy","width","key","iconMap","warning","Warning","color","success","CheckCircle","error","Error","info","Info","ConfirmDialog","open","title","text","iconType","onConfirm","onCancel","confirmButtonText","confirmButtonColor","cancelButtonText","cancelButtonColor","Dialog","onClose","DialogTitle","p","component","Typography","variant","Divider","DialogContent","display","alignItems","marginRight","margin","DialogActions","Button","fullWidth","onClick","whiteSpace","minWidth","defaultProps","AdditionalInputCore","itemIdx","baseName","onAdd","onDelete","onDeleteValue","entityId","isAddDisabled","MetaFieldValuesComponent","errors","touched","values","setFieldValue","useFormikContext","buildFieldName","fieldName","currentType","getIn","fieldErrors","fieldTouched","showValuesError","Grid2","container","spacing","size","border","borderRadius","my","InputLabel","htmlFor","T","MuiFormikTextField","name","placeholder","MuiFormikSelect","onChange","e","newType","target","value","METAFIELD_TYPES_WITH_OPTIONS","includes","METAFIELD_TYPES","fieldType","MenuItem","alignSelf","MuiFormikCheckbox","label","mt","field","fieldIndex","onMetaFieldTypeValueDeleted","FormHelperText","type","flexDirection","gap","height","padding","DeleteIcon","disabled","AddIcon","MetaFieldValuesV2","metaFields","sortedValues","sort","a","b","order","buildValueFieldName","valueIndex","DragAndDropList","newValues","newMetaFields","f","renderMetaFieldValue","val","sortedIndex","originalIndex","v","boxShadow","py","IconButton","_extends","cursor","DragIndicatorIcon","InputProps","endAdornment","async","metaFieldValue","showConfirmDialog","removeValueFromFields","newFields","_","then","catch","handleRemoveValue","CloseIcon","handleDefaultChange","checked","vi","is_default","offset","startIcon","isMetafieldValueIncomplete","length","some","_v$name","_v$value","trim","handleAddValue","currentValues","nextOrder","Math","max","props","_ref","_objectWithoutProperties","_excluded","meta","useField","FormControl","FormControlLabel","control","Checkbox","children","isClearable","rest","helpers","shouldShrink","shrink","Select","labelId","notched","displayEmpty","renderValue","selected","InputAdornment","mr","ev","stopPropagation","setValue","ClearIcon","fontSize","_field$value","maxLength","required","currentLength","finalLabel","TextField","onBlur","helperText","slotProps","htmlInput","pl","BRIDGE_KEY","_global","globalThis","window","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","DEFAULT_META_FIELD","is_required","minimum_quantity","maximum_quantity","AdditionalInputListCore","AdditionalInputComponent","setFieldTouched","useEffect","_key","Date","now","handleAddItem","handleRemove","removeFromUI","push","err","console","areMetafieldsIncomplete","Array","isArray","keys","_field$name","AdditionalInputV2"],"sourceRoot":""}