@flipdish/portal-library 7.10.1 → 7.10.2

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 (219) hide show
  1. package/dist/components/organisms/AssetManager/LibraryTabContent/index.cjs.js +1 -1
  2. package/dist/components/organisms/AssetManager/LibraryTabContent/index.cjs.js.map +1 -1
  3. package/dist/components/organisms/AssetManager/LibraryTabContent/index.d.ts +6 -3
  4. package/dist/components/organisms/AssetManager/LibraryTabContent/index.js +1 -1
  5. package/dist/components/organisms/AssetManager/LibraryTabContent/index.js.map +1 -1
  6. package/dist/components/organisms/AssetManager/hooks/useAssets.cjs.js +1 -1
  7. package/dist/components/organisms/AssetManager/hooks/useAssets.cjs.js.map +1 -1
  8. package/dist/components/organisms/AssetManager/hooks/useAssets.d.ts +2 -1
  9. package/dist/components/organisms/AssetManager/hooks/useAssets.js +1 -1
  10. package/dist/components/organisms/AssetManager/hooks/useAssets.js.map +1 -1
  11. package/dist/components/organisms/AssetManager/index.cjs.js +1 -1
  12. package/dist/components/organisms/AssetManager/index.cjs.js.map +1 -1
  13. package/dist/components/organisms/AssetManager/index.d.ts +18 -0
  14. package/dist/components/organisms/AssetManager/index.js +1 -1
  15. package/dist/components/organisms/AssetManager/index.js.map +1 -1
  16. package/dist/components/organisms/AssetManager/services/asset.service.cjs.js +1 -1
  17. package/dist/components/organisms/AssetManager/services/asset.service.cjs.js.map +1 -1
  18. package/dist/components/organisms/AssetManager/services/asset.service.d.ts +2 -1
  19. package/dist/components/organisms/AssetManager/services/asset.service.js +1 -1
  20. package/dist/components/organisms/AssetManager/services/asset.service.js.map +1 -1
  21. package/dist/mocks/msw/handlers.cjs.js +1 -1
  22. package/dist/mocks/msw/handlers.d.ts +1 -1
  23. package/dist/mocks/msw/handlers.js +1 -1
  24. package/dist/mocks/msw/server.cjs.js +1 -1
  25. package/dist/mocks/msw/server.d.ts +1 -1
  26. package/dist/mocks/msw/server.js +1 -1
  27. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/HttpResponse.cjs.js.map +1 -1
  28. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/HttpResponse.js.map +1 -1
  29. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/SetupApi.cjs.js.map +1 -1
  30. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/SetupApi.js.map +1 -1
  31. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/HttpHandler.cjs.js.map +1 -1
  32. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/HttpHandler.js.map +1 -1
  33. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/RequestHandler.cjs.js.map +1 -1
  34. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/RequestHandler.js.map +1 -1
  35. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/http.cjs.js.map +1 -1
  36. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/http.js.map +1 -1
  37. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/index.cjs.js.map +1 -1
  38. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/index.js.map +1 -1
  39. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/isCommonAssetRequest.cjs.js.map +1 -1
  40. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/isCommonAssetRequest.js.map +1 -1
  41. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/HttpResponse/decorators.cjs.js.map +1 -1
  42. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/HttpResponse/decorators.js.map +1 -1
  43. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/cookieStore.cjs.js +1 -1
  44. package/dist/node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.cjs.js.map +1 -0
  45. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/cookieStore.js +1 -1
  46. package/dist/node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.js.map +1 -0
  47. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/executeHandlers.cjs.js.map +1 -1
  48. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/executeHandlers.js.map +1 -1
  49. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/handleRequest.cjs.js.map +1 -1
  50. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/handleRequest.js.map +1 -1
  51. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/Disposable.cjs.js.map +1 -1
  52. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/Disposable.js.map +1 -1
  53. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/checkGlobals.cjs.js.map +1 -1
  54. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/checkGlobals.js.map +1 -1
  55. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/devUtils.cjs.js.map +1 -1
  56. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/devUtils.js.map +1 -1
  57. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/getCallFrame.cjs.js.map +1 -1
  58. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/getCallFrame.js.map +1 -1
  59. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isHandlerKind.cjs.js.map +1 -1
  60. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isHandlerKind.js.map +1 -1
  61. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isIterable.cjs.js.map +1 -1
  62. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isIterable.js.map +1 -1
  63. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isObject.cjs.js.map +1 -1
  64. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isObject.js.map +1 -1
  65. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isStringEqual.cjs.js.map +1 -1
  66. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isStringEqual.js.map +1 -1
  67. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/jsonParse.cjs.js.map +1 -1
  68. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/jsonParse.js.map +1 -1
  69. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/mergeRight.cjs.js.map +1 -1
  70. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/mergeRight.js.map +1 -1
  71. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/pipeEvents.cjs.js.map +1 -1
  72. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/pipeEvents.js.map +1 -1
  73. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/toReadonlyArray.cjs.js.map +1 -1
  74. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/toReadonlyArray.js.map +1 -1
  75. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.cjs.js.map +1 -1
  76. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.js.map +1 -1
  77. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getTimestamp.cjs.js.map +1 -1
  78. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getTimestamp.js.map +1 -1
  79. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeRequest.cjs.js.map +1 -1
  80. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeRequest.js.map +1 -1
  81. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeResponse.cjs.js.map +1 -1
  82. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeResponse.js.map +1 -1
  83. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/matchRequestUrl.cjs.js.map +1 -1
  84. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/matchRequestUrl.js.map +1 -1
  85. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/normalizePath.cjs.js.map +1 -1
  86. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/normalizePath.js.map +1 -1
  87. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/getRequestCookies.cjs.js.map +1 -1
  88. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/getRequestCookies.js.map +1 -1
  89. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/onUnhandledRequest.cjs.js.map +1 -1
  90. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/onUnhandledRequest.js.map +1 -1
  91. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/storeResponseCookies.cjs.js.map +1 -1
  92. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/storeResponseCookies.js.map +1 -1
  93. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/toPublicUrl.cjs.js.map +1 -1
  94. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/toPublicUrl.js.map +1 -1
  95. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/cleanUrl.cjs.js.map +1 -1
  96. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/cleanUrl.js.map +1 -1
  97. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.cjs.js.map +1 -1
  98. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.js.map +1 -1
  99. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.cjs.js.map +1 -1
  100. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.js.map +1 -1
  101. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/handleWebSocketEvent.cjs.js.map +1 -1
  102. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/handleWebSocketEvent.js.map +1 -1
  103. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/webSocketInterceptor.cjs.js.map +1 -1
  104. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/webSocketInterceptor.js.map +1 -1
  105. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/node/index.cjs.js.map +1 -1
  106. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/node/index.d.d.ts +1 -1
  107. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/node/index.js.map +1 -1
  108. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/cookie.cjs.js.map +1 -1
  109. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/cookie.js.map +1 -1
  110. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/statuses.cjs.js.map +1 -1
  111. package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/statuses.js.map +1 -1
  112. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/if.d.d.ts +3 -3
  113. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/is-any.d.d.ts +2 -2
  114. package/dist/node_modules/.pnpm/type-fest@5.3.0/node_modules/type-fest/source/is-never.d.d.ts +56 -0
  115. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/is-optional-key-of.d.d.ts +4 -4
  116. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/merge.d.d.ts +2 -2
  117. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/omit-index-signature.d.d.ts +17 -20
  118. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/optional-keys-of.d.d.ts +4 -4
  119. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/required-keys-of.d.d.ts +10 -4
  120. package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/simplify.d.d.ts +2 -1
  121. package/package.json +1 -1
  122. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.cjs.js.map +0 -1
  123. package/dist/node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/utils/cookieStore.js.map +0 -1
  124. package/dist/node_modules/.pnpm/type-fest@5.2.0/node_modules/type-fest/source/is-never.d.d.ts +0 -44
  125. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/HttpResponse-DC89RDb7.d.d.ts +0 -0
  126. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/HttpResponse.cjs.js +0 -0
  127. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/HttpResponse.js +0 -0
  128. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/SetupApi.cjs.js +0 -0
  129. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/SetupApi.d.d.ts +0 -0
  130. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/SetupApi.js +0 -0
  131. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/HttpHandler.cjs.js +0 -0
  132. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/HttpHandler.d.d.ts +0 -0
  133. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/HttpHandler.js +0 -0
  134. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/RequestHandler.cjs.js +0 -0
  135. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/RequestHandler.js +0 -0
  136. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/handlers/WebSocketHandler.d.d.ts +0 -0
  137. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/http.cjs.js +0 -0
  138. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/http.js +0 -0
  139. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/index.cjs.js +0 -0
  140. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/index.js +0 -0
  141. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/isCommonAssetRequest.cjs.js +0 -0
  142. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/isCommonAssetRequest.js +0 -0
  143. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/sharedOptions.d.d.ts +0 -0
  144. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/typeUtils.d.d.ts +0 -0
  145. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/HttpResponse/decorators.cjs.js +0 -0
  146. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/HttpResponse/decorators.js +0 -0
  147. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/executeHandlers.cjs.js +0 -0
  148. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/executeHandlers.js +0 -0
  149. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/handleRequest.cjs.js +0 -0
  150. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/handleRequest.js +0 -0
  151. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/Disposable.cjs.js +0 -0
  152. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/Disposable.d.d.ts +0 -0
  153. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/Disposable.js +0 -0
  154. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/checkGlobals.cjs.js +0 -0
  155. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/checkGlobals.js +0 -0
  156. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/devUtils.cjs.js +0 -0
  157. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/devUtils.js +0 -0
  158. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/getCallFrame.cjs.js +0 -0
  159. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/getCallFrame.js +0 -0
  160. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isHandlerKind.cjs.js +0 -0
  161. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isHandlerKind.js +0 -0
  162. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isIterable.cjs.js +0 -0
  163. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isIterable.d.d.ts +0 -0
  164. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isIterable.js +0 -0
  165. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isObject.cjs.js +0 -0
  166. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isObject.js +0 -0
  167. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isStringEqual.cjs.js +0 -0
  168. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/isStringEqual.js +0 -0
  169. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/jsonParse.cjs.js +0 -0
  170. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/jsonParse.js +0 -0
  171. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/mergeRight.cjs.js +0 -0
  172. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/mergeRight.js +0 -0
  173. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/pipeEvents.cjs.js +0 -0
  174. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/pipeEvents.js +0 -0
  175. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/toReadonlyArray.cjs.js +0 -0
  176. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/internal/toReadonlyArray.js +0 -0
  177. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.cjs.js +0 -0
  178. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getStatusCodeColor.js +0 -0
  179. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getTimestamp.cjs.js +0 -0
  180. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/getTimestamp.js +0 -0
  181. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeRequest.cjs.js +0 -0
  182. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeRequest.js +0 -0
  183. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeResponse.cjs.js +0 -0
  184. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/logging/serializeResponse.js +0 -0
  185. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/matchRequestUrl.cjs.js +0 -0
  186. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/matchRequestUrl.d.d.ts +0 -0
  187. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/matchRequestUrl.js +0 -0
  188. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/normalizePath.cjs.js +0 -0
  189. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/matching/normalizePath.js +0 -0
  190. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/getRequestCookies.cjs.js +0 -0
  191. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/getRequestCookies.js +0 -0
  192. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/onUnhandledRequest.cjs.js +0 -0
  193. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/onUnhandledRequest.d.d.ts +0 -0
  194. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/onUnhandledRequest.js +0 -0
  195. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/storeResponseCookies.cjs.js +0 -0
  196. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/storeResponseCookies.js +0 -0
  197. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/toPublicUrl.cjs.js +0 -0
  198. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/request/toPublicUrl.js +0 -0
  199. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/cleanUrl.cjs.js +0 -0
  200. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/cleanUrl.js +0 -0
  201. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.cjs.js +0 -0
  202. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/getAbsoluteUrl.js +0 -0
  203. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.cjs.js +0 -0
  204. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/utils/url/isAbsoluteUrl.js +0 -0
  205. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/handleWebSocketEvent.cjs.js +0 -0
  206. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/handleWebSocketEvent.js +0 -0
  207. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/webSocketInterceptor.cjs.js +0 -0
  208. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/core/ws/webSocketInterceptor.js +0 -0
  209. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/node/index.cjs.js +0 -0
  210. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/node/index.js +0 -0
  211. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/cookie.cjs.js +0 -0
  212. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/cookie.js +0 -0
  213. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/statuses.cjs.js +0 -0
  214. /package/dist/node_modules/.pnpm/{msw@2.12.3_@types_node@20.19.25_typescript@5.4.5 → msw@2.12.4_@types_node@20.19.25_typescript@5.4.5}/node_modules/msw/lib/shims/statuses.js +0 -0
  215. /package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/internal/object.d.d.ts +0 -0
  216. /package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/internal/type.d.d.ts +0 -0
  217. /package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/partial-deep.d.d.ts +0 -0
  218. /package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/pick-index-signature.d.d.ts +0 -0
  219. /package/dist/node_modules/.pnpm/{type-fest@5.2.0 → type-fest@5.3.0}/node_modules/type-fest/source/primitive.d.d.ts +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime");require("react");var t=require("@mui/material/styles"),s=require("@mui/material/Box"),r=require("../../../atoms/Card/index.cjs.js"),i=require("../../../atoms/CircularProgress/index.cjs.js"),a=require("@mui/material/Grid2"),o=require("../../../molecules/EmptyState/index.cjs.js"),l=require("../../../../icons/CheckmarkCircleSolid/index.cjs.js"),n=require("../hooks/useAssets.cjs.js");const d=t.styled(a)((()=>({listStyle:"none",margin:0,padding:0}))),c=t.styled(s,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),m=t.styled(l)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),p=t.styled(s)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),u=t.styled(s)((({theme:e})=>({padding:e.spacing(4)})));module.exports=({orgId:t,selectedAssets:s,onAssetClick:l,enabled:x=!0})=>{const{data:g,isLoading:j,error:h}=n.useGetAssets(t,x);return j?e.jsx(p,{children:e.jsx(i.CircularProgress,{size:"large"})}):h?e.jsx(u,{children:e.jsx(o.EmptyState,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):g&&0!==g.length?e.jsx(d,{container:!0,component:"ul",spacing:1,children:g.map((t=>{const i=s.has(t.id);return e.jsx(a,{"aria-selected":i,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e.jsxs(c,{"aria-label":"Select "+t.fileName,onClick:()=>l(t),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),l(t))},role:"button",selected:i,tabIndex:0,children:[i&&e.jsx(m,{size:"lg"}),e.jsx(r,{content:t.fileName,heading:"",imageAlt:t.metadata.altText,imageSrc:t.url})]})},t.id)}))}):e.jsx(u,{children:e.jsx(o.EmptyState,{description:"No assets available to display.",title:"No assets found"})})};
