@os-team/profile 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/cjs/@types/emotion.d.js.map +1 -1
  2. package/dist/cjs/@types/i18next.d.js.map +1 -1
  3. package/dist/cjs/components/profile/ProfileButton.js.map +1 -1
  4. package/dist/cjs/components/profile/ProfileConfigContext.js.map +1 -1
  5. package/dist/cjs/components/profile/ProfileContext.js.map +1 -1
  6. package/dist/cjs/components/profile/ProfileDrawer.js.map +1 -1
  7. package/dist/cjs/components/profile/ProfileDrawerContent.js.map +1 -1
  8. package/dist/cjs/components/profile/ProfileNavigationItem.js.map +1 -1
  9. package/dist/cjs/components/profile/ProfileUpdateNameModal.js.map +1 -1
  10. package/dist/cjs/components/profile/ProfileUpdatePasswordModal.js.map +1 -1
  11. package/dist/cjs/components/profile/ProtectedWrapper.js.map +1 -1
  12. package/dist/cjs/components/profile/UserAvatar.js.map +1 -1
  13. package/dist/cjs/components/profile/UserAvatarAddon.js.map +1 -1
  14. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
  15. package/dist/cjs/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
  16. package/dist/cjs/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.js.map +1 -1
  17. package/dist/cjs/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.js.map +1 -1
  18. package/dist/cjs/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  19. package/dist/cjs/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  20. package/dist/cjs/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  21. package/dist/cjs/components/session/SessionDrawer.js.map +1 -1
  22. package/dist/cjs/components/session/SessionDrawerContent.js.map +1 -1
  23. package/dist/cjs/components/session/SessionList.js +1 -1
  24. package/dist/cjs/components/session/SessionList.js.map +1 -1
  25. package/dist/cjs/components/session/SessionListItem.js.map +1 -1
  26. package/dist/cjs/components/session/SessionListSkeleton.js.map +1 -1
  27. package/dist/cjs/components/session/__generated__/SessionDrawerContentQuery.graphql.js.map +1 -1
  28. package/dist/cjs/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  29. package/dist/cjs/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  30. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js +1 -1
  31. package/dist/cjs/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  32. package/dist/cjs/components/session/__generated__/SessionListRefetchQuery.graphql.js.map +1 -1
  33. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js +1 -1
  34. package/dist/cjs/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
  35. package/dist/cjs/components/session/formatDate.js +2 -2
  36. package/dist/cjs/components/session/formatDate.js.map +1 -1
  37. package/dist/cjs/components/session/getLastSeen.js.map +1 -1
  38. package/dist/cjs/components/shared/ButtonUpdate.js.map +1 -1
  39. package/dist/cjs/components/shared/ErrorResult.js.map +1 -1
  40. package/dist/cjs/components/shared/FormError.js.map +1 -1
  41. package/dist/cjs/components/shared/MainLoader.js.map +1 -1
  42. package/dist/cjs/components/shared/icons/AndroidIcon.js.map +1 -1
  43. package/dist/cjs/components/shared/icons/AppleIcon.js.map +1 -1
  44. package/dist/cjs/components/shared/icons/BrowserIcon.js.map +1 -1
  45. package/dist/cjs/components/shared/icons/ProfileIcon.js.map +1 -1
  46. package/dist/cjs/components/shared/icons/UnknownDeviceIcon.js.map +1 -1
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/utils/getErrorMessage.js.map +1 -1
  49. package/dist/cjs/utils/getUserFullName.js.map +1 -1
  50. package/dist/cjs/utils/handleFormErrors.js.map +1 -1
  51. package/dist/esm/components/profile/ProfileButton.js.map +1 -1
  52. package/dist/esm/components/profile/ProfileConfigContext.js.map +1 -1
  53. package/dist/esm/components/profile/ProfileContext.js.map +1 -1
  54. package/dist/esm/components/profile/ProfileDrawer.js.map +1 -1
  55. package/dist/esm/components/profile/ProfileDrawerContent.js.map +1 -1
  56. package/dist/esm/components/profile/ProfileNavigationItem.js.map +1 -1
  57. package/dist/esm/components/profile/ProfileUpdateNameModal.js.map +1 -1
  58. package/dist/esm/components/profile/ProfileUpdatePasswordModal.js.map +1 -1
  59. package/dist/esm/components/profile/ProtectedWrapper.js.map +1 -1
  60. package/dist/esm/components/profile/UserAvatar.js.map +1 -1
  61. package/dist/esm/components/profile/UserAvatarAddon.js.map +1 -1
  62. package/dist/esm/components/profile/__generated__/ProfileDrawerContentSignOutMutation.graphql.js.map +1 -1
  63. package/dist/esm/components/profile/__generated__/ProfileDrawerContentUpdateAvatarMutation.graphql.js.map +1 -1
  64. package/dist/esm/components/profile/__generated__/ProfileDrawerSignOutMutation.graphql.js.map +1 -1
  65. package/dist/esm/components/profile/__generated__/ProfileDrawerUpdateAvatarMutation.graphql.js.map +1 -1
  66. package/dist/esm/components/profile/__generated__/ProfileUpdateNameModalMutation.graphql.js.map +1 -1
  67. package/dist/esm/components/profile/__generated__/ProfileUpdatePasswordModalMutation.graphql.js.map +1 -1
  68. package/dist/esm/components/profile/__generated__/ProtectedWrapperQuery.graphql.js.map +1 -1
  69. package/dist/esm/components/session/SessionDrawer.js.map +1 -1
  70. package/dist/esm/components/session/SessionDrawerContent.js.map +1 -1
  71. package/dist/esm/components/session/SessionList.js +1 -1
  72. package/dist/esm/components/session/SessionList.js.map +1 -1
  73. package/dist/esm/components/session/SessionListItem.js.map +1 -1
  74. package/dist/esm/components/session/SessionListSkeleton.js.map +1 -1
  75. package/dist/esm/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.js.map +1 -1
  76. package/dist/esm/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.js.map +1 -1
  77. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js +1 -1
  78. package/dist/esm/components/session/__generated__/SessionListItem_session.graphql.js.map +1 -1
  79. package/dist/esm/components/session/__generated__/SessionList_sessions.graphql.js +1 -1
  80. package/dist/esm/components/session/__generated__/SessionList_sessions.graphql.js.map +1 -1
  81. package/dist/esm/components/session/formatDate.js +2 -2
  82. package/dist/esm/components/session/formatDate.js.map +1 -1
  83. package/dist/esm/components/session/getLastSeen.js.map +1 -1
  84. package/dist/esm/components/shared/ButtonUpdate.js.map +1 -1
  85. package/dist/esm/components/shared/ErrorResult.js.map +1 -1
  86. package/dist/esm/components/shared/FormError.js.map +1 -1
  87. package/dist/esm/components/shared/MainLoader.js.map +1 -1
  88. package/dist/esm/components/shared/icons/AndroidIcon.js.map +1 -1
  89. package/dist/esm/components/shared/icons/AppleIcon.js.map +1 -1
  90. package/dist/esm/components/shared/icons/BrowserIcon.js.map +1 -1
  91. package/dist/esm/components/shared/icons/ProfileIcon.js.map +1 -1
  92. package/dist/esm/components/shared/icons/UnknownDeviceIcon.js.map +1 -1
  93. package/dist/esm/utils/getUserFullName.js.map +1 -1
  94. package/dist/esm/utils/handleFormErrors.js.map +1 -1
  95. package/dist/types/src/lib/components/session/SessionList.d.ts.map +1 -1
  96. package/dist/types/src/lib/components/session/__generated__/SessionListItem_session.graphql.d.ts +1 -1
  97. package/dist/types/src/lib/components/session/__generated__/SessionListItem_session.graphql.d.ts.map +1 -1
  98. package/dist/types/src/lib/components/session/__generated__/SessionList_sessions.graphql.d.ts +1 -1
  99. package/dist/types/src/lib/components/session/__generated__/SessionList_sessions.graphql.d.ts.map +1 -1
  100. package/dist/types/src/lib/components/session/formatDate.d.ts +1 -1
  101. package/dist/types/src/lib/components/session/formatDate.d.ts.map +1 -1
  102. package/dist/types/src/lib/components/session/getLastSeen.d.ts +1 -1
  103. package/package.json +36 -36