1
+ "use strict";var e=require("react/jsx-runtime");require("react");var t=require("@mui/material/styles"),s=require("@mui/material/Box"),r=require("../../../atoms/Card/index.cjs.js"),i=require("../../../atoms/CircularProgress/index.cjs.js"),a=require("@mui/material/Grid2"),o=require("../../../molecules/EmptyState/index.cjs.js"),l=require("../../../../icons/CheckmarkCircleSolid/index.cjs.js"),n=require("../hooks/useAssets.cjs.js");const d=t.styled(a)((()=>({listStyle:"none",margin:0,padding:0}))),c=t.styled(s,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),m=t.styled(l)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),p=t.styled(s)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),u=t.styled(s)((({theme:e})=>({padding:e.spacing(4)})));module.exports=({orgId:t,brandId:s,enabled:l,selectedAssets:x,onAssetClick:g})=>{const{data:j,isLoading:h,error:y}=n.useGetAssets(t,l,s);return h?e.jsx(p,{children:e.jsx(i.CircularProgress,{size:"large"})}):y?e.jsx(u,{children:e.jsx(o.EmptyState,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):j&&0!==j.length?e.jsx(d,{container:!0,component:"ul",spacing:1,children:j.map((t=>{const s=x.has(t.id);return e.jsx(a,{"aria-selected":s,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:e.jsxs(c,{"aria-label":"Select "+t.fileName,onClick:()=>g(t),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),g(t))},role:"button",selected:s,tabIndex:0,children:[s&&e.jsx(m,{size:"lg"}),e.jsx(r,{content:t.fileName,heading:"",imageAlt:t.metadata.altText,imageSrc:t.url})]})},t.id)}))}):e.jsx(u,{children:e.jsx(o.EmptyState,{description:"No assets available to display.",title:"No assets found"})})};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/LibraryTabContent/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport CircularProgress from '@fd/components/atoms/CircularProgress';\nimport Grid from '@fd/components/atoms/Grid';\nimport EmptyState from '@fd/components/molecules/EmptyState';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport { useGetAssets } from '../hooks/useAssets';\nimport type { Asset } from '../types';\n\nconst StyledList = styled(Grid)<{ component: string }>(() => ({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\nconst StyledLoadingContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '200px',\n padding: theme.spacing(4),\n}));\n\nconst StyledErrorContainer = styled(Box)(({ theme }) => ({\n padding: theme.spacing(4),\n}));\n\n/**\n * Props for the LibraryTabContent component.\n * @param orgId - Organization ID for fetching assets\n * @param selectedAssets - Map of selected assets (id -> Asset) for O(1) lookup performance\n * @param onAssetClick - Callback when an asset is clicked\n * @param enabled - Whether the component is enabled (for conditional fetching)\n */\nexport interface LibraryTabContentProps {\n /** Organization ID for fetching assets */\n orgId: string;\n /** Map of selected assets (id -> Asset) for O(1) lookup performance */\n selectedAssets: Map<string, Asset>;\n /** Callback when an asset is clicked */\n onAssetClick: (asset: Asset) => void;\n /** Whether the component is enabled (for conditional fetching) */\n enabled?: boolean;\n}\n\n/**\n * LibraryTab component displays a grid of assets that can be selected.\n * Handles fetching assets internally and displays loading/error states.\n *\n * @param props - The component props\n * @returns The library tab content\n */\nconst LibraryTabContent: React.FC<LibraryTabContentProps> = ({\n orgId,\n selectedAssets,\n onAssetClick,\n enabled = true,\n}) => {\n const { data: assets, isLoading, error } = useGetAssets(orgId, enabled);\n\n if (isLoading) {\n return (\n <StyledLoadingContainer>\n <CircularProgress size=\"large\" />\n </StyledLoadingContainer>\n );\n }\n\n if (error) {\n return (\n <StyledErrorContainer>\n <EmptyState\n description=\"Failed to load assets. Please try again later.\"\n title=\"Error loading assets\"\n />\n </StyledErrorContainer>\n );\n }\n\n if (!assets || assets.length === 0) {\n return (\n <StyledErrorContainer>\n <EmptyState description=\"No assets available to display.\" title=\"No assets found\" />\n </StyledErrorContainer>\n );\n }\n\n return (\n <StyledList container component=\"ul\" spacing={1}>\n {assets.map((asset: Asset) => {\n const isSelected = selectedAssets.has(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => onAssetClick(asset)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAssetClick(asset);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </StyledList>\n );\n};\n\nexport default LibraryTabContent;\n"],"names":["StyledList","styled","Grid","listStyle","margin","padding","StyledCardWrapper","Box","shouldForwardProp","prop","theme","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","spacing","left","zIndex","color","icon","fill","common","white","StyledLoadingContainer","display","justifyContent","alignItems","minHeight","StyledErrorContainer","orgId","selectedAssets","onAssetClick","enabled","data","assets","isLoading","error","useGetAssets","_jsx","children","CircularProgress","size","EmptyState","description","title","length","container","component","map","asset","isSelected","has","id","widescreen","desktop","mobile","tablet","_jsxs","fileName","onClick","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"+aAcA,MAAMA,EAAaC,EAAAA,OAAOC,EAAPD,EAAoC,KAAA,CACrDE,UAAW,OACXC,OAAQ,EACRC,QAAS,MAGLC,EAAoBL,EAAAA,OAAOM,EAAK,CACpCC,kBAAoBC,GAAkB,aAATA,GADLR,EAEC,EAAGS,QAAOC,eAAU,CAC7CC,MAAO,OACPC,OAAQ,UACRC,SAAU,WACV,kBAAmB,CAEjBC,YAAa,MACbC,YAAaL,EAAWD,EAAMO,QAAQC,SAASC,OAAO,mBAAqB,cAG3EC,UAAWT,EAAW,OAAS,mBAAmBD,EAAMO,QAAQC,SAASC,OAAO,kBAElF,gCAAiC,CAC/BH,YAAaN,EAAMO,QAAQC,SAASC,OAAO,mBAC3CC,UAAW,YAITC,EAAsBpB,EAAAA,OAAOqB,EAAPrB,EAAiC,EAAGS,YAAO,CACrEI,SAAU,WACVS,IAAKb,EAAMc,QAAQ,GACnBC,KAAMf,EAAMc,QAAQ,GACpBE,OAAQ,EACRC,MAAOjB,EAAMO,QAAQC,SAASU,KAAK,gBACnC,WAAY,CACVC,KAAMnB,EAAMO,QAAQa,OAAOC,WAIzBC,EAAyB/B,EAAAA,OAAOM,EAAPN,EAAY,EAAGS,YAAO,CACnDuB,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZC,UAAW,QACX/B,QAASK,EAAMc,QAAQ,OAGnBa,EAAuBpC,EAAAA,OAAOM,EAAPN,EAAY,EAAGS,YAAO,CACjDL,QAASK,EAAMc,QAAQ,sBA4BmC,EAC1Dc,QACAC,iBACAC,eACAC,WAAU,MAEV,MAAQC,KAAMC,EAAMC,UAAEA,EAASC,MAAEA,GAAUC,EAAAA,aAAaR,EAAOG,GAE/D,OAAIG,EAEAG,EAAAA,IAACf,EAAsB,CAAAgB,SACrBD,EAAAA,IAACE,EAAAA,iBAAgB,CAACC,KAAK,YAKzBL,EAEAE,MAACV,EAAoB,CAAAW,SACnBD,EAAAA,IAACI,EAAAA,WAAU,CACTC,YAAY,iDACZC,MAAM,2BAMTV,GAA4B,IAAlBA,EAAOW,OASpBP,EAAAA,IAAC/C,EAAU,CAACuD,WAAS,EAACC,UAAU,KAAKhC,QAAS,WAC3CmB,EAAOc,KAAKC,IACX,MAAMC,EAAapB,EAAeqB,IAAIF,EAAMG,IAC5C,OACEd,EAAAA,IAAC7C,EAAI,CAAA,gBAEYyD,EACfH,UAAU,KACVN,KAAM,CAAEY,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,GAAGjB,SAEzDkB,EAAAA,KAAC5D,EAAiB,CAAA,aACJ,UAAYoD,EAAMS,SAC9BC,QAAS,IAAM5B,EAAakB,GAC5BW,UAAYC,IACI,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACzBD,EAAEE,iBACFhC,EAAakB,KAGjBe,KAAK,SACL9D,SAAUgD,EACVe,SAAU,EAAC1B,SAAA,CAEVW,GAAcZ,EAAAA,IAAC1B,EAAmB,CAAC6B,KAAK,OACzCH,EAAAA,IAAC4B,EAAI,CACHC,QAASlB,EAAMS,SACfU,QAAQ,GACRC,SAAUpB,EAAMqB,SAASC,QACzBC,SAAUvB,EAAMwB,UAvBfxB,EAAMG,SAZjBd,MAACV,EAAoB,CAAAW,SACnBD,EAAAA,IAACI,EAAAA,WAAU,CAACC,YAAY,kCAAkCC,MAAM"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/LibraryTabContent/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport CircularProgress from '@fd/components/atoms/CircularProgress';\nimport Grid from '@fd/components/atoms/Grid';\nimport EmptyState from '@fd/components/molecules/EmptyState';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport { useGetAssets } from '../hooks/useAssets';\nimport type { Asset } from '../types';\n\nconst StyledList = styled(Grid)<{ component: string }>(() => ({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\nconst StyledLoadingContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '200px',\n padding: theme.spacing(4),\n}));\n\nconst StyledErrorContainer = styled(Box)(({ theme }) => ({\n padding: theme.spacing(4),\n}));\n\n/**\n * Props for the LibraryTabContent component.\n * @param orgId - Organization ID for fetching assets\n * @param brandId - Brand ID for fetching assets\n * @param enabled - Whether the component is enabled (for conditional fetching)\n * @param selectedAssets - Map of selected assets (id -> Asset) for O(1) lookup performance\n * @param onAssetClick - Callback when an asset is clicked\n */\nexport interface LibraryTabContentProps {\n /** Organization ID for fetching assets */\n orgId: string;\n /** Brand ID for fetching assets */\n brandId?: string;\n /** Whether the component is enabled (for conditional fetching) */\n enabled: boolean;\n /** Map of selected assets (id -> Asset) for O(1) lookup performance */\n selectedAssets: Map<string, Asset>;\n /** Callback when an asset is clicked */\n onAssetClick: (asset: Asset) => void;\n}\n\n/**\n * LibraryTab component displays a grid of assets that can be selected.\n * Handles fetching assets internally and displays loading/error states.\n *\n * @param props - The component props\n * @returns The library tab content\n */\nconst LibraryTabContent: React.FC<LibraryTabContentProps> = ({\n orgId,\n brandId,\n enabled,\n selectedAssets,\n onAssetClick,\n}) => {\n const { data: assets, isLoading, error } = useGetAssets(orgId, enabled, brandId);\n\n if (isLoading) {\n return (\n <StyledLoadingContainer>\n <CircularProgress size=\"large\" />\n </StyledLoadingContainer>\n );\n }\n\n if (error) {\n return (\n <StyledErrorContainer>\n <EmptyState\n description=\"Failed to load assets. Please try again later.\"\n title=\"Error loading assets\"\n />\n </StyledErrorContainer>\n );\n }\n\n if (!assets || assets.length === 0) {\n return (\n <StyledErrorContainer>\n <EmptyState description=\"No assets available to display.\" title=\"No assets found\" />\n </StyledErrorContainer>\n );\n }\n\n return (\n <StyledList container component=\"ul\" spacing={1}>\n {assets.map((asset: Asset) => {\n const isSelected = selectedAssets.has(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => onAssetClick(asset)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAssetClick(asset);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </StyledList>\n );\n};\n\nexport default LibraryTabContent;\n"],"names":["StyledList","styled","Grid","listStyle","margin","padding","StyledCardWrapper","Box","shouldForwardProp","prop","theme","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","spacing","left","zIndex","color","icon","fill","common","white","StyledLoadingContainer","display","justifyContent","alignItems","minHeight","StyledErrorContainer","orgId","brandId","enabled","selectedAssets","onAssetClick","data","assets","isLoading","error","useGetAssets","_jsx","children","CircularProgress","size","EmptyState","description","title","length","container","component","map","asset","isSelected","has","id","widescreen","desktop","mobile","tablet","_jsxs","fileName","onClick","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"+aAcA,MAAMA,EAAaC,EAAAA,OAAOC,EAAPD,EAAoC,KAAA,CACrDE,UAAW,OACXC,OAAQ,EACRC,QAAS,MAGLC,EAAoBL,EAAAA,OAAOM,EAAK,CACpCC,kBAAoBC,GAAkB,aAATA,GADLR,EAEC,EAAGS,QAAOC,eAAU,CAC7CC,MAAO,OACPC,OAAQ,UACRC,SAAU,WACV,kBAAmB,CAEjBC,YAAa,MACbC,YAAaL,EAAWD,EAAMO,QAAQC,SAASC,OAAO,mBAAqB,cAG3EC,UAAWT,EAAW,OAAS,mBAAmBD,EAAMO,QAAQC,SAASC,OAAO,kBAElF,gCAAiC,CAC/BH,YAAaN,EAAMO,QAAQC,SAASC,OAAO,mBAC3CC,UAAW,YAITC,EAAsBpB,EAAAA,OAAOqB,EAAPrB,EAAiC,EAAGS,YAAO,CACrEI,SAAU,WACVS,IAAKb,EAAMc,QAAQ,GACnBC,KAAMf,EAAMc,QAAQ,GACpBE,OAAQ,EACRC,MAAOjB,EAAMO,QAAQC,SAASU,KAAK,gBACnC,WAAY,CACVC,KAAMnB,EAAMO,QAAQa,OAAOC,WAIzBC,EAAyB/B,EAAAA,OAAOM,EAAPN,EAAY,EAAGS,YAAO,CACnDuB,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZC,UAAW,QACX/B,QAASK,EAAMc,QAAQ,OAGnBa,EAAuBpC,EAAAA,OAAOM,EAAPN,EAAY,EAAGS,YAAO,CACjDL,QAASK,EAAMc,QAAQ,sBA+BmC,EAC1Dc,QACAC,UACAC,UACAC,iBACAC,mBAEA,MAAQC,KAAMC,EAAMC,UAAEA,EAASC,MAAEA,GAAUC,eAAaT,EAAOE,EAASD,GAExE,OAAIM,EAEAG,EAAAA,IAAChB,EAAsB,CAAAiB,SACrBD,EAAAA,IAACE,EAAAA,iBAAgB,CAACC,KAAK,YAKzBL,EAEAE,MAACX,EAAoB,CAAAY,SACnBD,EAAAA,IAACI,EAAAA,WAAU,CACTC,YAAY,iDACZC,MAAM,2BAMTV,GAA4B,IAAlBA,EAAOW,OASpBP,EAAAA,IAAChD,EAAU,CAACwD,WAAS,EAACC,UAAU,KAAKjC,QAAS,WAC3CoB,EAAOc,KAAKC,IACX,MAAMC,EAAanB,EAAeoB,IAAIF,EAAMG,IAC5C,OACEd,EAAAA,IAAC9C,EAAI,CAAA,gBAEY0D,EACfH,UAAU,KACVN,KAAM,CAAEY,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,GAAGjB,SAEzDkB,EAAAA,KAAC7D,EAAiB,CAAA,aACJ,UAAYqD,EAAMS,SAC9BC,QAAS,IAAM3B,EAAaiB,GAC5BW,UAAYC,IACI,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACzBD,EAAEE,iBACF/B,EAAaiB,KAGjBe,KAAK,SACL/D,SAAUiD,EACVe,SAAU,EAAC1B,SAAA,CAEVW,GAAcZ,EAAAA,IAAC3B,EAAmB,CAAC8B,KAAK,OACzCH,EAAAA,IAAC4B,EAAI,CACHC,QAASlB,EAAMS,SACfU,QAAQ,GACRC,SAAUpB,EAAMqB,SAASC,QACzBC,SAAUvB,EAAMwB,UAvBfxB,EAAMG,SAZjBd,MAACX,EAAoB,CAAAY,SACnBD,EAAAA,IAACI,EAAAA,WAAU,CAACC,YAAY,kCAAkCC,MAAM"}
@@ -4,19 +4,22 @@ import { Asset } from '../types/index.js';
4
4
  /**
5
5
  * Props for the LibraryTabContent component.
6
6
  * @param orgId - Organization ID for fetching assets
7
+ * @param brandId - Brand ID for fetching assets
8
+ * @param enabled - Whether the component is enabled (for conditional fetching)
7
9
  * @param selectedAssets - Map of selected assets (id -> Asset) for O(1) lookup performance
8
10
  * @param onAssetClick - Callback when an asset is clicked
9
- * @param enabled - Whether the component is enabled (for conditional fetching)
10
11
  */
11
12
  interface LibraryTabContentProps {
12
13
  /** Organization ID for fetching assets */
13
14
  orgId: string;
15
+ /** Brand ID for fetching assets */
16
+ brandId?: string;
17
+ /** Whether the component is enabled (for conditional fetching) */
18
+ enabled: boolean;
14
19
  /** Map of selected assets (id -> Asset) for O(1) lookup performance */
15
20
  selectedAssets: Map<string, Asset>;
16
21
  /** Callback when an asset is clicked */
17
22
  onAssetClick: (asset: Asset) => void;
18
- /** Whether the component is enabled (for conditional fetching) */
19
- enabled?: boolean;
20
23
  }
21
24
  /**
22
25
  * LibraryTab component displays a grid of assets that can be selected.
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import"react";import{styled as o}from"@mui/material/styles";import i from"@mui/material/Box";import r from"../../../atoms/Card/index.js";import{CircularProgress as a}from"../../../atoms/CircularProgress/index.js";import s from"@mui/material/Grid2";import{EmptyState as n}from"../../../molecules/EmptyState/index.js";import l from"../../../../icons/CheckmarkCircleSolid/index.js";import{useGetAssets as d}from"../hooks/useAssets.js";const m=o(s)((()=>({listStyle:"none",margin:0,padding:0}))),c=o(i,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),p=o(l)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),g=o(i)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),h=o(i)((({theme:e})=>({padding:e.spacing(4)}))),u=({orgId:o,selectedAssets:i,onAssetClick:l,enabled:u=!0})=>{const{data:f,isLoading:x,error:k}=d(o,u);return x?e(g,{children:e(a,{size:"large"})}):k?e(h,{children:e(n,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):f&&0!==f.length?e(m,{container:!0,component:"ul",spacing:1,children:f.map((o=>{const a=i.has(o.id);return e(s,{"aria-selected":a,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:t(c,{"aria-label":"Select "+o.fileName,onClick:()=>l(o),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),l(o))},role:"button",selected:a,tabIndex:0,children:[a&&e(p,{size:"lg"}),e(r,{content:o.fileName,heading:"",imageAlt:o.metadata.altText,imageSrc:o.url})]})},o.id)}))}):e(h,{children:e(n,{description:"No assets available to display.",title:"No assets found"})})};export{u as default};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import"react";import{styled as o}from"@mui/material/styles";import i from"@mui/material/Box";import r from"../../../atoms/Card/index.js";import{CircularProgress as a}from"../../../atoms/CircularProgress/index.js";import s from"@mui/material/Grid2";import{EmptyState as n}from"../../../molecules/EmptyState/index.js";import l from"../../../../icons/CheckmarkCircleSolid/index.js";import{useGetAssets as d}from"../hooks/useAssets.js";const m=o(s)((()=>({listStyle:"none",margin:0,padding:0}))),c=o(i,{shouldForwardProp:e=>"selected"!==e})((({theme:e,selected:t})=>({width:"100%",cursor:"pointer",position:"relative","& .MuiCard-root":{borderWidth:"2px",borderColor:t?e.palette.semantic.stroke["stroke-selected"]:"transparent",boxShadow:t?"none":`inset 0 0 0 1px ${e.palette.semantic.stroke["stroke-weak"]}`},"&:focus-visible .MuiCard-root":{borderColor:e.palette.semantic.stroke["stroke-selected"],boxShadow:"none"}}))),p=o(l)((({theme:e})=>({position:"absolute",top:e.spacing(2),left:e.spacing(2),zIndex:1,color:e.palette.semantic.icon["icon-primary"],"& circle":{fill:e.palette.common.white}}))),g=o(i)((({theme:e})=>({display:"flex",justifyContent:"center",alignItems:"center",minHeight:"200px",padding:e.spacing(4)}))),h=o(i)((({theme:e})=>({padding:e.spacing(4)}))),u=({orgId:o,brandId:i,enabled:l,selectedAssets:u,onAssetClick:f})=>{const{data:x,isLoading:b,error:k}=d(o,l,i);return b?e(g,{children:e(a,{size:"large"})}):k?e(h,{children:e(n,{description:"Failed to load assets. Please try again later.",title:"Error loading assets"})}):x&&0!==x.length?e(m,{container:!0,component:"ul",spacing:1,children:x.map((o=>{const i=u.has(o.id);return e(s,{"aria-selected":i,component:"li",size:{widescreen:3,desktop:3,mobile:6,tablet:4},children:t(c,{"aria-label":"Select "+o.fileName,onClick:()=>f(o),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),f(o))},role:"button",selected:i,tabIndex:0,children:[i&&e(p,{size:"lg"}),e(r,{content:o.fileName,heading:"",imageAlt:o.metadata.altText,imageSrc:o.url})]})},o.id)}))}):e(h,{children:e(n,{description:"No assets available to display.",title:"No assets found"})})};export{u as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/organisms/AssetManager/LibraryTabContent/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport CircularProgress from '@fd/components/atoms/CircularProgress';\nimport Grid from '@fd/components/atoms/Grid';\nimport EmptyState from '@fd/components/molecules/EmptyState';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport { useGetAssets } from '../hooks/useAssets';\nimport type { Asset } from '../types';\n\nconst StyledList = styled(Grid)<{ component: string }>(() => ({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\nconst StyledLoadingContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '200px',\n padding: theme.spacing(4),\n}));\n\nconst StyledErrorContainer = styled(Box)(({ theme }) => ({\n padding: theme.spacing(4),\n}));\n\n/**\n * Props for the LibraryTabContent component.\n * @param orgId - Organization ID for fetching assets\n * @param selectedAssets - Map of selected assets (id -> Asset) for O(1) lookup performance\n * @param onAssetClick - Callback when an asset is clicked\n * @param enabled - Whether the component is enabled (for conditional fetching)\n */\nexport interface LibraryTabContentProps {\n /** Organization ID for fetching assets */\n orgId: string;\n /** Map of selected assets (id -> Asset) for O(1) lookup performance */\n selectedAssets: Map<string, Asset>;\n /** Callback when an asset is clicked */\n onAssetClick: (asset: Asset) => void;\n /** Whether the component is enabled (for conditional fetching) */\n enabled?: boolean;\n}\n\n/**\n * LibraryTab component displays a grid of assets that can be selected.\n * Handles fetching assets internally and displays loading/error states.\n *\n * @param props - The component props\n * @returns The library tab content\n */\nconst LibraryTabContent: React.FC<LibraryTabContentProps> = ({\n orgId,\n selectedAssets,\n onAssetClick,\n enabled = true,\n}) => {\n const { data: assets, isLoading, error } = useGetAssets(orgId, enabled);\n\n if (isLoading) {\n return (\n <StyledLoadingContainer>\n <CircularProgress size=\"large\" />\n </StyledLoadingContainer>\n );\n }\n\n if (error) {\n return (\n <StyledErrorContainer>\n <EmptyState\n description=\"Failed to load assets. Please try again later.\"\n title=\"Error loading assets\"\n />\n </StyledErrorContainer>\n );\n }\n\n if (!assets || assets.length === 0) {\n return (\n <StyledErrorContainer>\n <EmptyState description=\"No assets available to display.\" title=\"No assets found\" />\n </StyledErrorContainer>\n );\n }\n\n return (\n <StyledList container component=\"ul\" spacing={1}>\n {assets.map((asset: Asset) => {\n const isSelected = selectedAssets.has(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => onAssetClick(asset)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAssetClick(asset);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </StyledList>\n );\n};\n\nexport default LibraryTabContent;\n"],"names":["StyledList","styled","Grid","listStyle","margin","padding","StyledCardWrapper","Box","shouldForwardProp","prop","theme","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","spacing","left","zIndex","color","icon","fill","common","white","StyledLoadingContainer","display","justifyContent","alignItems","minHeight","StyledErrorContainer","LibraryTabContent","orgId","selectedAssets","onAssetClick","enabled","data","assets","isLoading","error","useGetAssets","_jsx","children","CircularProgress","size","EmptyState","description","title","length","container","component","map","asset","isSelected","has","id","widescreen","desktop","mobile","tablet","_jsxs","fileName","onClick","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"keAcA,MAAMA,EAAaC,EAAOC,EAAPD,EAAoC,KAAA,CACrDE,UAAW,OACXC,OAAQ,EACRC,QAAS,MAGLC,EAAoBL,EAAOM,EAAK,CACpCC,kBAAoBC,GAAkB,aAATA,GADLR,EAEC,EAAGS,QAAOC,eAAU,CAC7CC,MAAO,OACPC,OAAQ,UACRC,SAAU,WACV,kBAAmB,CAEjBC,YAAa,MACbC,YAAaL,EAAWD,EAAMO,QAAQC,SAASC,OAAO,mBAAqB,cAG3EC,UAAWT,EAAW,OAAS,mBAAmBD,EAAMO,QAAQC,SAASC,OAAO,kBAElF,gCAAiC,CAC/BH,YAAaN,EAAMO,QAAQC,SAASC,OAAO,mBAC3CC,UAAW,YAITC,EAAsBpB,EAAOqB,EAAPrB,EAAiC,EAAGS,YAAO,CACrEI,SAAU,WACVS,IAAKb,EAAMc,QAAQ,GACnBC,KAAMf,EAAMc,QAAQ,GACpBE,OAAQ,EACRC,MAAOjB,EAAMO,QAAQC,SAASU,KAAK,gBACnC,WAAY,CACVC,KAAMnB,EAAMO,QAAQa,OAAOC,WAIzBC,EAAyB/B,EAAOM,EAAPN,EAAY,EAAGS,YAAO,CACnDuB,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZC,UAAW,QACX/B,QAASK,EAAMc,QAAQ,OAGnBa,EAAuBpC,EAAOM,EAAPN,EAAY,EAAGS,YAAO,CACjDL,QAASK,EAAMc,QAAQ,OA4BnBc,EAAsD,EAC1DC,QACAC,iBACAC,eACAC,WAAU,MAEV,MAAQC,KAAMC,EAAMC,UAAEA,EAASC,MAAEA,GAAUC,EAAaR,EAAOG,GAE/D,OAAIG,EAEAG,EAAChB,EAAsB,CAAAiB,SACrBD,EAACE,EAAgB,CAACC,KAAK,YAKzBL,EAEAE,EAACX,EAAoB,CAAAY,SACnBD,EAACI,EAAU,CACTC,YAAY,iDACZC,MAAM,2BAMTV,GAA4B,IAAlBA,EAAOW,OASpBP,EAAChD,EAAU,CAACwD,WAAS,EAACC,UAAU,KAAKjC,QAAS,WAC3CoB,EAAOc,KAAKC,IACX,MAAMC,EAAapB,EAAeqB,IAAIF,EAAMG,IAC5C,OACEd,EAAC9C,EAAI,CAAA,gBAEY0D,EACfH,UAAU,KACVN,KAAM,CAAEY,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,GAAGjB,SAEzDkB,EAAC7D,EAAiB,CAAA,aACJ,UAAYqD,EAAMS,SAC9BC,QAAS,IAAM5B,EAAakB,GAC5BW,UAAYC,IACI,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACzBD,EAAEE,iBACFhC,EAAakB,KAGjBe,KAAK,SACL/D,SAAUiD,EACVe,SAAU,EAAC1B,SAAA,CAEVW,GAAcZ,EAAC3B,EAAmB,CAAC8B,KAAK,OACzCH,EAAC4B,EAAI,CACHC,QAASlB,EAAMS,SACfU,QAAQ,GACRC,SAAUpB,EAAMqB,SAASC,QACzBC,SAAUvB,EAAMwB,UAvBfxB,EAAMG,SAZjBd,EAACX,EAAoB,CAAAY,SACnBD,EAACI,EAAU,CAACC,YAAY,kCAAkCC,MAAM"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/organisms/AssetManager/LibraryTabContent/index.tsx"],"sourcesContent":["import React from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Card from '@fd/components/atoms/Card';\nimport CircularProgress from '@fd/components/atoms/CircularProgress';\nimport Grid from '@fd/components/atoms/Grid';\nimport EmptyState from '@fd/components/molecules/EmptyState';\nimport CheckmarkCircleSolidIcon from '@fd/icons/CheckmarkCircleSolid';\n\nimport { useGetAssets } from '../hooks/useAssets';\nimport type { Asset } from '../types';\n\nconst StyledList = styled(Grid)<{ component: string }>(() => ({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n}));\n\nconst StyledCardWrapper = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'selected',\n})<{ selected?: boolean }>(({ theme, selected }) => ({\n width: '100%',\n cursor: 'pointer',\n position: 'relative',\n '& .MuiCard-root': {\n // Always use 2px border to prevent layout shift\n borderWidth: '2px',\n borderColor: selected ? theme.palette.semantic.stroke['stroke-selected'] : 'transparent',\n // Use box-shadow to create the visual 1px border when not selected\n // This prevents layout shift while maintaining the visual appearance\n boxShadow: selected ? 'none' : `inset 0 0 0 1px ${theme.palette.semantic.stroke['stroke-weak']}`,\n },\n '&:focus-visible .MuiCard-root': {\n borderColor: theme.palette.semantic.stroke['stroke-selected'],\n boxShadow: 'none',\n },\n}));\n\nconst StyledCheckmarkIcon = styled(CheckmarkCircleSolidIcon)(({ theme }) => ({\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 1,\n color: theme.palette.semantic.icon['icon-primary'],\n '& circle': {\n fill: theme.palette.common.white,\n },\n}));\n\nconst StyledLoadingContainer = styled(Box)(({ theme }) => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '200px',\n padding: theme.spacing(4),\n}));\n\nconst StyledErrorContainer = styled(Box)(({ theme }) => ({\n padding: theme.spacing(4),\n}));\n\n/**\n * Props for the LibraryTabContent component.\n * @param orgId - Organization ID for fetching assets\n * @param brandId - Brand ID for fetching assets\n * @param enabled - Whether the component is enabled (for conditional fetching)\n * @param selectedAssets - Map of selected assets (id -> Asset) for O(1) lookup performance\n * @param onAssetClick - Callback when an asset is clicked\n */\nexport interface LibraryTabContentProps {\n /** Organization ID for fetching assets */\n orgId: string;\n /** Brand ID for fetching assets */\n brandId?: string;\n /** Whether the component is enabled (for conditional fetching) */\n enabled: boolean;\n /** Map of selected assets (id -> Asset) for O(1) lookup performance */\n selectedAssets: Map<string, Asset>;\n /** Callback when an asset is clicked */\n onAssetClick: (asset: Asset) => void;\n}\n\n/**\n * LibraryTab component displays a grid of assets that can be selected.\n * Handles fetching assets internally and displays loading/error states.\n *\n * @param props - The component props\n * @returns The library tab content\n */\nconst LibraryTabContent: React.FC<LibraryTabContentProps> = ({\n orgId,\n brandId,\n enabled,\n selectedAssets,\n onAssetClick,\n}) => {\n const { data: assets, isLoading, error } = useGetAssets(orgId, enabled, brandId);\n\n if (isLoading) {\n return (\n <StyledLoadingContainer>\n <CircularProgress size=\"large\" />\n </StyledLoadingContainer>\n );\n }\n\n if (error) {\n return (\n <StyledErrorContainer>\n <EmptyState\n description=\"Failed to load assets. Please try again later.\"\n title=\"Error loading assets\"\n />\n </StyledErrorContainer>\n );\n }\n\n if (!assets || assets.length === 0) {\n return (\n <StyledErrorContainer>\n <EmptyState description=\"No assets available to display.\" title=\"No assets found\" />\n </StyledErrorContainer>\n );\n }\n\n return (\n <StyledList container component=\"ul\" spacing={1}>\n {assets.map((asset: Asset) => {\n const isSelected = selectedAssets.has(asset.id);\n return (\n <Grid\n key={asset.id}\n aria-selected={isSelected}\n component=\"li\"\n size={{ widescreen: 3, desktop: 3, mobile: 6, tablet: 4 }}\n >\n <StyledCardWrapper\n aria-label={'Select ' + asset.fileName} // TODO: translate this text when translate provider is added\n onClick={() => onAssetClick(asset)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onAssetClick(asset);\n }\n }}\n role=\"button\"\n selected={isSelected}\n tabIndex={0}\n >\n {isSelected && <StyledCheckmarkIcon size=\"lg\" />}\n <Card\n content={asset.fileName}\n heading=\"\"\n imageAlt={asset.metadata.altText}\n imageSrc={asset.url}\n />\n </StyledCardWrapper>\n </Grid>\n );\n })}\n </StyledList>\n );\n};\n\nexport default LibraryTabContent;\n"],"names":["StyledList","styled","Grid","listStyle","margin","padding","StyledCardWrapper","Box","shouldForwardProp","prop","theme","selected","width","cursor","position","borderWidth","borderColor","palette","semantic","stroke","boxShadow","StyledCheckmarkIcon","CheckmarkCircleSolidIcon","top","spacing","left","zIndex","color","icon","fill","common","white","StyledLoadingContainer","display","justifyContent","alignItems","minHeight","StyledErrorContainer","LibraryTabContent","orgId","brandId","enabled","selectedAssets","onAssetClick","data","assets","isLoading","error","useGetAssets","_jsx","children","CircularProgress","size","EmptyState","description","title","length","container","component","map","asset","isSelected","has","id","widescreen","desktop","mobile","tablet","_jsxs","fileName","onClick","onKeyDown","e","key","preventDefault","role","tabIndex","Card","content","heading","imageAlt","metadata","altText","imageSrc","url"],"mappings":"keAcA,MAAMA,EAAaC,EAAOC,EAAPD,EAAoC,KAAA,CACrDE,UAAW,OACXC,OAAQ,EACRC,QAAS,MAGLC,EAAoBL,EAAOM,EAAK,CACpCC,kBAAoBC,GAAkB,aAATA,GADLR,EAEC,EAAGS,QAAOC,eAAU,CAC7CC,MAAO,OACPC,OAAQ,UACRC,SAAU,WACV,kBAAmB,CAEjBC,YAAa,MACbC,YAAaL,EAAWD,EAAMO,QAAQC,SAASC,OAAO,mBAAqB,cAG3EC,UAAWT,EAAW,OAAS,mBAAmBD,EAAMO,QAAQC,SAASC,OAAO,kBAElF,gCAAiC,CAC/BH,YAAaN,EAAMO,QAAQC,SAASC,OAAO,mBAC3CC,UAAW,YAITC,EAAsBpB,EAAOqB,EAAPrB,EAAiC,EAAGS,YAAO,CACrEI,SAAU,WACVS,IAAKb,EAAMc,QAAQ,GACnBC,KAAMf,EAAMc,QAAQ,GACpBE,OAAQ,EACRC,MAAOjB,EAAMO,QAAQC,SAASU,KAAK,gBACnC,WAAY,CACVC,KAAMnB,EAAMO,QAAQa,OAAOC,WAIzBC,EAAyB/B,EAAOM,EAAPN,EAAY,EAAGS,YAAO,CACnDuB,QAAS,OACTC,eAAgB,SAChBC,WAAY,SACZC,UAAW,QACX/B,QAASK,EAAMc,QAAQ,OAGnBa,EAAuBpC,EAAOM,EAAPN,EAAY,EAAGS,YAAO,CACjDL,QAASK,EAAMc,QAAQ,OA+BnBc,EAAsD,EAC1DC,QACAC,UACAC,UACAC,iBACAC,mBAEA,MAAQC,KAAMC,EAAMC,UAAEA,EAASC,MAAEA,GAAUC,EAAaT,EAAOE,EAASD,GAExE,OAAIM,EAEAG,EAACjB,EAAsB,CAAAkB,SACrBD,EAACE,EAAgB,CAACC,KAAK,YAKzBL,EAEAE,EAACZ,EAAoB,CAAAa,SACnBD,EAACI,EAAU,CACTC,YAAY,iDACZC,MAAM,2BAMTV,GAA4B,IAAlBA,EAAOW,OASpBP,EAACjD,EAAU,CAACyD,WAAS,EAACC,UAAU,KAAKlC,QAAS,WAC3CqB,EAAOc,KAAKC,IACX,MAAMC,EAAanB,EAAeoB,IAAIF,EAAMG,IAC5C,OACEd,EAAC/C,EAAI,CAAA,gBAEY2D,EACfH,UAAU,KACVN,KAAM,CAAEY,WAAY,EAAGC,QAAS,EAAGC,OAAQ,EAAGC,OAAQ,GAAGjB,SAEzDkB,EAAC9D,EAAiB,CAAA,aACJ,UAAYsD,EAAMS,SAC9BC,QAAS,IAAM3B,EAAaiB,GAC5BW,UAAYC,IACI,UAAVA,EAAEC,KAA6B,MAAVD,EAAEC,MACzBD,EAAEE,iBACF/B,EAAaiB,KAGjBe,KAAK,SACLhE,SAAUkD,EACVe,SAAU,EAAC1B,SAAA,CAEVW,GAAcZ,EAAC5B,EAAmB,CAAC+B,KAAK,OACzCH,EAAC4B,EAAI,CACHC,QAASlB,EAAMS,SACfU,QAAQ,GACRC,SAAUpB,EAAMqB,SAASC,QACzBC,SAAUvB,EAAMwB,UAvBfxB,EAAMG,SAZjBd,EAACZ,EAAoB,CAAAa,SACnBD,EAACI,EAAU,CAACC,YAAY,kCAAkCC,MAAM"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../../../utilities/timeUtilities.cjs.js"),s=require("@tanstack/react-query"),t=require("../services/asset.service.cjs.js");exports.useGetAssets=(r,i=!0)=>s.useQuery({queryKey:[t.getAssetsKey,r],queryFn:()=>t.getAssets(r),enabled:i,gcTime:e.TEN_MINUTES});
1
+ "use strict";var e=require("../../../../utilities/timeUtilities.cjs.js"),s=require("@tanstack/react-query"),t=require("../services/asset.service.cjs.js");exports.useGetAssets=(r,i,u)=>s.useQuery({queryKey:[t.getAssetsKey,r,u],queryFn:()=>t.getAssets(r,u),gcTime:e.TEN_MINUTES,enabled:i});
2
2
  //# sourceMappingURL=useAssets.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssets.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { TEN_MINUTES } from '@fd/utilities/timeUtilities';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (orgId: string, enabled = true): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId],\n queryFn: () => getAssets(orgId),\n enabled,\n gcTime: TEN_MINUTES,\n });\n};\n"],"names":["orgId","enabled","useQuery","queryKey","getAssetsKey","queryFn","getAssets","gcTime","TEN_MINUTES"],"mappings":"+KAa4B,CAACA,EAAeC,GAAU,IAC7CC,WAAkB,CACvBC,SAAU,CAACC,EAAAA,aAAcJ,GACzBK,QAAS,IAAMC,EAAAA,UAAUN,GACzBC,UACAM,OAAQC,EAAAA"}
1
+ {"version":3,"file":"useAssets.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { TEN_MINUTES } from '@fd/utilities/timeUtilities';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @param brandId - Brand ID\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (\n orgId: string,\n enabled: boolean,\n brandId?: string,\n): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId, brandId],\n queryFn: () => getAssets(orgId, brandId),\n gcTime: TEN_MINUTES,\n enabled,\n });\n};\n"],"names":["orgId","enabled","brandId","useQuery","queryKey","getAssetsKey","queryFn","getAssets","gcTime","TEN_MINUTES"],"mappings":"+KAc4B,CAC1BA,EACAC,EACAC,IAEOC,WAAkB,CACvBC,SAAU,CAACC,EAAAA,aAAcL,EAAOE,GAChCI,QAAS,IAAMC,EAAAA,UAAUP,EAAOE,GAChCM,OAAQC,EAAAA,YACRR"}
@@ -3,8 +3,9 @@
3
3
  * Automatically determines the API URL based on environment and orgId
4
4
  * @param orgId - Organization ID
5
5
  * @param enabled - Whether the query should be enabled
6
+ * @param brandId - Brand ID
6
7
  * @returns Query result with assets data, loading state, and error state
7
8
  */
8
- declare const useGetAssets: (orgId: string, enabled?: boolean) => QueryObserverResult<TData, TError>;
9
+ declare const useGetAssets: (orgId: string, enabled: boolean, brandId?: string) => QueryObserverResult<TData, TError>;
9
10
 
10
11
  export { useGetAssets };
@@ -1,2 +1,2 @@
1
- import{TEN_MINUTES as e}from"../../../../utilities/timeUtilities.js";import{useQuery as t}from"@tanstack/react-query";import{getAssets as i,getAssetsKey as r}from"../services/asset.service.js";const s=(s,m=!0)=>t({queryKey:[r,s],queryFn:()=>i(s),enabled:m,gcTime:e});export{s as useGetAssets};
1
+ import{TEN_MINUTES as e}from"../../../../utilities/timeUtilities.js";import{useQuery as t}from"@tanstack/react-query";import{getAssets as i,getAssetsKey as r}from"../services/asset.service.js";const s=(s,m,o)=>t({queryKey:[r,s,o],queryFn:()=>i(s,o),gcTime:e,enabled:m});export{s as useGetAssets};
2
2
  //# sourceMappingURL=useAssets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAssets.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { TEN_MINUTES } from '@fd/utilities/timeUtilities';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (orgId: string, enabled = true): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId],\n queryFn: () => getAssets(orgId),\n enabled,\n gcTime: TEN_MINUTES,\n });\n};\n"],"names":["useGetAssets","orgId","enabled","useQuery","queryKey","getAssetsKey","queryFn","getAssets","gcTime","TEN_MINUTES"],"mappings":"iMAaO,MAAMA,EAAe,CAACC,EAAeC,GAAU,IAC7CC,EAAkB,CACvBC,SAAU,CAACC,EAAcJ,GACzBK,QAAS,IAAMC,EAAUN,GACzBC,UACAM,OAAQC"}
1
+ {"version":3,"file":"useAssets.js","sources":["../../../../../src/components/organisms/AssetManager/hooks/useAssets.ts"],"sourcesContent":["import { TEN_MINUTES } from '@fd/utilities/timeUtilities';\nimport { useQuery, type UseQueryResult } from '@tanstack/react-query';\n\nimport { getAssets, getAssetsKey } from '../services/asset.service';\nimport type { Asset } from '../types';\n\n/**\n * Hook to fetch assets from the API\n * Automatically determines the API URL based on environment and orgId\n * @param orgId - Organization ID\n * @param enabled - Whether the query should be enabled\n * @param brandId - Brand ID\n * @returns Query result with assets data, loading state, and error state\n */\nexport const useGetAssets = (\n orgId: string,\n enabled: boolean,\n brandId?: string,\n): UseQueryResult<Asset[], Error> => {\n return useQuery<Asset[]>({\n queryKey: [getAssetsKey, orgId, brandId],\n queryFn: () => getAssets(orgId, brandId),\n gcTime: TEN_MINUTES,\n enabled,\n });\n};\n"],"names":["useGetAssets","orgId","enabled","brandId","useQuery","queryKey","getAssetsKey","queryFn","getAssets","gcTime","TEN_MINUTES"],"mappings":"iMAcO,MAAMA,EAAe,CAC1BC,EACAC,EACAC,IAEOC,EAAkB,CACvBC,SAAU,CAACC,EAAcL,EAAOE,GAChCI,QAAS,IAAMC,EAAUP,EAAOE,GAChCM,OAAQC,EACRR"}
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react/jsx-runtime"),a=require("react"),l=require("@mui/material/styles"),s=require("@mui/material/Box"),r=require("@mui/material/Tab"),t=require("../../molecules/Modal/index.cjs.js"),i=require("../../molecules/Tabs/index.cjs.js"),n=require("./LibraryTabContent/index.cjs.js"),o=require("./UploadTabContent/index.cjs.js");const c=l.styled(s)((({theme:e})=>({marginBottom:e.spacing(3)})));module.exports=({open:l,onClose:s,onSelect:u,orgId:d,multiSelect:b=!1})=>{const[m,p]=a.useState(new Map),[j,y]=a.useState("library"),[C,g]=a.useState([]);a.useEffect((()=>{l||(p(new Map),g([]))}),[l]);const x=a.useCallback((()=>{p(new Map),s()}),[s]),k=a.useCallback((()=>{const e=Array.from(m.values());u&&e.length>0&&u(e),p(new Map),s()}),[u,m,s]),v=a.useCallback((e=>{p((a=>{const l=a.has(e.id),s=new Map(a);return b?l?s.delete(e.id):s.set(e.id,e):l?s.clear():(s.clear(),s.set(e.id,e)),s}))}),[b]),h=a.useCallback((()=>{g([]),y("library")}),[]),q=a.useCallback((e=>{const a=e.map((e=>({file:e})));g((e=>[...e,...a]))}),[]),f=a.useCallback((e=>{g((a=>a.filter((a=>a.file!==e))))}),[]),S=a.useMemo((()=>{const e={label:"Cancel",onClick:x,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},a={library:[e,{label:"Select",onClick:k,variant:"primary",disabled:0===m.size,id:"asset-manager-select"}],upload:[e,{label:"Save",onClick:h,disabled:0===C.length,variant:"primary",id:"asset-manager-upload"}]};return a[j]??a.library}),[j,m.size,C.length,x,k,h]);return e.jsxs(t,{actions:S,onClose:x,open:l,size:"large",title:"library"===j?"Select Images":"Upload Images",children:[e.jsx(c,{children:e.jsxs(i,{fdKey:"asset-manager-tabs",onChange:(e,a)=>y(a),value:j,children:[e.jsx(r,{label:"Upload",value:"upload"}),e.jsx(r,{label:"Library",value:"library"})]})}),"library"===j?e.jsx(n,{enabled:l,onAssetClick:v,orgId:d,selectedAssets:m}):e.jsx(o,{files:C,onRemove:f,onUpload:q})]})};
1
+ "use strict";var e=require("react/jsx-runtime"),a=require("react"),l=require("@mui/material/styles"),r=require("@mui/material/Box"),s=require("@mui/material/Tab"),t=require("../../molecules/Modal/index.cjs.js"),i=require("../../molecules/Tabs/index.cjs.js"),n=require("@tanstack/react-query"),c=require("./LibraryTabContent/index.cjs.js"),o=require("./UploadTabContent/index.cjs.js");const u=l.styled(r)((({theme:e})=>({marginBottom:e.spacing(3)}))),d=new n.QueryClient;module.exports=({open:l,onClose:r,onSelect:b,orgId:m,brandId:p,multiSelect:y=!1})=>{const[C,j]=a.useState(new Map),[g,x]=a.useState("library"),[k,q]=a.useState([]);a.useEffect((()=>{l||(j(new Map),q([]))}),[l]);const v=a.useCallback((()=>{j(new Map),r()}),[r]),h=a.useCallback((()=>{const e=Array.from(C.values());b&&e.length>0&&b(e),j(new Map),r()}),[b,C,r]),f=a.useCallback((e=>{j((a=>{const l=a.has(e.id),r=new Map(a);return y?l?r.delete(e.id):r.set(e.id,e):l?r.clear():(r.clear(),r.set(e.id,e)),r}))}),[y]),S=a.useCallback((()=>{q([]),x("library")}),[]),M=a.useCallback((e=>{const a=e.map((e=>({file:e})));q((e=>[...e,...a]))}),[]),w=a.useCallback((e=>{q((a=>a.filter((a=>a.file!==e))))}),[]),I=a.useMemo((()=>{const e={label:"Cancel",onClick:v,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},a={library:[e,{label:"Select",onClick:h,variant:"primary",disabled:0===C.size,id:"asset-manager-select"}],upload:[e,{label:"Save",onClick:S,disabled:0===k.length,variant:"primary",id:"asset-manager-upload"}]};return a[g]??a.library}),[g,C.size,k.length,v,h,S]);return e.jsx(n.QueryClientProvider,{client:d,children:e.jsxs(t,{actions:I,onClose:v,open:l,size:"large",title:"library"===g?"Select Images":"Upload Images",children:[e.jsx(u,{children:e.jsxs(i,{fdKey:"asset-manager-tabs",onChange:(e,a)=>x(a),value:g,children:[e.jsx(s,{label:"Upload",value:"upload"}),e.jsx(s,{label:"Library",value:"library"})]})}),"library"===g?e.jsx(c,{brandId:p,enabled:l,onAssetClick:f,orgId:m,selectedAssets:C}):e.jsx(o,{files:k,onRemove:w,onUpload:M})]})})};
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Tab from '@fd/components/atoms/Tab';\nimport Modal, { type ModalAction } from '@fd/components/molecules/Modal';\nimport Tabs from '@fd/components/molecules/Tabs';\n\nimport type { FileUploadState } from '../FileUpload';\nimport LibraryTabContent from './LibraryTabContent';\nimport type { Asset } from './types';\nimport UploadAssetContent from './UploadTabContent';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /**\n * Organization ID for fetching assets\n */\n orgId: string;\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n orgId,\n multiSelect = false,\n}) => {\n // Use Map for O(1) lookup performance and direct access to Asset objects\n const [selectedAssetsMap, setSelectedAssetsMap] = useState<Map<string, Asset>>(new Map());\n const [selectedTab, setSelectedTab] = useState<string>('library');\n const [uploadedFiles, setUploadedFiles] = useState<FileUploadState[]>([]);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetsMap(new Map());\n setUploadedFiles([]);\n }\n }, [open]);\n\n const handleCancel = useCallback((): void => {\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((): void => {\n const selectedAssets = Array.from(selectedAssetsMap.values());\n if (onSelect && selectedAssets.length > 0) {\n onSelect(selectedAssets);\n }\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onSelect, selectedAssetsMap, onClose]);\n\n // TODO: translate titles\n const getTitle = (): string => {\n switch (selectedTab) {\n case 'library':\n return 'Select Images';\n default:\n return 'Upload Images';\n }\n };\n\n const handleAssetClick = useCallback(\n (asset: Asset): void => {\n setSelectedAssetsMap((prevMap) => {\n const isSelected = prevMap.has(asset.id);\n const newMap = new Map(prevMap);\n\n if (multiSelect) {\n if (isSelected) {\n newMap.delete(asset.id);\n } else {\n newMap.set(asset.id, asset);\n }\n } else {\n // Single select: replace selection or clear if clicking same asset\n if (isSelected) {\n newMap.clear();\n } else {\n newMap.clear();\n newMap.set(asset.id, asset);\n }\n }\n\n return newMap;\n });\n },\n [multiSelect],\n );\n\n const handleSaveAssets = useCallback((): void => {\n // TODO: call Upload asset api\n setUploadedFiles([]);\n setSelectedTab('library');\n }, []);\n\n const handleUpload = useCallback((files: File[]): void => {\n // Add files with uploading state\n const newFiles: FileUploadState[] = files.map((file) => ({\n file,\n }));\n setUploadedFiles((prev) => [...prev, ...newFiles]);\n }, []);\n\n const handleRemove = useCallback((fileToRemove: File): void => {\n setUploadedFiles((prev) => prev.filter((fileState) => fileState.file !== fileToRemove));\n }, []);\n\n // Tab-specific action button configurations\n // TODO: translate button labels\n const actionButtons = useMemo<ModalAction[]>(() => {\n // Common cancel button configuration\n const cancelButton: ModalAction = {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary',\n tone: 'neutral',\n id: 'asset-manager-cancel',\n };\n\n const tabActions: Record<string, ModalAction[]> = {\n library: [\n cancelButton,\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary',\n disabled: selectedAssetsMap.size === 0,\n id: 'asset-manager-select',\n },\n ],\n upload: [\n cancelButton,\n {\n label: 'Save',\n onClick: handleSaveAssets,\n disabled: uploadedFiles.length === 0,\n variant: 'primary',\n id: 'asset-manager-upload',\n },\n ],\n };\n\n return tabActions[selectedTab] ?? (tabActions['library'] as ModalAction[]);\n }, [\n selectedTab,\n selectedAssetsMap.size,\n uploadedFiles.length,\n handleCancel,\n handleSelect,\n handleSaveAssets,\n ]);\n\n return (\n <Modal actions={actionButtons} onClose={handleCancel} open={open} size=\"large\" title={getTitle()}>\n <StyledTabsContainer>\n <Tabs\n fdKey=\"asset-manager-tabs\"\n onChange={(_, value: string) => setSelectedTab(value)}\n value={selectedTab}\n >\n <Tab label=\"Upload\" value=\"upload\" />\n <Tab label=\"Library\" value=\"library\" />\n </Tabs>\n </StyledTabsContainer>\n {selectedTab === 'library' ? (\n <LibraryTabContent\n enabled={open}\n onAssetClick={handleAssetClick}\n orgId={orgId}\n selectedAssets={selectedAssetsMap}\n />\n ) : (\n <UploadAssetContent files={uploadedFiles} onRemove={handleRemove} onUpload={handleUpload} />\n )}\n </Modal>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","open","onClose","onSelect","orgId","multiSelect","selectedAssetsMap","setSelectedAssetsMap","useState","Map","selectedTab","setSelectedTab","uploadedFiles","setUploadedFiles","useEffect","handleCancel","useCallback","handleSelect","selectedAssets","Array","from","values","length","handleAssetClick","asset","prevMap","isSelected","has","id","newMap","delete","set","clear","handleSaveAssets","handleUpload","files","newFiles","map","file","prev","handleRemove","fileToRemove","filter","fileState","actionButtons","useMemo","cancelButton","label","onClick","variant","tone","tabActions","library","disabled","size","upload","_jsxs","Modal","actions","title","children","_jsx","Tabs","fdKey","onChange","_","value","Tab","LibraryTabContent","enabled","onAssetClick","UploadAssetContent","onRemove","onUpload"],"mappings":"6VAcA,MAAMA,EAAsBC,EAAAA,OAAOC,EAAPD,EAAY,EAAGE,YAAO,CAChDC,aAAcD,EAAME,QAAQ,sBA4BoB,EAChDC,OACAC,UACAC,WACAC,QACAC,eAAc,MAGd,MAAOC,EAAmBC,GAAwBC,EAAAA,SAA6B,IAAIC,MAC5EC,EAAaC,GAAkBH,EAAAA,SAAiB,YAChDI,EAAeC,GAAoBL,EAAAA,SAA4B,IAGtEM,EAAAA,WAAU,KACHb,IACHM,EAAqB,IAAIE,KACzBI,EAAiB,OAElB,CAACZ,IAEJ,MAAMc,EAAeC,EAAAA,aAAY,KAC/BT,EAAqB,IAAIE,KACzBP,MACC,CAACA,IAEEe,EAAeD,EAAAA,aAAY,KAC/B,MAAME,EAAiBC,MAAMC,KAAKd,EAAkBe,UAChDlB,GAAYe,EAAeI,OAAS,GACtCnB,EAASe,GAEXX,EAAqB,IAAIE,KACzBP,MACC,CAACC,EAAUG,EAAmBJ,IAY3BqB,EAAmBP,eACtBQ,IACCjB,GAAsBkB,IACpB,MAAMC,EAAaD,EAAQE,IAAIH,EAAMI,IAC/BC,EAAS,IAAIpB,IAAIgB,GAkBvB,OAhBIpB,EACEqB,EACFG,EAAOC,OAAON,EAAMI,IAEpBC,EAAOE,IAAIP,EAAMI,GAAIJ,GAInBE,EACFG,EAAOG,SAEPH,EAAOG,QACPH,EAAOE,IAAIP,EAAMI,GAAIJ,IAIlBK,OAGX,CAACxB,IAGG4B,EAAmBjB,EAAAA,aAAY,KAEnCH,EAAiB,IACjBF,EAAe,aACd,IAEGuB,EAAelB,eAAamB,IAEhC,MAAMC,EAA8BD,EAAME,KAAKC,IAAI,CACjDA,WAEFzB,GAAkB0B,GAAS,IAAIA,KAASH,OACvC,IAEGI,EAAexB,eAAayB,IAChC5B,GAAkB0B,GAASA,EAAKG,QAAQC,GAAcA,EAAUL,OAASG,QACxE,IAIGG,EAAgBC,EAAAA,SAAuB,KAE3C,MAAMC,EAA4B,CAChCC,MAAO,SACPC,QAASjC,EACTkC,QAAS,YACTC,KAAM,UACNtB,GAAI,wBAGAuB,EAA4C,CAChDC,QAAS,CACPN,EACA,CACEC,MAAO,SACPC,QAAS/B,EACTgC,QAAS,UACTI,SAAqC,IAA3B/C,EAAkBgD,KAC5B1B,GAAI,yBAGR2B,OAAQ,CACNT,EACA,CACEC,MAAO,OACPC,QAASf,EACToB,SAAmC,IAAzBzC,EAAcU,OACxB2B,QAAS,UACTrB,GAAI,0BAKV,OAAOuB,EAAWzC,IAAiByC,EAAoB,UACtD,CACDzC,EACAJ,EAAkBgD,KAClB1C,EAAcU,OACdP,EACAE,EACAgB,IAGF,OACEuB,EAAAA,KAACC,EAAK,CAACC,QAASd,EAAe1C,QAASa,EAAcd,KAAMA,EAAMqD,KAAK,QAAQK,MAnGxE,YADCjD,EAEG,gBAEA,gBAgGqFkD,SAAA,CAC9FC,EAAAA,IAAClE,EAAmB,CAAAiE,SAClBJ,EAAAA,KAACM,EAAI,CACHC,MAAM,qBACNC,SAAU,CAACC,EAAGC,IAAkBvD,EAAeuD,GAC/CA,MAAOxD,EAAWkD,SAAA,CAElBC,EAAAA,IAACM,EAAG,CAACpB,MAAM,SAASmB,MAAM,WAC1BL,MAACM,EAAG,CAACpB,MAAM,UAAUmB,MAAM,iBAGd,YAAhBxD,EACCmD,MAACO,EAAiB,CAChBC,QAASpE,EACTqE,aAAc/C,EACdnB,MAAOA,EACPc,eAAgBZ,IAGlBuD,EAAAA,IAACU,EAAkB,CAACpC,MAAOvB,EAAe4D,SAAUhC,EAAciC,SAAUvC"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Tab from '@fd/components/atoms/Tab';\nimport Modal, { type ModalAction } from '@fd/components/molecules/Modal';\nimport Tabs from '@fd/components/molecules/Tabs';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nimport type { FileUploadState } from '../FileUpload';\nimport LibraryTabContent from './LibraryTabContent';\nimport type { Asset } from './types';\nimport UploadAssetContent from './UploadTabContent';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /**\n * Organization ID for fetching assets\n */\n orgId: string;\n /** Brand ID for fetching assets */\n brandId?: string;\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\n// Create a QueryClient instance for the AssetManager component\n// This allows the component to be used without requiring clients to wrap it in QueryClientProvider\nconst queryClient = new QueryClient();\n\n/**\n * AssetManager component used to select assets from the library or upload new assets.\n * Can manage assets at a organization or brand level.\n *\n * @example\n * ```tsx\n * <AssetManager\n * open={isOpen}\n * onClose={() => setIsOpen(false)}\n * onSelect={(assets) => console.log(assets)}\n * orgId=\"org123\"\n * brandId=\"brand456\"\n * multiSelect={true}\n * />\n * ```\n */\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n orgId,\n brandId,\n multiSelect = false,\n}) => {\n // Use Map for O(1) lookup performance and direct access to Asset objects\n const [selectedAssetsMap, setSelectedAssetsMap] = useState<Map<string, Asset>>(new Map());\n const [selectedTab, setSelectedTab] = useState<string>('library');\n const [uploadedFiles, setUploadedFiles] = useState<FileUploadState[]>([]);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetsMap(new Map());\n setUploadedFiles([]);\n }\n }, [open]);\n\n const handleCancel = useCallback((): void => {\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((): void => {\n const selectedAssets = Array.from(selectedAssetsMap.values());\n if (onSelect && selectedAssets.length > 0) {\n onSelect(selectedAssets);\n }\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onSelect, selectedAssetsMap, onClose]);\n\n // TODO: translate titles\n const getTitle = (): string => {\n switch (selectedTab) {\n case 'library':\n return 'Select Images';\n default:\n return 'Upload Images';\n }\n };\n\n const handleAssetClick = useCallback(\n (asset: Asset): void => {\n setSelectedAssetsMap((prevMap) => {\n const isSelected = prevMap.has(asset.id);\n const newMap = new Map(prevMap);\n\n if (multiSelect) {\n if (isSelected) {\n newMap.delete(asset.id);\n } else {\n newMap.set(asset.id, asset);\n }\n } else {\n // Single select: replace selection or clear if clicking same asset\n if (isSelected) {\n newMap.clear();\n } else {\n newMap.clear();\n newMap.set(asset.id, asset);\n }\n }\n\n return newMap;\n });\n },\n [multiSelect],\n );\n\n const handleSaveAssets = useCallback((): void => {\n // TODO: call Upload asset api\n setUploadedFiles([]);\n setSelectedTab('library');\n }, []);\n\n const handleUpload = useCallback((files: File[]): void => {\n // Add files with uploading state\n const newFiles: FileUploadState[] = files.map((file) => ({\n file,\n }));\n setUploadedFiles((prev) => [...prev, ...newFiles]);\n }, []);\n\n const handleRemove = useCallback((fileToRemove: File): void => {\n setUploadedFiles((prev) => prev.filter((fileState) => fileState.file !== fileToRemove));\n }, []);\n\n // Tab-specific action button configurations\n // TODO: translate button labels\n const actionButtons = useMemo<ModalAction[]>(() => {\n // Common cancel button configuration\n const cancelButton: ModalAction = {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary',\n tone: 'neutral',\n id: 'asset-manager-cancel',\n };\n\n const tabActions: Record<string, ModalAction[]> = {\n library: [\n cancelButton,\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary',\n disabled: selectedAssetsMap.size === 0,\n id: 'asset-manager-select',\n },\n ],\n upload: [\n cancelButton,\n {\n label: 'Save',\n onClick: handleSaveAssets,\n disabled: uploadedFiles.length === 0,\n variant: 'primary',\n id: 'asset-manager-upload',\n },\n ],\n };\n\n return tabActions[selectedTab] ?? (tabActions['library'] as ModalAction[]);\n }, [\n selectedTab,\n selectedAssetsMap.size,\n uploadedFiles.length,\n handleCancel,\n handleSelect,\n handleSaveAssets,\n ]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Modal actions={actionButtons} onClose={handleCancel} open={open} size=\"large\" title={getTitle()}>\n <StyledTabsContainer>\n <Tabs\n fdKey=\"asset-manager-tabs\"\n onChange={(_, value: string) => setSelectedTab(value)}\n value={selectedTab}\n >\n <Tab label=\"Upload\" value=\"upload\" />\n <Tab label=\"Library\" value=\"library\" />\n </Tabs>\n </StyledTabsContainer>\n {selectedTab === 'library' ? (\n <LibraryTabContent\n brandId={brandId}\n enabled={open}\n onAssetClick={handleAssetClick}\n orgId={orgId}\n selectedAssets={selectedAssetsMap}\n />\n ) : (\n <UploadAssetContent files={uploadedFiles} onRemove={handleRemove} onUpload={handleUpload} />\n )}\n </Modal>\n </QueryClientProvider>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","queryClient","QueryClient","open","onClose","onSelect","orgId","brandId","multiSelect","selectedAssetsMap","setSelectedAssetsMap","useState","Map","selectedTab","setSelectedTab","uploadedFiles","setUploadedFiles","useEffect","handleCancel","useCallback","handleSelect","selectedAssets","Array","from","values","length","handleAssetClick","asset","prevMap","isSelected","has","id","newMap","delete","set","clear","handleSaveAssets","handleUpload","files","newFiles","map","file","prev","handleRemove","fileToRemove","filter","fileState","actionButtons","useMemo","cancelButton","label","onClick","variant","tone","tabActions","library","disabled","size","upload","_jsx","QueryClientProvider","client","children","_jsxs","Modal","actions","title","Tabs","fdKey","onChange","_","value","Tab","LibraryTabContent","enabled","onAssetClick","UploadAssetContent","onRemove","onUpload"],"mappings":"gYAeA,MAAMA,EAAsBC,EAAAA,OAAOC,EAAPD,EAAY,EAAGE,YAAO,CAChDC,aAAcD,EAAME,QAAQ,OAgCxBC,EAAc,IAAIC,EAAAA,2BAkB0B,EAChDC,OACAC,UACAC,WACAC,QACAC,UACAC,eAAc,MAGd,MAAOC,EAAmBC,GAAwBC,EAAAA,SAA6B,IAAIC,MAC5EC,EAAaC,GAAkBH,EAAAA,SAAiB,YAChDI,EAAeC,GAAoBL,EAAAA,SAA4B,IAGtEM,EAAAA,WAAU,KACHd,IACHO,EAAqB,IAAIE,KACzBI,EAAiB,OAElB,CAACb,IAEJ,MAAMe,EAAeC,EAAAA,aAAY,KAC/BT,EAAqB,IAAIE,KACzBR,MACC,CAACA,IAEEgB,EAAeD,EAAAA,aAAY,KAC/B,MAAME,EAAiBC,MAAMC,KAAKd,EAAkBe,UAChDnB,GAAYgB,EAAeI,OAAS,GACtCpB,EAASgB,GAEXX,EAAqB,IAAIE,KACzBR,MACC,CAACC,EAAUI,EAAmBL,IAY3BsB,EAAmBP,eACtBQ,IACCjB,GAAsBkB,IACpB,MAAMC,EAAaD,EAAQE,IAAIH,EAAMI,IAC/BC,EAAS,IAAIpB,IAAIgB,GAkBvB,OAhBIpB,EACEqB,EACFG,EAAOC,OAAON,EAAMI,IAEpBC,EAAOE,IAAIP,EAAMI,GAAIJ,GAInBE,EACFG,EAAOG,SAEPH,EAAOG,QACPH,EAAOE,IAAIP,EAAMI,GAAIJ,IAIlBK,OAGX,CAACxB,IAGG4B,EAAmBjB,EAAAA,aAAY,KAEnCH,EAAiB,IACjBF,EAAe,aACd,IAEGuB,EAAelB,eAAamB,IAEhC,MAAMC,EAA8BD,EAAME,KAAKC,IAAI,CACjDA,WAEFzB,GAAkB0B,GAAS,IAAIA,KAASH,OACvC,IAEGI,EAAexB,eAAayB,IAChC5B,GAAkB0B,GAASA,EAAKG,QAAQC,GAAcA,EAAUL,OAASG,QACxE,IAIGG,EAAgBC,EAAAA,SAAuB,KAE3C,MAAMC,EAA4B,CAChCC,MAAO,SACPC,QAASjC,EACTkC,QAAS,YACTC,KAAM,UACNtB,GAAI,wBAGAuB,EAA4C,CAChDC,QAAS,CACPN,EACA,CACEC,MAAO,SACPC,QAAS/B,EACTgC,QAAS,UACTI,SAAqC,IAA3B/C,EAAkBgD,KAC5B1B,GAAI,yBAGR2B,OAAQ,CACNT,EACA,CACEC,MAAO,OACPC,QAASf,EACToB,SAAmC,IAAzBzC,EAAcU,OACxB2B,QAAS,UACTrB,GAAI,0BAKV,OAAOuB,EAAWzC,IAAiByC,EAAoB,UACtD,CACDzC,EACAJ,EAAkBgD,KAClB1C,EAAcU,OACdP,EACAE,EACAgB,IAGF,OACEuB,EAAAA,IAACC,EAAAA,oBAAmB,CAACC,OAAQ5D,EAAW6D,SACtCC,EAAAA,KAACC,EAAK,CAACC,QAASlB,EAAe3C,QAASc,EAAcf,KAAMA,EAAMsD,KAAK,QAAQS,MApG1E,YADCrD,EAEG,gBAEA,0BAkGP8C,EAAAA,IAAChE,EAAmB,CAAAmE,SAClBC,EAAAA,KAACI,EAAI,CACHC,MAAM,qBACNC,SAAU,CAACC,EAAGC,IAAkBzD,EAAeyD,GAC/CA,MAAO1D,EAAWiD,SAAA,CAElBH,MAACa,EAAG,CAACtB,MAAM,SAASqB,MAAM,WAC1BZ,EAAAA,IAACa,EAAG,CAACtB,MAAM,UAAUqB,MAAM,iBAGd,YAAhB1D,EACC8C,MAACc,EAAiB,CAChBlE,QAASA,EACTmE,QAASvE,EACTwE,aAAcjD,EACdpB,MAAOA,EACPe,eAAgBZ,IAGlBkD,MAACiB,EAAkB,CAACtC,MAAOvB,EAAe8D,SAAUlC,EAAcmC,SAAUzC"}
@@ -22,9 +22,27 @@ interface AssetManagerProps {
22
22
  * Organization ID for fetching assets
23
23
  */
24
24
  orgId: string;
25
+ /** Brand ID for fetching assets */
26
+ brandId?: string;
25
27
  /** Whether multiple assets can be selected. Defaults to false */
26
28
  multiSelect?: boolean;
27
29
  }
30
+ /**
31
+ * AssetManager component used to select assets from the library or upload new assets.
32
+ * Can manage assets at a organization or brand level.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * <AssetManager
37
+ * open={isOpen}
38
+ * onClose={() => setIsOpen(false)}
39
+ * onSelect={(assets) => console.log(assets)}
40
+ * orgId="org123"
41
+ * brandId="brand456"
42
+ * multiSelect={true}
43
+ * />
44
+ * ```
45
+ */
28
46
  declare const AssetManager: react__default.FC<AssetManagerProps>;
29
47
 
30
48
  export { AssetManager as default };
@@ -1,2 +1,2 @@
1
- import{jsxs as e,jsx as a}from"react/jsx-runtime";import{useState as r,useEffect as l,useCallback as t,useMemo as i}from"react";import{styled as o}from"@mui/material/styles";import n from"@mui/material/Box";import s from"@mui/material/Tab";import m from"../../molecules/Modal/index.js";import d from"../../molecules/Tabs/index.js";import c from"./LibraryTabContent/index.js";import p from"./UploadTabContent/index.js";const b=o(n)((({theme:e})=>({marginBottom:e.spacing(3)}))),u=({open:o,onClose:n,onSelect:u,orgId:f,multiSelect:g=!1})=>{const[y,C]=r(new Map),[h,v]=r("library"),[x,M]=r([]);l((()=>{o||(C(new Map),M([]))}),[o]);const j=t((()=>{C(new Map),n()}),[n]),w=t((()=>{const e=Array.from(y.values());u&&e.length>0&&u(e),C(new Map),n()}),[u,y,n]),S=t((e=>{C((a=>{const r=a.has(e.id),l=new Map(a);return g?r?l.delete(e.id):l.set(e.id,e):r?l.clear():(l.clear(),l.set(e.id,e)),l}))}),[g]),k=t((()=>{M([]),v("library")}),[]),I=t((e=>{const a=e.map((e=>({file:e})));M((e=>[...e,...a]))}),[]),T=t((e=>{M((a=>a.filter((a=>a.file!==e))))}),[]),U=i((()=>{const e={label:"Cancel",onClick:j,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},a={library:[e,{label:"Select",onClick:w,variant:"primary",disabled:0===y.size,id:"asset-manager-select"}],upload:[e,{label:"Save",onClick:k,disabled:0===x.length,variant:"primary",id:"asset-manager-upload"}]};return a[h]??a.library}),[h,y.size,x.length,j,w,k]);return e(m,{actions:U,onClose:j,open:o,size:"large",title:"library"===h?"Select Images":"Upload Images",children:[a(b,{children:e(d,{fdKey:"asset-manager-tabs",onChange:(e,a)=>v(a),value:h,children:[a(s,{label:"Upload",value:"upload"}),a(s,{label:"Library",value:"library"})]})}),"library"===h?a(c,{enabled:o,onAssetClick:S,orgId:f,selectedAssets:y}):a(p,{files:x,onRemove:T,onUpload:I})]})};export{u as default};
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{useState as r,useEffect as l,useCallback as t,useMemo as i}from"react";import{styled as n}from"@mui/material/styles";import o from"@mui/material/Box";import s from"@mui/material/Tab";import m from"../../molecules/Modal/index.js";import d from"../../molecules/Tabs/index.js";import{QueryClient as c,QueryClientProvider as p}from"@tanstack/react-query";import b from"./LibraryTabContent/index.js";import u from"./UploadTabContent/index.js";const f=n(o)((({theme:e})=>({marginBottom:e.spacing(3)}))),y=new c,g=({open:n,onClose:o,onSelect:c,orgId:g,brandId:h,multiSelect:C=!1})=>{const[v,x]=r(new Map),[w,I]=r("library"),[M,j]=r([]);l((()=>{n||(x(new Map),j([]))}),[n]);const k=t((()=>{x(new Map),o()}),[o]),S=t((()=>{const e=Array.from(v.values());c&&e.length>0&&c(e),x(new Map),o()}),[c,v,o]),T=t((e=>{x((a=>{const r=a.has(e.id),l=new Map(a);return C?r?l.delete(e.id):l.set(e.id,e):r?l.clear():(l.clear(),l.set(e.id,e)),l}))}),[C]),U=t((()=>{j([]),I("library")}),[]),z=t((e=>{const a=e.map((e=>({file:e})));j((e=>[...e,...a]))}),[]),A=t((e=>{j((a=>a.filter((a=>a.file!==e))))}),[]),B=i((()=>{const e={label:"Cancel",onClick:k,variant:"secondary",tone:"neutral",id:"asset-manager-cancel"},a={library:[e,{label:"Select",onClick:S,variant:"primary",disabled:0===v.size,id:"asset-manager-select"}],upload:[e,{label:"Save",onClick:U,disabled:0===M.length,variant:"primary",id:"asset-manager-upload"}]};return a[w]??a.library}),[w,v.size,M.length,k,S,U]);return e(p,{client:y,children:a(m,{actions:B,onClose:k,open:n,size:"large",title:"library"===w?"Select Images":"Upload Images",children:[e(f,{children:a(d,{fdKey:"asset-manager-tabs",onChange:(e,a)=>I(a),value:w,children:[e(s,{label:"Upload",value:"upload"}),e(s,{label:"Library",value:"library"})]})}),"library"===w?e(b,{brandId:h,enabled:n,onAssetClick:T,orgId:g,selectedAssets:v}):e(u,{files:M,onRemove:A,onUpload:z})]})})};export{g as default};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Tab from '@fd/components/atoms/Tab';\nimport Modal, { type ModalAction } from '@fd/components/molecules/Modal';\nimport Tabs from '@fd/components/molecules/Tabs';\n\nimport type { FileUploadState } from '../FileUpload';\nimport LibraryTabContent from './LibraryTabContent';\nimport type { Asset } from './types';\nimport UploadAssetContent from './UploadTabContent';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /**\n * Organization ID for fetching assets\n */\n orgId: string;\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n orgId,\n multiSelect = false,\n}) => {\n // Use Map for O(1) lookup performance and direct access to Asset objects\n const [selectedAssetsMap, setSelectedAssetsMap] = useState<Map<string, Asset>>(new Map());\n const [selectedTab, setSelectedTab] = useState<string>('library');\n const [uploadedFiles, setUploadedFiles] = useState<FileUploadState[]>([]);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetsMap(new Map());\n setUploadedFiles([]);\n }\n }, [open]);\n\n const handleCancel = useCallback((): void => {\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((): void => {\n const selectedAssets = Array.from(selectedAssetsMap.values());\n if (onSelect && selectedAssets.length > 0) {\n onSelect(selectedAssets);\n }\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onSelect, selectedAssetsMap, onClose]);\n\n // TODO: translate titles\n const getTitle = (): string => {\n switch (selectedTab) {\n case 'library':\n return 'Select Images';\n default:\n return 'Upload Images';\n }\n };\n\n const handleAssetClick = useCallback(\n (asset: Asset): void => {\n setSelectedAssetsMap((prevMap) => {\n const isSelected = prevMap.has(asset.id);\n const newMap = new Map(prevMap);\n\n if (multiSelect) {\n if (isSelected) {\n newMap.delete(asset.id);\n } else {\n newMap.set(asset.id, asset);\n }\n } else {\n // Single select: replace selection or clear if clicking same asset\n if (isSelected) {\n newMap.clear();\n } else {\n newMap.clear();\n newMap.set(asset.id, asset);\n }\n }\n\n return newMap;\n });\n },\n [multiSelect],\n );\n\n const handleSaveAssets = useCallback((): void => {\n // TODO: call Upload asset api\n setUploadedFiles([]);\n setSelectedTab('library');\n }, []);\n\n const handleUpload = useCallback((files: File[]): void => {\n // Add files with uploading state\n const newFiles: FileUploadState[] = files.map((file) => ({\n file,\n }));\n setUploadedFiles((prev) => [...prev, ...newFiles]);\n }, []);\n\n const handleRemove = useCallback((fileToRemove: File): void => {\n setUploadedFiles((prev) => prev.filter((fileState) => fileState.file !== fileToRemove));\n }, []);\n\n // Tab-specific action button configurations\n // TODO: translate button labels\n const actionButtons = useMemo<ModalAction[]>(() => {\n // Common cancel button configuration\n const cancelButton: ModalAction = {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary',\n tone: 'neutral',\n id: 'asset-manager-cancel',\n };\n\n const tabActions: Record<string, ModalAction[]> = {\n library: [\n cancelButton,\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary',\n disabled: selectedAssetsMap.size === 0,\n id: 'asset-manager-select',\n },\n ],\n upload: [\n cancelButton,\n {\n label: 'Save',\n onClick: handleSaveAssets,\n disabled: uploadedFiles.length === 0,\n variant: 'primary',\n id: 'asset-manager-upload',\n },\n ],\n };\n\n return tabActions[selectedTab] ?? (tabActions['library'] as ModalAction[]);\n }, [\n selectedTab,\n selectedAssetsMap.size,\n uploadedFiles.length,\n handleCancel,\n handleSelect,\n handleSaveAssets,\n ]);\n\n return (\n <Modal actions={actionButtons} onClose={handleCancel} open={open} size=\"large\" title={getTitle()}>\n <StyledTabsContainer>\n <Tabs\n fdKey=\"asset-manager-tabs\"\n onChange={(_, value: string) => setSelectedTab(value)}\n value={selectedTab}\n >\n <Tab label=\"Upload\" value=\"upload\" />\n <Tab label=\"Library\" value=\"library\" />\n </Tabs>\n </StyledTabsContainer>\n {selectedTab === 'library' ? (\n <LibraryTabContent\n enabled={open}\n onAssetClick={handleAssetClick}\n orgId={orgId}\n selectedAssets={selectedAssetsMap}\n />\n ) : (\n <UploadAssetContent files={uploadedFiles} onRemove={handleRemove} onUpload={handleUpload} />\n )}\n </Modal>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","AssetManager","open","onClose","onSelect","orgId","multiSelect","selectedAssetsMap","setSelectedAssetsMap","useState","Map","selectedTab","setSelectedTab","uploadedFiles","setUploadedFiles","useEffect","handleCancel","useCallback","handleSelect","selectedAssets","Array","from","values","length","handleAssetClick","asset","prevMap","isSelected","has","id","newMap","delete","set","clear","handleSaveAssets","handleUpload","files","newFiles","map","file","prev","handleRemove","fileToRemove","filter","fileState","actionButtons","useMemo","cancelButton","label","onClick","variant","tone","tabActions","library","disabled","size","upload","_jsxs","Modal","actions","title","children","_jsx","Tabs","fdKey","onChange","_","value","Tab","LibraryTabContent","enabled","onAssetClick","UploadAssetContent","onRemove","onUpload"],"mappings":"kaAcA,MAAMA,EAAsBC,EAAOC,EAAPD,EAAY,EAAGE,YAAO,CAChDC,aAAcD,EAAME,QAAQ,OA4BxBC,EAA4C,EAChDC,OACAC,UACAC,WACAC,QACAC,eAAc,MAGd,MAAOC,EAAmBC,GAAwBC,EAA6B,IAAIC,MAC5EC,EAAaC,GAAkBH,EAAiB,YAChDI,EAAeC,GAAoBL,EAA4B,IAGtEM,GAAU,KACHb,IACHM,EAAqB,IAAIE,KACzBI,EAAiB,OAElB,CAACZ,IAEJ,MAAMc,EAAeC,GAAY,KAC/BT,EAAqB,IAAIE,KACzBP,MACC,CAACA,IAEEe,EAAeD,GAAY,KAC/B,MAAME,EAAiBC,MAAMC,KAAKd,EAAkBe,UAChDlB,GAAYe,EAAeI,OAAS,GACtCnB,EAASe,GAEXX,EAAqB,IAAIE,KACzBP,MACC,CAACC,EAAUG,EAAmBJ,IAY3BqB,EAAmBP,GACtBQ,IACCjB,GAAsBkB,IACpB,MAAMC,EAAaD,EAAQE,IAAIH,EAAMI,IAC/BC,EAAS,IAAIpB,IAAIgB,GAkBvB,OAhBIpB,EACEqB,EACFG,EAAOC,OAAON,EAAMI,IAEpBC,EAAOE,IAAIP,EAAMI,GAAIJ,GAInBE,EACFG,EAAOG,SAEPH,EAAOG,QACPH,EAAOE,IAAIP,EAAMI,GAAIJ,IAIlBK,OAGX,CAACxB,IAGG4B,EAAmBjB,GAAY,KAEnCH,EAAiB,IACjBF,EAAe,aACd,IAEGuB,EAAelB,GAAamB,IAEhC,MAAMC,EAA8BD,EAAME,KAAKC,IAAI,CACjDA,WAEFzB,GAAkB0B,GAAS,IAAIA,KAASH,OACvC,IAEGI,EAAexB,GAAayB,IAChC5B,GAAkB0B,GAASA,EAAKG,QAAQC,GAAcA,EAAUL,OAASG,QACxE,IAIGG,EAAgBC,GAAuB,KAE3C,MAAMC,EAA4B,CAChCC,MAAO,SACPC,QAASjC,EACTkC,QAAS,YACTC,KAAM,UACNtB,GAAI,wBAGAuB,EAA4C,CAChDC,QAAS,CACPN,EACA,CACEC,MAAO,SACPC,QAAS/B,EACTgC,QAAS,UACTI,SAAqC,IAA3B/C,EAAkBgD,KAC5B1B,GAAI,yBAGR2B,OAAQ,CACNT,EACA,CACEC,MAAO,OACPC,QAASf,EACToB,SAAmC,IAAzBzC,EAAcU,OACxB2B,QAAS,UACTrB,GAAI,0BAKV,OAAOuB,EAAWzC,IAAiByC,EAAoB,UACtD,CACDzC,EACAJ,EAAkBgD,KAClB1C,EAAcU,OACdP,EACAE,EACAgB,IAGF,OACEuB,EAACC,EAAK,CAACC,QAASd,EAAe1C,QAASa,EAAcd,KAAMA,EAAMqD,KAAK,QAAQK,MAnGxE,YADCjD,EAEG,gBAEA,gBAgGqFkD,SAAA,CAC9FC,EAACnE,EAAmB,CAAAkE,SAClBJ,EAACM,EAAI,CACHC,MAAM,qBACNC,SAAU,CAACC,EAAGC,IAAkBvD,EAAeuD,GAC/CA,MAAOxD,EAAWkD,SAAA,CAElBC,EAACM,EAAG,CAACpB,MAAM,SAASmB,MAAM,WAC1BL,EAACM,EAAG,CAACpB,MAAM,UAAUmB,MAAM,iBAGd,YAAhBxD,EACCmD,EAACO,EAAiB,CAChBC,QAASpE,EACTqE,aAAc/C,EACdnB,MAAOA,EACPc,eAAgBZ,IAGlBuD,EAACU,EAAkB,CAACpC,MAAOvB,EAAe4D,SAAUhC,EAAciC,SAAUvC"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/organisms/AssetManager/index.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { styled } from '@mui/material/styles';\n\nimport Box from '@fd/components/atoms/Box';\nimport Tab from '@fd/components/atoms/Tab';\nimport Modal, { type ModalAction } from '@fd/components/molecules/Modal';\nimport Tabs from '@fd/components/molecules/Tabs';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nimport type { FileUploadState } from '../FileUpload';\nimport LibraryTabContent from './LibraryTabContent';\nimport type { Asset } from './types';\nimport UploadAssetContent from './UploadTabContent';\n\nconst StyledTabsContainer = styled(Box)(({ theme }) => ({\n marginBottom: theme.spacing(3),\n}));\n\n/**\n * Props for the AssetManager component.\n * Provides a modal interface for selecting images from a grid display.\n * It supports both single and multiple image selection modes.\n *\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n *\n * ```tsx\n * import AssetManager from '@flipdish/portal-library/components/organisms/AssetManager';\n */\nexport interface AssetManagerProps {\n /** Whether the asset manager modal is open */\n open: boolean;\n /** Callback function when the modal is closed or cancelled */\n onClose: () => void;\n /** Callback function when assets are selected */\n onSelect?: (selectedAssets: Asset[]) => void;\n /**\n * Organization ID for fetching assets\n */\n orgId: string;\n /** Brand ID for fetching assets */\n brandId?: string;\n /** Whether multiple assets can be selected. Defaults to false */\n multiSelect?: boolean;\n}\n\n// Create a QueryClient instance for the AssetManager component\n// This allows the component to be used without requiring clients to wrap it in QueryClientProvider\nconst queryClient = new QueryClient();\n\n/**\n * AssetManager component used to select assets from the library or upload new assets.\n * Can manage assets at a organization or brand level.\n *\n * @example\n * ```tsx\n * <AssetManager\n * open={isOpen}\n * onClose={() => setIsOpen(false)}\n * onSelect={(assets) => console.log(assets)}\n * orgId=\"org123\"\n * brandId=\"brand456\"\n * multiSelect={true}\n * />\n * ```\n */\nconst AssetManager: React.FC<AssetManagerProps> = ({\n open,\n onClose,\n onSelect,\n orgId,\n brandId,\n multiSelect = false,\n}) => {\n // Use Map for O(1) lookup performance and direct access to Asset objects\n const [selectedAssetsMap, setSelectedAssetsMap] = useState<Map<string, Asset>>(new Map());\n const [selectedTab, setSelectedTab] = useState<string>('library');\n const [uploadedFiles, setUploadedFiles] = useState<FileUploadState[]>([]);\n\n // Reset selection when modal opens/closes\n useEffect(() => {\n if (!open) {\n setSelectedAssetsMap(new Map());\n setUploadedFiles([]);\n }\n }, [open]);\n\n const handleCancel = useCallback((): void => {\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onClose]);\n\n const handleSelect = useCallback((): void => {\n const selectedAssets = Array.from(selectedAssetsMap.values());\n if (onSelect && selectedAssets.length > 0) {\n onSelect(selectedAssets);\n }\n setSelectedAssetsMap(new Map());\n onClose();\n }, [onSelect, selectedAssetsMap, onClose]);\n\n // TODO: translate titles\n const getTitle = (): string => {\n switch (selectedTab) {\n case 'library':\n return 'Select Images';\n default:\n return 'Upload Images';\n }\n };\n\n const handleAssetClick = useCallback(\n (asset: Asset): void => {\n setSelectedAssetsMap((prevMap) => {\n const isSelected = prevMap.has(asset.id);\n const newMap = new Map(prevMap);\n\n if (multiSelect) {\n if (isSelected) {\n newMap.delete(asset.id);\n } else {\n newMap.set(asset.id, asset);\n }\n } else {\n // Single select: replace selection or clear if clicking same asset\n if (isSelected) {\n newMap.clear();\n } else {\n newMap.clear();\n newMap.set(asset.id, asset);\n }\n }\n\n return newMap;\n });\n },\n [multiSelect],\n );\n\n const handleSaveAssets = useCallback((): void => {\n // TODO: call Upload asset api\n setUploadedFiles([]);\n setSelectedTab('library');\n }, []);\n\n const handleUpload = useCallback((files: File[]): void => {\n // Add files with uploading state\n const newFiles: FileUploadState[] = files.map((file) => ({\n file,\n }));\n setUploadedFiles((prev) => [...prev, ...newFiles]);\n }, []);\n\n const handleRemove = useCallback((fileToRemove: File): void => {\n setUploadedFiles((prev) => prev.filter((fileState) => fileState.file !== fileToRemove));\n }, []);\n\n // Tab-specific action button configurations\n // TODO: translate button labels\n const actionButtons = useMemo<ModalAction[]>(() => {\n // Common cancel button configuration\n const cancelButton: ModalAction = {\n label: 'Cancel',\n onClick: handleCancel,\n variant: 'secondary',\n tone: 'neutral',\n id: 'asset-manager-cancel',\n };\n\n const tabActions: Record<string, ModalAction[]> = {\n library: [\n cancelButton,\n {\n label: 'Select',\n onClick: handleSelect,\n variant: 'primary',\n disabled: selectedAssetsMap.size === 0,\n id: 'asset-manager-select',\n },\n ],\n upload: [\n cancelButton,\n {\n label: 'Save',\n onClick: handleSaveAssets,\n disabled: uploadedFiles.length === 0,\n variant: 'primary',\n id: 'asset-manager-upload',\n },\n ],\n };\n\n return tabActions[selectedTab] ?? (tabActions['library'] as ModalAction[]);\n }, [\n selectedTab,\n selectedAssetsMap.size,\n uploadedFiles.length,\n handleCancel,\n handleSelect,\n handleSaveAssets,\n ]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Modal actions={actionButtons} onClose={handleCancel} open={open} size=\"large\" title={getTitle()}>\n <StyledTabsContainer>\n <Tabs\n fdKey=\"asset-manager-tabs\"\n onChange={(_, value: string) => setSelectedTab(value)}\n value={selectedTab}\n >\n <Tab label=\"Upload\" value=\"upload\" />\n <Tab label=\"Library\" value=\"library\" />\n </Tabs>\n </StyledTabsContainer>\n {selectedTab === 'library' ? (\n <LibraryTabContent\n brandId={brandId}\n enabled={open}\n onAssetClick={handleAssetClick}\n orgId={orgId}\n selectedAssets={selectedAssetsMap}\n />\n ) : (\n <UploadAssetContent files={uploadedFiles} onRemove={handleRemove} onUpload={handleUpload} />\n )}\n </Modal>\n </QueryClientProvider>\n );\n};\n\nexport default AssetManager;\n"],"names":["StyledTabsContainer","styled","Box","theme","marginBottom","spacing","queryClient","QueryClient","AssetManager","open","onClose","onSelect","orgId","brandId","multiSelect","selectedAssetsMap","setSelectedAssetsMap","useState","Map","selectedTab","setSelectedTab","uploadedFiles","setUploadedFiles","useEffect","handleCancel","useCallback","handleSelect","selectedAssets","Array","from","values","length","handleAssetClick","asset","prevMap","isSelected","has","id","newMap","delete","set","clear","handleSaveAssets","handleUpload","files","newFiles","map","file","prev","handleRemove","fileToRemove","filter","fileState","actionButtons","useMemo","cancelButton","label","onClick","variant","tone","tabActions","library","disabled","size","upload","_jsx","QueryClientProvider","client","children","_jsxs","Modal","actions","title","Tabs","fdKey","onChange","_","value","Tab","LibraryTabContent","enabled","onAssetClick","UploadAssetContent","onRemove","onUpload"],"mappings":"+eAeA,MAAMA,EAAsBC,EAAOC,EAAPD,EAAY,EAAGE,YAAO,CAChDC,aAAcD,EAAME,QAAQ,OAgCxBC,EAAc,IAAIC,EAkBlBC,EAA4C,EAChDC,OACAC,UACAC,WACAC,QACAC,UACAC,eAAc,MAGd,MAAOC,EAAmBC,GAAwBC,EAA6B,IAAIC,MAC5EC,EAAaC,GAAkBH,EAAiB,YAChDI,EAAeC,GAAoBL,EAA4B,IAGtEM,GAAU,KACHd,IACHO,EAAqB,IAAIE,KACzBI,EAAiB,OAElB,CAACb,IAEJ,MAAMe,EAAeC,GAAY,KAC/BT,EAAqB,IAAIE,KACzBR,MACC,CAACA,IAEEgB,EAAeD,GAAY,KAC/B,MAAME,EAAiBC,MAAMC,KAAKd,EAAkBe,UAChDnB,GAAYgB,EAAeI,OAAS,GACtCpB,EAASgB,GAEXX,EAAqB,IAAIE,KACzBR,MACC,CAACC,EAAUI,EAAmBL,IAY3BsB,EAAmBP,GACtBQ,IACCjB,GAAsBkB,IACpB,MAAMC,EAAaD,EAAQE,IAAIH,EAAMI,IAC/BC,EAAS,IAAIpB,IAAIgB,GAkBvB,OAhBIpB,EACEqB,EACFG,EAAOC,OAAON,EAAMI,IAEpBC,EAAOE,IAAIP,EAAMI,GAAIJ,GAInBE,EACFG,EAAOG,SAEPH,EAAOG,QACPH,EAAOE,IAAIP,EAAMI,GAAIJ,IAIlBK,OAGX,CAACxB,IAGG4B,EAAmBjB,GAAY,KAEnCH,EAAiB,IACjBF,EAAe,aACd,IAEGuB,EAAelB,GAAamB,IAEhC,MAAMC,EAA8BD,EAAME,KAAKC,IAAI,CACjDA,WAEFzB,GAAkB0B,GAAS,IAAIA,KAASH,OACvC,IAEGI,EAAexB,GAAayB,IAChC5B,GAAkB0B,GAASA,EAAKG,QAAQC,GAAcA,EAAUL,OAASG,QACxE,IAIGG,EAAgBC,GAAuB,KAE3C,MAAMC,EAA4B,CAChCC,MAAO,SACPC,QAASjC,EACTkC,QAAS,YACTC,KAAM,UACNtB,GAAI,wBAGAuB,EAA4C,CAChDC,QAAS,CACPN,EACA,CACEC,MAAO,SACPC,QAAS/B,EACTgC,QAAS,UACTI,SAAqC,IAA3B/C,EAAkBgD,KAC5B1B,GAAI,yBAGR2B,OAAQ,CACNT,EACA,CACEC,MAAO,OACPC,QAASf,EACToB,SAAmC,IAAzBzC,EAAcU,OACxB2B,QAAS,UACTrB,GAAI,0BAKV,OAAOuB,EAAWzC,IAAiByC,EAAoB,UACtD,CACDzC,EACAJ,EAAkBgD,KAClB1C,EAAcU,OACdP,EACAE,EACAgB,IAGF,OACEuB,EAACC,EAAmB,CAACC,OAAQ7D,EAAW8D,SACtCC,EAACC,EAAK,CAACC,QAASlB,EAAe3C,QAASc,EAAcf,KAAMA,EAAMsD,KAAK,QAAQS,MApG1E,YADCrD,EAEG,gBAEA,0BAkGP8C,EAACjE,EAAmB,CAAAoE,SAClBC,EAACI,EAAI,CACHC,MAAM,qBACNC,SAAU,CAACC,EAAGC,IAAkBzD,EAAeyD,GAC/CA,MAAO1D,EAAWiD,SAAA,CAElBH,EAACa,EAAG,CAACtB,MAAM,SAASqB,MAAM,WAC1BZ,EAACa,EAAG,CAACtB,MAAM,UAAUqB,MAAM,iBAGd,YAAhB1D,EACC8C,EAACc,EAAiB,CAChBlE,QAASA,EACTmE,QAASvE,EACTwE,aAAcjD,EACdpB,MAAOA,EACPe,eAAgBZ,IAGlBkD,EAACiB,EAAkB,CAACtC,MAAOvB,EAAe8D,SAAUlC,EAAcmC,SAAUzC"}
@@ -1,2 +1,2 @@
1
- "use strict";const t=t=>{if(!t)return;return`${(()=>{const t=window.location?.host?.includes("portal.flipdish.com"),e=window.location?.host?.includes("portal.flipdishdev.com");return t?"https://asset-management-service.portal.flipdish.com":e?"https://asset-management-service.portal.flipdishdev.com":"https://ci.asset-management-service.clients-ephemeral.flipdishdev.com"})()}/${t}/assets`};exports.getAssets=async e=>{const s=t(e);if(!s)throw new Error("Organization ID is required to fetch assets");const i=await fetch(s,{method:"GET",credentials:"include"});if(!i.ok)throw new Error(`Failed to fetch assets: ${i.statusText}`);return await i.json()},exports.getAssetsKey="getAssets";
1
+ "use strict";const t=(t,s)=>{if(!t)return;const e=s?`?brandId=${s}`:"";return`${(()=>{const t=window.location?.host?.includes("portal.flipdish.com"),s=window.location?.host?.includes("portal.flipdishdev.com");return t?"https://asset-management-service.portal.flipdish.com":s?"https://asset-management-service.portal.flipdishdev.com":"https://ci.asset-management-service.clients-ephemeral.flipdishdev.com"})()}/${t}/assets${e}`};exports.getAssets=async(s,e)=>{const i=t(s,e);if(!i)throw new Error("Organization ID is required to fetch assets");const o=await fetch(i,{method:"GET",credentials:"include"});if(!o.ok)throw new Error(`Failed to fetch assets: ${o.statusText}`);return await o.json()},exports.getAssetsKey="getAssets";
2
2
  //# sourceMappingURL=asset.service.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset.service.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/services/asset.service.ts"],"sourcesContent":["import type { Asset } from '../types';\n\nexport const getAssetsKey = 'getAssets';\n\nconst PROD_API_URL = 'https://asset-management-service.portal.flipdish.com';\nconst STAGING_API_URL = 'https://asset-management-service.portal.flipdishdev.com';\nconst CI_API_URL = 'https://ci.asset-management-service.clients-ephemeral.flipdishdev.com';\n\n/**\n * Gets the asset management API base URL based on the current environment\n * @returns The appropriate API URL for the current environment\n */\nconst getAssetManagementApiUrl = (): string => {\n const isProd = window.location?.host?.includes('portal.flipdish.com');\n const isStaging = window.location?.host?.includes('portal.flipdishdev.com');\n\n if (isProd) {\n return PROD_API_URL;\n }\n\n if (isStaging) {\n return STAGING_API_URL;\n }\n\n // Default to CI/dev environment\n return CI_API_URL;\n};\n\n/**\n * Builds the complete API URL for fetching assets\n * @param orgId - Optional organization ID.\n * @returns The complete API URL or undefined if no orgId available\n */\nconst buildApiUrl = (orgId: string): string | undefined => {\n if (!orgId) return undefined;\n\n const baseUrl = getAssetManagementApiUrl();\n return `${baseUrl}/${orgId}/assets`;\n};\n\n/**\n * Fetches assets from the asset management service API\n * @param orgId - organization ID.\n * @returns Promise resolving to an array of assets\n */\nexport const getAssets = async (orgId: string): Promise<Asset[]> => {\n const apiUrl = buildApiUrl(orgId);\n\n if (!apiUrl) {\n throw new Error('Organization ID is required to fetch assets');\n }\n\n const response = await fetch(apiUrl, {\n method: 'GET',\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch assets: ${response.statusText}`);\n }\n\n return (await response.json()) as Asset[];\n};\n"],"names":["buildApiUrl","orgId","isProd","window","location","host","includes","isStaging","getAssetManagementApiUrl","async","apiUrl","Error","response","fetch","method","credentials","ok","statusText","json"],"mappings":"aAEO,MA+BDA,EAAeC,IACnB,IAAKA,EAAO,OAGZ,MAAO,GAzBwB,MAC/B,MAAMC,EAASC,OAAOC,UAAUC,MAAMC,SAAS,uBACzCC,EAAYJ,OAAOC,UAAUC,MAAMC,SAAS,0BAElD,OAAIJ,EAZe,uDAgBfK,EAfkB,0DACL,yEA8BDC,MACKP,8BAQEQ,MAAOR,IAC9B,MAAMS,EAASV,EAAYC,GAE3B,IAAKS,EACH,MAAM,IAAIC,MAAM,+CAGlB,MAAMC,QAAiBC,MAAMH,EAAQ,CACnCI,OAAQ,MACRC,YAAa,YAGf,IAAKH,EAASI,GACZ,MAAM,IAAIL,MAAM,2BAA2BC,EAASK,cAGtD,aAAcL,EAASM,6BA3DG"}
1
+ {"version":3,"file":"asset.service.cjs.js","sources":["../../../../../src/components/organisms/AssetManager/services/asset.service.ts"],"sourcesContent":["import type { Asset } from '../types';\n\nexport const getAssetsKey = 'getAssets';\n\nconst PROD_API_URL = 'https://asset-management-service.portal.flipdish.com';\nconst STAGING_API_URL = 'https://asset-management-service.portal.flipdishdev.com';\nconst CI_API_URL = 'https://ci.asset-management-service.clients-ephemeral.flipdishdev.com';\n\n/**\n * Gets the asset management API base URL based on the current environment\n * @returns The appropriate API URL for the current environment\n */\nconst getAssetManagementApiUrl = (): string => {\n const isProd = window.location?.host?.includes('portal.flipdish.com');\n const isStaging = window.location?.host?.includes('portal.flipdishdev.com');\n\n if (isProd) {\n return PROD_API_URL;\n }\n\n if (isStaging) {\n return STAGING_API_URL;\n }\n\n // Default to CI/dev environment\n return CI_API_URL;\n};\n\n/**\n * Builds the complete API URL for fetching assets\n * @param orgId - Optional organization ID.\n * @param brandId - Optional brand ID.\n * @returns The complete API URL or undefined if no orgId available\n */\nconst buildApiUrl = (orgId: string, brandId?: string): string | undefined => {\n if (!orgId) return undefined;\n const brandIdQueryParam = brandId ? `?brandId=${brandId}` : '';\n const baseUrl = getAssetManagementApiUrl();\n return `${baseUrl}/${orgId}/assets${brandIdQueryParam}`;\n};\n\n/**\n * Fetches assets from the asset management service API\n * @param orgId - organization ID.\n * @param brandId - brand ID.\n * @returns Promise resolving to an array of assets\n */\nexport const getAssets = async (orgId: string, brandId?: string): Promise<Asset[]> => {\n const apiUrl = buildApiUrl(orgId, brandId);\n\n if (!apiUrl) {\n throw new Error('Organization ID is required to fetch assets');\n }\n\n const response = await fetch(apiUrl, {\n method: 'GET',\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch assets: ${response.statusText}`);\n }\n\n return (await response.json()) as Asset[];\n};\n"],"names":["buildApiUrl","orgId","brandId","brandIdQueryParam","isProd","window","location","host","includes","isStaging","getAssetManagementApiUrl","async","apiUrl","Error","response","fetch","method","credentials","ok","statusText","json"],"mappings":"aAEO,MAgCDA,EAAc,CAACC,EAAeC,KAClC,IAAKD,EAAO,OACZ,MAAME,EAAoBD,EAAU,YAAYA,IAAY,GAE5D,MAAO,GA1BwB,MAC/B,MAAME,EAASC,OAAOC,UAAUC,MAAMC,SAAS,uBACzCC,EAAYJ,OAAOC,UAAUC,MAAMC,SAAS,0BAElD,OAAIJ,EAZe,uDAgBfK,EAfkB,0DACL,yEA+BDC,MACKT,WAAeE,uBASbQ,MAAOV,EAAeC,KAC7C,MAAMU,EAASZ,EAAYC,EAAOC,GAElC,IAAKU,EACH,MAAM,IAAIC,MAAM,+CAGlB,MAAMC,QAAiBC,MAAMH,EAAQ,CACnCI,OAAQ,MACRC,YAAa,YAGf,IAAKH,EAASI,GACZ,MAAM,IAAIL,MAAM,2BAA2BC,EAASK,cAGtD,aAAcL,EAASM,6BA7DG"}
@@ -4,8 +4,9 @@ declare const getAssetsKey = "getAssets";
4
4
  /**
5
5
  * Fetches assets from the asset management service API
6
6
  * @param orgId - organization ID.
7
+ * @param brandId - brand ID.
7
8
  * @returns Promise resolving to an array of assets
8
9
  */
9
- declare const getAssets: (orgId: string) => Promise<Asset[]>;
10
+ declare const getAssets: (orgId: string, brandId?: string) => Promise<Asset[]>;
10
11
 
11
12
  export { getAssets, getAssetsKey };
@@ -1,2 +1,2 @@
1
- const t="getAssets",e=t=>{if(!t)return;return`${(()=>{const t=window.location?.host?.includes("portal.flipdish.com"),e=window.location?.host?.includes("portal.flipdishdev.com");return t?"https://asset-management-service.portal.flipdish.com":e?"https://asset-management-service.portal.flipdishdev.com":"https://ci.asset-management-service.clients-ephemeral.flipdishdev.com"})()}/${t}/assets`},s=async t=>{const s=e(t);if(!s)throw new Error("Organization ID is required to fetch assets");const i=await fetch(s,{method:"GET",credentials:"include"});if(!i.ok)throw new Error(`Failed to fetch assets: ${i.statusText}`);return await i.json()};export{s as getAssets,t as getAssetsKey};
1
+ const t="getAssets",e=(t,e)=>{if(!t)return;const s=e?`?brandId=${e}`:"";return`${(()=>{const t=window.location?.host?.includes("portal.flipdish.com"),e=window.location?.host?.includes("portal.flipdishdev.com");return t?"https://asset-management-service.portal.flipdish.com":e?"https://asset-management-service.portal.flipdishdev.com":"https://ci.asset-management-service.clients-ephemeral.flipdishdev.com"})()}/${t}/assets${s}`},s=async(t,s)=>{const i=e(t,s);if(!i)throw new Error("Organization ID is required to fetch assets");const o=await fetch(i,{method:"GET",credentials:"include"});if(!o.ok)throw new Error(`Failed to fetch assets: ${o.statusText}`);return await o.json()};export{s as getAssets,t as getAssetsKey};
2
2
  //# sourceMappingURL=asset.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"asset.service.js","sources":["../../../../../src/components/organisms/AssetManager/services/asset.service.ts"],"sourcesContent":["import type { Asset } from '../types';\n\nexport const getAssetsKey = 'getAssets';\n\nconst PROD_API_URL = 'https://asset-management-service.portal.flipdish.com';\nconst STAGING_API_URL = 'https://asset-management-service.portal.flipdishdev.com';\nconst CI_API_URL = 'https://ci.asset-management-service.clients-ephemeral.flipdishdev.com';\n\n/**\n * Gets the asset management API base URL based on the current environment\n * @returns The appropriate API URL for the current environment\n */\nconst getAssetManagementApiUrl = (): string => {\n const isProd = window.location?.host?.includes('portal.flipdish.com');\n const isStaging = window.location?.host?.includes('portal.flipdishdev.com');\n\n if (isProd) {\n return PROD_API_URL;\n }\n\n if (isStaging) {\n return STAGING_API_URL;\n }\n\n // Default to CI/dev environment\n return CI_API_URL;\n};\n\n/**\n * Builds the complete API URL for fetching assets\n * @param orgId - Optional organization ID.\n * @returns The complete API URL or undefined if no orgId available\n */\nconst buildApiUrl = (orgId: string): string | undefined => {\n if (!orgId) return undefined;\n\n const baseUrl = getAssetManagementApiUrl();\n return `${baseUrl}/${orgId}/assets`;\n};\n\n/**\n * Fetches assets from the asset management service API\n * @param orgId - organization ID.\n * @returns Promise resolving to an array of assets\n */\nexport const getAssets = async (orgId: string): Promise<Asset[]> => {\n const apiUrl = buildApiUrl(orgId);\n\n if (!apiUrl) {\n throw new Error('Organization ID is required to fetch assets');\n }\n\n const response = await fetch(apiUrl, {\n method: 'GET',\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch assets: ${response.statusText}`);\n }\n\n return (await response.json()) as Asset[];\n};\n"],"names":["getAssetsKey","buildApiUrl","orgId","isProd","window","location","host","includes","isStaging","getAssetManagementApiUrl","getAssets","async","apiUrl","Error","response","fetch","method","credentials","ok","statusText","json"],"mappings":"AAEO,MAAMA,EAAe,YA+BtBC,EAAeC,IACnB,IAAKA,EAAO,OAGZ,MAAO,GAzBwB,MAC/B,MAAMC,EAASC,OAAOC,UAAUC,MAAMC,SAAS,uBACzCC,EAAYJ,OAAOC,UAAUC,MAAMC,SAAS,0BAElD,OAAIJ,EAZe,uDAgBfK,EAfkB,0DACL,yEA8BDC,MACKP,YAQVQ,EAAYC,MAAOT,IAC9B,MAAMU,EAASX,EAAYC,GAE3B,IAAKU,EACH,MAAM,IAAIC,MAAM,+CAGlB,MAAMC,QAAiBC,MAAMH,EAAQ,CACnCI,OAAQ,MACRC,YAAa,YAGf,IAAKH,EAASI,GACZ,MAAM,IAAIL,MAAM,2BAA2BC,EAASK,cAGtD,aAAcL,EAASM"}
1
+ {"version":3,"file":"asset.service.js","sources":["../../../../../src/components/organisms/AssetManager/services/asset.service.ts"],"sourcesContent":["import type { Asset } from '../types';\n\nexport const getAssetsKey = 'getAssets';\n\nconst PROD_API_URL = 'https://asset-management-service.portal.flipdish.com';\nconst STAGING_API_URL = 'https://asset-management-service.portal.flipdishdev.com';\nconst CI_API_URL = 'https://ci.asset-management-service.clients-ephemeral.flipdishdev.com';\n\n/**\n * Gets the asset management API base URL based on the current environment\n * @returns The appropriate API URL for the current environment\n */\nconst getAssetManagementApiUrl = (): string => {\n const isProd = window.location?.host?.includes('portal.flipdish.com');\n const isStaging = window.location?.host?.includes('portal.flipdishdev.com');\n\n if (isProd) {\n return PROD_API_URL;\n }\n\n if (isStaging) {\n return STAGING_API_URL;\n }\n\n // Default to CI/dev environment\n return CI_API_URL;\n};\n\n/**\n * Builds the complete API URL for fetching assets\n * @param orgId - Optional organization ID.\n * @param brandId - Optional brand ID.\n * @returns The complete API URL or undefined if no orgId available\n */\nconst buildApiUrl = (orgId: string, brandId?: string): string | undefined => {\n if (!orgId) return undefined;\n const brandIdQueryParam = brandId ? `?brandId=${brandId}` : '';\n const baseUrl = getAssetManagementApiUrl();\n return `${baseUrl}/${orgId}/assets${brandIdQueryParam}`;\n};\n\n/**\n * Fetches assets from the asset management service API\n * @param orgId - organization ID.\n * @param brandId - brand ID.\n * @returns Promise resolving to an array of assets\n */\nexport const getAssets = async (orgId: string, brandId?: string): Promise<Asset[]> => {\n const apiUrl = buildApiUrl(orgId, brandId);\n\n if (!apiUrl) {\n throw new Error('Organization ID is required to fetch assets');\n }\n\n const response = await fetch(apiUrl, {\n method: 'GET',\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch assets: ${response.statusText}`);\n }\n\n return (await response.json()) as Asset[];\n};\n"],"names":["getAssetsKey","buildApiUrl","orgId","brandId","brandIdQueryParam","isProd","window","location","host","includes","isStaging","getAssetManagementApiUrl","getAssets","async","apiUrl","Error","response","fetch","method","credentials","ok","statusText","json"],"mappings":"AAEO,MAAMA,EAAe,YAgCtBC,EAAc,CAACC,EAAeC,KAClC,IAAKD,EAAO,OACZ,MAAME,EAAoBD,EAAU,YAAYA,IAAY,GAE5D,MAAO,GA1BwB,MAC/B,MAAME,EAASC,OAAOC,UAAUC,MAAMC,SAAS,uBACzCC,EAAYJ,OAAOC,UAAUC,MAAMC,SAAS,0BAElD,OAAIJ,EAZe,uDAgBfK,EAfkB,0DACL,yEA+BDC,MACKT,WAAeE,KASzBQ,EAAYC,MAAOX,EAAeC,KAC7C,MAAMW,EAASb,EAAYC,EAAOC,GAElC,IAAKW,EACH,MAAM,IAAIC,MAAM,+CAGlB,MAAMC,QAAiBC,MAAMH,EAAQ,CACnCI,OAAQ,MACRC,YAAa,YAGf,IAAKH,EAASI,GACZ,MAAM,IAAIL,MAAM,2BAA2BC,EAASK,cAGtD,aAAcL,EAASM"}
@@ -1,2 +1,2 @@
1
- "use strict";require("../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.cjs.js");var e=require("../../components/organisms/AssetManager/__mocks__/mockAssets.cjs.js"),s=require("../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.cjs.js"),o=require("../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.cjs.js");const t=[...[s.http.get("*asset-management-service*/:orgId/assets",(({request:s,params:t})=>(console.log("[MSW] Intercepted request:",s.url,"orgId:",t.orgId),o.HttpResponse.json(e.mockAssets))))]];exports.handlers=t;
1
+ "use strict";require("../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.cjs.js");var e=require("../../components/organisms/AssetManager/__mocks__/mockAssets.cjs.js"),s=require("../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.cjs.js"),o=require("../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.cjs.js");const t=[...[s.http.get("*asset-management-service*/:orgId/assets",(({request:s,params:t})=>(console.log("[MSW] Intercepted request:",s.url,"orgId:",t.orgId),o.HttpResponse.json(e.mockAssets))))]];exports.handlers=t;
2
2
  //# sourceMappingURL=handlers.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { HttpHandler } from '../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.d.js';
1
+ import { HttpHandler } from '../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/handlers/HttpHandler.d.js';
2
2
 
3
3
  declare const handlers: HttpHandler[];
4
4
 
@@ -1,2 +1,2 @@
1
- import"../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.js";import{mockAssets as e}from"../../components/organisms/AssetManager/__mocks__/mockAssets.js";import{http as s}from"../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.js";import{HttpResponse as o}from"../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.js";const t=[...[s.get("*asset-management-service*/:orgId/assets",(({request:s,params:t})=>(console.log("[MSW] Intercepted request:",s.url,"orgId:",t.orgId),o.json(e))))]];export{t as handlers};
1
+ import"../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/index.js";import{mockAssets as e}from"../../components/organisms/AssetManager/__mocks__/mockAssets.js";import{http as s}from"../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/http.js";import{HttpResponse as o}from"../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.js";const t=[...[s.get("*asset-management-service*/:orgId/assets",(({request:s,params:t})=>(console.log("[MSW] Intercepted request:",s.url,"orgId:",t.orgId),o.json(e))))]];export{t as handlers};
2
2
  //# sourceMappingURL=handlers.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.cjs.js"),s=require("./handlers.cjs.js");const r=e.setupServer(...s.handlers);exports.server=r;
1
+ "use strict";var e=require("../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.cjs.js"),s=require("./handlers.cjs.js");const r=e.setupServer(...s.handlers);exports.server=r;
2
2
  //# sourceMappingURL=server.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { SetupServerApi } from '../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.d.js';
1
+ import { SetupServerApi } from '../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.d.js';
2
2
 
3
3
  declare const server: SetupServerApi;
4
4
 
@@ -1,2 +1,2 @@
1
- import{setupServer as o}from"../../node_modules/.pnpm/msw@2.12.3_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.js";import{handlers as e}from"./handlers.js";const s=o(...e);export{s as server};
1
+ import{setupServer as o}from"../../node_modules/.pnpm/msw@2.12.4_@types_node@20.19.25_typescript@5.4.5/node_modules/msw/lib/node/index.js";import{handlers as e}from"./handlers.js";const s=o(...e);export{s as server};
2
2
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpResponse.cjs.js","sources":["../../../../../../../../../../node_modules/.pnpm/msw@2.12.3_@types+node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.mjs"],"sourcesContent":["import { FetchResponse } from \"@mswjs/interceptors\";\nimport {\n decorateResponse,\n normalizeResponseInit\n} from './utils/HttpResponse/decorators.mjs';\nconst bodyType = Symbol(\"bodyType\");\nclass HttpResponse extends FetchResponse {\n [bodyType] = null;\n constructor(body, init) {\n const responseInit = normalizeResponseInit(init);\n super(body, responseInit);\n decorateResponse(this, responseInit);\n }\n static error() {\n return super.error();\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/plain\"` body.\n * @example\n * HttpResponse.text('hello world')\n * HttpResponse.text('Error', { status: 500 })\n */\n static text(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/plain\");\n }\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n body ? new Blob([body]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/json\"` body.\n * @example\n * HttpResponse.json({ firstName: 'John' })\n * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })\n */\n static json(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/json\");\n }\n const responseText = JSON.stringify(body);\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n responseText ? new Blob([responseText]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(responseText, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/xml\"` body.\n * @example\n * HttpResponse.xml(`<user name=\"John\" />`)\n * HttpResponse.xml(`<article id=\"abc-123\" />`, { status: 201 })\n */\n static xml(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/xml\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/html\"` body.\n * @example\n * HttpResponse.html(`<p class=\"author\">Jane Doe</p>`)\n * HttpResponse.html(`<main id=\"abc-123\">Main text</main>`, { status: 201 })\n */\n static html(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/html\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with an `ArrayBuffer` body.\n * @example\n * const buffer = new ArrayBuffer(3)\n * const view = new Uint8Array(buffer)\n * view.set([1, 2, 3])\n *\n * HttpResponse.arrayBuffer(buffer)\n */\n static arrayBuffer(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/octet-stream\");\n }\n if (body && !responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\"Content-Length\", body.byteLength.toString());\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `FormData` body.\n * @example\n * const data = new FormData()\n * data.set('name', 'Alice')\n *\n * HttpResponse.formData(data)\n */\n static formData(body, init) {\n return new HttpResponse(body, normalizeResponseInit(init));\n }\n}\nexport {\n HttpResponse,\n bodyType\n};\n//# sourceMappingURL=HttpResponse.mjs.map"],"names":["bodyType","Symbol","HttpResponse","FetchResponse","constructor","body","init","responseInit","normalizeResponseInit","super","decorateResponse","this","error","text","headers","has","set","Blob","size","toString","json","responseText","JSON","stringify","xml","html","arrayBuffer","byteLength","formData"],"mappings":"qTAKK,MAACA,EAAWC,OAAO,YACxB,MAAMC,UAAqBC,EAAAA,cACzBH,CAACA,GAAY,KACb,WAAAI,CAAYC,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAC3CG,MAAMJ,EAAME,GACZG,EAAAA,iBAAiBC,KAAMJ,EACzB,CACA,YAAOK,GACL,OAAOH,MAAMG,OACf,CAOA,WAAOC,CAAKR,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAU3C,OATKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,cAEtCT,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAX,EAAO,IAAIY,KAAK,CAACZ,IAAOa,KAAKC,WAAa,KAGvC,IAAIjB,EAAaG,EAAME,EAChC,CAOA,WAAOa,CAAKf,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GACtCC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,oBAE3C,MAAMK,EAAeC,KAAKC,UAAUlB,GAOpC,OANKE,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAK,EAAe,IAAIJ,KAAK,CAACI,IAAeH,KAAKC,WAAa,KAGvD,IAAIjB,EAAamB,EAAcd,EACxC,CAOA,UAAOiB,CAAInB,EAAMC,GACf,MAAMC,EAAeC,EAAAA,sBAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,YAEpC,IAAId,EAAaG,EAAME,EAChC,CAOA,WAAOkB,CAAKpB,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,aAEpC,IAAId,EAAaG,EAAME,EAChC,CAUA,kBAAOmB,CAAYrB,EAAMC,GACvB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAO3C,OANKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,4BAEvCX,IAASE,EAAaO,QAAQC,IAAI,mBACpCR,EAAaO,QAAQE,IAAI,iBAAkBX,EAAKsB,WAAWR,YAEtD,IAAIjB,EAAaG,EAAME,EAChC,CASA,eAAOqB,CAASvB,EAAMC,GACpB,OAAO,IAAIJ,EAAaG,EAAMG,EAAAA,sBAAsBF,GACtD","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"HttpResponse.cjs.js","sources":["../../../../../../../../../../node_modules/.pnpm/msw@2.12.4_@types+node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.mjs"],"sourcesContent":["import { FetchResponse } from \"@mswjs/interceptors\";\nimport {\n decorateResponse,\n normalizeResponseInit\n} from './utils/HttpResponse/decorators.mjs';\nconst bodyType = Symbol(\"bodyType\");\nclass HttpResponse extends FetchResponse {\n [bodyType] = null;\n constructor(body, init) {\n const responseInit = normalizeResponseInit(init);\n super(body, responseInit);\n decorateResponse(this, responseInit);\n }\n static error() {\n return super.error();\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/plain\"` body.\n * @example\n * HttpResponse.text('hello world')\n * HttpResponse.text('Error', { status: 500 })\n */\n static text(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/plain\");\n }\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n body ? new Blob([body]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/json\"` body.\n * @example\n * HttpResponse.json({ firstName: 'John' })\n * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })\n */\n static json(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/json\");\n }\n const responseText = JSON.stringify(body);\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n responseText ? new Blob([responseText]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(responseText, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/xml\"` body.\n * @example\n * HttpResponse.xml(`<user name=\"John\" />`)\n * HttpResponse.xml(`<article id=\"abc-123\" />`, { status: 201 })\n */\n static xml(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/xml\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/html\"` body.\n * @example\n * HttpResponse.html(`<p class=\"author\">Jane Doe</p>`)\n * HttpResponse.html(`<main id=\"abc-123\">Main text</main>`, { status: 201 })\n */\n static html(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/html\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with an `ArrayBuffer` body.\n * @example\n * const buffer = new ArrayBuffer(3)\n * const view = new Uint8Array(buffer)\n * view.set([1, 2, 3])\n *\n * HttpResponse.arrayBuffer(buffer)\n */\n static arrayBuffer(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/octet-stream\");\n }\n if (body && !responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\"Content-Length\", body.byteLength.toString());\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `FormData` body.\n * @example\n * const data = new FormData()\n * data.set('name', 'Alice')\n *\n * HttpResponse.formData(data)\n */\n static formData(body, init) {\n return new HttpResponse(body, normalizeResponseInit(init));\n }\n}\nexport {\n HttpResponse,\n bodyType\n};\n//# sourceMappingURL=HttpResponse.mjs.map"],"names":["bodyType","Symbol","HttpResponse","FetchResponse","constructor","body","init","responseInit","normalizeResponseInit","super","decorateResponse","this","error","text","headers","has","set","Blob","size","toString","json","responseText","JSON","stringify","xml","html","arrayBuffer","byteLength","formData"],"mappings":"qTAKK,MAACA,EAAWC,OAAO,YACxB,MAAMC,UAAqBC,EAAAA,cACzBH,CAACA,GAAY,KACb,WAAAI,CAAYC,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAC3CG,MAAMJ,EAAME,GACZG,EAAAA,iBAAiBC,KAAMJ,EACzB,CACA,YAAOK,GACL,OAAOH,MAAMG,OACf,CAOA,WAAOC,CAAKR,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAU3C,OATKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,cAEtCT,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAX,EAAO,IAAIY,KAAK,CAACZ,IAAOa,KAAKC,WAAa,KAGvC,IAAIjB,EAAaG,EAAME,EAChC,CAOA,WAAOa,CAAKf,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GACtCC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,oBAE3C,MAAMK,EAAeC,KAAKC,UAAUlB,GAOpC,OANKE,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAK,EAAe,IAAIJ,KAAK,CAACI,IAAeH,KAAKC,WAAa,KAGvD,IAAIjB,EAAamB,EAAcd,EACxC,CAOA,UAAOiB,CAAInB,EAAMC,GACf,MAAMC,EAAeC,EAAAA,sBAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,YAEpC,IAAId,EAAaG,EAAME,EAChC,CAOA,WAAOkB,CAAKpB,EAAMC,GAChB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,aAEpC,IAAId,EAAaG,EAAME,EAChC,CAUA,kBAAOmB,CAAYrB,EAAMC,GACvB,MAAMC,EAAeC,EAAAA,sBAAsBF,GAO3C,OANKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,4BAEvCX,IAASE,EAAaO,QAAQC,IAAI,mBACpCR,EAAaO,QAAQE,IAAI,iBAAkBX,EAAKsB,WAAWR,YAEtD,IAAIjB,EAAaG,EAAME,EAChC,CASA,eAAOqB,CAASvB,EAAMC,GACpB,OAAO,IAAIJ,EAAaG,EAAMG,EAAAA,sBAAsBF,GACtD","x_google_ignoreList":[0]}
@@ -1 +1 @@
1
- {"version":3,"file":"HttpResponse.js","sources":["../../../../../../../../../../node_modules/.pnpm/msw@2.12.3_@types+node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.mjs"],"sourcesContent":["import { FetchResponse } from \"@mswjs/interceptors\";\nimport {\n decorateResponse,\n normalizeResponseInit\n} from './utils/HttpResponse/decorators.mjs';\nconst bodyType = Symbol(\"bodyType\");\nclass HttpResponse extends FetchResponse {\n [bodyType] = null;\n constructor(body, init) {\n const responseInit = normalizeResponseInit(init);\n super(body, responseInit);\n decorateResponse(this, responseInit);\n }\n static error() {\n return super.error();\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/plain\"` body.\n * @example\n * HttpResponse.text('hello world')\n * HttpResponse.text('Error', { status: 500 })\n */\n static text(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/plain\");\n }\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n body ? new Blob([body]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/json\"` body.\n * @example\n * HttpResponse.json({ firstName: 'John' })\n * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })\n */\n static json(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/json\");\n }\n const responseText = JSON.stringify(body);\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n responseText ? new Blob([responseText]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(responseText, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/xml\"` body.\n * @example\n * HttpResponse.xml(`<user name=\"John\" />`)\n * HttpResponse.xml(`<article id=\"abc-123\" />`, { status: 201 })\n */\n static xml(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/xml\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/html\"` body.\n * @example\n * HttpResponse.html(`<p class=\"author\">Jane Doe</p>`)\n * HttpResponse.html(`<main id=\"abc-123\">Main text</main>`, { status: 201 })\n */\n static html(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/html\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with an `ArrayBuffer` body.\n * @example\n * const buffer = new ArrayBuffer(3)\n * const view = new Uint8Array(buffer)\n * view.set([1, 2, 3])\n *\n * HttpResponse.arrayBuffer(buffer)\n */\n static arrayBuffer(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/octet-stream\");\n }\n if (body && !responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\"Content-Length\", body.byteLength.toString());\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `FormData` body.\n * @example\n * const data = new FormData()\n * data.set('name', 'Alice')\n *\n * HttpResponse.formData(data)\n */\n static formData(body, init) {\n return new HttpResponse(body, normalizeResponseInit(init));\n }\n}\nexport {\n HttpResponse,\n bodyType\n};\n//# sourceMappingURL=HttpResponse.mjs.map"],"names":["bodyType","Symbol","HttpResponse","FetchResponse","constructor","body","init","responseInit","normalizeResponseInit","super","decorateResponse","this","error","text","headers","has","set","Blob","size","toString","json","responseText","JSON","stringify","xml","html","arrayBuffer","byteLength","formData"],"mappings":"qVAKK,MAACA,EAAWC,OAAO,YACxB,MAAMC,UAAqBC,EACzBH,CAACA,GAAY,KACb,WAAAI,CAAYC,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAC3CG,MAAMJ,EAAME,GACZG,EAAiBC,KAAMJ,EACzB,CACA,YAAOK,GACL,OAAOH,MAAMG,OACf,CAOA,WAAOC,CAAKR,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAU3C,OATKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,cAEtCT,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAX,EAAO,IAAIY,KAAK,CAACZ,IAAOa,KAAKC,WAAa,KAGvC,IAAIjB,EAAaG,EAAME,EAChC,CAOA,WAAOa,CAAKf,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GACtCC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,oBAE3C,MAAMK,EAAeC,KAAKC,UAAUlB,GAOpC,OANKE,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAK,EAAe,IAAIJ,KAAK,CAACI,IAAeH,KAAKC,WAAa,KAGvD,IAAIjB,EAAamB,EAAcd,EACxC,CAOA,UAAOiB,CAAInB,EAAMC,GACf,MAAMC,EAAeC,EAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,YAEpC,IAAId,EAAaG,EAAME,EAChC,CAOA,WAAOkB,CAAKpB,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,aAEpC,IAAId,EAAaG,EAAME,EAChC,CAUA,kBAAOmB,CAAYrB,EAAMC,GACvB,MAAMC,EAAeC,EAAsBF,GAO3C,OANKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,4BAEvCX,IAASE,EAAaO,QAAQC,IAAI,mBACpCR,EAAaO,QAAQE,IAAI,iBAAkBX,EAAKsB,WAAWR,YAEtD,IAAIjB,EAAaG,EAAME,EAChC,CASA,eAAOqB,CAASvB,EAAMC,GACpB,OAAO,IAAIJ,EAAaG,EAAMG,EAAsBF,GACtD","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"HttpResponse.js","sources":["../../../../../../../../../../node_modules/.pnpm/msw@2.12.4_@types+node@20.19.25_typescript@5.4.5/node_modules/msw/lib/core/HttpResponse.mjs"],"sourcesContent":["import { FetchResponse } from \"@mswjs/interceptors\";\nimport {\n decorateResponse,\n normalizeResponseInit\n} from './utils/HttpResponse/decorators.mjs';\nconst bodyType = Symbol(\"bodyType\");\nclass HttpResponse extends FetchResponse {\n [bodyType] = null;\n constructor(body, init) {\n const responseInit = normalizeResponseInit(init);\n super(body, responseInit);\n decorateResponse(this, responseInit);\n }\n static error() {\n return super.error();\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/plain\"` body.\n * @example\n * HttpResponse.text('hello world')\n * HttpResponse.text('Error', { status: 500 })\n */\n static text(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/plain\");\n }\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n body ? new Blob([body]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/json\"` body.\n * @example\n * HttpResponse.json({ firstName: 'John' })\n * HttpResponse.json({ error: 'Not Authorized' }, { status: 401 })\n */\n static json(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/json\");\n }\n const responseText = JSON.stringify(body);\n if (!responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\n \"Content-Length\",\n responseText ? new Blob([responseText]).size.toString() : \"0\"\n );\n }\n return new HttpResponse(responseText, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"application/xml\"` body.\n * @example\n * HttpResponse.xml(`<user name=\"John\" />`)\n * HttpResponse.xml(`<article id=\"abc-123\" />`, { status: 201 })\n */\n static xml(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/xml\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `Content-Type: \"text/html\"` body.\n * @example\n * HttpResponse.html(`<p class=\"author\">Jane Doe</p>`)\n * HttpResponse.html(`<main id=\"abc-123\">Main text</main>`, { status: 201 })\n */\n static html(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"text/html\");\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with an `ArrayBuffer` body.\n * @example\n * const buffer = new ArrayBuffer(3)\n * const view = new Uint8Array(buffer)\n * view.set([1, 2, 3])\n *\n * HttpResponse.arrayBuffer(buffer)\n */\n static arrayBuffer(body, init) {\n const responseInit = normalizeResponseInit(init);\n if (!responseInit.headers.has(\"Content-Type\")) {\n responseInit.headers.set(\"Content-Type\", \"application/octet-stream\");\n }\n if (body && !responseInit.headers.has(\"Content-Length\")) {\n responseInit.headers.set(\"Content-Length\", body.byteLength.toString());\n }\n return new HttpResponse(body, responseInit);\n }\n /**\n * Create a `Response` with a `FormData` body.\n * @example\n * const data = new FormData()\n * data.set('name', 'Alice')\n *\n * HttpResponse.formData(data)\n */\n static formData(body, init) {\n return new HttpResponse(body, normalizeResponseInit(init));\n }\n}\nexport {\n HttpResponse,\n bodyType\n};\n//# sourceMappingURL=HttpResponse.mjs.map"],"names":["bodyType","Symbol","HttpResponse","FetchResponse","constructor","body","init","responseInit","normalizeResponseInit","super","decorateResponse","this","error","text","headers","has","set","Blob","size","toString","json","responseText","JSON","stringify","xml","html","arrayBuffer","byteLength","formData"],"mappings":"qVAKK,MAACA,EAAWC,OAAO,YACxB,MAAMC,UAAqBC,EACzBH,CAACA,GAAY,KACb,WAAAI,CAAYC,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAC3CG,MAAMJ,EAAME,GACZG,EAAiBC,KAAMJ,EACzB,CACA,YAAOK,GACL,OAAOH,MAAMG,OACf,CAOA,WAAOC,CAAKR,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAU3C,OATKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,cAEtCT,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAX,EAAO,IAAIY,KAAK,CAACZ,IAAOa,KAAKC,WAAa,KAGvC,IAAIjB,EAAaG,EAAME,EAChC,CAOA,WAAOa,CAAKf,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GACtCC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,oBAE3C,MAAMK,EAAeC,KAAKC,UAAUlB,GAOpC,OANKE,EAAaO,QAAQC,IAAI,mBAC5BR,EAAaO,QAAQE,IACnB,iBACAK,EAAe,IAAIJ,KAAK,CAACI,IAAeH,KAAKC,WAAa,KAGvD,IAAIjB,EAAamB,EAAcd,EACxC,CAOA,UAAOiB,CAAInB,EAAMC,GACf,MAAMC,EAAeC,EAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,YAEpC,IAAId,EAAaG,EAAME,EAChC,CAOA,WAAOkB,CAAKpB,EAAMC,GAChB,MAAMC,EAAeC,EAAsBF,GAI3C,OAHKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,aAEpC,IAAId,EAAaG,EAAME,EAChC,CAUA,kBAAOmB,CAAYrB,EAAMC,GACvB,MAAMC,EAAeC,EAAsBF,GAO3C,OANKC,EAAaO,QAAQC,IAAI,iBAC5BR,EAAaO,QAAQE,IAAI,eAAgB,4BAEvCX,IAASE,EAAaO,QAAQC,IAAI,mBACpCR,EAAaO,QAAQE,IAAI,iBAAkBX,EAAKsB,WAAWR,YAEtD,IAAIjB,EAAaG,EAAME,EAChC,CASA,eAAOqB,CAASvB,EAAMC,GACpB,OAAO,IAAIJ,EAAaG,EAAMG,EAAsBF,GACtD","x_google_ignoreList":[0]}