@@ -1 +1 @@
1
- {"version":3,"file":"ProtectedWrapperQuery.graphql.js","names":["node","v0","hash"],"sources":["../../../../../src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<c1bbe3a7739ce21cdcc0dc5de42901d2>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Query } from 'relay-runtime';\nexport type ProtectedWrapperQuery$variables = {};\nexport type ProtectedWrapperQuery$data = {\n readonly profile: {\n readonly avatar: string | null;\n readonly email: string;\n readonly firstName: string | null;\n readonly id: string;\n readonly lastName: string | null;\n };\n};\nexport type ProtectedWrapperQuery = {\n response: ProtectedWrapperQuery$data;\n variables: ProtectedWrapperQuery$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"profile\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"email\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Query\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c77ada94a5456167ef4c0c17a1fd7cd7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProtectedWrapperQuery\",\n \"operationKind\": \"query\",\n \"text\": \"query ProtectedWrapperQuery {\\n profile {\\n id\\n email\\n firstName\\n lastName\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"903b234e48f53b4a44dc0b4974ebc521\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAkBA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,OAAO;MACf,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,WAAW;MACnB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,UAAU;MAClB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,QAAQ;MAChB,YAAY,EAAE;IAChB,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,uBAAuB;MAC/B,YAAY,EAAGA,EAAE,UAAU;MAC3B,MAAM,EAAE,OAAO;MACf,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,uBAAuB;MAC/B,YAAY,EAAGA,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,uBAAuB;MAC/B,eAAe,EAAE,OAAO;MACxB,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,EAAG;AAEHD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
1
+ {"version":3,"file":"ProtectedWrapperQuery.graphql.js","names":["node","v0","hash"],"sources":["../../../../../src/lib/components/profile/__generated__/ProtectedWrapperQuery.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<c1bbe3a7739ce21cdcc0dc5de42901d2>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Query } from 'relay-runtime';\nexport type ProtectedWrapperQuery$variables = {};\nexport type ProtectedWrapperQuery$data = {\n readonly profile: {\n readonly avatar: string | null;\n readonly email: string;\n readonly firstName: string | null;\n readonly id: string;\n readonly lastName: string | null;\n };\n};\nexport type ProtectedWrapperQuery = {\n response: ProtectedWrapperQuery$data;\n variables: ProtectedWrapperQuery$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"User\",\n \"kind\": \"LinkedField\",\n \"name\": \"profile\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"email\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"firstName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"avatar\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Query\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"ProtectedWrapperQuery\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c77ada94a5456167ef4c0c17a1fd7cd7\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"ProtectedWrapperQuery\",\n \"operationKind\": \"query\",\n \"text\": \"query ProtectedWrapperQuery {\\n profile {\\n id\\n email\\n firstName\\n lastName\\n avatar\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"903b234e48f53b4a44dc0b4974ebc521\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAkBA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,MAAM;IACtB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,OAAO;MACf,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,WAAW;MACnB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,UAAU;MAClB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,QAAQ;MAChB,YAAY,EAAE;IAChB,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,uBAAuB;MAC/B,YAAY,EAAGA,EAAE,UAAU;MAC3B,MAAM,EAAE,OAAO;MACf,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,uBAAuB;MAC/B,YAAY,EAAGA,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,uBAAuB;MAC/B,eAAe,EAAE,OAAO;MACxB,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,CAAE,CAAC;AAEHD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionDrawer.js","names":["React","lazy","Suspense","styled","Alert","Drawer","Layout","PageHeader","useTranslation","ThemeOverrider","useIsMinWidth","SessionListSkeleton","LazySessionDrawerContent","StyledPageHeader","StyledAlert","SessionDrawer","props","t","isMinSm","horizontalPadding"],"sources":["../../../../src/lib/components/session/SessionDrawer.tsx"],"sourcesContent":["import React, { lazy, Suspense } from 'react';\nimport styled from '@emotion/styled';\nimport {\n Alert,\n Drawer,\n DrawerProps,\n Layout,\n PageHeader,\n} from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeOverrider } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport SessionListSkeleton from './SessionListSkeleton';\n\nconst LazySessionDrawerContent = lazy(() => import('./SessionDrawerContent'));\n\nconst StyledPageHeader = styled(PageHeader)`\n position: relative;\n`;\n\nconst StyledAlert = styled(Alert)`\n border-radius: 0;\n`;\n\nconst SessionDrawer: React.FC<DrawerProps> = (props) => {\n const { t } = useTranslation(['profile']);\n const isMinSm = useIsMinWidth('sm');\n\n return (\n <Drawer placement='right' width={isMinSm ? '24em' : '90%'} {...props}>\n <ThemeOverrider overrides={{ horizontalPadding: [1, 1] }}>\n <Layout>\n <StyledPageHeader title={t('profile:sessions.title')} />\n\n <StyledAlert type='info' size='small'>\n {t('profile:sessions.description')}\n </StyledAlert>\n\n <Suspense fallback={<SessionListSkeleton />}>\n <LazySessionDrawerContent />\n </Suspense>\n </Layout>\n </ThemeOverrider>\n </Drawer>\n );\n};\n\nexport default SessionDrawer;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,QAAQ,QAAQ,OAAO;AAC7C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SACEC,KAAK,EACLC,MAAM,EAENC,MAAM,EACNC,UAAU,QACL,iBAAiB;AACxB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,mBAAmB,MAAM,uBAAuB;AAEvD,MAAMC,wBAAwB,gBAAGX,IAAI,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAE7E,MAAMY,gBAAgB,GAAGV,MAAM,CAACI,UAAU,CAAE;AAC5C;AACA,CAAC;AAED,MAAMO,WAAW,GAAGX,MAAM,CAACC,KAAK,CAAE;AAClC;AACA,CAAC;AAED,MAAMW,aAAoC,GAAIC,KAAK,IAAK;EACtD,MAAM;IAAEC;EAAE,CAAC,GAAGT,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EACzC,MAAMU,OAAO,GAAGR,aAAa,CAAC,IAAI,CAAC;EAEnC,oBACE,oBAAC,MAAM;IAAC,SAAS,EAAC,OAAO;IAAC,KAAK,EAAEQ,OAAO,GAAG,MAAM,GAAG;EAAM,GAAKF,KAAK,gBAClE,oBAAC,cAAc;IAAC,SAAS,EAAE;MAAEG,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAAE;EAAE,gBACvD,oBAAC,MAAM,qBACL,oBAAC,gBAAgB;IAAC,KAAK,EAAEF,CAAC,CAAC,wBAAwB;EAAE,EAAG,eAExD,oBAAC,WAAW;IAAC,IAAI,EAAC,MAAM;IAAC,IAAI,EAAC;EAAO,GAClCA,CAAC,CAAC,8BAA8B,CAAC,CACtB,eAEd,oBAAC,QAAQ;IAAC,QAAQ,eAAE,oBAAC,mBAAmB;EAAI,gBAC1C,oBAAC,wBAAwB,OAAG,CACnB,CACJ,CACM,CACV;AAEb,CAAC;AAED,eAAeF,aAAa"}
1
+ {"version":3,"file":"SessionDrawer.js","names":["React","lazy","Suspense","styled","Alert","Drawer","Layout","PageHeader","useTranslation","ThemeOverrider","useIsMinWidth","SessionListSkeleton","LazySessionDrawerContent","StyledPageHeader","StyledAlert","SessionDrawer","props","t","isMinSm","createElement","_extends","placement","width","overrides","horizontalPadding","title","type","size","fallback"],"sources":["../../../../src/lib/components/session/SessionDrawer.tsx"],"sourcesContent":["import React, { lazy, Suspense } from 'react';\nimport styled from '@emotion/styled';\nimport {\n Alert,\n Drawer,\n DrawerProps,\n Layout,\n PageHeader,\n} from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\nimport { ThemeOverrider } from '@os-design/theming';\nimport { useIsMinWidth } from '@os-design/media';\nimport SessionListSkeleton from './SessionListSkeleton';\n\nconst LazySessionDrawerContent = lazy(() => import('./SessionDrawerContent'));\n\nconst StyledPageHeader = styled(PageHeader)`\n position: relative;\n`;\n\nconst StyledAlert = styled(Alert)`\n border-radius: 0;\n`;\n\nconst SessionDrawer: React.FC<DrawerProps> = (props) => {\n const { t } = useTranslation(['profile']);\n const isMinSm = useIsMinWidth('sm');\n\n return (\n <Drawer placement='right' width={isMinSm ? '24em' : '90%'} {...props}>\n <ThemeOverrider overrides={{ horizontalPadding: [1, 1] }}>\n <Layout>\n <StyledPageHeader title={t('profile:sessions.title')} />\n\n <StyledAlert type='info' size='small'>\n {t('profile:sessions.description')}\n </StyledAlert>\n\n <Suspense fallback={<SessionListSkeleton />}>\n <LazySessionDrawerContent />\n </Suspense>\n </Layout>\n </ThemeOverrider>\n </Drawer>\n );\n};\n\nexport default SessionDrawer;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,QAAQ,QAAQ,OAAO;AAC7C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SACEC,KAAK,EACLC,MAAM,EAENC,MAAM,EACNC,UAAU,QACL,iBAAiB;AACxB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,cAAc,QAAQ,oBAAoB;AACnD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,OAAOC,mBAAmB,MAAM,uBAAuB;AAEvD,MAAMC,wBAAwB,gBAAGX,IAAI,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAE7E,MAAMY,gBAAgB,GAAGV,MAAM,CAACI,UAAU,CAAE;AAC5C;AACA,CAAC;AAED,MAAMO,WAAW,GAAGX,MAAM,CAACC,KAAK,CAAE;AAClC;AACA,CAAC;AAED,MAAMW,aAAoC,GAAIC,KAAK,IAAK;EACtD,MAAM;IAAEC;EAAE,CAAC,GAAGT,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EACzC,MAAMU,OAAO,GAAGR,aAAa,CAAC,IAAI,CAAC;EAEnC,oBACEV,KAAA,CAAAmB,aAAA,CAACd,MAAM,EAAAe,QAAA;IAACC,SAAS,EAAC,OAAO;IAACC,KAAK,EAAEJ,OAAO,GAAG,MAAM,GAAG;EAAM,GAAKF,KAAK,gBAClEhB,KAAA,CAAAmB,aAAA,CAACV,cAAc;IAACc,SAAS,EAAE;MAAEC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;IAAE;EAAE,gBACvDxB,KAAA,CAAAmB,aAAA,CAACb,MAAM,qBACLN,KAAA,CAAAmB,aAAA,CAACN,gBAAgB;IAACY,KAAK,EAAER,CAAC,CAAC,wBAAwB;EAAE,CAAE,CAAC,eAExDjB,KAAA,CAAAmB,aAAA,CAACL,WAAW;IAACY,IAAI,EAAC,MAAM;IAACC,IAAI,EAAC;EAAO,GAClCV,CAAC,CAAC,8BAA8B,CACtB,CAAC,eAEdjB,KAAA,CAAAmB,aAAA,CAACjB,QAAQ;IAAC0B,QAAQ,eAAE5B,KAAA,CAAAmB,aAAA,CAACR,mBAAmB,MAAE;EAAE,gBAC1CX,KAAA,CAAAmB,aAAA,CAACP,wBAAwB,MAAE,CACnB,CACJ,CACM,CACV,CAAC;AAEb,CAAC;AAED,eAAeG,aAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionDrawerContent.js","names":["React","Suspense","useLazyLoadQuery","ErrorBoundary","ErrorResult","SessionList","SessionListSkeleton","SessionDrawerContentLoader","props","fetchPolicy","errorFallback","error","SessionDrawerContent"],"sources":["../../../../src/lib/components/session/SessionDrawerContent.tsx"],"sourcesContent":["import React, { Suspense } from 'react';\nimport { useLazyLoadQuery } from 'react-relay/hooks';\nimport { ErrorBoundary } from '@os-design/utils';\nimport graphql from 'babel-plugin-relay/macro';\nimport ErrorResult from '../shared/ErrorResult';\nimport SessionList from './SessionList';\nimport SessionListSkeleton from './SessionListSkeleton';\nimport { SessionDrawerContentQuery } from './__generated__/SessionDrawerContentQuery.graphql';\n\nconst SessionDrawerContentLoader: React.FC = () => {\n const props = useLazyLoadQuery<SessionDrawerContentQuery>(\n graphql`\n query SessionDrawerContentQuery {\n ...SessionList_sessions\n }\n `,\n {},\n { fetchPolicy: 'network-only' }\n );\n\n return <SessionList sessionsKey={props} />;\n};\n\nconst errorFallback = ({ error }) => <ErrorResult error={error} />;\n\nconst SessionDrawerContent: React.FC = () => (\n <ErrorBoundary fallback={errorFallback}>\n <Suspense fallback={<SessionListSkeleton />}>\n <SessionDrawerContentLoader />\n </Suspense>\n </ErrorBoundary>\n);\n\nexport default SessionDrawerContent;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,OAAOC,WAAW,MAAM,uBAAuB;AAC/C,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,mBAAmB,MAAM,uBAAuB;AAGvD,MAAMC,0BAAoC,GAAG,MAAM;EACjD,MAAMC,KAAK,GAAGN,gBAAgB,sdAM5B,CAAC,CAAC,EACF;IAAEO,WAAW,EAAE;EAAe,CAAC,CAChC;EAED,oBAAO,oBAAC,WAAW;IAAC,WAAW,EAAED;EAAM,EAAG;AAC5C,CAAC;AAED,MAAME,aAAa,GAAG,CAAC;EAAEC;AAAM,CAAC,kBAAK,oBAAC,WAAW;EAAC,KAAK,EAAEA;AAAM,EAAG;AAElE,MAAMC,oBAA8B,GAAG,mBACrC,oBAAC,aAAa;EAAC,QAAQ,EAAEF;AAAc,gBACrC,oBAAC,QAAQ;EAAC,QAAQ,eAAE,oBAAC,mBAAmB;AAAI,gBAC1C,oBAAC,0BAA0B,OAAG,CACrB,CAEd;AAED,eAAeE,oBAAoB"}
1
+ {"version":3,"file":"SessionDrawerContent.js","names":["React","Suspense","useLazyLoadQuery","ErrorBoundary","ErrorResult","SessionList","SessionListSkeleton","SessionDrawerContentLoader","props","_SessionDrawerContentQuery","require","hash","console","error","fetchPolicy","createElement","sessionsKey","errorFallback","SessionDrawerContent","fallback"],"sources":["../../../../src/lib/components/session/SessionDrawerContent.tsx"],"sourcesContent":["import React, { Suspense } from 'react';\nimport { useLazyLoadQuery } from 'react-relay/hooks';\nimport { ErrorBoundary } from '@os-design/utils';\nimport graphql from 'babel-plugin-relay/macro';\nimport ErrorResult from '../shared/ErrorResult';\nimport SessionList from './SessionList';\nimport SessionListSkeleton from './SessionListSkeleton';\nimport { SessionDrawerContentQuery } from './__generated__/SessionDrawerContentQuery.graphql';\n\nconst SessionDrawerContentLoader: React.FC = () => {\n const props = useLazyLoadQuery<SessionDrawerContentQuery>(\n graphql`\n query SessionDrawerContentQuery {\n ...SessionList_sessions\n }\n `,\n {},\n { fetchPolicy: 'network-only' }\n );\n\n return <SessionList sessionsKey={props} />;\n};\n\nconst errorFallback = ({ error }) => <ErrorResult error={error} />;\n\nconst SessionDrawerContent: React.FC = () => (\n <ErrorBoundary fallback={errorFallback}>\n <Suspense fallback={<SessionListSkeleton />}>\n <SessionDrawerContentLoader />\n </Suspense>\n </ErrorBoundary>\n);\n\nexport default SessionDrawerContent;\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,OAAOC,WAAW,MAAM,uBAAuB;AAC/C,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,mBAAmB,MAAM,uBAAuB;AAGvD,MAAMC,0BAAoC,GAAGA,CAAA,KAAM;EACjD,MAAMC,KAAK,GAAGN,gBAAgB,CAAAO,0BAAA,cAAAA,0BAAA,IAAAA,0BAAA,GAAAC,OAAA,uDAAAD,0BAAA,CAAAE,IAAA,IAAAF,0BAAA,CAAAE,IAAA,2CAAAC,OAAA,CAAAC,KAAA,6JAAAJ,0BAAA,GAM5B,CAAC,CAAC,EACF;IAAEK,WAAW,EAAE;EAAe,CAChC,CAAC;EAED,oBAAOd,KAAA,CAAAe,aAAA,CAACV,WAAW;IAACW,WAAW,EAAER;EAAM,CAAE,CAAC;AAC5C,CAAC;AAED,MAAMS,aAAa,GAAGA,CAAC;EAAEJ;AAAM,CAAC,kBAAKb,KAAA,CAAAe,aAAA,CAACX,WAAW;EAACS,KAAK,EAAEA;AAAM,CAAE,CAAC;AAElE,MAAMK,oBAA8B,GAAGA,CAAA,kBACrClB,KAAA,CAAAe,aAAA,CAACZ,aAAa;EAACgB,QAAQ,EAAEF;AAAc,gBACrCjB,KAAA,CAAAe,aAAA,CAACd,QAAQ;EAACkB,QAAQ,eAAEnB,KAAA,CAAAe,aAAA,CAACT,mBAAmB,MAAE;AAAE,gBAC1CN,KAAA,CAAAe,aAAA,CAACR,0BAA0B,MAAE,CACrB,CACG,CAChB;AAED,eAAeW,oBAAoB"}
@@ -35,7 +35,7 @@ const SessionList = ({
35
35
  t
36
36
  } = useTranslation(['profile']);
37
37
  const currentSession = useMemo(() => sessions.find(session => session.current), [sessions]);
38
- const otherSessions = useMemo(() => sessions.filter(session => !session.current).sort((a, b) => new Date(b.lastSeenAt).getTime() - new Date(a.lastSeenAt).getTime()), [sessions]);
38
+ const otherSessions = useMemo(() => sessions.filter(session => !session.current).sort((a, b) => b.lastSeenAt - a.lastSeenAt), [sessions]);
39
39
  const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] = useMutation(_SessionListDestroyAllOtherSessionsMutation !== void 0 ? _SessionListDestroyAllOtherSessionsMutation : (_SessionListDestroyAllOtherSessionsMutation = require("./__generated__/SessionListDestroyAllOtherSessionsMutation.graphql"), _SessionListDestroyAllOtherSessionsMutation.hash && _SessionListDestroyAllOtherSessionsMutation.hash !== "016b6b5e7ae228f7df552d97fa43bd40" && console.error("The definition of 'SessionListDestroyAllOtherSessionsMutation' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _SessionListDestroyAllOtherSessionsMutation));
40
40
  const destroyAllOtherSessions = useCallback(() => {
41
41
  commitDestroyAllOtherSessions({
@@ -1 +1 @@
1
- {"version":3,"file":"SessionList.js","names":["React","useCallback","useMemo","useFragment","useMutation","Button","message","styled","useTranslation","clr","SessionListItem","sessionsFragment","Title","div","List","p","theme","listItemColorBorder","DestroyAllOtherSessionsButton","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","sessionsKey","sessions","t","currentSession","find","session","current","otherSessions","filter","sort","a","b","Date","lastSeenAt","getTime","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","destroyAllOtherSessions","variables","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","item","getDataID","id","onError","error","onCompleted","success","length","map"],"sources":["../../../../src/lib/components/session/SessionList.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport { Button, message } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport { clr } from '@os-design/theming';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\n\nconst sessionsFragment = graphql`\n fragment SessionList_sessions on Query\n @refetchable(queryName: \"SessionListRefetchQuery\") {\n sessions {\n id\n current\n lastSeenAt\n ...SessionListItem_session\n }\n }\n`;\n\ninterface SessionListProps {\n sessionsKey: SessionList_sessions$key;\n}\n\nexport const Title = styled.div`\n font-weight: 500;\n margin: 1em 1em 0.5em;\n`;\n\nexport const List = styled.div`\n border-top: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n`;\n\nconst DestroyAllOtherSessionsButton = styled(Button)`\n & > span {\n flex: 1;\n text-align: left;\n }\n`;\n\nconst OtherSessions = styled.div`\n margin-top: 2em;\n`;\n\nexport const SESSION_LIST_PADDING_VERTICAL = 0.5;\n\nconst SessionList: React.FC<SessionListProps> = ({ sessionsKey }) => {\n const { sessions } = useFragment(sessionsFragment, sessionsKey);\n const { t } = useTranslation(['profile']);\n\n const currentSession = useMemo(\n () => sessions.find((session) => session.current),\n [sessions]\n );\n\n const otherSessions = useMemo(\n () =>\n sessions\n .filter((session) => !session.current)\n .sort(\n (a, b) =>\n new Date(b.lastSeenAt).getTime() - new Date(a.lastSeenAt).getTime()\n ),\n [sessions]\n );\n\n const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] =\n useMutation<SessionListDestroyAllOtherSessionsMutation>(graphql`\n mutation SessionListDestroyAllOtherSessionsMutation {\n destroyAllOtherSessions {\n ok\n }\n }\n `);\n\n const destroyAllOtherSessions = useCallback(() => {\n commitDestroyAllOtherSessions({\n variables: {},\n updater: (store) => {\n const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter(\n (item) => item.getDataID() === currentSession?.id\n ),\n 'sessions'\n );\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyedAllOther'));\n },\n });\n }, [commitDestroyAllOtherSessions, currentSession?.id, t]);\n\n return (\n <>\n {currentSession && (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <SessionListItem sessionKey={currentSession} hideLastSeenAt />\n </List>\n </>\n )}\n\n {otherSessions.length > 0 && (\n <>\n <DestroyAllOtherSessionsButton\n type='ghost'\n danger\n size='small'\n wide='always'\n loading={loadingDestroyAllOtherSessions}\n onClick={destroyAllOtherSessions}\n >\n {t('profile:sessions.destroyAllOther')}\n </DestroyAllOtherSessionsButton>\n\n <OtherSessions>\n <Title>\n {t('profile:sessions.other')} ({otherSessions.length})\n </Title>\n <List>\n {otherSessions.map((session) => (\n <SessionListItem key={session.id} sessionKey={session} />\n ))}\n </List>\n </OtherSessions>\n </>\n )}\n </>\n );\n};\n\nexport default SessionList;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SessionList.js","names":["React","useCallback","useMemo","useFragment","useMutation","Button","message","styled","useTranslation","clr","SessionListItem","sessionsFragment","_SessionList_sessions","require","hash","console","error","Title","div","List","p","theme","listItemColorBorder","DestroyAllOtherSessionsButton","OtherSessions","SESSION_LIST_PADDING_VERTICAL","SessionList","sessionsKey","sessions","t","currentSession","find","session","current","otherSessions","filter","sort","a","b","lastSeenAt","commitDestroyAllOtherSessions","loadingDestroyAllOtherSessions","_SessionListDestroyAllOtherSessionsMutation","destroyAllOtherSessions","variables","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","item","getDataID","id","onError","onCompleted","success","createElement","Fragment","sessionKey","hideLastSeenAt","length","type","danger","size","wide","loading","onClick","map","key"],"sources":["../../../../src/lib/components/session/SessionList.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport { Button, message } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport { clr } from '@os-design/theming';\nimport { SessionList_sessions$key } from './__generated__/SessionList_sessions.graphql';\nimport SessionListItem from './SessionListItem';\nimport { SessionListDestroyAllOtherSessionsMutation } from './__generated__/SessionListDestroyAllOtherSessionsMutation.graphql';\n\nconst sessionsFragment = graphql`\n fragment SessionList_sessions on Query\n @refetchable(queryName: \"SessionListRefetchQuery\") {\n sessions {\n id\n current\n lastSeenAt\n ...SessionListItem_session\n }\n }\n`;\n\ninterface SessionListProps {\n sessionsKey: SessionList_sessions$key;\n}\n\nexport const Title = styled.div`\n font-weight: 500;\n margin: 1em 1em 0.5em;\n`;\n\nexport const List = styled.div`\n border-top: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n`;\n\nconst DestroyAllOtherSessionsButton = styled(Button)`\n & > span {\n flex: 1;\n text-align: left;\n }\n`;\n\nconst OtherSessions = styled.div`\n margin-top: 2em;\n`;\n\nexport const SESSION_LIST_PADDING_VERTICAL = 0.5;\n\nconst SessionList: React.FC<SessionListProps> = ({ sessionsKey }) => {\n const { sessions } = useFragment(sessionsFragment, sessionsKey);\n const { t } = useTranslation(['profile']);\n\n const currentSession = useMemo(\n () => sessions.find((session) => session.current),\n [sessions]\n );\n\n const otherSessions = useMemo(\n () =>\n sessions\n .filter((session) => !session.current)\n .sort((a, b) => b.lastSeenAt - a.lastSeenAt),\n [sessions]\n );\n\n const [commitDestroyAllOtherSessions, loadingDestroyAllOtherSessions] =\n useMutation<SessionListDestroyAllOtherSessionsMutation>(graphql`\n mutation SessionListDestroyAllOtherSessionsMutation {\n destroyAllOtherSessions {\n ok\n }\n }\n `);\n\n const destroyAllOtherSessions = useCallback(() => {\n commitDestroyAllOtherSessions({\n variables: {},\n updater: (store) => {\n const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter(\n (item) => item.getDataID() === currentSession?.id\n ),\n 'sessions'\n );\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyedAllOther'));\n },\n });\n }, [commitDestroyAllOtherSessions, currentSession?.id, t]);\n\n return (\n <>\n {currentSession && (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <SessionListItem sessionKey={currentSession} hideLastSeenAt />\n </List>\n </>\n )}\n\n {otherSessions.length > 0 && (\n <>\n <DestroyAllOtherSessionsButton\n type='ghost'\n danger\n size='small'\n wide='always'\n loading={loadingDestroyAllOtherSessions}\n onClick={destroyAllOtherSessions}\n >\n {t('profile:sessions.destroyAllOther')}\n </DestroyAllOtherSessionsButton>\n\n <OtherSessions>\n <Title>\n {t('profile:sessions.other')} ({otherSessions.length})\n </Title>\n <List>\n {otherSessions.map((session) => (\n <SessionListItem key={session.id} sessionKey={session} />\n ))}\n </List>\n </OtherSessions>\n </>\n )}\n </>\n );\n};\n\nexport default SessionList;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListItem.js","names":["React","useCallback","useMemo","useFragment","useMutation","styled","useTranslation","pluralForms","Button","message","ellipsisStyles","horizontalPaddingStyles","transitionStyles","clr","isTouchDevice","omitEmotionProps","useSwipe","SignOut","css","getLastSeen","formatDate","UnknownDeviceIcon","BrowserIcon","AppleIcon","AndroidIcon","sessionListItemFragment","Container","div","p","theme","listItemColorBorder","Info","sizes","small","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","openedStyles","opened","Actions","colorBg","slice","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","name","version","mergeInfo","args","filter","item","join","SessionListItem","sessionKey","hideLastSeenAt","session","t","i18n","touchDevice","handlers","browser","browserName","browserVersion","os","osName","osVersion","deviceBrandModel","arr","deviceBrand","deviceModel","deviceManufacturer","unshift","title","deviceType","toLowerCase","returnObjects","deviceName","deviceInfo","isApp","ip","location","city","country","lastSeen","lsa","lastSeenAt","language","forms","number","iconComponent","iconColor","commitDestroySession","loadingDestroySession","destroySession","variables","input","id","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","getDataID","onError","error","onCompleted","success"],"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport pluralForms from '@os-team/plural-forms';\nimport { Button, message } from '@os-design/core';\nimport {\n ellipsisStyles,\n horizontalPaddingStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { SignOut } from '@os-design/icons';\nimport { css } from '@emotion/react';\nimport { SessionListItem_session$key } from './__generated__/SessionListItem_session.graphql';\nimport getLastSeen from './getLastSeen';\nimport formatDate from './formatDate';\nimport { SessionListItemDestroySessionMutation } from './__generated__/SessionListItemDestroySessionMutation.graphql';\nimport UnknownDeviceIcon from '../shared/icons/UnknownDeviceIcon';\nimport BrowserIcon from '../shared/icons/BrowserIcon';\nimport AppleIcon from '../shared/icons/AppleIcon';\nimport AndroidIcon from '../shared/icons/AndroidIcon';\n\nconst sessionListItemFragment = graphql`\n fragment SessionListItem_session on SessionPayload {\n id\n isApp\n browserName\n browserVersion\n osName\n osVersion\n deviceType\n deviceName\n deviceManufacturer\n deviceBrand\n deviceModel\n ip\n country\n city\n lastSeenAt\n }\n`;\n\ninterface SessionListItemProps {\n sessionKey: SessionListItem_session$key;\n hideLastSeenAt?: boolean;\n}\n\nexport const Container = styled.div`\n display: flex;\n position: relative;\n padding: 0.5em 0;\n overflow: hidden;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Info = styled.div`\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nexport const Content = styled.div`\n flex: 1;\n overflow: hidden;\n`;\n\nconst Title = styled(Info)`\n font-weight: 500;\n`;\n\nconst LastSeen = styled(Info)`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n`;\n\nconst hasSwipeStyles = (p) =>\n p.hasSwipe &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps {\n hasSwipe: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('hasSwipe', 'opened')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${hasSwipeStyles};\n ${openedStyles};\n ${horizontalPaddingStyles('right')};\n`;\n\nexport const IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n`;\n\ninterface IconProps {\n bgColor: string;\n}\nexport const Icon = styled('div', omitEmotionProps('bgColor'))<IconProps>`\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n background-color: ${(p) => p.bgColor};\n color: hsl(0, 0%, 100%);\n`;\n\nconst nameVersionToString = (\n name: string | null,\n version: string | null\n): string | null => {\n if (!name) return null;\n return `${name}${version ? ` ${version}` : ''}`;\n};\n\nconst mergeInfo = (...args: Array<string | null>): string | null =>\n args.filter((item) => item !== null).join(', ') || null;\n\nconst SessionListItem: React.FC<SessionListItemProps> = ({\n sessionKey,\n hideLastSeenAt,\n}) => {\n const session = useFragment(sessionListItemFragment, sessionKey);\n const { t, i18n } = useTranslation(['profile']);\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n const browser = useMemo(\n () => nameVersionToString(session.browserName, session.browserVersion),\n [session.browserName, session.browserVersion]\n );\n\n const os = useMemo(\n () => nameVersionToString(session.osName, session.osVersion),\n [session.osName, session.osVersion]\n );\n\n const deviceBrandModel = useMemo(() => {\n const arr = [session.deviceBrand, session.deviceModel];\n // Include the manufacturer name only if it does not equal to the brand name.\n // For example, it allows to avoid \"Apple Apple iPhone 6\".\n if (session.deviceManufacturer !== session.deviceBrand) {\n arr.unshift(session.deviceManufacturer);\n }\n return arr.filter((item) => item !== null).join(' ') || null;\n }, [session.deviceBrand, session.deviceManufacturer, session.deviceModel]);\n\n const title = useMemo(() => {\n let deviceType = (session.deviceType || 'unknown').toLowerCase();\n if (browser) deviceType = 'browser';\n return `${\n t('profile:sessions.deviceType', { returnObjects: true })[deviceType]\n }${session.deviceName ? ` ${session.deviceName}` : ''}`;\n }, [browser, session.deviceName, session.deviceType, t]);\n\n const deviceInfo = useMemo(\n () =>\n session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os),\n [browser, deviceBrandModel, os, session.isApp]\n );\n\n const ip = useMemo(() => {\n if (!session.ip) return null;\n const location = mergeInfo(session.city, session.country);\n return `${session.ip}${location ? ` (${location})` : ''}`;\n }, [session.city, session.country, session.ip]);\n\n const lastSeen = useMemo(() => {\n const lsa = getLastSeen(session.lastSeenAt);\n if (!lsa) {\n return `${t('profile:sessions.lastSeenOn')} ${formatDate(\n session.lastSeenAt,\n t,\n i18n.language\n )}`;\n }\n return `${t('profile:sessions.lastSeen')} ${lsa[0]} ${pluralForms({\n language: i18n.language,\n forms: t(`profile:sessions.${lsa[1]}`, { returnObjects: true }),\n number: lsa[0],\n })} ${t('profile:sessions.ago')}`;\n }, [i18n.language, session.lastSeenAt, t]);\n\n const [iconComponent, iconColor] = useMemo(() => {\n if (browser) return [<BrowserIcon />, 'hsl(30, 60%, 50%)'];\n if (session.isApp) {\n if (session.osName === 'iOS' || session.osName === 'iPhone OS') {\n return [<AppleIcon />, 'hsl(0, 0%, 50%)'];\n }\n if (session.osName === 'Android')\n return [<AndroidIcon />, 'hsl(150, 60%, 50%)'];\n }\n return [<UnknownDeviceIcon />, 'hsl(5, 60%, 50%)'];\n }, [browser, session.isApp, session.osName]);\n\n const [commitDestroySession, loadingDestroySession] =\n useMutation<SessionListItemDestroySessionMutation>(graphql`\n mutation SessionListItemDestroySessionMutation(\n $input: DestroySessionInput!\n ) {\n destroySession(input: $input) {\n ok\n }\n }\n `);\n\n const destroySession = useCallback(() => {\n commitDestroySession({\n variables: {\n input: {\n id: session.id,\n },\n },\n updater: (store) => {\n const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter((item) => item.getDataID() !== session.id),\n 'sessions'\n );\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyed'));\n },\n });\n }, [commitDestroySession, session.id, t]);\n\n return (\n <Container {...handlers}>\n <IconContainer>\n <Icon bgColor={iconColor}>{iconComponent}</Icon>\n </IconContainer>\n\n <Content>\n <Title>{title}</Title>\n {deviceInfo && <Info>{deviceInfo}</Info>}\n {ip && <Info>{ip}</Info>}\n {!hideLastSeenAt && <LastSeen>{lastSeen}</LastSeen>}\n </Content>\n\n <Actions hasSwipe={touchDevice} opened={opened}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n loading={loadingDestroySession}\n onClick={destroySession}\n >\n <SignOut />\n </Button>\n </Actions>\n </Container>\n );\n};\n\nexport default SessionListItem;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SessionListItem.js","names":["React","useCallback","useMemo","useFragment","useMutation","styled","useTranslation","pluralForms","Button","message","ellipsisStyles","horizontalPaddingStyles","transitionStyles","clr","isTouchDevice","omitEmotionProps","useSwipe","SignOut","css","getLastSeen","formatDate","UnknownDeviceIcon","BrowserIcon","AppleIcon","AndroidIcon","sessionListItemFragment","_SessionListItem_session","require","hash","console","error","Container","div","p","theme","listItemColorBorder","Info","sizes","small","Content","Title","LastSeen","inputColorPlaceholder","hasSwipeStyles","hasSwipe","openedStyles","opened","Actions","colorBg","slice","listItemActionsPaddingLeft","IconContainer","Icon","borderRadius","bgColor","nameVersionToString","name","version","mergeInfo","args","filter","item","join","SessionListItem","sessionKey","hideLastSeenAt","session","t","i18n","touchDevice","handlers","browser","browserName","browserVersion","os","osName","osVersion","deviceBrandModel","arr","deviceBrand","deviceModel","deviceManufacturer","unshift","title","deviceType","toLowerCase","returnObjects","deviceName","deviceInfo","isApp","ip","location","city","country","lastSeen","lsa","lastSeenAt","language","forms","number","iconComponent","iconColor","createElement","commitDestroySession","loadingDestroySession","_SessionListItemDestroySessionMutation","destroySession","variables","input","id","updater","store","record","get","sessionRecords","getLinkedRecords","setLinkedRecords","getDataID","onError","onCompleted","success","type","wide","size","loading","onClick"],"sources":["../../../../src/lib/components/session/SessionListItem.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\nimport graphql from 'babel-plugin-relay/macro';\nimport { useFragment, useMutation } from 'react-relay/hooks';\nimport styled from '@emotion/styled';\nimport { useTranslation } from 'react-i18next';\nimport pluralForms from '@os-team/plural-forms';\nimport { Button, message } from '@os-design/core';\nimport {\n ellipsisStyles,\n horizontalPaddingStyles,\n transitionStyles,\n} from '@os-design/styles';\nimport { clr, Color } from '@os-design/theming';\nimport { isTouchDevice, omitEmotionProps, useSwipe } from '@os-design/utils';\nimport { SignOut } from '@os-design/icons';\nimport { css } from '@emotion/react';\nimport { SessionListItem_session$key } from './__generated__/SessionListItem_session.graphql';\nimport getLastSeen from './getLastSeen';\nimport formatDate from './formatDate';\nimport { SessionListItemDestroySessionMutation } from './__generated__/SessionListItemDestroySessionMutation.graphql';\nimport UnknownDeviceIcon from '../shared/icons/UnknownDeviceIcon';\nimport BrowserIcon from '../shared/icons/BrowserIcon';\nimport AppleIcon from '../shared/icons/AppleIcon';\nimport AndroidIcon from '../shared/icons/AndroidIcon';\n\nconst sessionListItemFragment = graphql`\n fragment SessionListItem_session on SessionPayload {\n id\n isApp\n browserName\n browserVersion\n osName\n osVersion\n deviceType\n deviceName\n deviceManufacturer\n deviceBrand\n deviceModel\n ip\n country\n city\n lastSeenAt\n }\n`;\n\ninterface SessionListItemProps {\n sessionKey: SessionListItem_session$key;\n hideLastSeenAt?: boolean;\n}\n\nexport const Container = styled.div`\n display: flex;\n position: relative;\n padding: 0.5em 0;\n overflow: hidden;\n\n &:not(:last-of-type) {\n border-bottom: 1px solid ${(p) => clr(p.theme.listItemColorBorder)};\n }\n\n @media (hover: hover) {\n // Hide actions by default\n & > nav {\n opacity: 0;\n }\n\n // Display actions either on focus, or on hover\n &:hover,\n &:focus-within {\n & > nav {\n opacity: 1;\n }\n }\n }\n\n ${horizontalPaddingStyles()};\n`;\n\nconst Info = styled.div`\n font-size: ${(p) => p.theme.sizes.small}em;\n ${ellipsisStyles};\n`;\n\nexport const Content = styled.div`\n flex: 1;\n overflow: hidden;\n`;\n\nconst Title = styled(Info)`\n font-weight: 500;\n`;\n\nconst LastSeen = styled(Info)`\n color: ${(p) => clr(p.theme.inputColorPlaceholder)};\n`;\n\nconst hasSwipeStyles = (p) =>\n p.hasSwipe &&\n css`\n transform: translateX(100%);\n ${transitionStyles('transform')(p)};\n `;\n\nconst openedStyles = (p) =>\n p.opened &&\n css`\n transform: translateX(0);\n `;\n\ninterface ActionsProps {\n hasSwipe: boolean;\n opened: boolean;\n}\nconst Actions = styled(\n 'nav',\n omitEmotionProps('hasSwipe', 'opened')\n)<ActionsProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n\n display: flex;\n align-items: center;\n\n background: linear-gradient(\n to right,\n ${(p) => clr([...p.theme.colorBg.slice(0, 3), 0] as Color)},\n ${(p) => clr(p.theme.colorBg)}\n ${(p) => p.theme.listItemActionsPaddingLeft}em\n );\n\n ${hasSwipeStyles};\n ${openedStyles};\n ${horizontalPaddingStyles('right')};\n`;\n\nexport const IconContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: 0.6em;\n`;\n\ninterface IconProps {\n bgColor: string;\n}\nexport const Icon = styled('div', omitEmotionProps('bgColor'))<IconProps>`\n font-size: 1.4em;\n width: 1.3em;\n height: 1.3em;\n\n svg {\n height: 1.3em;\n }\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-radius: ${(p) => p.theme.borderRadius}em;\n background-color: ${(p) => p.bgColor};\n color: hsl(0, 0%, 100%);\n`;\n\nconst nameVersionToString = (\n name: string | null,\n version: string | null\n): string | null => {\n if (!name) return null;\n return `${name}${version ? ` ${version}` : ''}`;\n};\n\nconst mergeInfo = (...args: Array<string | null>): string | null =>\n args.filter((item) => item !== null).join(', ') || null;\n\nconst SessionListItem: React.FC<SessionListItemProps> = ({\n sessionKey,\n hideLastSeenAt,\n}) => {\n const session = useFragment(sessionListItemFragment, sessionKey);\n const { t, i18n } = useTranslation(['profile']);\n const touchDevice = useMemo(() => isTouchDevice(), []);\n const { opened, handlers } = useSwipe();\n\n const browser = useMemo(\n () => nameVersionToString(session.browserName, session.browserVersion),\n [session.browserName, session.browserVersion]\n );\n\n const os = useMemo(\n () => nameVersionToString(session.osName, session.osVersion),\n [session.osName, session.osVersion]\n );\n\n const deviceBrandModel = useMemo(() => {\n const arr = [session.deviceBrand, session.deviceModel];\n // Include the manufacturer name only if it does not equal to the brand name.\n // For example, it allows to avoid \"Apple Apple iPhone 6\".\n if (session.deviceManufacturer !== session.deviceBrand) {\n arr.unshift(session.deviceManufacturer);\n }\n return arr.filter((item) => item !== null).join(' ') || null;\n }, [session.deviceBrand, session.deviceManufacturer, session.deviceModel]);\n\n const title = useMemo(() => {\n let deviceType = (session.deviceType || 'unknown').toLowerCase();\n if (browser) deviceType = 'browser';\n return `${\n t('profile:sessions.deviceType', { returnObjects: true })[deviceType]\n }${session.deviceName ? ` ${session.deviceName}` : ''}`;\n }, [browser, session.deviceName, session.deviceType, t]);\n\n const deviceInfo = useMemo(\n () =>\n session.isApp ? mergeInfo(deviceBrandModel, os) : mergeInfo(browser, os),\n [browser, deviceBrandModel, os, session.isApp]\n );\n\n const ip = useMemo(() => {\n if (!session.ip) return null;\n const location = mergeInfo(session.city, session.country);\n return `${session.ip}${location ? ` (${location})` : ''}`;\n }, [session.city, session.country, session.ip]);\n\n const lastSeen = useMemo(() => {\n const lsa = getLastSeen(session.lastSeenAt);\n if (!lsa) {\n return `${t('profile:sessions.lastSeenOn')} ${formatDate(\n session.lastSeenAt,\n t,\n i18n.language\n )}`;\n }\n return `${t('profile:sessions.lastSeen')} ${lsa[0]} ${pluralForms({\n language: i18n.language,\n forms: t(`profile:sessions.${lsa[1]}`, { returnObjects: true }),\n number: lsa[0],\n })} ${t('profile:sessions.ago')}`;\n }, [i18n.language, session.lastSeenAt, t]);\n\n const [iconComponent, iconColor] = useMemo(() => {\n if (browser) return [<BrowserIcon />, 'hsl(30, 60%, 50%)'];\n if (session.isApp) {\n if (session.osName === 'iOS' || session.osName === 'iPhone OS') {\n return [<AppleIcon />, 'hsl(0, 0%, 50%)'];\n }\n if (session.osName === 'Android')\n return [<AndroidIcon />, 'hsl(150, 60%, 50%)'];\n }\n return [<UnknownDeviceIcon />, 'hsl(5, 60%, 50%)'];\n }, [browser, session.isApp, session.osName]);\n\n const [commitDestroySession, loadingDestroySession] =\n useMutation<SessionListItemDestroySessionMutation>(graphql`\n mutation SessionListItemDestroySessionMutation(\n $input: DestroySessionInput!\n ) {\n destroySession(input: $input) {\n ok\n }\n }\n `);\n\n const destroySession = useCallback(() => {\n commitDestroySession({\n variables: {\n input: {\n id: session.id,\n },\n },\n updater: (store) => {\n const record = store.get('client:root');\n if (!record) return;\n\n const sessionRecords = record.getLinkedRecords('sessions');\n if (!sessionRecords) return;\n\n record.setLinkedRecords(\n sessionRecords.filter((item) => item.getDataID() !== session.id),\n 'sessions'\n );\n },\n onError: (error) => {\n message.error(error.message);\n },\n onCompleted: () => {\n message.success(t('profile:sessions.destroyed'));\n },\n });\n }, [commitDestroySession, session.id, t]);\n\n return (\n <Container {...handlers}>\n <IconContainer>\n <Icon bgColor={iconColor}>{iconComponent}</Icon>\n </IconContainer>\n\n <Content>\n <Title>{title}</Title>\n {deviceInfo && <Info>{deviceInfo}</Info>}\n {ip && <Info>{ip}</Info>}\n {!hideLastSeenAt && <LastSeen>{lastSeen}</LastSeen>}\n </Content>\n\n <Actions hasSwipe={touchDevice} opened={opened}>\n <Button\n type='ghost'\n wide='never'\n size='small'\n loading={loadingDestroySession}\n onClick={destroySession}\n >\n <SignOut />\n </Button>\n </Actions>\n </Container>\n );\n};\n\nexport default SessionListItem;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListSkeleton.js","names":["React","useTranslation","Skeleton","styled","Container","Content","IconContainer","Title","List","IconSkeleton","ContainerSkeleton","TitleSkeleton","p","theme","sizes","small","InfoSkeleton","SessionListSkeleton","t"],"sources":["../../../../src/lib/components/session/SessionListSkeleton.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Skeleton } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { Container, Content, IconContainer } from './SessionListItem';\nimport { Title, List } from './SessionList';\n\nconst IconSkeleton = styled(Skeleton)`\n width: 1.82em;\n height: 1.82em;\n`;\n\nconst ContainerSkeleton = styled(Container)`\n padding: 0.8em 0;\n`;\n\nconst TitleSkeleton = styled(Skeleton)`\n height: ${(p) => p.theme.sizes.small}em;\n`;\n\nconst InfoSkeleton = styled(TitleSkeleton)`\n margin-top: 0.3em;\n`;\n\nconst SessionListSkeleton: React.FC = () => {\n const { t } = useTranslation(['profile']);\n\n return (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <ContainerSkeleton>\n <IconContainer>\n <IconSkeleton />\n </IconContainer>\n\n <Content>\n <TitleSkeleton width='50%' />\n <InfoSkeleton />\n <InfoSkeleton width='90%' />\n </Content>\n </ContainerSkeleton>\n </List>\n </>\n );\n};\n\nexport default SessionListSkeleton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,SAAS,EAAEC,OAAO,EAAEC,aAAa,QAAQ,mBAAmB;AACrE,SAASC,KAAK,EAAEC,IAAI,QAAQ,eAAe;AAE3C,MAAMC,YAAY,GAAGN,MAAM,CAACD,QAAQ,CAAE;AACtC;AACA;AACA,CAAC;AAED,MAAMQ,iBAAiB,GAAGP,MAAM,CAACC,SAAS,CAAE;AAC5C;AACA,CAAC;AAED,MAAMO,aAAa,GAAGR,MAAM,CAACD,QAAQ,CAAE;AACvC,YAAaU,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACC,KAAK,CAACC,KAAM;AACvC,CAAC;AAED,MAAMC,YAAY,GAAGb,MAAM,CAACQ,aAAa,CAAE;AAC3C;AACA,CAAC;AAED,MAAMM,mBAA6B,GAAG,MAAM;EAC1C,MAAM;IAAEC;EAAE,CAAC,GAAGjB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EAEzC,oBACE,uDACE,oBAAC,KAAK,QAAEiB,CAAC,CAAC,0BAA0B,CAAC,CAAS,eAC9C,oBAAC,IAAI,qBACH,oBAAC,iBAAiB,qBAChB,oBAAC,aAAa,qBACZ,oBAAC,YAAY,OAAG,CACF,eAEhB,oBAAC,OAAO,qBACN,oBAAC,aAAa;IAAC,KAAK,EAAC;EAAK,EAAG,eAC7B,oBAAC,YAAY,OAAG,eAChB,oBAAC,YAAY;IAAC,KAAK,EAAC;EAAK,EAAG,CACpB,CACQ,CACf,CACN;AAEP,CAAC;AAED,eAAeD,mBAAmB"}
1
+ {"version":3,"file":"SessionListSkeleton.js","names":["React","useTranslation","Skeleton","styled","Container","Content","IconContainer","Title","List","IconSkeleton","ContainerSkeleton","TitleSkeleton","p","theme","sizes","small","InfoSkeleton","SessionListSkeleton","t","createElement","Fragment","width"],"sources":["../../../../src/lib/components/session/SessionListSkeleton.tsx"],"sourcesContent":["import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Skeleton } from '@os-design/core';\nimport styled from '@emotion/styled';\nimport { Container, Content, IconContainer } from './SessionListItem';\nimport { Title, List } from './SessionList';\n\nconst IconSkeleton = styled(Skeleton)`\n width: 1.82em;\n height: 1.82em;\n`;\n\nconst ContainerSkeleton = styled(Container)`\n padding: 0.8em 0;\n`;\n\nconst TitleSkeleton = styled(Skeleton)`\n height: ${(p) => p.theme.sizes.small}em;\n`;\n\nconst InfoSkeleton = styled(TitleSkeleton)`\n margin-top: 0.3em;\n`;\n\nconst SessionListSkeleton: React.FC = () => {\n const { t } = useTranslation(['profile']);\n\n return (\n <>\n <Title>{t('profile:sessions.current')}</Title>\n <List>\n <ContainerSkeleton>\n <IconContainer>\n <IconSkeleton />\n </IconContainer>\n\n <Content>\n <TitleSkeleton width='50%' />\n <InfoSkeleton />\n <InfoSkeleton width='90%' />\n </Content>\n </ContainerSkeleton>\n </List>\n </>\n );\n};\n\nexport default SessionListSkeleton;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,eAAe;AAC9C,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,SAAS,EAAEC,OAAO,EAAEC,aAAa,QAAQ,mBAAmB;AACrE,SAASC,KAAK,EAAEC,IAAI,QAAQ,eAAe;AAE3C,MAAMC,YAAY,GAAGN,MAAM,CAACD,QAAQ,CAAE;AACtC;AACA;AACA,CAAC;AAED,MAAMQ,iBAAiB,GAAGP,MAAM,CAACC,SAAS,CAAE;AAC5C;AACA,CAAC;AAED,MAAMO,aAAa,GAAGR,MAAM,CAACD,QAAQ,CAAE;AACvC,YAAaU,CAAC,IAAKA,CAAC,CAACC,KAAK,CAACC,KAAK,CAACC,KAAM;AACvC,CAAC;AAED,MAAMC,YAAY,GAAGb,MAAM,CAACQ,aAAa,CAAE;AAC3C;AACA,CAAC;AAED,MAAMM,mBAA6B,GAAGA,CAAA,KAAM;EAC1C,MAAM;IAAEC;EAAE,CAAC,GAAGjB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EAEzC,oBACED,KAAA,CAAAmB,aAAA,CAAAnB,KAAA,CAAAoB,QAAA,qBACEpB,KAAA,CAAAmB,aAAA,CAACZ,KAAK,QAAEW,CAAC,CAAC,0BAA0B,CAAS,CAAC,eAC9ClB,KAAA,CAAAmB,aAAA,CAACX,IAAI,qBACHR,KAAA,CAAAmB,aAAA,CAACT,iBAAiB,qBAChBV,KAAA,CAAAmB,aAAA,CAACb,aAAa,qBACZN,KAAA,CAAAmB,aAAA,CAACV,YAAY,MAAE,CACF,CAAC,eAEhBT,KAAA,CAAAmB,aAAA,CAACd,OAAO,qBACNL,KAAA,CAAAmB,aAAA,CAACR,aAAa;IAACU,KAAK,EAAC;EAAK,CAAE,CAAC,eAC7BrB,KAAA,CAAAmB,aAAA,CAACH,YAAY,MAAE,CAAC,eAChBhB,KAAA,CAAAmB,aAAA,CAACH,YAAY;IAACK,KAAK,EAAC;EAAK,CAAE,CACpB,CACQ,CACf,CACN,CAAC;AAEP,CAAC;AAED,eAAeJ,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListDestroyAllOtherSessionsMutation.graphql.js","names":["node","v0","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<6494414e61957261dfdc6fec7a9a1df7>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Mutation } from 'relay-runtime';\nexport type SessionListDestroyAllOtherSessionsMutation$variables = {};\nexport type SessionListDestroyAllOtherSessionsMutation$data = {\n readonly destroyAllOtherSessions: {\n readonly ok: boolean;\n };\n};\nexport type SessionListDestroyAllOtherSessionsMutation = {\n response: SessionListDestroyAllOtherSessionsMutation$data;\n variables: SessionListDestroyAllOtherSessionsMutation$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"destroyAllOtherSessions\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c6f556336ccb31f27b1c2f13c2ea9c06\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation SessionListDestroyAllOtherSessionsMutation {\\n destroyAllOtherSessions {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"016b6b5e7ae228f7df552d97fa43bd40\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAcA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,eAAe;IAC/B,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,yBAAyB;IACjC,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,4CAA4C;MACpD,YAAY,EAAGA,EAAE,UAAU;MAC3B,MAAM,EAAE,UAAU;MAClB,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,4CAA4C;MACpD,YAAY,EAAGA,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,4CAA4C;MACpD,eAAe,EAAE,UAAU;MAC3B,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,EAAG;AAEHD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
1
+ {"version":3,"file":"SessionListDestroyAllOtherSessionsMutation.graphql.js","names":["node","v0","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListDestroyAllOtherSessionsMutation.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<6494414e61957261dfdc6fec7a9a1df7>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Mutation } from 'relay-runtime';\nexport type SessionListDestroyAllOtherSessionsMutation$variables = {};\nexport type SessionListDestroyAllOtherSessionsMutation$data = {\n readonly destroyAllOtherSessions: {\n readonly ok: boolean;\n };\n};\nexport type SessionListDestroyAllOtherSessionsMutation = {\n response: SessionListDestroyAllOtherSessionsMutation$data;\n variables: SessionListDestroyAllOtherSessionsMutation$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"destroyAllOtherSessions\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"selections\": (v0/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": [],\n \"kind\": \"Operation\",\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"selections\": (v0/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"c6f556336ccb31f27b1c2f13c2ea9c06\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"SessionListDestroyAllOtherSessionsMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation SessionListDestroyAllOtherSessionsMutation {\\n destroyAllOtherSessions {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"016b6b5e7ae228f7df552d97fa43bd40\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAcA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,eAAe;IAC/B,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,yBAAyB;IACjC,QAAQ,EAAE,KAAK;IACf,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,4CAA4C;MACpD,YAAY,EAAGA,EAAE,UAAU;MAC3B,MAAM,EAAE,UAAU;MAClB,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAE,EAAE;MACzB,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,4CAA4C;MACpD,YAAY,EAAGA,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,4CAA4C;MACpD,eAAe,EAAE,UAAU;MAC3B,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,CAAE,CAAC;AAEHD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListItemDestroySessionMutation.graphql.js","names":["node","v0","v1","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<18abf6e996d326f8baadb8c340dc8b9d>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Mutation } from 'relay-runtime';\nexport type DestroySessionInput = {\n id: string;\n};\nexport type SessionListItemDestroySessionMutation$variables = {\n input: DestroySessionInput;\n};\nexport type SessionListItemDestroySessionMutation$data = {\n readonly destroySession: {\n readonly ok: boolean;\n };\n};\nexport type SessionListItemDestroySessionMutation = {\n response: SessionListItemDestroySessionMutation$data;\n variables: SessionListItemDestroySessionMutation$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"destroySession\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"e967c31f65aa17e8ed5d6184f1f37c9d\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation SessionListItemDestroySessionMutation(\\n $input: DestroySessionInput!\\n) {\\n destroySession(input: $input) {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"ad6c0d1313a70dd63c0baccc2f7abd6e\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAmBA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;MACE,cAAc,EAAE,IAAI;MACpB,MAAM,EAAE,eAAe;MACvB,MAAM,EAAE;IACV,CAAC,CACF;IACDC,EAAE,GAAG,CACH;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,CACN;QACE,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,OAAO;QACf,cAAc,EAAE;MAClB,CAAC,CACF;MACD,cAAc,EAAE,eAAe;MAC/B,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,gBAAgB;MACxB,QAAQ,EAAE,KAAK;MACf,YAAY,EAAE,CACZ;QACE,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE;MAChB,CAAC,CACF;MACD,YAAY,EAAE;IAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAGD,EAAE,UAAU;MACpC,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,uCAAuC;MAC/C,YAAY,EAAGC,EAAE,UAAU;MAC3B,MAAM,EAAE,UAAU;MAClB,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAGD,EAAE,UAAU;MACpC,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,uCAAuC;MAC/C,YAAY,EAAGC,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,uCAAuC;MAC/C,eAAe,EAAE,UAAU;MAC3B,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,EAAG;AAEHF,IAAI,CAASG,IAAI,GAAG,kCAAkC;AAEvD,eAAeH,IAAI"}
1
+ {"version":3,"file":"SessionListItemDestroySessionMutation.graphql.js","names":["node","v0","v1","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListItemDestroySessionMutation.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<18abf6e996d326f8baadb8c340dc8b9d>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ConcreteRequest, Mutation } from 'relay-runtime';\nexport type DestroySessionInput = {\n id: string;\n};\nexport type SessionListItemDestroySessionMutation$variables = {\n input: DestroySessionInput;\n};\nexport type SessionListItemDestroySessionMutation$data = {\n readonly destroySession: {\n readonly ok: boolean;\n };\n};\nexport type SessionListItemDestroySessionMutation = {\n response: SessionListItemDestroySessionMutation$data;\n variables: SessionListItemDestroySessionMutation$variables;\n};\n\nconst node: ConcreteRequest = (function(){\nvar v0 = [\n {\n \"defaultValue\": null,\n \"kind\": \"LocalArgument\",\n \"name\": \"input\"\n }\n],\nv1 = [\n {\n \"alias\": null,\n \"args\": [\n {\n \"kind\": \"Variable\",\n \"name\": \"input\",\n \"variableName\": \"input\"\n }\n ],\n \"concreteType\": \"StatusPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"destroySession\",\n \"plural\": false,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ok\",\n \"storageKey\": null\n }\n ],\n \"storageKey\": null\n }\n];\nreturn {\n \"fragment\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"selections\": (v1/*: any*/),\n \"type\": \"Mutation\",\n \"abstractKey\": null\n },\n \"kind\": \"Request\",\n \"operation\": {\n \"argumentDefinitions\": (v0/*: any*/),\n \"kind\": \"Operation\",\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"selections\": (v1/*: any*/)\n },\n \"params\": {\n \"cacheID\": \"e967c31f65aa17e8ed5d6184f1f37c9d\",\n \"id\": null,\n \"metadata\": {},\n \"name\": \"SessionListItemDestroySessionMutation\",\n \"operationKind\": \"mutation\",\n \"text\": \"mutation SessionListItemDestroySessionMutation(\\n $input: DestroySessionInput!\\n) {\\n destroySession(input: $input) {\\n ok\\n }\\n}\\n\"\n }\n};\n})();\n\n(node as any).hash = \"ad6c0d1313a70dd63c0baccc2f7abd6e\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAmBA,MAAMA,IAAqB,GAAI,YAAU;EACzC,IAAIC,EAAE,GAAG,CACP;MACE,cAAc,EAAE,IAAI;MACpB,MAAM,EAAE,eAAe;MACvB,MAAM,EAAE;IACV,CAAC,CACF;IACDC,EAAE,GAAG,CACH;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,CACN;QACE,MAAM,EAAE,UAAU;QAClB,MAAM,EAAE,OAAO;QACf,cAAc,EAAE;MAClB,CAAC,CACF;MACD,cAAc,EAAE,eAAe;MAC/B,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,gBAAgB;MACxB,QAAQ,EAAE,KAAK;MACf,YAAY,EAAE,CACZ;QACE,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE;MAChB,CAAC,CACF;MACD,YAAY,EAAE;IAChB,CAAC,CACF;EACD,OAAO;IACL,UAAU,EAAE;MACV,qBAAqB,EAAGD,EAAE,UAAU;MACpC,MAAM,EAAE,UAAU;MAClB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,uCAAuC;MAC/C,YAAY,EAAGC,EAAE,UAAU;MAC3B,MAAM,EAAE,UAAU;MAClB,aAAa,EAAE;IACjB,CAAC;IACD,MAAM,EAAE,SAAS;IACjB,WAAW,EAAE;MACX,qBAAqB,EAAGD,EAAE,UAAU;MACpC,MAAM,EAAE,WAAW;MACnB,MAAM,EAAE,uCAAuC;MAC/C,YAAY,EAAGC,EAAE;IACnB,CAAC;;IACD,QAAQ,EAAE;MACR,SAAS,EAAE,kCAAkC;MAC7C,IAAI,EAAE,IAAI;MACV,UAAU,EAAE,CAAC,CAAC;MACd,MAAM,EAAE,uCAAuC;MAC/C,eAAe,EAAE,UAAU;MAC3B,MAAM,EAAE;IACV;EACF,CAAC;AACD,CAAC,CAAE,CAAC;AAEHF,IAAI,CAASG,IAAI,GAAG,kCAAkC;AAEvD,eAAeH,IAAI"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @generated SignedSource<<c5a2bd6619414c39ff782f6a07a22b60>>
2
+ * @generated SignedSource<<32f6e8f24d283a95f3c1c75b7911dc5a>>
3
3
  * @lightSyntaxTransform
4
4
  * @nogrep
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListItem_session.graphql.js","names":["node","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListItem_session.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<c5a2bd6619414c39ff782f6a07a22b60>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { Fragment, ReaderFragment } from 'relay-runtime';\nimport { FragmentRefs } from \"relay-runtime\";\nexport type SessionListItem_session$data = {\n readonly browserName: string | null;\n readonly browserVersion: string | null;\n readonly city: string | null;\n readonly country: string | null;\n readonly deviceBrand: string | null;\n readonly deviceManufacturer: string | null;\n readonly deviceModel: string | null;\n readonly deviceName: string | null;\n readonly deviceType: string | null;\n readonly id: string;\n readonly ip: string | null;\n readonly isApp: boolean;\n readonly lastSeenAt: string;\n readonly osName: string | null;\n readonly osVersion: string | null;\n readonly \" $fragmentType\": \"SessionListItem_session\";\n};\nexport type SessionListItem_session$key = {\n readonly \" $data\"?: SessionListItem_session$data;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionListItem_session\">;\n};\n\nconst node: ReaderFragment = {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListItem_session\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"isApp\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"browserName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"browserVersion\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"osName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"osVersion\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceType\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceManufacturer\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceBrand\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceModel\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ip\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"country\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"city\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastSeenAt\",\n \"storageKey\": null\n }\n ],\n \"type\": \"SessionPayload\",\n \"abstractKey\": null\n};\n\n(node as any).hash = \"c73c341c5f6e75f7bef7402186ce242b\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AA2BA,MAAMA,IAAoB,GAAG;EAC3B,qBAAqB,EAAE,EAAE;EACzB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,yBAAyB;EACjC,YAAY,EAAE,CACZ;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,OAAO;IACf,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,gBAAgB;IACxB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,oBAAoB;IAC5B,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,SAAS;IACjB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,MAAM;IACd,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,CACF;EACD,MAAM,EAAE,gBAAgB;EACxB,aAAa,EAAE;AACjB,CAAC;AAEAA,IAAI,CAASC,IAAI,GAAG,kCAAkC;AAEvD,eAAeD,IAAI"}
1
+ {"version":3,"file":"SessionListItem_session.graphql.js","names":["node","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionListItem_session.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<32f6e8f24d283a95f3c1c75b7911dc5a>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { Fragment, ReaderFragment } from 'relay-runtime';\nimport { FragmentRefs } from \"relay-runtime\";\nexport type SessionListItem_session$data = {\n readonly browserName: string | null;\n readonly browserVersion: string | null;\n readonly city: string | null;\n readonly country: string | null;\n readonly deviceBrand: string | null;\n readonly deviceManufacturer: string | null;\n readonly deviceModel: string | null;\n readonly deviceName: string | null;\n readonly deviceType: string | null;\n readonly id: string;\n readonly ip: string | null;\n readonly isApp: boolean;\n readonly lastSeenAt: any;\n readonly osName: string | null;\n readonly osVersion: string | null;\n readonly \" $fragmentType\": \"SessionListItem_session\";\n};\nexport type SessionListItem_session$key = {\n readonly \" $data\"?: SessionListItem_session$data;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionListItem_session\">;\n};\n\nconst node: ReaderFragment = {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": null,\n \"name\": \"SessionListItem_session\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"isApp\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"browserName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"browserVersion\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"osName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"osVersion\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceType\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceName\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceManufacturer\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceBrand\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"deviceModel\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"ip\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"country\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"city\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastSeenAt\",\n \"storageKey\": null\n }\n ],\n \"type\": \"SessionPayload\",\n \"abstractKey\": null\n};\n\n(node as any).hash = \"c73c341c5f6e75f7bef7402186ce242b\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AA2BA,MAAMA,IAAoB,GAAG;EAC3B,qBAAqB,EAAE,EAAE;EACzB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,yBAAyB;EACjC,YAAY,EAAE,CACZ;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,OAAO;IACf,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,gBAAgB;IACxB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,WAAW;IACnB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,oBAAoB;IAC5B,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,SAAS;IACjB,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,MAAM;IACd,YAAY,EAAE;EAChB,CAAC,EACD;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,YAAY;IACpB,YAAY,EAAE;EAChB,CAAC,CACF;EACD,MAAM,EAAE,gBAAgB;EACxB,aAAa,EAAE;AACjB,CAAC;AAEAA,IAAI,CAASC,IAAI,GAAG,kCAAkC;AAEvD,eAAeD,IAAI"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @generated SignedSource<<bcba3ead37a35f69fd887145c7f70904>>
2
+ * @generated SignedSource<<a698059af5f9c23c9705fd96821de4d5>>
3
3
  * @lightSyntaxTransform
4
4
  * @nogrep
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SessionList_sessions.graphql.js","names":["node","require","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionList_sessions.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<bcba3ead37a35f69fd887145c7f70904>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ReaderFragment, RefetchableFragment } from 'relay-runtime';\nimport { FragmentRefs } from \"relay-runtime\";\nexport type SessionList_sessions$data = {\n readonly sessions: ReadonlyArray<{\n readonly current: boolean;\n readonly id: string;\n readonly lastSeenAt: string;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionListItem_session\">;\n }>;\n readonly \" $fragmentType\": \"SessionList_sessions\";\n};\nexport type SessionList_sessions$key = {\n readonly \" $data\"?: SessionList_sessions$data;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionList_sessions\">;\n};\n\nconst node: ReaderFragment = {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": {\n \"refetch\": {\n \"connection\": null,\n \"fragmentPathInResult\": [],\n \"operation\": require('./SessionListRefetchQuery.graphql')\n }\n },\n \"name\": \"SessionList_sessions\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"SessionPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"sessions\",\n \"plural\": true,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"current\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastSeenAt\",\n \"storageKey\": null\n },\n {\n \"args\": null,\n \"kind\": \"FragmentSpread\",\n \"name\": \"SessionListItem_session\"\n }\n ],\n \"storageKey\": null\n }\n ],\n \"type\": \"Query\",\n \"abstractKey\": null\n};\n\n(node as any).hash = \"1b21c937c7ba795f09bfcb5ada7d2510\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAkBA,MAAMA,IAAoB,GAAG;EAC3B,qBAAqB,EAAE,EAAE;EACzB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE;IACV,SAAS,EAAE;MACT,YAAY,EAAE,IAAI;MAClB,sBAAsB,EAAE,EAAE;MAC1B,WAAW,EAAEC,OAAO,CAAC,mCAAmC;IAC1D;EACF,CAAC;EACD,MAAM,EAAE,sBAAsB;EAC9B,YAAY,EAAE,CACZ;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,SAAS;MACjB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,YAAY;MACpB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,gBAAgB;MACxB,MAAM,EAAE;IACV,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,MAAM,EAAE,OAAO;EACf,aAAa,EAAE;AACjB,CAAC;AAEAD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
1
+ {"version":3,"file":"SessionList_sessions.graphql.js","names":["node","require","hash"],"sources":["../../../../../src/lib/components/session/__generated__/SessionList_sessions.graphql.ts"],"sourcesContent":["/**\n * @generated SignedSource<<a698059af5f9c23c9705fd96821de4d5>>\n * @lightSyntaxTransform\n * @nogrep\n */\n\n/* tslint:disable */\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ReaderFragment, RefetchableFragment } from 'relay-runtime';\nimport { FragmentRefs } from \"relay-runtime\";\nexport type SessionList_sessions$data = {\n readonly sessions: ReadonlyArray<{\n readonly current: boolean;\n readonly id: string;\n readonly lastSeenAt: any;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionListItem_session\">;\n }>;\n readonly \" $fragmentType\": \"SessionList_sessions\";\n};\nexport type SessionList_sessions$key = {\n readonly \" $data\"?: SessionList_sessions$data;\n readonly \" $fragmentSpreads\": FragmentRefs<\"SessionList_sessions\">;\n};\n\nconst node: ReaderFragment = {\n \"argumentDefinitions\": [],\n \"kind\": \"Fragment\",\n \"metadata\": {\n \"refetch\": {\n \"connection\": null,\n \"fragmentPathInResult\": [],\n \"operation\": require('./SessionListRefetchQuery.graphql')\n }\n },\n \"name\": \"SessionList_sessions\",\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"concreteType\": \"SessionPayload\",\n \"kind\": \"LinkedField\",\n \"name\": \"sessions\",\n \"plural\": true,\n \"selections\": [\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"id\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"current\",\n \"storageKey\": null\n },\n {\n \"alias\": null,\n \"args\": null,\n \"kind\": \"ScalarField\",\n \"name\": \"lastSeenAt\",\n \"storageKey\": null\n },\n {\n \"args\": null,\n \"kind\": \"FragmentSpread\",\n \"name\": \"SessionListItem_session\"\n }\n ],\n \"storageKey\": null\n }\n ],\n \"type\": \"Query\",\n \"abstractKey\": null\n};\n\n(node as any).hash = \"1b21c937c7ba795f09bfcb5ada7d2510\";\n\nexport default node;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAkBA,MAAMA,IAAoB,GAAG;EAC3B,qBAAqB,EAAE,EAAE;EACzB,MAAM,EAAE,UAAU;EAClB,UAAU,EAAE;IACV,SAAS,EAAE;MACT,YAAY,EAAE,IAAI;MAClB,sBAAsB,EAAE,EAAE;MAC1B,WAAW,EAAEC,OAAO,CAAC,mCAAmC;IAC1D;EACF,CAAC;EACD,MAAM,EAAE,sBAAsB;EAC9B,YAAY,EAAE,CACZ;IACE,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,gBAAgB;IAChC,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,UAAU;IAClB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,CACZ;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,IAAI;MACZ,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,SAAS;MACjB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,OAAO,EAAE,IAAI;MACb,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,aAAa;MACrB,MAAM,EAAE,YAAY;MACpB,YAAY,EAAE;IAChB,CAAC,EACD;MACE,MAAM,EAAE,IAAI;MACZ,MAAM,EAAE,gBAAgB;MACxB,MAAM,EAAE;IACV,CAAC,CACF;IACD,YAAY,EAAE;EAChB,CAAC,CACF;EACD,MAAM,EAAE,OAAO;EACf,aAAa,EAAE;AACjB,CAAC;AAEAD,IAAI,CAASE,IAAI,GAAG,kCAAkC;AAEvD,eAAeF,IAAI"}
@@ -1,5 +1,5 @@
1
- const formatDate = (str, t, lng) => {
2
- const date = new Date(str);
1
+ const formatDate = (timestamp, t, lng) => {
2
+ const date = new Date(timestamp);
3
3
  const day = date.getDate();
4
4
  const month = t('profile:sessions.monthAbbreviations', {
5
5
  returnObjects: true
@@ -1 +1 @@
1
- {"version":3,"file":"formatDate.js","names":["formatDate","str","t","lng","date","Date","day","getDate","month","returnObjects","getMonth","year","getFullYear","isPrevYear"],"sources":["../../../../src/lib/components/session/formatDate.ts"],"sourcesContent":["import { TFunction } from 'i18next';\n\nconst formatDate = (str: string, t: TFunction, lng: string): string => {\n const date = new Date(str);\n\n const day = date.getDate();\n const month = t('profile:sessions.monthAbbreviations', {\n returnObjects: true,\n })[date.getMonth()];\n const year = date.getFullYear();\n const isPrevYear = year < new Date().getFullYear();\n\n if (lng === 'ru') return `${day} ${month}${isPrevYear ? ` ${year}` : ''}`;\n return `${month} ${day}${isPrevYear ? `, ${year}` : ''}`;\n};\n\nexport default formatDate;\n"],"mappings":"AAEA,MAAMA,UAAU,GAAG,CAACC,GAAW,EAAEC,CAAY,EAAEC,GAAW,KAAa;EACrE,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACJ,GAAG,CAAC;EAE1B,MAAMK,GAAG,GAAGF,IAAI,CAACG,OAAO,EAAE;EAC1B,MAAMC,KAAK,GAAGN,CAAC,CAAC,qCAAqC,EAAE;IACrDO,aAAa,EAAE;EACjB,CAAC,CAAC,CAACL,IAAI,CAACM,QAAQ,EAAE,CAAC;EACnB,MAAMC,IAAI,GAAGP,IAAI,CAACQ,WAAW,EAAE;EAC/B,MAAMC,UAAU,GAAGF,IAAI,GAAG,IAAIN,IAAI,EAAE,CAACO,WAAW,EAAE;EAElD,IAAIT,GAAG,KAAK,IAAI,EAAE,OAAQ,GAAEG,GAAI,IAAGE,KAAM,GAAEK,UAAU,GAAI,IAAGF,IAAK,EAAC,GAAG,EAAG,EAAC;EACzE,OAAQ,GAAEH,KAAM,IAAGF,GAAI,GAAEO,UAAU,GAAI,KAAIF,IAAK,EAAC,GAAG,EAAG,EAAC;AAC1D,CAAC;AAED,eAAeX,UAAU"}
1
+ {"version":3,"file":"formatDate.js","names":["formatDate","timestamp","t","lng","date","Date","day","getDate","month","returnObjects","getMonth","year","getFullYear","isPrevYear"],"sources":["../../../../src/lib/components/session/formatDate.ts"],"sourcesContent":["import { TFunction } from 'i18next';\n\nconst formatDate = (timestamp: number, t: TFunction, lng: string): string => {\n const date = new Date(timestamp);\n\n const day = date.getDate();\n const month = t('profile:sessions.monthAbbreviations', {\n returnObjects: true,\n })[date.getMonth()];\n const year = date.getFullYear();\n const isPrevYear = year < new Date().getFullYear();\n\n if (lng === 'ru') return `${day} ${month}${isPrevYear ? ` ${year}` : ''}`;\n return `${month} ${day}${isPrevYear ? `, ${year}` : ''}`;\n};\n\nexport default formatDate;\n"],"mappings":"AAEA,MAAMA,UAAU,GAAGA,CAACC,SAAiB,EAAEC,CAAY,EAAEC,GAAW,KAAa;EAC3E,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACJ,SAAS,CAAC;EAEhC,MAAMK,GAAG,GAAGF,IAAI,CAACG,OAAO,CAAC,CAAC;EAC1B,MAAMC,KAAK,GAAGN,CAAC,CAAC,qCAAqC,EAAE;IACrDO,aAAa,EAAE;EACjB,CAAC,CAAC,CAACL,IAAI,CAACM,QAAQ,CAAC,CAAC,CAAC;EACnB,MAAMC,IAAI,GAAGP,IAAI,CAACQ,WAAW,CAAC,CAAC;EAC/B,MAAMC,UAAU,GAAGF,IAAI,GAAG,IAAIN,IAAI,CAAC,CAAC,CAACO,WAAW,CAAC,CAAC;EAElD,IAAIT,GAAG,KAAK,IAAI,EAAE,OAAQ,GAAEG,GAAI,IAAGE,KAAM,GAAEK,UAAU,GAAI,IAAGF,IAAK,EAAC,GAAG,EAAG,EAAC;EACzE,OAAQ,GAAEH,KAAM,IAAGF,GAAI,GAAEO,UAAU,GAAI,KAAIF,IAAK,EAAC,GAAG,EAAG,EAAC;AAC1D,CAAC;AAED,eAAeX,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"getLastSeen.js","names":["getLastSeen","lastSeenAt","date","Date","milliseconds","now","getTime","seconds","Math","floor","minutes","hours"],"sources":["../../../../src/lib/components/session/getLastSeen.ts"],"sourcesContent":["const getLastSeen = (\n lastSeenAt: string\n): [number, 'hours' | 'minutes' | 'seconds'] | null => {\n const date = new Date(lastSeenAt);\n const milliseconds = Date.now() - date.getTime();\n if (milliseconds <= 1000) return [1, 'seconds'];\n\n const seconds = Math.floor(milliseconds / 1000);\n if (seconds < 60) return [seconds, 'seconds'];\n\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return [minutes, 'minutes'];\n\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return [hours, 'hours'];\n\n return null;\n};\n\nexport default getLastSeen;\n"],"mappings":"AAAA,MAAMA,WAAW,GACfC,UAAkB,IACmC;EACrD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,UAAU,CAAC;EACjC,MAAMG,YAAY,GAAGD,IAAI,CAACE,GAAG,EAAE,GAAGH,IAAI,CAACI,OAAO,EAAE;EAChD,IAAIF,YAAY,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;EAE/C,MAAMG,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACL,YAAY,GAAG,IAAI,CAAC;EAC/C,IAAIG,OAAO,GAAG,EAAE,EAAE,OAAO,CAACA,OAAO,EAAE,SAAS,CAAC;EAE7C,MAAMG,OAAO,GAAGF,IAAI,CAACC,KAAK,CAACF,OAAO,GAAG,EAAE,CAAC;EACxC,IAAIG,OAAO,GAAG,EAAE,EAAE,OAAO,CAACA,OAAO,EAAE,SAAS,CAAC;EAE7C,MAAMC,KAAK,GAAGH,IAAI,CAACC,KAAK,CAACC,OAAO,GAAG,EAAE,CAAC;EACtC,IAAIC,KAAK,GAAG,EAAE,EAAE,OAAO,CAACA,KAAK,EAAE,OAAO,CAAC;EAEvC,OAAO,IAAI;AACb,CAAC;AAED,eAAeX,WAAW"}
1
+ {"version":3,"file":"getLastSeen.js","names":["getLastSeen","lastSeenAt","date","Date","milliseconds","now","getTime","seconds","Math","floor","minutes","hours"],"sources":["../../../../src/lib/components/session/getLastSeen.ts"],"sourcesContent":["const getLastSeen = (\n lastSeenAt: number\n): [number, 'hours' | 'minutes' | 'seconds'] | null => {\n const date = new Date(lastSeenAt);\n const milliseconds = Date.now() - date.getTime();\n if (milliseconds <= 1000) return [1, 'seconds'];\n\n const seconds = Math.floor(milliseconds / 1000);\n if (seconds < 60) return [seconds, 'seconds'];\n\n const minutes = Math.floor(seconds / 60);\n if (minutes < 60) return [minutes, 'minutes'];\n\n const hours = Math.floor(minutes / 60);\n if (hours < 24) return [hours, 'hours'];\n\n return null;\n};\n\nexport default getLastSeen;\n"],"mappings":"AAAA,MAAMA,WAAW,GACfC,UAAkB,IACmC;EACrD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,UAAU,CAAC;EACjC,MAAMG,YAAY,GAAGD,IAAI,CAACE,GAAG,CAAC,CAAC,GAAGH,IAAI,CAACI,OAAO,CAAC,CAAC;EAChD,IAAIF,YAAY,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC;EAE/C,MAAMG,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACL,YAAY,GAAG,IAAI,CAAC;EAC/C,IAAIG,OAAO,GAAG,EAAE,EAAE,OAAO,CAACA,OAAO,EAAE,SAAS,CAAC;EAE7C,MAAMG,OAAO,GAAGF,IAAI,CAACC,KAAK,CAACF,OAAO,GAAG,EAAE,CAAC;EACxC,IAAIG,OAAO,GAAG,EAAE,EAAE,OAAO,CAACA,OAAO,EAAE,SAAS,CAAC;EAE7C,MAAMC,KAAK,GAAGH,IAAI,CAACC,KAAK,CAACC,OAAO,GAAG,EAAE,CAAC;EACtC,IAAIC,KAAK,GAAG,EAAE,EAAE,OAAO,CAACA,KAAK,EAAE,OAAO,CAAC;EAEvC,OAAO,IAAI;AACb,CAAC;AAED,eAAeX,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonUpdate.js","names":["React","Button","useTranslation","ButtonUpdate","props","t"],"sources":["../../../../src/lib/components/shared/ButtonUpdate.tsx"],"sourcesContent":["import React from 'react';\nimport { Button, ButtonProps } from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\n\nconst ButtonUpdate: React.FC<ButtonProps> = (props) => {\n const { t } = useTranslation(['profile']);\n return <Button {...props}>{t('profile:update')}</Button>;\n};\n\nexport default ButtonUpdate;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAqB,iBAAiB;AACrD,SAASC,cAAc,QAAQ,eAAe;AAE9C,MAAMC,YAAmC,GAAIC,KAAK,IAAK;EACrD,MAAM;IAAEC;EAAE,CAAC,GAAGH,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EACzC,oBAAO,oBAAC,MAAM,EAAKE,KAAK,EAAGC,CAAC,CAAC,gBAAgB,CAAC,CAAU;AAC1D,CAAC;AAED,eAAeF,YAAY"}
1
+ {"version":3,"file":"ButtonUpdate.js","names":["React","Button","useTranslation","ButtonUpdate","props","t","createElement"],"sources":["../../../../src/lib/components/shared/ButtonUpdate.tsx"],"sourcesContent":["import React from 'react';\nimport { Button, ButtonProps } from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\n\nconst ButtonUpdate: React.FC<ButtonProps> = (props) => {\n const { t } = useTranslation(['profile']);\n return <Button {...props}>{t('profile:update')}</Button>;\n};\n\nexport default ButtonUpdate;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,QAAqB,iBAAiB;AACrD,SAASC,cAAc,QAAQ,eAAe;AAE9C,MAAMC,YAAmC,GAAIC,KAAK,IAAK;EACrD,MAAM;IAAEC;EAAE,CAAC,GAAGH,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;EACzC,oBAAOF,KAAA,CAAAM,aAAA,CAACL,MAAM,EAAKG,KAAK,EAAGC,CAAC,CAAC,gBAAgB,CAAU,CAAC;AAC1D,CAAC;AAED,eAAeF,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"ErrorResult.js","names":["React","CloseCircle","Result","useTranslation","styled","getErrorMessage","StyledResult","ErrorResult","error","t"],"sources":["../../../../src/lib/components/shared/ErrorResult.tsx"],"sourcesContent":["import React from 'react';\nimport { CloseCircle } from '@os-design/icons';\nimport { Result } from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\nimport styled from '@emotion/styled';\nimport getErrorMessage from '../../utils/getErrorMessage';\n\ninterface ErrorResultProps {\n error: Error;\n}\n\nconst StyledResult = styled(Result)`\n margin: 0 1em;\n`;\n\nconst ErrorResult: React.FC<ErrorResultProps> = ({ error }) => {\n const { t } = useTranslation(['common']);\n\n return (\n <StyledResult\n title={t('common:errorTitle')}\n description={getErrorMessage(error)}\n icon={<CloseCircle />}\n />\n );\n};\n\nexport default ErrorResult;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,MAAM,QAAQ,iBAAiB;AACxC,SAASC,cAAc,QAAQ,eAAe;AAC9C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,OAAOC,eAAe,MAAM,6BAA6B;AAMzD,MAAMC,YAAY,GAAGF,MAAM,CAACF,MAAM,CAAE;AACpC;AACA,CAAC;AAED,MAAMK,WAAuC,GAAG,CAAC;EAAEC;AAAM,CAAC,KAAK;EAC7D,MAAM;IAAEC;EAAE,CAAC,GAAGN,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;EAExC,oBACE,oBAAC,YAAY;IACX,KAAK,EAAEM,CAAC,CAAC,mBAAmB,CAAE;IAC9B,WAAW,EAAEJ,eAAe,CAACG,KAAK,CAAE;IACpC,IAAI,eAAE,oBAAC,WAAW;EAAI,EACtB;AAEN,CAAC;AAED,eAAeD,WAAW"}
1
+ {"version":3,"file":"ErrorResult.js","names":["React","CloseCircle","Result","useTranslation","styled","getErrorMessage","StyledResult","ErrorResult","error","t","createElement","title","description","icon"],"sources":["../../../../src/lib/components/shared/ErrorResult.tsx"],"sourcesContent":["import React from 'react';\nimport { CloseCircle } from '@os-design/icons';\nimport { Result } from '@os-design/core';\nimport { useTranslation } from 'react-i18next';\nimport styled from '@emotion/styled';\nimport getErrorMessage from '../../utils/getErrorMessage';\n\ninterface ErrorResultProps {\n error: Error;\n}\n\nconst StyledResult = styled(Result)`\n margin: 0 1em;\n`;\n\nconst ErrorResult: React.FC<ErrorResultProps> = ({ error }) => {\n const { t } = useTranslation(['common']);\n\n return (\n <StyledResult\n title={t('common:errorTitle')}\n description={getErrorMessage(error)}\n icon={<CloseCircle />}\n />\n );\n};\n\nexport default ErrorResult;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,MAAM,QAAQ,iBAAiB;AACxC,SAASC,cAAc,QAAQ,eAAe;AAC9C,OAAOC,MAAM,MAAM,iBAAiB;AACpC,OAAOC,eAAe,MAAM,6BAA6B;AAMzD,MAAMC,YAAY,GAAGF,MAAM,CAACF,MAAM,CAAE;AACpC;AACA,CAAC;AAED,MAAMK,WAAuC,GAAGA,CAAC;EAAEC;AAAM,CAAC,KAAK;EAC7D,MAAM;IAAEC;EAAE,CAAC,GAAGN,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;EAExC,oBACEH,KAAA,CAAAU,aAAA,CAACJ,YAAY;IACXK,KAAK,EAAEF,CAAC,CAAC,mBAAmB,CAAE;IAC9BG,WAAW,EAAEP,eAAe,CAACG,KAAK,CAAE;IACpCK,IAAI,eAAEb,KAAA,CAAAU,aAAA,CAACT,WAAW,MAAE;EAAE,CACvB,CAAC;AAEN,CAAC;AAED,eAAeM,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"FormError.js","names":["Alert","useExistingForm","React","FormError","useError","error"],"sources":["../../../../src/lib/components/shared/FormError.tsx"],"sourcesContent":["import { Alert } from '@os-design/core';\nimport { useExistingForm } from '@os-design/form';\nimport React from 'react';\n\nconst FormError: React.FC = () => {\n const { useError } = useExistingForm();\n const error = useError('_error');\n return error ? <Alert type='error'>{error}</Alert> : null;\n};\n\nexport default FormError;\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SAASC,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,KAAK,MAAM,OAAO;AAEzB,MAAMC,SAAmB,GAAG,MAAM;EAChC,MAAM;IAAEC;EAAS,CAAC,GAAGH,eAAe,EAAE;EACtC,MAAMI,KAAK,GAAGD,QAAQ,CAAC,QAAQ,CAAC;EAChC,OAAOC,KAAK,gBAAG,oBAAC,KAAK;IAAC,IAAI,EAAC;EAAO,GAAEA,KAAK,CAAS,GAAG,IAAI;AAC3D,CAAC;AAED,eAAeF,SAAS"}
1
+ {"version":3,"file":"FormError.js","names":["Alert","useExistingForm","React","FormError","useError","error","createElement","type"],"sources":["../../../../src/lib/components/shared/FormError.tsx"],"sourcesContent":["import { Alert } from '@os-design/core';\nimport { useExistingForm } from '@os-design/form';\nimport React from 'react';\n\nconst FormError: React.FC = () => {\n const { useError } = useExistingForm();\n const error = useError('_error');\n return error ? <Alert type='error'>{error}</Alert> : null;\n};\n\nexport default FormError;\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,iBAAiB;AACvC,SAASC,eAAe,QAAQ,iBAAiB;AACjD,OAAOC,KAAK,MAAM,OAAO;AAEzB,MAAMC,SAAmB,GAAGA,CAAA,KAAM;EAChC,MAAM;IAAEC;EAAS,CAAC,GAAGH,eAAe,CAAC,CAAC;EACtC,MAAMI,KAAK,GAAGD,QAAQ,CAAC,QAAQ,CAAC;EAChC,OAAOC,KAAK,gBAAGH,KAAA,CAAAI,aAAA,CAACN,KAAK;IAACO,IAAI,EAAC;EAAO,GAAEF,KAAa,CAAC,GAAG,IAAI;AAC3D,CAAC;AAED,eAAeF,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"MainLoader.js","names":["React","styled","Loading","clr","Container","div","p","theme","colorPrimary","MainLoader"],"sources":["../../../../src/lib/components/shared/MainLoader.tsx"],"sourcesContent":["import React from 'react';\nimport styled from '@emotion/styled';\nimport { Loading } from '@os-design/icons';\nimport { clr } from '@os-design/theming';\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n\n height: calc(var(--vh, 1vh) * 100);\n font-size: 2em;\n color: ${(p) => clr(p.theme.colorPrimary)};\n`;\n\nconst MainLoader: React.FC = () => (\n <Container>\n <Loading />\n </Container>\n);\n\nexport default MainLoader;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,GAAG,QAAQ,oBAAoB;AAExC,MAAMC,SAAS,GAAGH,MAAM,CAACI,GAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,WAAYC,CAAC,IAAKH,GAAG,CAACG,CAAC,CAACC,KAAK,CAACC,YAAY,CAAE;AAC5C,CAAC;AAED,MAAMC,UAAoB,GAAG,mBAC3B,oBAAC,SAAS,qBACR,oBAAC,OAAO,OAAG,CAEd;AAED,eAAeA,UAAU"}
1
+ {"version":3,"file":"MainLoader.js","names":["React","styled","Loading","clr","Container","div","p","theme","colorPrimary","MainLoader","createElement"],"sources":["../../../../src/lib/components/shared/MainLoader.tsx"],"sourcesContent":["import React from 'react';\nimport styled from '@emotion/styled';\nimport { Loading } from '@os-design/icons';\nimport { clr } from '@os-design/theming';\n\nconst Container = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n\n height: calc(var(--vh, 1vh) * 100);\n font-size: 2em;\n color: ${(p) => clr(p.theme.colorPrimary)};\n`;\n\nconst MainLoader: React.FC = () => (\n <Container>\n <Loading />\n </Container>\n);\n\nexport default MainLoader;\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,iBAAiB;AACpC,SAASC,OAAO,QAAQ,kBAAkB;AAC1C,SAASC,GAAG,QAAQ,oBAAoB;AAExC,MAAMC,SAAS,GAAGH,MAAM,CAACI,GAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,WAAYC,CAAC,IAAKH,GAAG,CAACG,CAAC,CAACC,KAAK,CAACC,YAAY,CAAE;AAC5C,CAAC;AAED,MAAMC,UAAoB,GAAGA,CAAA,kBAC3BT,KAAA,CAAAU,aAAA,CAACN,SAAS,qBACRJ,KAAA,CAAAU,aAAA,CAACR,OAAO,MAAE,CACD,CACZ;AAED,eAAeO,UAAU"}
@@ -1 +1 @@
1
- {"version":3,"file":"AndroidIcon.js","names":["React","Icon","AndroidIcon","forwardRef","props","ref","displayName"],"sources":["../../../../../src/lib/components/shared/icons/AndroidIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst AndroidIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4c-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8c-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6c-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z' />\n </Icon>\n));\n\nAndroidIcon.displayName = 'AndroidIcon';\n\nexport default AndroidIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxE,oBAAC,IAAI,eAAKD,KAAK;EAAE,GAAG,EAAEC;AAAI,iBACxB;EAAM,CAAC,EAAC;AAA44B,EAAG,CAE15B,CAAC;AAEFH,WAAW,CAACI,WAAW,GAAG,aAAa;AAEvC,eAAeJ,WAAW"}
1
+ {"version":3,"file":"AndroidIcon.js","names":["React","Icon","AndroidIcon","forwardRef","props","ref","createElement","_extends","d","displayName"],"sources":["../../../../../src/lib/components/shared/icons/AndroidIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst AndroidIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4c-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8c-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6c-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z' />\n </Icon>\n));\n\nAndroidIcon.displayName = 'AndroidIcon';\n\nexport default AndroidIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxEL,KAAA,CAAAM,aAAA,CAACL,IAAI,EAAAM,QAAA,KAAKH,KAAK;EAAEC,GAAG,EAAEA;AAAI,iBACxBL,KAAA,CAAAM,aAAA;EAAME,CAAC,EAAC;AAA44B,CAAE,CACl5B,CACP,CAAC;AAEFN,WAAW,CAACO,WAAW,GAAG,aAAa;AAEvC,eAAeP,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppleIcon.js","names":["React","Icon","AppleIcon","forwardRef","props","ref","displayName"],"sources":["../../../../../src/lib/components/shared/icons/AppleIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst AppleIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5c-34.9-50-87.7-77.5-157.3-82.8c-65.9-5.2-138 38.4-164.4 38.4c-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8c23.8 68.2 109.6 235.3 199.1 232.6c46.8-1.1 79.9-33.2 140.8-33.2c59.1 0 89.7 33.2 141.9 33.2c90.3-1.3 167.9-153.2 190.5-221.6c-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7c-44.8 2.6-96.6 30.5-126.1 64.8c-32.5 36.8-51.6 82.3-47.5 133.6c48.4 3.7 92.6-21.2 129-63.7z' />\n </Icon>\n));\n\nAppleIcon.displayName = 'AppleIcon';\n\nexport default AppleIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,SAAS,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACtE,oBAAC,IAAI,eAAKD,KAAK;EAAE,GAAG,EAAEC;AAAI,iBACxB;EAAM,CAAC,EAAC;AAAse,EAAG,CAEpf,CAAC;AAEFH,SAAS,CAACI,WAAW,GAAG,WAAW;AAEnC,eAAeJ,SAAS"}
1
+ {"version":3,"file":"AppleIcon.js","names":["React","Icon","AppleIcon","forwardRef","props","ref","createElement","_extends","d","displayName"],"sources":["../../../../../src/lib/components/shared/icons/AppleIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst AppleIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M747.4 535.7c-.4-68.2 30.5-119.6 92.9-157.5c-34.9-50-87.7-77.5-157.3-82.8c-65.9-5.2-138 38.4-164.4 38.4c-27.9 0-91.7-36.6-141.9-36.6C273.1 298.8 163 379.8 163 544.6c0 48.7 8.9 99 26.7 150.8c23.8 68.2 109.6 235.3 199.1 232.6c46.8-1.1 79.9-33.2 140.8-33.2c59.1 0 89.7 33.2 141.9 33.2c90.3-1.3 167.9-153.2 190.5-221.6c-121.1-57.1-114.6-167.2-114.6-170.7zm-105.1-305c50.7-60.2 46.1-115 44.6-134.7c-44.8 2.6-96.6 30.5-126.1 64.8c-32.5 36.8-51.6 82.3-47.5 133.6c48.4 3.7 92.6-21.2 129-63.7z' />\n </Icon>\n));\n\nAppleIcon.displayName = 'AppleIcon';\n\nexport default AppleIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,SAAS,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACtEL,KAAA,CAAAM,aAAA,CAACL,IAAI,EAAAM,QAAA,KAAKH,KAAK;EAAEC,GAAG,EAAEA;AAAI,iBACxBL,KAAA,CAAAM,aAAA;EAAME,CAAC,EAAC;AAAse,CAAE,CAC5e,CACP,CAAC;AAEFN,SAAS,CAACO,WAAW,GAAG,WAAW;AAEnC,eAAeP,SAAS"}
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserIcon.js","names":["React","Icon","BrowserIcon","forwardRef","props","ref","displayName"],"sources":["../../../../../src/lib/components/shared/icons/BrowserIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst BrowserIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512S589.5 371.8 512 371.8S371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2c180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7C653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z' />\n </Icon>\n));\n\nBrowserIcon.displayName = 'BrowserIcon';\n\nexport default BrowserIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxE,oBAAC,IAAI,eAAKD,KAAK;EAAE,GAAG,EAAEC;AAAI,iBACxB;EAAM,CAAC,EAAC;AAAwgB,EAAG,CAEthB,CAAC;AAEFH,WAAW,CAACI,WAAW,GAAG,aAAa;AAEvC,eAAeJ,WAAW"}
1
+ {"version":3,"file":"BrowserIcon.js","names":["React","Icon","BrowserIcon","forwardRef","props","ref","createElement","_extends","d","displayName"],"sources":["../../../../../src/lib/components/shared/icons/BrowserIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst BrowserIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M371.8 512c0 77.5 62.7 140.2 140.2 140.2S652.2 589.5 652.2 512S589.5 371.8 512 371.8S371.8 434.4 371.8 512zM900 362.4l-234.3 12.1c63.6 74.3 64.6 181.5 11.1 263.7l-188 289.2c78 4.2 158.4-12.9 231.2-55.2c180-104 253-322.1 180-509.8zM320.3 591.9L163.8 284.1A415.35 415.35 0 0 0 96 512c0 208 152.3 380.3 351.4 410.8l106.9-209.4c-96.6 18.2-189.9-34.8-234-121.5zm218.5-285.5l344.4 18.1C848 254.7 792.6 194 719.8 151.7C653.9 113.6 581.5 95.5 510.5 96c-122.5.5-242.2 55.2-322.1 154.5l128.2 196.9c32-91.9 124.8-146.7 222.2-141z' />\n </Icon>\n));\n\nBrowserIcon.displayName = 'BrowserIcon';\n\nexport default BrowserIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxEL,KAAA,CAAAM,aAAA,CAACL,IAAI,EAAAM,QAAA,KAAKH,KAAK;EAAEC,GAAG,EAAEA;AAAI,iBACxBL,KAAA,CAAAM,aAAA;EAAME,CAAC,EAAC;AAAwgB,CAAE,CAC9gB,CACP,CAAC;AAEFN,WAAW,CAACO,WAAW,GAAG,aAAa;AAEvC,eAAeP,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileIcon.js","names":["React","Icon","ProfileIcon","forwardRef","props","ref","displayName"],"sources":["../../../../../src/lib/components/shared/icons/ProfileIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst ProfileIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52s51.7-23.3 51.7-52s-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5c-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5c42.7 26.5 71.8 72.8 74.6 126.1c.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z' />\n </Icon>\n));\n\nProfileIcon.displayName = 'ProfileIcon';\n\nexport default ProfileIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxE,oBAAC,IAAI,eAAKD,KAAK;EAAE,GAAG,EAAEC;AAAI,iBACxB;EAAM,CAAC,EAAC;AAA8sB,EAAG,CAE5tB,CAAC;AAEFH,WAAW,CAACI,WAAW,GAAG,aAAa;AAEvC,eAAeJ,WAAW"}
1
+ {"version":3,"file":"ProfileIcon.js","names":["React","Icon","ProfileIcon","forwardRef","props","ref","createElement","_extends","d","displayName"],"sources":["../../../../../src/lib/components/shared/icons/ProfileIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst ProfileIcon = React.forwardRef<SVGSVGElement, IconProps>((props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M373 411c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52s51.7-23.3 51.7-52s-23.2-52-51.7-52zm555-251H96c-17.7 0-32 14.3-32 32v640c0 17.7 14.3 32 32 32h832c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32zM608 420c0-4.4 1-8 2.3-8h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48zm-86 253h-43.9c-4.2 0-7.6-3.3-7.9-7.5c-3.8-50.5-46-90.5-97.2-90.5s-93.4 40-97.2 90.5c-.3 4.2-3.7 7.5-7.9 7.5H224a8 8 0 0 1-8-8.4c2.8-53.3 32-99.7 74.6-126.1a111.8 111.8 0 0 1-29.1-75.5c0-61.9 49.9-112 111.4-112s111.4 50.1 111.4 112c0 29.1-11 55.5-29.1 75.5c42.7 26.5 71.8 72.8 74.6 126.1c.4 4.6-3.2 8.4-7.8 8.4zm278.9-53H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8h185.7c3.9 0 7.1 3.6 7.1 8v48h.1c0 4.4-3.2 8-7.1 8z' />\n </Icon>\n));\n\nProfileIcon.displayName = 'ProfileIcon';\n\nexport default ProfileIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,WAAW,gBAAGF,KAAK,CAACG,UAAU,CAA2B,CAACC,KAAK,EAAEC,GAAG,kBACxEL,KAAA,CAAAM,aAAA,CAACL,IAAI,EAAAM,QAAA,KAAKH,KAAK;EAAEC,GAAG,EAAEA;AAAI,iBACxBL,KAAA,CAAAM,aAAA;EAAME,CAAC,EAAC;AAA8sB,CAAE,CACptB,CACP,CAAC;AAEFN,WAAW,CAACO,WAAW,GAAG,aAAa;AAEvC,eAAeP,WAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"UnknownDeviceIcon.js","names":["React","Icon","UnknownDeviceIcon","forwardRef","props","ref","displayName"],"sources":["../../../../../src/lib/components/shared/icons/UnknownDeviceIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst UnknownDeviceIcon = React.forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7c-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2c-27.2 31.7-65.6 54.4-108.1 64c-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9c58.4-13.2 111.4-44.7 149.3-88.7c19.1-22.3 34-47.1 44.3-74c10.7-27.9 16.1-57.2 16.1-87c0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56s-25.1-56-56-56z' />\n </Icon>\n )\n);\n\nUnknownDeviceIcon.displayName = 'UnknownDeviceIcon';\n\nexport default UnknownDeviceIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,iBAAiB,gBAAGF,KAAK,CAACG,UAAU,CACxC,CAACC,KAAK,EAAEC,GAAG,kBACT,oBAAC,IAAI,eAAKD,KAAK;EAAE,GAAG,EAAEC;AAAI,iBACxB;EAAM,CAAC,EAAC;AAAioB,EAAG,CAE/oB,CACF;AAEDH,iBAAiB,CAACI,WAAW,GAAG,mBAAmB;AAEnD,eAAeJ,iBAAiB"}
1
+ {"version":3,"file":"UnknownDeviceIcon.js","names":["React","Icon","UnknownDeviceIcon","forwardRef","props","ref","createElement","_extends","d","displayName"],"sources":["../../../../../src/lib/components/shared/icons/UnknownDeviceIcon.tsx"],"sourcesContent":["import React from 'react';\nimport { Icon, IconProps } from '@os-design/icons';\n\nconst UnknownDeviceIcon = React.forwardRef<SVGSVGElement, IconProps>(\n (props, ref) => (\n <Icon {...props} ref={ref}>\n <path d='M764 280.9c-14-30.6-33.9-58.1-59.3-81.6C653.1 151.4 584.6 125 512 125s-141.1 26.4-192.7 74.2c-25.4 23.6-45.3 51-59.3 81.7c-14.6 32-22 65.9-22 100.9v27c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-27c0-99.5 88.6-180.4 197.6-180.4s197.6 80.9 197.6 180.4c0 40.8-14.5 79.2-42 111.2c-27.2 31.7-65.6 54.4-108.1 64c-24.3 5.5-46.2 19.2-61.7 38.8a110.85 110.85 0 0 0-23.9 68.6v31.4c0 6.2 5 11.2 11.2 11.2h54c6.2 0 11.2-5 11.2-11.2v-31.4c0-15.7 10.9-29.5 26-32.9c58.4-13.2 111.4-44.7 149.3-88.7c19.1-22.3 34-47.1 44.3-74c10.7-27.9 16.1-57.2 16.1-87c0-35-7.4-69-22-100.9zM512 787c-30.9 0-56 25.1-56 56s25.1 56 56 56s56-25.1 56-56s-25.1-56-56-56z' />\n </Icon>\n )\n);\n\nUnknownDeviceIcon.displayName = 'UnknownDeviceIcon';\n\nexport default UnknownDeviceIcon;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAmB,kBAAkB;AAElD,MAAMC,iBAAiB,gBAAGF,KAAK,CAACG,UAAU,CACxC,CAACC,KAAK,EAAEC,GAAG,kBACTL,KAAA,CAAAM,aAAA,CAACL,IAAI,EAAAM,QAAA,KAAKH,KAAK;EAAEC,GAAG,EAAEA;AAAI,iBACxBL,KAAA,CAAAM,aAAA;EAAME,CAAC,EAAC;AAAioB,CAAE,CACvoB,CAEV,CAAC;AAEDN,iBAAiB,CAACO,WAAW,GAAG,mBAAmB;AAEnD,eAAeP,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"getUserFullName.js","names":["getUserFullName","email","firstName","lastName","parts","push","length","join"],"sources":["../../../src/lib/utils/getUserFullName.ts"],"sourcesContent":["export interface User {\n email: string;\n firstName: string | null;\n lastName: string | null;\n}\n\nconst getUserFullName = ({ email, firstName, lastName }: User): string => {\n const parts: string[] = [];\n if (firstName) parts.push(firstName);\n if (lastName) parts.push(lastName);\n return parts.length > 0 ? parts.join(' ') : email;\n};\n\nexport default getUserFullName;\n"],"mappings":"AAMA,MAAMA,eAAe,GAAG,CAAC;EAAEC,KAAK;EAAEC,SAAS;EAAEC;AAAe,CAAC,KAAa;EACxE,MAAMC,KAAe,GAAG,EAAE;EAC1B,IAAIF,SAAS,EAAEE,KAAK,CAACC,IAAI,CAACH,SAAS,CAAC;EACpC,IAAIC,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACF,QAAQ,CAAC;EAClC,OAAOC,KAAK,CAACE,MAAM,GAAG,CAAC,GAAGF,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,GAAGN,KAAK;AACnD,CAAC;AAED,eAAeD,eAAe"}
1
+ {"version":3,"file":"getUserFullName.js","names":["getUserFullName","email","firstName","lastName","parts","push","length","join"],"sources":["../../../src/lib/utils/getUserFullName.ts"],"sourcesContent":["export interface User {\n email: string;\n firstName: string | null;\n lastName: string | null;\n}\n\nconst getUserFullName = ({ email, firstName, lastName }: User): string => {\n const parts: string[] = [];\n if (firstName) parts.push(firstName);\n if (lastName) parts.push(lastName);\n return parts.length > 0 ? parts.join(' ') : email;\n};\n\nexport default getUserFullName;\n"],"mappings":"AAMA,MAAMA,eAAe,GAAGA,CAAC;EAAEC,KAAK;EAAEC,SAAS;EAAEC;AAAe,CAAC,KAAa;EACxE,MAAMC,KAAe,GAAG,EAAE;EAC1B,IAAIF,SAAS,EAAEE,KAAK,CAACC,IAAI,CAACH,SAAS,CAAC;EACpC,IAAIC,QAAQ,EAAEC,KAAK,CAACC,IAAI,CAACF,QAAQ,CAAC;EAClC,OAAOC,KAAK,CAACE,MAAM,GAAG,CAAC,GAAGF,KAAK,CAACG,IAAI,CAAC,GAAG,CAAC,GAAGN,KAAK;AACnD,CAAC;AAED,eAAeD,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormErrors.js","names":["NO_CONSTRAINTS","getErrorConstraints","error","e","source","Array","isArray","errors","length","extensions","code","constraints","handleFormErrors","form","set","message","Object","entries","forEach","fieldName"],"sources":["../../../src/lib/utils/handleFormErrors.ts"],"sourcesContent":["import { Form } from '@os-design/form';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ninterface Constraint {\n name: string;\n message: string;\n}\n\nconst NO_CONSTRAINTS = {};\n\nexport const getErrorConstraints = (\n error: Error\n): Record<string, Constraint> => {\n const e = error as any;\n\n if (\n !e.source ||\n !Array.isArray(e.source.errors) ||\n e.source.errors.length === 0 ||\n !e.source.errors[0].extensions ||\n !e.source.errors[0].extensions.code\n ) {\n return NO_CONSTRAINTS;\n }\n if (e.source.errors[0].extensions.code !== 'BAD_ARGUMENTS') {\n return NO_CONSTRAINTS;\n }\n\n return e.source.errors[0].extensions.constraints;\n};\n\nconst handleFormErrors = (form: Form<any>, error: Error): void => {\n const e = error as any;\n\n if (\n !e.source ||\n !Array.isArray(e.source.errors) ||\n e.source.errors.length === 0 ||\n !e.source.errors[0].extensions ||\n !e.source.errors[0].extensions.code\n ) {\n form.errors.set('_error', e.message);\n return;\n }\n\n if (e.source.errors[0].extensions.code === 'BAD_ARGUMENTS') {\n const constraints = getErrorConstraints(error);\n Object.entries(constraints).forEach(([fieldName, { message }]) => {\n form.errors.set(fieldName, message);\n });\n } else {\n form.errors.set('_error', e.source.errors[0].message);\n }\n};\n\nexport default handleFormErrors;\n"],"mappings":"AAEA;;AAOA,MAAMA,cAAc,GAAG,CAAC,CAAC;AAEzB,OAAO,MAAMC,mBAAmB,GAC9BC,KAAY,IACmB;EAC/B,MAAMC,CAAC,GAAGD,KAAY;EAEtB,IACE,CAACC,CAAC,CAACC,MAAM,IACT,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,IAC/BJ,CAAC,CAACC,MAAM,CAACG,MAAM,CAACC,MAAM,KAAK,CAAC,IAC5B,CAACL,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,IAC9B,CAACN,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,EACnC;IACA,OAAOV,cAAc;EACvB;EACA,IAAIG,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,KAAK,eAAe,EAAE;IAC1D,OAAOV,cAAc;EACvB;EAEA,OAAOG,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACE,WAAW;AAClD,CAAC;AAED,MAAMC,gBAAgB,GAAG,CAACC,IAAe,EAAEX,KAAY,KAAW;EAChE,MAAMC,CAAC,GAAGD,KAAY;EAEtB,IACE,CAACC,CAAC,CAACC,MAAM,IACT,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,IAC/BJ,CAAC,CAACC,MAAM,CAACG,MAAM,CAACC,MAAM,KAAK,CAAC,IAC5B,CAACL,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,IAC9B,CAACN,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,EACnC;IACAG,IAAI,CAACN,MAAM,CAACO,GAAG,CAAC,QAAQ,EAAEX,CAAC,CAACY,OAAO,CAAC;IACpC;EACF;EAEA,IAAIZ,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,KAAK,eAAe,EAAE;IAC1D,MAAMC,WAAW,GAAGV,mBAAmB,CAACC,KAAK,CAAC;IAC9Cc,MAAM,CAACC,OAAO,CAACN,WAAW,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,SAAS,EAAE;MAAEJ;IAAQ,CAAC,CAAC,KAAK;MAChEF,IAAI,CAACN,MAAM,CAACO,GAAG,CAACK,SAAS,EAAEJ,OAAO,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC,MAAM;IACLF,IAAI,CAACN,MAAM,CAACO,GAAG,CAAC,QAAQ,EAAEX,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACQ,OAAO,CAAC;EACvD;AACF,CAAC;AAED,eAAeH,gBAAgB"}
1
+ {"version":3,"file":"handleFormErrors.js","names":["NO_CONSTRAINTS","getErrorConstraints","error","e","source","Array","isArray","errors","length","extensions","code","constraints","handleFormErrors","form","set","message","Object","entries","forEach","fieldName"],"sources":["../../../src/lib/utils/handleFormErrors.ts"],"sourcesContent":["import { Form } from '@os-design/form';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\ninterface Constraint {\n name: string;\n message: string;\n}\n\nconst NO_CONSTRAINTS = {};\n\nexport const getErrorConstraints = (\n error: Error\n): Record<string, Constraint> => {\n const e = error as any;\n\n if (\n !e.source ||\n !Array.isArray(e.source.errors) ||\n e.source.errors.length === 0 ||\n !e.source.errors[0].extensions ||\n !e.source.errors[0].extensions.code\n ) {\n return NO_CONSTRAINTS;\n }\n if (e.source.errors[0].extensions.code !== 'BAD_ARGUMENTS') {\n return NO_CONSTRAINTS;\n }\n\n return e.source.errors[0].extensions.constraints;\n};\n\nconst handleFormErrors = (form: Form<any>, error: Error): void => {\n const e = error as any;\n\n if (\n !e.source ||\n !Array.isArray(e.source.errors) ||\n e.source.errors.length === 0 ||\n !e.source.errors[0].extensions ||\n !e.source.errors[0].extensions.code\n ) {\n form.errors.set('_error', e.message);\n return;\n }\n\n if (e.source.errors[0].extensions.code === 'BAD_ARGUMENTS') {\n const constraints = getErrorConstraints(error);\n Object.entries(constraints).forEach(([fieldName, { message }]) => {\n form.errors.set(fieldName, message);\n });\n } else {\n form.errors.set('_error', e.source.errors[0].message);\n }\n};\n\nexport default handleFormErrors;\n"],"mappings":"AAEA;;AAOA,MAAMA,cAAc,GAAG,CAAC,CAAC;AAEzB,OAAO,MAAMC,mBAAmB,GAC9BC,KAAY,IACmB;EAC/B,MAAMC,CAAC,GAAGD,KAAY;EAEtB,IACE,CAACC,CAAC,CAACC,MAAM,IACT,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,IAC/BJ,CAAC,CAACC,MAAM,CAACG,MAAM,CAACC,MAAM,KAAK,CAAC,IAC5B,CAACL,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,IAC9B,CAACN,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,EACnC;IACA,OAAOV,cAAc;EACvB;EACA,IAAIG,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,KAAK,eAAe,EAAE;IAC1D,OAAOV,cAAc;EACvB;EAEA,OAAOG,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACE,WAAW;AAClD,CAAC;AAED,MAAMC,gBAAgB,GAAGA,CAACC,IAAe,EAAEX,KAAY,KAAW;EAChE,MAAMC,CAAC,GAAGD,KAAY;EAEtB,IACE,CAACC,CAAC,CAACC,MAAM,IACT,CAACC,KAAK,CAACC,OAAO,CAACH,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,IAC/BJ,CAAC,CAACC,MAAM,CAACG,MAAM,CAACC,MAAM,KAAK,CAAC,IAC5B,CAACL,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,IAC9B,CAACN,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,EACnC;IACAG,IAAI,CAACN,MAAM,CAACO,GAAG,CAAC,QAAQ,EAAEX,CAAC,CAACY,OAAO,CAAC;IACpC;EACF;EAEA,IAAIZ,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACE,UAAU,CAACC,IAAI,KAAK,eAAe,EAAE;IAC1D,MAAMC,WAAW,GAAGV,mBAAmB,CAACC,KAAK,CAAC;IAC9Cc,MAAM,CAACC,OAAO,CAACN,WAAW,CAAC,CAACO,OAAO,CAAC,CAAC,CAACC,SAAS,EAAE;MAAEJ;IAAQ,CAAC,CAAC,KAAK;MAChEF,IAAI,CAACN,MAAM,CAACO,GAAG,CAACK,SAAS,EAAEJ,OAAO,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC,MAAM;IACLF,IAAI,CAACN,MAAM,CAACO,GAAG,CAAC,QAAQ,EAAEX,CAAC,CAACC,MAAM,CAACG,MAAM,CAAC,CAAC,CAAC,CAACQ,OAAO,CAAC;EACvD;AACF,CAAC;AAED,eAAeH,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/session/SessionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAOpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAgBxF,UAAU,gBAAgB;IACxB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED,eAAO,MAAM,KAAK;;;qFAGjB,CAAC;AAEF,eAAO,MAAM,IAAI;;;qFAGhB,CAAC;AAaF,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA6F3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"SessionList.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/components/session/SessionList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAC;AAOpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAgBxF,UAAU,gBAAgB;IACxB,WAAW,EAAE,wBAAwB,CAAC;CACvC;AAED,eAAO,MAAM,KAAK;;;qFAGjB,CAAC;AAEF,eAAO,MAAM,IAAI;;;qFAGhB,CAAC;AAaF,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA0F3C,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -13,7 +13,7 @@ export type SessionListItem_session$data = {
13
13
  readonly id: string;
14
14
  readonly ip: string | null;
15
15
  readonly isApp: boolean;
16
- readonly lastSeenAt: string;
16
+ readonly lastSeenAt: any;
17
17
  readonly osName: string | null;
18
18
  readonly osVersion: string | null;
19
19
  readonly " $fragmentType": "SessionListItem_session";
@@ -1 +1 @@
1
- {"version":3,"file":"SessionListItem_session.graphql.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/session/__generated__/SessionListItem_session.graphql.ts"],"names":[],"mappings":"AAUA,OAAO,EAAY,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACjD,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACvE,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,cAkHX,CAAC;AAIF,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"SessionListItem_session.graphql.d.ts","sourceRoot":"","sources":["../../../../../../../src/lib/components/session/__generated__/SessionListItem_session.graphql.ts"],"names":[],"mappings":"AAUA,OAAO,EAAY,cAAc,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,4BAA4B,CAAC;IACjD,QAAQ,CAAC,mBAAmB,EAAE,YAAY,CAAC,yBAAyB,CAAC,CAAC;CACvE,CAAC;AAEF,QAAA,MAAM,IAAI,EAAE,cAkHX,CAAC;AAIF,eAAe,IAAI,CAAC"}