@chem-po/react-web 0.0.4 → 0.0.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 (127) hide show
  1. package/dist/index.cjs +2 -2
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.d.cts +5 -5
  4. package/dist/index.d.ts +5 -5
  5. package/dist/index.js +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/package.json +24 -22
  8. package/src/components/auth/SignIn.tsx +43 -0
  9. package/src/components/auth/index.ts +1 -0
  10. package/src/components/box/CollapseHorizontal.tsx +18 -0
  11. package/src/components/box/ContentBox.tsx +17 -0
  12. package/src/components/box/ExpandOnMount.tsx +48 -0
  13. package/src/components/box/Expandable.tsx +96 -0
  14. package/src/components/box/FullSizeContainer.tsx +50 -0
  15. package/src/components/box/MobileFrame/index.tsx +145 -0
  16. package/src/components/box/MobileFrame/styles.css +35 -0
  17. package/src/components/box/index.ts +6 -0
  18. package/src/components/button/DeleteButton.tsx +178 -0
  19. package/src/components/button/Toggle.tsx +88 -0
  20. package/src/components/button/ViewButton.tsx +30 -0
  21. package/src/components/button/index.ts +3 -0
  22. package/src/components/feed/FeedContentPane.tsx +111 -0
  23. package/src/components/feed/MediaFeed.tsx +200 -0
  24. package/src/components/feed/MediaFeedBackground.tsx +127 -0
  25. package/src/components/feed/MediaFeedRefresh.tsx +78 -0
  26. package/src/components/feed/MediaFeedSwipeUp.tsx +34 -0
  27. package/src/components/feed/constants.ts +11 -0
  28. package/src/components/feed/context.tsx +19 -0
  29. package/src/components/feed/hooks.ts +290 -0
  30. package/src/components/feed/index.ts +2 -0
  31. package/src/components/feed/types.ts +50 -0
  32. package/src/components/form/Condition.tsx +26 -0
  33. package/src/components/form/Field.tsx +39 -0
  34. package/src/components/form/Form.tsx +425 -0
  35. package/src/components/form/FormFooter.tsx +82 -0
  36. package/src/components/form/UploadProgress/index.tsx +38 -0
  37. package/src/components/form/UploadProgress/styles.css +23 -0
  38. package/src/components/form/index.ts +4 -0
  39. package/src/components/form/input/Editable.tsx +129 -0
  40. package/src/components/form/input/InputSlider.tsx +75 -0
  41. package/src/components/form/input/OptionalTag.tsx +33 -0
  42. package/src/components/form/input/StandaloneInput.tsx +41 -0
  43. package/src/components/form/input/boolean/index.tsx +53 -0
  44. package/src/components/form/input/color/index.tsx +126 -0
  45. package/src/components/form/input/date/index.tsx +122 -0
  46. package/src/components/form/input/datetime/index.tsx +93 -0
  47. package/src/components/form/input/file.tsx +379 -0
  48. package/src/components/form/input/hooks/index.ts +2 -0
  49. package/src/components/form/input/hooks/useInputImperativeHandle.ts +16 -0
  50. package/src/components/form/input/hooks/useInputStyle.ts +39 -0
  51. package/src/components/form/input/index.ts +2 -0
  52. package/src/components/form/input/input.css +44 -0
  53. package/src/components/form/input/input.tsx +130 -0
  54. package/src/components/form/input/multipleSelect/index.tsx +55 -0
  55. package/src/components/form/input/number/index.tsx +83 -0
  56. package/src/components/form/input/number/styles.css +8 -0
  57. package/src/components/form/input/select/index.tsx +80 -0
  58. package/src/components/form/input/socialMedia/index.tsx +158 -0
  59. package/src/components/form/input/text/index.tsx +72 -0
  60. package/src/components/form/input/text/textarea.tsx +44 -0
  61. package/src/components/form/input/time/index.tsx +33 -0
  62. package/src/components/form/input/type.ts +0 -0
  63. package/src/components/form/input/types.ts +4 -0
  64. package/src/components/form/view/file.tsx +45 -0
  65. package/src/components/form/view/index.tsx +61 -0
  66. package/src/components/form/view/multipleSelect.tsx +38 -0
  67. package/src/components/form/view/select.tsx +33 -0
  68. package/src/components/index.ts +14 -0
  69. package/src/components/list/Body/InfiniteScrollGridBody.tsx +177 -0
  70. package/src/components/list/Body/InfiniteScrollListBody.tsx +114 -0
  71. package/src/components/list/Body/ListBody.tsx +23 -0
  72. package/src/components/list/Body/PagedGridBody.tsx +104 -0
  73. package/src/components/list/Body/PagedListBody.tsx +92 -0
  74. package/src/components/list/Body/hooks.ts +84 -0
  75. package/src/components/list/DataList.tsx +32 -0
  76. package/src/components/list/ListContainer.tsx +20 -0
  77. package/src/components/list/ListContent.tsx +54 -0
  78. package/src/components/list/ListCreate.tsx +57 -0
  79. package/src/components/list/ListFilters.tsx +182 -0
  80. package/src/components/list/ListFooter.tsx +458 -0
  81. package/src/components/list/ListHeader.tsx +180 -0
  82. package/src/components/list/ListItem/ListCell.tsx +48 -0
  83. package/src/components/list/ListItem/ListRow.tsx +38 -0
  84. package/src/components/list/ListItemView.tsx +53 -0
  85. package/src/components/list/ListSort.tsx +84 -0
  86. package/src/components/list/NoItems.tsx +33 -0
  87. package/src/components/list/constants.ts +1 -0
  88. package/src/components/list/index.ts +4 -0
  89. package/src/components/list/types.ts +29 -0
  90. package/src/components/list/utils.ts +62 -0
  91. package/src/components/loading/CircularProgress.tsx +11 -0
  92. package/src/components/loading/Loading.tsx +160 -0
  93. package/src/components/loading/LoadingImage.tsx +123 -0
  94. package/src/components/loading/LoadingSwitch.tsx +78 -0
  95. package/src/components/loading/index.ts +4 -0
  96. package/src/components/media/PlayButton.tsx +94 -0
  97. package/src/components/media/index.ts +1 -0
  98. package/src/components/modal/DefaultModal.tsx +18 -0
  99. package/src/components/modal/DesktopModal.tsx +11 -0
  100. package/src/components/modal/ForceMobile.tsx +7 -0
  101. package/src/components/modal/MobileModal.tsx +89 -0
  102. package/src/components/modal/index.ts +3 -0
  103. package/src/components/modal/type.ts +7 -0
  104. package/src/components/nav/NavBar.tsx +101 -0
  105. package/src/components/nav/index.ts +1 -0
  106. package/src/components/overlay/ImageViewOverlay.tsx +88 -0
  107. package/src/components/overlay/MobileOverlay.tsx +22 -0
  108. package/src/components/overlay/index.ts +2 -0
  109. package/src/components/text/GradientText/index.tsx +16 -0
  110. package/src/components/text/GradientText/styles.css +5 -0
  111. package/src/components/text/NumberTicker.tsx +28 -0
  112. package/src/components/text/index.ts +1 -0
  113. package/src/components/theme/colorMode/DarkModeToggle.tsx +40 -0
  114. package/src/components/theme/colorMode/index.ts +1 -0
  115. package/src/components/theme/index.ts +1 -0
  116. package/src/components/view/ErrorView.tsx +13 -0
  117. package/src/components/view/RedirectView.tsx +42 -0
  118. package/src/components/view/index.ts +2 -0
  119. package/src/contexts/index.ts +1 -0
  120. package/src/contexts/theme.ts +316 -0
  121. package/src/custom.d.ts +4 -0
  122. package/src/hooks/index.ts +1 -0
  123. package/src/hooks/ui/index.ts +1 -0
  124. package/src/hooks/ui/useBorderColor.ts +4 -0
  125. package/src/store/index.ts +1 -0
  126. package/src/store/usePlayer.ts +75 -0
  127. package/src/store/useScreen.ts +22 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/auth/SignIn.tsx","../src/components/box/CollapseHorizontal.tsx","../src/components/box/ContentBox.tsx","../src/hooks/ui/useBorderColor.ts","../src/components/button/ViewButton.tsx","../src/components/box/Expandable.tsx","../src/components/box/ExpandOnMount.tsx","../src/components/box/FullSizeContainer.tsx","../src/components/modal/ForceMobile.tsx","../src/components/nav/NavBar.tsx","../src/components/view/ErrorView.tsx","../src/components/loading/CircularProgress.tsx","../src/components/loading/Loading.tsx","../src/components/view/RedirectView.tsx","../src/components/box/MobileFrame/index.tsx","../src/components/button/DeleteButton.tsx","../src/components/button/Toggle.tsx","../src/components/feed/context.tsx","../src/components/overlay/ImageViewOverlay.tsx","../src/components/loading/LoadingImage.tsx","../src/components/loading/LoadingSwitch.tsx","../src/components/feed/constants.ts","../src/components/feed/FeedContentPane.tsx","../src/components/feed/hooks.ts","../src/components/feed/MediaFeedBackground.tsx","../src/components/feed/MediaFeedRefresh.tsx","../src/components/feed/MediaFeed.tsx","../src/components/form/Condition.tsx","../src/components/form/Field.tsx","../src/components/form/input/boolean/index.tsx","../src/components/form/input/hooks/useInputImperativeHandle.ts","../src/components/form/input/InputSlider.tsx","../src/components/text/GradientText/index.tsx","../src/components/form/input/color/index.tsx","../src/components/form/input/date/index.tsx","../src/components/form/input/time/index.tsx","../src/components/form/input/datetime/index.tsx","../src/store/usePlayer.ts","../src/components/media/PlayButton.tsx","../src/components/form/input/file.tsx","../src/components/form/input/multipleSelect/index.tsx","../src/components/form/input/hooks/useInputStyle.ts","../src/components/form/input/number/index.tsx","../src/components/form/input/OptionalTag.tsx","../src/components/form/input/select/index.tsx","../src/components/form/input/socialMedia/index.tsx","../src/contexts/theme.ts","../src/components/form/input/text/textarea.tsx","../src/components/form/input/text/index.tsx","../src/components/form/input/input.tsx","../src/components/form/FormFooter.tsx","../src/components/form/UploadProgress/index.tsx","../src/components/form/view/file.tsx","../src/components/form/view/multipleSelect.tsx","../src/components/form/view/select.tsx","../src/components/form/view/index.tsx","../src/components/form/input/StandaloneInput.tsx","../src/components/form/input/Editable.tsx","../src/components/form/Form.tsx","../src/components/list/ListContainer.tsx","../src/components/list/ListItem/ListCell.tsx","../src/components/list/NoItems.tsx","../src/components/list/utils.ts","../src/components/list/Body/hooks.ts","../src/components/list/Body/InfiniteScrollGridBody.tsx","../src/components/list/Body/InfiniteScrollListBody.tsx","../src/components/list/ListItem/ListRow.tsx","../src/components/list/Body/PagedGridBody.tsx","../src/components/list/Body/PagedListBody.tsx","../src/components/list/Body/ListBody.tsx","../src/components/list/ListCreate.tsx","../src/components/modal/DesktopModal.tsx","../src/components/overlay/MobileOverlay.tsx","../src/components/modal/MobileModal.tsx","../src/components/modal/DefaultModal.tsx","../src/components/list/ListFooter.tsx","../src/components/list/ListHeader.tsx","../src/components/list/ListFilters.tsx","../src/components/list/ListSort.tsx","../src/components/list/ListItemView.tsx","../src/components/list/ListContent.tsx","../src/components/list/DataList.tsx","../src/components/text/NumberTicker.tsx","../src/components/theme/colorMode/DarkModeToggle.tsx","../src/store/useScreen.ts"],"names":["SignIn","layout","auth","useBackendBase","user","useAuth","s","jsx","Flex","Button","jsxs","Fragment","Text","AbsoluteLogin","props","Portal","CollapseHorizontal","width","children","active","duration","Center","ContentBoxBase","ref","ContentBox","forwardRef","useBorderColor","useColorModeValue","ViewButton","viewText","hideText","onClick","isOpen","color","IconButton","ChevronUpIcon","ChevronDownIcon","e","Expandable","header","initExpanded","nested","alwaysExpanded","headerProps","iconColor","footer","isOpenProp","onCloseProp","onOpenProp","stackProps","onClose","onOpen","useDisclosure","handleOpenClick","useCallback","borderColor","VStack","HStack","Box","Collapse","ExpandOnMount","animateOpacity","isIn","onExited","mounted","useMounted","bodyHeight","setBodyHeight","useState","bodyRef","useRef","isAnimating","setIsAnimating","expanded","useMemo","height","handleBodyResize","useResizeObserver","animatingTimeout","useEffect","transition","FullSizeContainer","setWidth","setHeight","handleResize","entry","FullSizeProvider","contextValue","FullSizeContext","ForceMobileContext","React","ForceMobile","useForceMobile","useContext","NAV_BAR_HEIGHT","NavBarLink","view","absolute","paths","name","icon","iconScale","path","iconBrightness","usedBrightness","pathname","useLocation","hoverBg","body","Image","Link","NavBar","selectedView","bg","palette","defaultBorderColor","views","useViews","menuViews","v","isAbsolute","background","ErrorView","message","CircularProgress","Orig","LottieLoadingLogo","size","isLoading","speed","inFeed","asset","_animationData","animationData","options","style","View","pause","play","setSpeed","useLottie","SVGLoadingLogo","_svg","svg","LoadingBody","loading","useAppAssets","LoadingLogo","Loading","text","inBox","LoadingOverlay","RedirectView","timer","authLoading","navigate","useNavigate","IPHONE_12_WIDTH","IPHONE_12_HEIGHT","IPHONE_12_ASPECT","MobileFrameBody","navBarChildren","isMobile","screenHeight","screenWidth","useScreen","contentHeight","contentWidth","h","w","cappedHeight","cappedWidth","outerBg","cssGradients","location","currentOutlet","useOutlet","matchRoutes","viewKey","overlayRef","nodeRef","absoluteNavBar","contextData","MobileFrameProvider","AnimatePresence","SwitchTransition","CSSTransition","motion","ErrorBoundary","MobileFrame","ViewsProvider","defaultAlertBodyText","DeleteConfirmAlert","confirmActive","onCancel","onConfirm","actionName","actionLoading","itemName","cancelRef","AlertDialog","AlertDialogOverlay","AlertDialogContent","AlertDialogBody","DeleteButton","onDelete","noConfirm","alertBody","deleteLoading","setDeleteLoading","setConfirmActive","confirmTimer","isMounted","toast","useToast","handleDelete","err","DeleteIcon","ToggleButton","selected","Render","label","disabledMessage","Tooltip","Toggle","value","onChange","option","MediaFeedContext","createContext","MediaFeedProvider","curr","useMediaFeed","ImageViewOverlay","src","setLoading","imageSize","setImageSize","ratio","onLoadStart","onLoad","naturalWidth","naturalHeight","Modal","ModalOverlay","ModalContent","CloseIcon","emptyPng","LoadingImage","loadingOverride","alt","noFullView","buttonFullView","imageProps","boxProps","imageLoading","setImageLoading","imageRef","viewing","setViewing","handleImageLoad","prevSrc","setPrevSrc","LoadingSwitch","setIsLoading","reportComplete","fetchedOn","buffer","Switch","springConfig","SWIPE_THRESHOLD","REFRESH_THRESHOLD","getContentScale","status","getContentX","contentSize","cWidth","getContentY","cHeight","FeedContentPane","id","collectionPath","onItemLoad","RenderItem","offsetY","enterStatus","useMobileFrame","scale","useSpring","baseY","useMotionValue","yVal","useTransform","y","docPath","item","useDocument","init","newScale","updatedX","DEFAULT_LIMIT","fetch","onUpdatePanels","limit","authRequired","ids","setIds","idIdx","setIdIdx","refreshing","setRefreshing","error","setError","itemLoading","setItemLoading","direction","setDirection","fetchingId","idsRef","updateCurr","updateNext","updatePrev","fetchIds","startBefore","startAfter","isPrefetch","data","firstId","secondId","newLastId","getNextId","currIdx","currIds","nextIds","nextIdx","fetchedNextId","getPrevId","prevIds","prevIdx","newFirstId","fetchedPrevIds","fetchedPrevId","goNext","newPrev","nextIdData","nextId","newNextId","goPrev","newNext","prevIdData","prevId","newPrevId","refresh","initFetchIds","canGoPrev","canGoNext","FillBackground","FileValueBackground","getBackgroundValue","filter","url","useObjectUrl","usedIndex","index","setIndex","url1","setUrl1","url2","setUrl2","UrlBackground","getBackgroundUrl","MediaFeedBackground","WINDOW","MediaFeedRefresh","canRefresh","progress","rotate","RepeatIcon","useUpdatePanels","setItems","updated","MediaFeed","defaultBackground","swipeDisabled","contentRef","containerRef","panels","setPanels","onNewData","backgroundRef","pointerDown","dragStart","onDragStart","dragEndListener","ev","maxY","minY","oY","onDragMove","oX","containerStyle","setCurr","handleItemLoad","p","panel","Condition","condition","useWatch","BaseCheckboxComponent","field","input","placeholder","useImperativeHandle","Checkbox","CheckboxBooleanComponent","BaseSwitchComponent","SwitchBooleanComponent","BaseBooleanComponent","BooleanComponent","useInputImperativeHandle","onFocus","onBlur","inputRef","GradientText","InputSlider","gradient","min","max","gradientCss","gradientToCssGradientProp","Slider","SliderTrack","SliderFilledTrack","SliderThumb","ColorComponentSlider","ColorComponent","meta","withAlpha","defaultValue","handleChange","key","val","withDefault","asHex","colorValueToHex","gradients","updatedRed","updatedGreen","updatedBlue","updatedAlpha","padZeros","n","digits","i","parseDate","date","DateInput","minDate","maxDate","optional","disabled","res","Popover","PopoverTrigger","getDateString","PopoverContent","PopoverArrow","DayPicker","TimeInput","Input","parseDateAndTime","timestamp","d","DateTimeInput","time","set","focusedElement","setFocused","type","dateString","usePlayer","create","MotionValue","useActiveMedia","media","playlist","PlayButton","opacity","buttonProps","mediaId","usePlaylist","api","playerIsPlaying","playerIsLoading","currentMedia","isPlaying","isFetching","generateAccept","accept","AudioFileView","hasUpload","noLabel","generateId","ImageFileView","loadingProp","loaded","setLoaded","shape","objectFit","placeholderSrc","placeholderOpacity","placeholderScale","useImageSize","optWidth","optHeight","extensionIcons","ExtensionIcon","extension","parts","FileViewBody","imageOptions","NoFileView","FileView","storagePath","dataUrl","missingFile","FileComponent","file","isImageField","imgOptions","MultipleSelectComponent","inEditable","renderOption","getOptionKey","colorMode","useColorMode","o","inputPaddingY","inputPaddingX","getInputPadding","paddingY","paddingX","fontSize","useInputStyle","NumberComponent","prefix","_","className","endsWith","setEndsWith","displayed","CurrencyInput","values","BaseCurrencyAmountComponent","CurrencyAmountComponent","OptionalTag","top","DefaultRenderOption","SelectComponent","customRender","PopoverBody","facebookLogo","instagramLogo","soundcloudLogo","twitterLogo","youtubeLogo","siteToIcon","SocialMediaSiteInput","site","handle","getHandle","displayedText","SocialMediaComponent","sites","_curr","rest","definePartsStyle","defineMultiStyleConfig","createMultiStyleConfigHelpers","switchAnatomy","switchBaseTheme","switchTheme","$arrowBg","cssVar","headingFont","bodyFont","baseTheme","extendTheme","TextAreaComponent","TextareaAutosize","TextComponent","isHidden","setIsHidden","ViewIcon","ViewOffIcon","Components","InputBase","touched","_type","showPlaceholder","styles","Component","pb","FieldComponentBase","control","getOnChange","fieldBlur","useField","Controller","_r","inputProps","FieldComponent","UploadProgress","uploads","asArr","TransitionGroup","upload","Progress","CancelButton","onBack","SubmitButton","onSubmitClick","submitting","FormErrorView","formError","useChempoForm","FormFooter","onSubmit","renderFooter","buttonText","valid","useFormState","FileFieldView","MultipleSelectFieldView","SelectFieldView","DefaultFieldView","formatted","format","formatField","FieldView","StandaloneInputBase","useStandaloneInput","StandaloneInput","Editable","initValue","onEditClose","onEditOpen","formattedValue","setValue","editHovered","handleEditOpen","handleEditClose","isEditing","setEditHovered","submit","parse","useEditable","alwaysEditing","editingBorderColor","ChempoFormProvider","EditIcon","CheckIcon","makeOnDragEndFunction","move","result","ListFieldInput","emptyData","isField","isListField","draggingBg","useFormContext","fields","append","remove","useFieldArray","onDragEnd","DragDropContext","Droppable","droppableProvided","draggingFromThisWith","formField","idx","Draggable","dragHandleProps","draggableProps","innerRef","isDragging","DragHandleIcon","FormElement","childName","childField","f","b","ListFieldView","itemField","FormElementView","updateField","useDataView","DataView","fieldName","setIsEditing","DataViewProvider","Form","FieldMapForm","onSubmitProp","useSubmitDataProps","useSubmitData","useFormSubmit","Stack","FieldForm","fieldMap","ListContainer","ListCell","rowIndex","columnIndex","items","onSelect","refetch","grid","numCols","itemIdx","NoItemsRow","list","debounced","search","useDataList","usePaginatedList","showLoading","pluralItemName","noItemsMessage","searchRequired","toPlural","getIsDynamicSize","itemHeight","nativeFilterMatchesPreset","nativeFilter","presetFilter","arrayOperators","nativeValues","filterMatchesPreset","getCellDims","gridWidth","rowHeight","columnWidth","getCellSize","preferredHeight","preferredWidth","numRows","colWidths","_i","_j","j","acc","itemWidth","rowHeights","colWidth","useGridDims","InfiniteScrollGridBody","totalCount","refetchItem","isItemLoaded","fetchMoreData","onSelectItem","mobileLayout","query","useFullSize","previewHeight","mobile","itemData","varRef","varGrid","infiniteLoaderRef","isDynamicHeight","itemKey","onRendered","overscanColumnStartIndex","overscanColumnStopIndex","overscanRowStartIndex","overscanRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","visibleRowStartIndex","visibleRowStopIndex","onItemsRendered","start","stop","overscanStart","overscanStop","InfiniteLoader","VariableSizeGrid","r","FixedSizeGrid","ListRow","InfiniteScrollListBody","getItemSize","VariableSizeList","FixedSizeList","BasePagedGridBody","pageIndex","variableRef","fixedRef","fixGrid","PagedGridBody","memo","BasePagedListBody","varList","fixList","PagedListBody","ListBody","infiniteScroll","gridLayout","DesktopModal","contentProps","MobileOverlay","MobileOverlayBackground","MobileModal","onContentMounted","closeOnOverlayClick","setIsMounted","contentMounted","setContentMounted","unmountTimeout","contentMountTimeout","DefaultModal","forceMobile","ListCreate","baseQuery","setIsOpen","db","handleSubmit","NextButton","ChevronRightIcon","PrevButton","ChevronLeftIcon","FooterLoadingAndError","progressBg","getGroupIndex","numPages","NAV_BUTTON_SIZE","MOBILE_NAV_BUTTON_SIZE","PageNavButton","isActive","PageNavGroup","indicators","collapsed","goToPage","PageNav","groups","nPages","g","groupIndex","group","FOOTER_TEXT_WIDTH","ListFooter","onResize","flexProps","noFooter","numFetched","hasMoreData","itemsText","pageText","hasPrev","hasNext","FilterButton","filters","GroupRender","toggleFilter","textColor","CustomRender","FilterGroup","groupFilters","PresetFilters","currentFilters","filterPresets","isFilterGroup","PopoverCloseButton","SortButton","preset","setSortFromPreset","sort","ArrowUpIcon","ArrowDownIcon","ListSortView","sortPresets","ListSearch","update","searchIcon","iconFilter","InputGroup","InputLeftElement","SearchIcon","HeaderButtons","setNewItemOpen","access","canCreate","getHasAccess","AddIcon","gridToggleOptions","GridViewToggle","toggleGridLayout","DataListHeader","searchPath","Header","hasSearch","ListItemView","selectedItemId","deselectItem","ItemView","contentOffset","setContentOffset","errorColor","prevItem","setPrevItem","x","ListContent","modals","footerProps","headerHeight","setHeaderHeight","footerHeight","setFooterHeight","handleHeaderResize","handleFooterResize","ItemViewComponent","createField","DataList","basePath","state","useDataListData","usePaginatedQuery","PaginatedListProvider","NumberTicker","spanRef","helperValue","intervalRef","DarkModeToggle","toggleColorMode","hoverColor","SunIcon","MoonIcon","AbsoluteDarkModeToggle","initializeScreen"],"mappings":"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","file":"index.js","sourcesContent":["import { Button, Flex, Portal, Text } from '@chakra-ui/react'\nimport { useAuth, useBackendBase } from '@chem-po/react'\n\ninterface SignInProps {\n // authProviders: Array<AuthProviderData<FC<{ noText?: boolean }>>>\n layout?: 'row' | 'column'\n}\n\nexport const SignIn = ({ layout = 'row' }: SignInProps) => {\n const {\n adapter: { auth },\n } = useBackendBase()\n\n const user = useAuth(s => s.user)\n return (\n <Flex gap={[1, 1, 2]} align=\"center\" flexFlow={['column', 'column', 'row']}>\n {user ? (\n <Button\n size=\"sm\"\n onClick={() => {\n auth.logout()\n }}>\n SIGN OUT\n </Button>\n ) : (\n <>\n <Text whiteSpace=\"nowrap\" textAlign=\"center\" opacity={0.8} fontWeight={600} fontSize=\"sm\">\n SIGN IN\n </Text>\n <Flex flexFlow={layout} gap={2} w=\"100%\"></Flex>\n </>\n )}\n </Flex>\n )\n}\n\nexport const AbsoluteLogin = (props: SignInProps) => (\n <Portal>\n <Flex position=\"fixed\" bottom={4} left={4}>\n <SignIn {...props} />\n </Flex>\n </Portal>\n)\n","import { Center, CenterProps } from '@chakra-ui/react'\n\nexport const CollapseHorizontal = ({\n width,\n children,\n active,\n duration = 400,\n ...props\n}: CenterProps & { width: number; active: boolean; duration?: number }) => (\n <Center\n width={`${active ? width : 0}px`}\n opacity={active ? 1 : 0}\n transition={`all ${duration}ms ease-in-out`}\n overflow=\"hidden\"\n {...props}>\n {children}\n </Center>\n)\n","import { Flex, FlexProps } from '@chakra-ui/react'\nimport { ForwardedRef, forwardRef } from 'react'\n\nconst ContentBoxBase = (props: FlexProps, ref: ForwardedRef<HTMLDivElement>) => {\n return (\n <Flex\n ref={ref}\n bg=\"background.100\"\n p={3}\n borderRadius={6}\n boxShadow=\"1px 1px 4px #00000066\"\n {...props}\n />\n )\n}\n\nexport const ContentBox = forwardRef<HTMLDivElement, FlexProps>(ContentBoxBase)\n","import { useColorModeValue } from '@chakra-ui/react'\n\n// TODO: these need to be updated to use chakra theme\nexport const useBorderColor = () => useColorModeValue('#00000033', '#ffffff33')\n","import { ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons'\nimport { IconButton } from '@chakra-ui/react'\nimport { FC, MouseEvent } from 'react'\n\nexport const ViewButton: FC<{\n onClick: (e: MouseEvent) => void\n isOpen: boolean\n viewText?: string\n hideText?: string\n color?: string\n}> = ({ viewText = 'View', hideText = 'Hide', onClick, isOpen, color }) => (\n <IconButton\n icon={\n isOpen ? <ChevronUpIcon width={5} height={5} /> : <ChevronDownIcon width={5} height={5} />\n }\n aria-label={isOpen ? hideText : viewText}\n variant=\"ghost\"\n p=\"2px\"\n ml=\"auto\"\n size=\"xs\"\n fontSize=\"xs\"\n borderRadius=\"full\"\n _hover={{ bg: 'blackAlpha.200' }}\n color={color ?? '#777'}\n onClick={e => {\n e.stopPropagation()\n onClick(e)\n }}\n />\n)\n","import {\n Box,\n Collapse,\n Flex,\n HStack,\n StackProps,\n Text,\n useDisclosure,\n VStack,\n} from '@chakra-ui/react'\nimport React, { FC, PropsWithChildren, useCallback } from 'react'\nimport { useBorderColor } from '../../hooks/ui/useBorderColor'\nimport { ViewButton } from '../button/ViewButton'\n\nexport const Expandable = ({\n header,\n children,\n initExpanded = false,\n nested,\n alwaysExpanded,\n headerProps,\n iconColor,\n footer,\n isOpen: isOpenProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...stackProps\n}: PropsWithChildren<\n StackProps & {\n header: string | FC<{ isOpen: boolean; onClose: () => void }>\n footer?: FC<{ isOpen: boolean; onClose: () => void }>\n headerProps?: StackProps\n nested?: boolean\n alwaysExpanded?: boolean\n initExpanded?: boolean\n isOpen?: boolean\n onClose?: () => void\n iconColor?: string\n onOpen?: () => void\n }\n>) => {\n const { isOpen, onClose, onOpen } = useDisclosure({\n defaultIsOpen: alwaysExpanded ?? initExpanded,\n isOpen: isOpenProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n\n const handleOpenClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n if (alwaysExpanded) return\n if (isOpen) {\n onClose()\n return\n }\n onOpen()\n },\n [alwaysExpanded, onOpen, onClose, isOpen],\n )\n const borderColor = useBorderColor()\n return (\n <VStack spacing={0} borderColor={borderColor} w=\"100%\" {...stackProps}>\n <HStack\n borderBottom={isOpen ? `1px solid ${borderColor}` : undefined}\n px={2}\n spacing={0}\n w=\"100%\"\n {...headerProps}>\n <Flex\n onClick={handleOpenClick}\n cursor=\"pointer\"\n aria-label=\"expand/hide\"\n align=\"center\"\n flex={1}>\n {typeof header === 'string' ? (\n <Text fontWeight={600} color=\"gray.500\" flex={1}>\n {header}\n </Text>\n ) : (\n header({ isOpen, onClose })\n )}\n </Flex>\n {alwaysExpanded ? null : (\n <ViewButton color={iconColor} onClick={handleOpenClick} isOpen={isOpen} />\n )}\n </HStack>\n <Box w=\"100%\" borderLeft={nested ? '4px solid #00000033' : undefined}>\n <Collapse unmountOnExit style={{ width: '100%' }} in={isOpen}>\n {children as any}\n </Collapse>\n </Box>\n {footer ? footer({ isOpen, onClose }) : null}\n </VStack>\n )\n}\n","import { Box, BoxProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nexport const ExpandOnMount: FC<\n BoxProps & { in?: boolean; animateOpacity?: boolean; duration?: number; onExited?: () => void }\n> = ({ animateOpacity, duration = 300, children, in: isIn = true, onExited, ...props }) => {\n const mounted = useMounted()\n\n const [bodyHeight, setBodyHeight] = useState<number>(0)\n const bodyRef = useRef<HTMLDivElement | null>(null)\n\n const [isAnimating, setIsAnimating] = useState(false)\n const expanded = useMemo(() => mounted && isIn, [isIn, mounted])\n const height = useMemo(() => (expanded ? bodyHeight : 0), [bodyHeight, expanded])\n const handleBodyResize = useCallback((e: ResizeObserverEntry) => {\n setBodyHeight(e.target.scrollHeight)\n }, [])\n\n useResizeObserver(bodyRef, handleBodyResize)\n\n const animatingTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n useEffect(() => {\n if (animatingTimeout.current) {\n clearTimeout(animatingTimeout.current)\n animatingTimeout.current = null\n }\n setIsAnimating(true)\n animatingTimeout.current = setTimeout(() => {\n setIsAnimating(false)\n if (onExited && !expanded) onExited()\n }, duration)\n }, [expanded, duration, onExited])\n const transition = useMemo(() => {\n if (!isAnimating && expanded) return 'height 0ms'\n if (!animateOpacity) return `height ${duration}ms`\n return `height ${duration}ms, opacity ${duration}ms ease ${expanded ? duration : 0}ms`\n }, [animateOpacity, duration, expanded, isAnimating])\n\n return (\n <Box overflow=\"hidden\" w=\"100%\" transition={transition} height={`${height}px`} {...props}>\n <Box ref={bodyRef} w=\"100%\" {...props}>\n {children}\n </Box>\n </Box>\n )\n}\n","import { Box, BoxProps } from '@chakra-ui/react'\nimport { FullSizeContext } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { FC, useCallback, useMemo, useRef, useState } from 'react'\n\nexport const FullSizeContainer = ({\n children,\n ...props\n}: Omit<BoxProps, 'children'> & { children: FC<{ width: number; height: number }> }) => {\n const [width, setWidth] = useState(0)\n const [height, setHeight] = useState(0)\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback((entry: ResizeObserverEntry) => {\n // const rect = entry.target.getBoundingClientRect()\n setWidth(entry.target.scrollWidth)\n setHeight(entry.target.scrollHeight)\n }, [])\n\n useResizeObserver(ref, handleResize)\n\n return (\n <Box ref={ref} {...props} width=\"100%\" height=\"100%\">\n {children({ width, height })}\n </Box>\n )\n}\n\n// same as FullSizeContainer, but provides the width and height in a context instead of a render prop\nexport const FullSizeProvider = ({ children, ...props }: BoxProps) => {\n const [width, setWidth] = useState(0)\n const [height, setHeight] = useState(0)\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback((entry: ResizeObserverEntry) => {\n // const rect = entry.target.getBoundingClientRect()\n setWidth(entry.target.scrollWidth)\n setHeight(entry.target.scrollHeight)\n }, [])\n\n useResizeObserver(ref, handleResize)\n\n const contextValue = useMemo(() => ({ width, height }), [width, height])\n\n return (\n <Box ref={ref} {...props} width=\"100%\" height=\"100%\">\n <FullSizeContext.Provider value={contextValue}>{children}</FullSizeContext.Provider>\n </Box>\n )\n}\n","import React, { PropsWithChildren, useContext } from 'react'\n\nconst ForceMobileContext = React.createContext(false)\nexport const ForceMobile = ({ children }: PropsWithChildren) => (\n <ForceMobileContext.Provider value={true}>{children}</ForceMobileContext.Provider>\n)\nexport const useForceMobile = () => useContext(ForceMobileContext)\n","import { Button, Flex, Image, useColorModeValue } from '@chakra-ui/react'\nimport { palette } from '@chem-po/core'\nimport { useViews, View } from '@chem-po/react'\nimport { PropsWithChildren, useMemo } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\nexport const NAV_BAR_HEIGHT = 50\n\nconst NavBarLink = ({ view, absolute }: { view: View; absolute: boolean }) => {\n const { path: paths, name, icon, iconScale } = view\n const path = Array.isArray(paths) ? paths[0] : paths\n\n // const hoverBg = useColorModeValue('#00000033', '#f7f7f777')\n // const textColor = useColorModeValue('#777', '#cdcdcd')\n const iconBrightness = useColorModeValue(1, 1.8)\n const usedBrightness = useMemo(\n () => (absolute ? 2.4 : iconBrightness),\n [absolute, iconBrightness],\n )\n const { pathname } = useLocation()\n const hoverBg = useColorModeValue('#ffffff33', '#00000033')\n const body = (\n <Button\n pointerEvents={pathname === path ? 'none' : 'auto'}\n opacity={pathname === path ? 1 : 0.7}\n width=\"100%\"\n height=\"100%\"\n borderRadius={0}\n flexFlow=\"column\"\n _hover={{\n bg: hoverBg,\n }}\n variant=\"unstyled\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\">\n <Image\n height={`${34 * (iconScale ?? 1)}px`}\n filter={`brightness(${usedBrightness})${\n absolute ? ' drop-shadow(1px 1px 3px #00000099 )' : ''\n }`}\n src={icon}\n alt={name}\n />\n {/* <Text color={textColor} lineHeight={1} fontWeight={400} fontSize='xs'>\n {name}\n </Text> */}\n </Button>\n )\n return pathname === path ? (\n <Flex key={path} flex={1} h=\"100%\" justify=\"center\">\n {body}\n </Flex>\n ) : (\n <Link\n key={path}\n style={{\n flex: 1,\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n }}\n to={path}>\n {body}\n </Link>\n )\n}\n\nexport const NavBar = ({\n selectedView,\n children,\n}: PropsWithChildren<{ selectedView?: View | null }>) => {\n const bg = useColorModeValue('#dedede', palette.gray.dark)\n const defaultBorderColor = useColorModeValue('#00000022', '#ffffff33')\n const views = useViews()\n const menuViews = useMemo(() => views.filter(v => !!v.view.icon), [views])\n const isAbsolute = useMemo(() => !!selectedView?.navBar?.absolute, [selectedView])\n const background = useMemo(() => selectedView?.navBar?.backgroundColor ?? bg, [bg, selectedView])\n const borderColor = useMemo(() => {\n if (selectedView?.navBar?.borderColor) return !!selectedView?.navBar?.borderColor\n return isAbsolute ? '#ffffff33' : defaultBorderColor\n }, [defaultBorderColor, selectedView, isAbsolute])\n return (\n <Flex\n position=\"absolute\"\n bottom={0}\n left={0}\n bg={background}\n w=\"100%\"\n transition=\"all 500ms\"\n h={`${NAV_BAR_HEIGHT}px`}\n borderTop={`1px solid ${borderColor}`}>\n <Flex position=\"relative\" w=\"100%\" justify=\"space-around\" align=\"center\">\n {menuViews.map(({ view }) => (\n <NavBarLink absolute={isAbsolute} key={view.name} view={view} />\n ))}\n {children}\n </Flex>\n </Flex>\n )\n}\n","import { Flex, Text, useColorModeValue } from '@chakra-ui/react'\nimport { ContentBox } from '../box/ContentBox'\n\nexport const ErrorView = ({ message }: { message?: string }) => {\n const color = useColorModeValue('gray.600', 'gray.100')\n return (\n <Flex pt={4}>\n <ContentBox>\n <Text color={color}>{message ?? 'Sorry, something went wrong.'}</Text>\n </ContentBox>\n </Flex>\n )\n}\n","import {\n CircularProgressProps,\n CircularProgress as Orig,\n useColorModeValue,\n} from '@chakra-ui/react'\n\nexport const CircularProgress = (props: CircularProgressProps) => {\n const color = useColorModeValue('gray.400', 'gray.400')\n const bg = useColorModeValue('gray.300', 'gray.600')\n return <Orig isIndeterminate trackColor={bg} color={color} {...props} />\n}\n","import { Center, CenterProps, HStack, StackProps, Text, useColorModeValue } from '@chakra-ui/react'\nimport { ThemedAsset, useAppAssets } from '@chem-po/react'\nimport { LottieOptions, useLottie } from 'lottie-react'\nimport { useEffect, useMemo } from 'react'\nimport { ContentBox } from '../box/ContentBox'\n// import loadingAnimation from './circles_loading.json'\n// import loadingAnimationLight from './circles_loading_light.json'\n\nexport const LottieLoadingLogo = ({\n size = 30,\n isLoading,\n speed = 2,\n inFeed,\n asset,\n}: {\n size?: number | string\n color?: string\n isLoading: boolean\n asset: ThemedAsset\n inFeed?: boolean\n speed?: number\n}) => {\n const _animationData = useColorModeValue(asset.default, asset.dark ?? asset.default)\n const animationData = useMemo(\n () => (inFeed ? (asset.dark ?? asset.default) : _animationData),\n [_animationData, asset, inFeed],\n )\n const options = useMemo<LottieOptions>(\n () => ({\n // animationData: getLoaderJson(propColor || defaultColor),\n animationData,\n loop: true,\n }),\n [animationData],\n )\n const style = useMemo(\n () => ({\n width: size,\n height: size,\n opacity: isLoading ? 0.85 : 0,\n transition: 'opacity 300ms ease-in-out',\n }),\n [size, isLoading],\n )\n const { View, pause, play, setSpeed } = useLottie(options, style)\n useEffect(() => {\n setSpeed(speed)\n }, [setSpeed, speed])\n useEffect(() => {\n if (isLoading) {\n play()\n } else pause()\n }, [isLoading, play, pause])\n\n return <>{View}</>\n}\n\nconst SVGLoadingLogo = ({\n size = 30,\n isLoading,\n asset,\n inFeed,\n}: {\n size?: number | string\n isLoading: boolean\n asset: ThemedAsset\n inFeed?: boolean\n}) => {\n const _svg = useColorModeValue(asset.default, asset.dark ?? asset.default)\n const svg = useMemo(() => (inFeed ? (asset.dark ?? asset.default) : _svg), [_svg, asset, inFeed])\n const style = useMemo(\n () => ({\n width: size,\n height: size,\n opacity: isLoading ? 0.85 : 0,\n transition: 'opacity 300ms ease-in-out',\n }),\n [size, isLoading],\n )\n return <img src={svg} style={style} alt=\"loading\" />\n}\n\nconst LoadingBody = ({ isLoading, size }: { isLoading: boolean; size?: number | string }) => {\n const { loading } = useAppAssets()\n if (loading.lottieJson)\n return <LottieLoadingLogo isLoading={isLoading} size={size} asset={loading.lottieJson} />\n if (loading.svg) return <SVGLoadingLogo isLoading={isLoading} size={size} asset={loading.svg} />\n return null\n}\n\nexport const LoadingLogo = ({\n isLoading,\n size,\n inFeed,\n}: {\n isLoading: boolean\n size?: number | string\n inFeed?: boolean\n}) => {\n const { loading } = useAppAssets()\n if (loading.lottieJson)\n return (\n <LottieLoadingLogo\n inFeed={inFeed}\n isLoading={isLoading}\n size={size}\n asset={loading.lottieJson}\n />\n )\n if (loading.svg)\n return <SVGLoadingLogo inFeed={inFeed} isLoading={isLoading} size={size} asset={loading.svg} />\n return <Text color=\"red\">ERROR: No loading animation found</Text>\n}\n\nexport const Loading = ({\n text = 'Loading...',\n inBox,\n stackProps,\n}: {\n text?: string\n inBox?: boolean\n stackProps?: StackProps\n}) => {\n const body = (\n <HStack p={2} {...stackProps}>\n <LoadingBody isLoading />\n <Text opacity={0.8} fontSize=\"sm\">\n {text}\n </Text>\n </HStack>\n )\n return inBox ? <ContentBox>{body}</ContentBox> : body\n}\n\nexport const LoadingOverlay = ({\n isLoading,\n text,\n inFeed,\n ...props\n}: { isLoading: boolean; text?: string; inFeed?: boolean } & CenterProps) => {\n const bg = useColorModeValue('#ffffffaa', '#00000088')\n return (\n <Center\n pos={'absolute'}\n top={0}\n left={0}\n right={0}\n bottom={0}\n bg={bg}\n pointerEvents={isLoading ? 'auto' : 'none'}\n opacity={isLoading ? 1 : 0}\n {...props}>\n {!text ? (\n <LoadingLogo inFeed={inFeed} size={100} isLoading={isLoading} />\n ) : (\n <Loading text={text} />\n )}\n </Center>\n )\n}\n","import { Center, HStack, Text, VStack } from '@chakra-ui/react'\nimport { useAuth } from '@chem-po/react'\nimport React, { useEffect, useRef } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { ContentBox } from '../box/ContentBox'\nimport { CircularProgress } from '../loading/CircularProgress'\nimport { Loading } from '../loading/Loading'\n\nexport const RedirectView: React.FC<{ loading?: boolean }> = ({ loading }) => {\n const timer = useRef<any>()\n const authLoading = useAuth(s => s.loading)\n\n const navigate = useNavigate()\n useEffect(() => {\n if (!loading && !authLoading) {\n timer.current = setTimeout(() => {\n navigate('/')\n }, 1500)\n }\n return () => {\n if (timer.current) clearTimeout(timer.current)\n }\n }, [loading, navigate, authLoading])\n\n return !loading && !authLoading ? (\n <Center minH=\"100%\" w=\"100%\">\n <ContentBox maxW=\"500px\">\n <HStack spacing={3}>\n <CircularProgress size={6} />\n <VStack spacing={0} align=\"flex-start\">\n <Text>404</Text>\n <Text fontSize=\"sm\" opacity={0.7}>\n Page not found - redirecting to Home...\n </Text>\n </VStack>\n </HStack>\n </ContentBox>\n </Center>\n ) : (\n <Loading />\n )\n}\n","import { Box, Center, Flex, useColorModeValue } from '@chakra-ui/react'\nimport { cssGradients } from '@chem-po/core'\nimport { MobileFrameProvider, useScreen, useViews, View, ViewsProvider } from '@chem-po/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { PropsWithChildren, ReactNode, useMemo, useRef } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { matchRoutes, useLocation, useOutlet } from 'react-router-dom'\nimport { CSSTransition, SwitchTransition } from 'react-transition-group'\nimport { ForceMobile } from '../../modal/ForceMobile'\nimport { NAV_BAR_HEIGHT, NavBar } from '../../nav/NavBar'\nimport { ErrorView } from '../../view/ErrorView'\nimport { RedirectView } from '../../view/RedirectView'\nimport './styles.css'\n\nconst IPHONE_12_WIDTH = 390\nconst IPHONE_12_HEIGHT = 844\nconst IPHONE_12_ASPECT = IPHONE_12_WIDTH / IPHONE_12_HEIGHT\n\nconst MobileFrameBody = ({\n children,\n navBarChildren,\n}: PropsWithChildren<{ navBarChildren?: ReactNode }>) => {\n const { isMobile, height: screenHeight, width: screenWidth } = useScreen()\n\n // const contentHeight = useMemo(() => (isMobile ? screenHeight : IPHONE_12_HEIGHT), [isMobile, screenHeight])\n // const contentWidth = useMemo(() => (isMobile ? screenWidth : IPHONE_12_WIDTH), [isMobile, screenWidth])\n // should be constrained to the screen size\n const { contentHeight, contentWidth } = useMemo(() => {\n let h = isMobile ? screenHeight : IPHONE_12_HEIGHT\n let w = isMobile ? screenWidth : IPHONE_12_WIDTH\n if (isMobile) return { contentHeight: h, contentWidth: w }\n const cappedHeight = Math.floor(screenHeight * 0.9)\n const cappedWidth = Math.floor(screenWidth * 0.9)\n if (h > cappedHeight) {\n w = Math.floor(cappedHeight * IPHONE_12_ASPECT)\n h = cappedHeight\n } else if (w > cappedWidth) {\n h = Math.floor(cappedWidth / IPHONE_12_ASPECT)\n w = cappedWidth\n }\n return { contentHeight: h, contentWidth: w }\n }, [isMobile, screenHeight, screenWidth])\n\n const outerBg = useColorModeValue(cssGradients.accentGray, cssGradients.darkGray)\n const location = useLocation()\n const currentOutlet = useOutlet()\n const views = useViews()\n const view = useMemo(() => views.find(v => !!matchRoutes(v.routes, location)), [views, location])\n const viewKey = useMemo(() => {\n if (!view) return '404'\n return typeof view.view.path === 'string' ? view.view.path : view.view.path[0]\n }, [view])\n const overlayRef = useRef<HTMLDivElement>(null)\n const nodeRef = useRef<HTMLDivElement>(null)\n const absoluteNavBar = useMemo(() => !!view?.view?.navBar?.absolute, [view])\n const bodyHeight = useMemo(\n () => contentHeight - (absoluteNavBar ? 0 : NAV_BAR_HEIGHT),\n [contentHeight, absoluteNavBar],\n )\n const contextData = useMemo(\n () => ({\n overlayRef,\n height: contentHeight,\n width: contentWidth,\n absoluteNavBar,\n bodyHeight,\n }),\n [overlayRef, contentHeight, contentWidth, absoluteNavBar, bodyHeight],\n )\n return (\n <ForceMobile>\n <MobileFrameProvider value={contextData}>\n <Center position=\"relative\" bg={outerBg} w=\"100%\" height=\"100%\">\n <Flex\n bg=\"background.100\"\n // ref={frameRef}\n position=\"relative\"\n style={{ height: `${contentHeight}px`, width: `${contentWidth}px` }}\n boxShadow={isMobile ? 'none' : '1px 1px 4px rgba(0,0,0,0.4)'}\n borderRadius={isMobile ? 0 : 10}\n overflow=\"hidden\"\n direction=\"column\"\n maxH={contentHeight}>\n <AnimatePresence>\n <SwitchTransition>\n <CSSTransition\n key={viewKey}\n nodeRef={nodeRef}\n unmountOnExit\n classNames=\"page\"\n timeout={300}>\n {() => (\n <motion.div\n style={{\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n }}\n animate={{\n height: bodyHeight,\n opacity: 1,\n dur: 0.5,\n scale: 1,\n }}\n initial={{ opacity: 0, scale: 0.9, height: bodyHeight }}\n exit={{ opacity: 0 }}>\n <ErrorBoundary FallbackComponent={() => <ErrorView />}>\n {view ? currentOutlet : <RedirectView />}\n </ErrorBoundary>\n {children ? (\n <Box\n height=\"100%\"\n w=\"100%\"\n position=\"absolute\"\n top={0}\n left={0}\n pointerEvents=\"none\">\n {children}\n </Box>\n ) : null}\n </motion.div>\n )}\n </CSSTransition>\n </SwitchTransition>\n </AnimatePresence>\n <NavBar selectedView={view?.view}>{navBarChildren}</NavBar>\n <Flex pos=\"absolute\" pointerEvents=\"none\" bottom={0} w=\"100%\" h=\"100%\">\n <Flex ref={overlayRef} w=\"100%\" h=\"100%\" pos=\"relative\" />\n </Flex>\n </Flex>\n </Center>\n </MobileFrameProvider>\n </ForceMobile>\n )\n}\n\nexport const MobileFrame = ({\n children,\n navBarChildren,\n views,\n}: PropsWithChildren<{ views: View[]; navBarChildren?: ReactNode }>) => (\n <ViewsProvider views={views}>\n <MobileFrameBody navBarChildren={navBarChildren}>{children}</MobileFrameBody>\n </ViewsProvider>\n)\n","import { DeleteIcon } from '@chakra-ui/icons'\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogContent,\n AlertDialogOverlay,\n Button,\n Flex,\n HStack,\n IconButton,\n IconButtonProps,\n Text,\n useToast,\n VStack,\n} from '@chakra-ui/react'\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\nconst defaultAlertBodyText = \"Are you sure? You can't undo this action afterwards.\"\nexport const DeleteConfirmAlert = ({\n confirmActive,\n onCancel,\n onConfirm,\n body = defaultAlertBodyText,\n actionName = 'Delete',\n actionLoading,\n itemName,\n}: {\n confirmActive: boolean\n onCancel: () => void\n onConfirm: () => void\n body?: string | ReactNode\n actionLoading?: boolean\n actionName?: string\n itemName: string\n}) => {\n const cancelRef = useRef<HTMLButtonElement>(null)\n return (\n <AlertDialog\n isCentered\n isOpen={confirmActive}\n leastDestructiveRef={cancelRef}\n onClose={() => onCancel()}>\n <AlertDialogOverlay>\n <AlertDialogContent gap={0}>\n <AlertDialogBody>\n <VStack align=\"flex-start\" py={1}>\n <Text fontSize=\"lg\" fontWeight={500}>\n {actionName} {itemName}?\n </Text>\n {typeof body === 'string' ? <Text fontSize=\"md\">{body}</Text> : body}\n <HStack justify=\"flex-end\" w=\"100%\">\n <Button size=\"sm\" ref={cancelRef} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n size=\"sm\"\n isLoading={actionLoading}\n color=\"white\"\n textShadow=\"1px 1px 3px #00000077\"\n bg=\"red.500\"\n _dark={{\n bg: 'red.500',\n }}\n onClick={onConfirm}>\n {actionName}\n </Button>\n </HStack>\n </VStack>\n </AlertDialogBody>\n </AlertDialogContent>\n </AlertDialogOverlay>\n </AlertDialog>\n )\n}\n\nexport const DeleteButton: React.FC<\n Partial<IconButtonProps> & {\n onDelete: (() => Promise<any>) | (() => void)\n itemName: string\n actionName?: string\n noConfirm?: boolean\n text?: string\n alertBody?: string | ReactNode\n }\n> = ({ onDelete, itemName, noConfirm, alertBody, text, actionName = 'Delete', ...props }) => {\n const [deleteLoading, setDeleteLoading] = useState(false)\n const [confirmActive, setConfirmActive] = useState(false)\n const confirmTimer = useRef<any>()\n const isMounted = useRef(true)\n useEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const toast = useToast()\n const handleDelete = useCallback(async () => {\n if (confirmTimer.current) clearTimeout(confirmTimer.current)\n setConfirmActive(false)\n if (onDelete) {\n setDeleteLoading(true)\n try {\n await onDelete()\n } catch (err: any) {\n console.error(err)\n toast({\n title: 'Error',\n description: err.message ?? 'An error occurred',\n status: 'error',\n duration: 5000,\n isClosable: true,\n })\n }\n if (isMounted.current) {\n setDeleteLoading(false)\n }\n } else {\n console.error('No delete function')\n }\n }, [onDelete, toast])\n\n return (\n <>\n {text ? (\n <Button\n variant=\"ghost\"\n size={props.size ?? 'md'}\n aria-label=\"delete\"\n _hover={{ color: 'red.600', bg: 'red.200' }}\n color=\"red.600\"\n onClick={e => {\n e.stopPropagation()\n if (noConfirm) handleDelete()\n else setConfirmActive(true)\n }}\n isLoading={deleteLoading}\n {...props}>\n <Flex align=\"center\" gap={1}>\n <DeleteIcon />\n <Text>{text}</Text>\n </Flex>\n </Button>\n ) : (\n <IconButton\n variant=\"ghost\"\n size={props.size ?? 'sm'}\n aria-label={actionName}\n _hover={{ color: 'red.600', bg: 'red.200' }}\n color=\"red.500\"\n borderRadius=\"full\"\n icon={<DeleteIcon />}\n onClick={e => {\n e.stopPropagation()\n if (noConfirm) handleDelete()\n else setConfirmActive(true)\n }}\n isLoading={deleteLoading}\n {...props}\n />\n )}\n {noConfirm ? null : (\n <DeleteConfirmAlert\n confirmActive={confirmActive}\n onCancel={() => setConfirmActive(false)}\n actionLoading={deleteLoading}\n onConfirm={() => {\n handleDelete()\n }}\n actionName={actionName}\n body={alertBody}\n itemName={itemName}\n />\n )}\n </>\n )\n}\n","import { Box, Flex, IconButton, IconButtonProps, Tooltip } from '@chakra-ui/react'\nimport { JSX } from 'react'\nimport { useBorderColor } from '../../hooks'\n\nexport interface ToggleOption<Option extends string = string> {\n id: Option\n label: string\n disabledMessage?: string\n Render: (selected: boolean) => JSX.Element\n}\nexport interface ToggleProps<Option extends string> {\n options: ToggleOption<Option>[]\n value: Option\n size?: number\n onChange: (value: Option) => Promise<void> | void\n}\n\nconst ToggleButton = <Option extends string>({\n selected,\n option: { Render, label, disabledMessage },\n size,\n ...props\n}: Omit<IconButtonProps, 'children' | 'aria-label' | 'size'> & {\n option: ToggleOption<Option>\n size: number\n selected: boolean\n}) => {\n const body = (\n <Box>\n <IconButton\n variant=\"unstyled\"\n w={`${size}px`}\n h={`${size}px`}\n minW={0}\n borderRadius={0}\n outline=\"none\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={!disabledMessage ? 1 : 0.6}\n filter={!disabledMessage ? 'none' : 'grayscale(1)'}\n bg={selected ? 'whiteAlpha.500' : 'blackAlpha.100'}\n _dark={{ bg: selected ? 'blackAlpha.500' : 'whiteAlpha.200' }}\n icon={Render(selected)}\n pointerEvents={selected ? 'none' : 'auto'}\n aria-label={label}\n {...props}\n />\n </Box>\n )\n\n return (\n <Tooltip label={disabledMessage ?? label} aria-label={label}>\n {body}\n </Tooltip>\n )\n}\n\nexport const Toggle = <Option extends string>({\n value,\n onChange,\n size = 28,\n options,\n}: ToggleProps<Option>) => {\n const borderColor = useBorderColor()\n return (\n <Flex\n bg=\"whiteAlpha.300\"\n _dark={{ bg: 'blackAlpha.300' }}\n border={`1px solid ${borderColor}`}\n borderRadius={3}>\n {options.map((option, i) => (\n <ToggleButton<Option>\n key={option.id}\n onClick={() => {\n onChange(option.id)\n }}\n option={option}\n size={size}\n borderLeftRadius={i ? 0 : 3}\n borderRightRadius={i === options.length - 1 ? 3 : 0}\n selected={option.id === value}\n borderLeft={i ? `1px solid ${borderColor}` : 'none'}\n />\n ))}\n </Flex>\n )\n}\n","import { AnyObject, WithId } from '@chem-po/core'\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react'\n\ninterface MediaFeedContextValue<T extends AnyObject = AnyObject> {\n curr: WithId<T> | null\n}\nexport const MediaFeedContext = createContext<MediaFeedContextValue<any>>(\n {} as MediaFeedContextValue<any>,\n)\n\nexport const MediaFeedProvider = <T extends AnyObject = AnyObject>({\n curr,\n children,\n}: PropsWithChildren<{ curr: WithId<T> | null }>) => {\n const contextData = useMemo(() => ({ curr }), [curr])\n return <MediaFeedContext.Provider value={contextData}>{children}</MediaFeedContext.Provider>\n}\nexport const useMediaFeed = <T extends AnyObject = AnyObject>() =>\n useContext(MediaFeedContext) as MediaFeedContextValue<T>\n","import { CloseIcon } from '@chakra-ui/icons'\nimport { Center, IconButton, Image, Modal, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport { useScreen } from '@chem-po/react'\nimport { SyntheticEvent, useCallback, useMemo, useState } from 'react'\nimport { LoadingLogo } from '../loading/Loading'\n\nexport const ImageViewOverlay = ({ src, onClose }: { src: string; onClose: () => void }) => {\n const [loading, setLoading] = useState(true)\n const screenWidth = useScreen(s => s.width)\n const screenHeight = useScreen(s => s.height)\n const [imageSize, setImageSize] = useState({ width: screenWidth / 2, height: screenHeight / 2 })\n\n const { height, width } = useMemo(() => {\n if (loading) return imageSize\n const ratio = imageSize.width / imageSize.height\n let h = Math.min(imageSize.height, screenHeight * 0.9)\n let w = h * ratio\n if (w > screenWidth * 0.9) {\n w = Math.min(imageSize.width, screenWidth * 0.9)\n h = w / ratio\n }\n return { height: h, width: w }\n }, [screenHeight, screenWidth, imageSize, loading])\n\n const onLoadStart = useCallback(() => setLoading(true), [])\n const onLoad = useCallback((e: SyntheticEvent<HTMLImageElement>) => {\n const { naturalWidth, naturalHeight } = e.currentTarget\n setImageSize({ width: naturalWidth, height: naturalHeight })\n setLoading(false)\n }, [])\n return (\n <Modal size=\"full\" isOpen onClose={onClose}>\n <ModalOverlay bg=\"blackAlpha.700\" />\n <ModalContent\n style={{ background: 'transparent' }}\n pointerEvents=\"none\"\n width=\"100%\"\n height=\"100%\">\n <Center\n pointerEvents=\"none\"\n position=\"fixed\"\n p={[4, 6, 8]}\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={4}>\n <Center\n opacity={loading ? 0 : 1}\n transition=\"all 500ms\"\n overflow=\"hidden\"\n w={`${width}px`}\n height={`${height}px`}>\n <Image\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n transition=\"opacity 300ms\"\n height=\"100%\"\n objectFit=\"contain\"\n borderRadius={4}\n src={src}\n />\n </Center>\n <IconButton\n borderRadius=\"full\"\n position=\"absolute\"\n top={4}\n right={4}\n aria-label=\"close\"\n icon={<CloseIcon />}\n onClick={onClose}\n />\n </Center>\n <Center\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n pointerEvents=\"none\"\n opacity={loading ? 1 : 0}\n transition=\"opacity 300ms\">\n <LoadingLogo isLoading={loading} size={70} />\n </Center>\n </ModalContent>\n </Modal>\n )\n}\n","import { BoxProps, Center, IconButton, Image, ImageProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport { SyntheticEvent, useCallback, useEffect, useRef, useState } from 'react'\nimport { ImageViewOverlay } from '../overlay/ImageViewOverlay'\nimport { LoadingLogo } from './Loading'\n\nexport interface LoadingImageProps {\n src?: string | null\n loadingOverride?: boolean\n onLoad?: ImageProps['onLoad']\n alt?: string\n noFullView?: boolean\n buttonFullView?: boolean\n imageProps?: Omit<ImageProps, 'onLoad'>\n}\n\nconst emptyPng =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkAAIAAAoAAv/lxKUAAAAASUVORK5CYII='\nexport const LoadingImage = ({\n src,\n loadingOverride,\n alt,\n onLoad,\n width,\n height,\n noFullView,\n buttonFullView,\n imageProps,\n ...boxProps\n}: LoadingImageProps & Omit<BoxProps, 'onLoad'>) => {\n const [imageLoading, setImageLoading] = useState(!!src)\n const imageRef = useRef<HTMLImageElement>(null)\n\n const [viewing, setViewing] = useState(false)\n const mounted = useMounted(100)\n useEffect(() => {\n if (imageRef.current?.complete) {\n setImageLoading(true)\n }\n }, [imageRef])\n\n const handleImageLoad = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setImageLoading(false)\n if (onLoad) onLoad(e)\n },\n [onLoad],\n )\n\n const [prevSrc, setPrevSrc] = useState(src)\n useEffect(() => {\n if (src) setPrevSrc(src)\n }, [src, prevSrc])\n\n const loading = imageLoading || !!loadingOverride\n return (\n <Center\n opacity={mounted ? 1 : 0}\n transition=\"opacity 333ms\"\n w={width ?? '100%'}\n h={height ?? '100%'}\n overflow=\"hidden\"\n position=\"relative\"\n {...boxProps}>\n <Image\n src={src ?? emptyPng}\n alt={alt}\n onClick={noFullView || buttonFullView ? undefined : () => setViewing(true)}\n onLoad={handleImageLoad}\n onLoadStart={() => setImageLoading(true)}\n top={0}\n left={0}\n cursor={noFullView || buttonFullView ? 'default' : 'pointer'}\n draggable={false}\n opacity={src && !loading ? 1 : 0}\n transition=\"opacity 300ms ease-in-out\"\n w=\"100%\"\n h=\"100%\"\n objectFit={src ? 'cover' : 'contain'}\n zIndex={0}\n {...imageProps}\n />\n {buttonFullView ? (\n <IconButton\n pos=\"absolute\"\n top={2}\n right={2}\n zIndex={1}\n w={7}\n minW={0}\n borderRadius={10}\n h={7}\n size=\"sm\"\n aria-label=\"View Image\"\n icon={\n <Image\n height=\"20px\"\n src=\"/icons/open_in_full.svg\"\n opacity={0.8}\n filter=\"brightness(300%) drop-shadow(1px 1px 3px #00000066)\"\n />\n }\n onClick={() => setViewing(true)}\n />\n ) : null}\n <Center\n pos=\"absolute\"\n top={0}\n left={0}\n zIndex={2}\n pointerEvents=\"none\"\n transition=\"opacity 0.5s ease-in-out\"\n opacity={loading || !src ? 1 : 0}\n w=\"100%\"\n h=\"100%\">\n <LoadingLogo isLoading={loading} size=\"60%\" />\n </Center>\n {viewing ? (\n <ImageViewOverlay src={src ?? emptyPng} onClose={() => setViewing(false)} />\n ) : null}\n </Center>\n )\n}\n","import { Center, Flex, Switch, Text, useToast } from '@chakra-ui/react'\nimport { useCallback, useState } from 'react'\nimport { Loading } from './Loading'\n\nexport const LoadingSwitch = ({\n value,\n label,\n onChange,\n}: {\n value: boolean\n label: string\n onChange: (updated: boolean) => Promise<void>\n}) => {\n const toast = useToast()\n const [isLoading, setIsLoading] = useState(false)\n\n const reportComplete = useCallback((fetchedOn: number) => {\n const buffer = Math.max(0, 1000 - (Date.now() - fetchedOn))\n setTimeout(() => {\n setIsLoading(false)\n }, buffer)\n }, [])\n\n return (\n <Flex\n py={1}\n pr={2}\n pl={3}\n bg=\"gray.700\"\n borderRadius={12}\n boxShadow=\"0 0 4px black\"\n pos=\"relative\"\n align=\"center\">\n <Flex\n opacity={isLoading ? 0 : 1}\n transition={`opacity 300ms ${isLoading ? 'ease-out' : 'ease-in'}`}\n pointerEvents={isLoading ? 'none' : 'auto'}\n align=\"center\"\n gap={2}>\n <Text style={{ fontSize: '1.2rem', height: '24px' }}>{label}</Text>\n <Switch\n size=\"md\"\n isChecked={value}\n onChange={e => {\n setIsLoading(true)\n const fetchedOn = Date.now()\n onChange(e.target.checked).catch(err => {\n console.error(err)\n toast({\n title: 'Error',\n description: err?.message ?? 'Error occurred',\n status: 'error',\n duration: 5000,\n isClosable: true,\n })\n })\n\n reportComplete(fetchedOn)\n }}\n />\n </Flex>\n <Center\n opacity={isLoading ? 1 : 0}\n transition={`opacity 300ms ${!isLoading ? 'ease-out' : 'ease-in'}`}\n pointerEvents={isLoading ? 'auto' : 'none'}\n pos=\"absolute\"\n top=\"-10%\"\n left=\"-10%\"\n w=\"120%\"\n borderRadius={8}\n p={1}\n gap={2}\n h=\"120%\">\n <Loading />\n </Center>\n </Flex>\n )\n}\n","import { SpringOptions } from 'framer-motion'\n\nexport const springConfig: SpringOptions = {\n damping: 25,\n stiffness: 200,\n bounce: 0.5,\n // restSpeed: 0.1,\n}\n\nexport const SWIPE_THRESHOLD = 75\nexport const REFRESH_THRESHOLD = 100\n","import { AnyObject, WithId } from '@chem-po/core'\nimport { MobileFrameContextData, useDocument, useMobileFrame } from '@chem-po/react'\nimport { motion, MotionValue, useMotionValue, useSpring, useTransform } from 'framer-motion'\nimport { JSX, useEffect, useMemo, useRef } from 'react'\nimport { springConfig } from './constants'\nimport { PanelStatus } from './types'\n\nconst getContentScale = (status: PanelStatus) => {\n // if (status === 'current') return 1\n if (status === 'current') return 1\n return 0\n}\nconst getContentX = (status: PanelStatus, contentSize: { width: number; height: number }) => {\n const { width: cWidth } = contentSize\n if (status === 'current') return 0\n if (status === 'next') return cWidth\n if (status === 'prev') return -cWidth\n return 0\n}\n\nconst getContentY = (status: PanelStatus, contentSize: { width: number; height: number }) => {\n const { height: cHeight } = contentSize\n if (status === 'current') return 0\n if (status === 'next') return cHeight * 1.1\n if (status === 'prev') return -cHeight * 1.1\n return 0\n}\n\ninterface FeedContentPaneProps<T extends AnyObject = AnyObject> {\n id: string\n collectionPath: string\n RenderItem: (i: WithId<T>) => JSX.Element\n onItemLoad: (data: WithId<T> | null) => void\n status: PanelStatus\n enterStatus?: PanelStatus | null\n offsetY: MotionValue<number>\n}\n\nexport const FeedContentPane = <T extends AnyObject = AnyObject>({\n id,\n collectionPath,\n onItemLoad,\n RenderItem,\n status,\n offsetY,\n enterStatus,\n}: FeedContentPaneProps<T>) => {\n const contentSize = useMobileFrame()\n const scale = useSpring(0, springConfig)\n const baseY = useMotionValue(getContentY(enterStatus ?? 'next', contentSize))\n const yVal = useTransform(() => baseY.get() + offsetY.get())\n const y = useSpring(yVal, springConfig)\n\n const docPath = useMemo(() => `${collectionPath}/${id}`, [collectionPath, id])\n const { data: item } = useDocument<T>(docPath, onItemLoad)\n\n const init = useRef<{\n status: PanelStatus\n contentSize: MobileFrameContextData\n y: number\n scale: number\n }>({\n contentSize,\n status: enterStatus ?? status,\n // x: getContentX(fromStatus || status, contentSize),\n y: getContentY(enterStatus ?? status, contentSize),\n scale: getContentScale(enterStatus ?? status),\n })\n\n useEffect(() => {\n const newScale = getContentScale(status)\n const updatedX = getContentX(status, contentSize)\n baseY.set(updatedX)\n scale.set(newScale)\n }, [status, baseY, scale, contentSize])\n\n return (\n // <AnimatePresence>\n <motion.div\n initial={{\n x: 0,\n y: init.current.y,\n scale: init.current.scale,\n }}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n touchAction: 'none',\n userSelect: 'none',\n height: '100%',\n y,\n scale,\n opacity: scale,\n width: '100%',\n }}\n exit={{\n opacity: 0,\n scale: 0,\n // x: getContentX(fromStatus || status, contentSize),\n x: 0,\n y: getContentY(enterStatus === 'next' ? 'prev' : 'next', contentSize),\n }}>\n {item ? RenderItem(item) : null}\n </motion.div>\n // </AnimatePresence>\n )\n}\n","import { useToast } from '@chakra-ui/react'\nimport { FetchFeedFunction } from '@chem-po/core'\nimport { useAuth } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { UpdatePanelsArgs } from './types'\n\nconst DEFAULT_LIMIT = 10\nexport const useMediaFeed = (\n fetch: FetchFeedFunction,\n onUpdatePanels: (items: UpdatePanelsArgs) => void,\n limit: number = DEFAULT_LIMIT,\n authRequired = false,\n) => {\n // first element is prev ids, second element is curr ids, third element is next ids\n const [ids, setIds] = useState<[string[] | null, string[] | null, string[] | null]>([\n null,\n null,\n null,\n ])\n const [idIdx, setIdIdx] = useState<number>(0)\n const user = useAuth(s => s.user)\n\n const [loading, setLoading] = useState(false)\n const [refreshing, setRefreshing] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [itemLoading, setItemLoading] = useState(false)\n const [direction, setDirection] = useState<'next' | 'prev' | null>(null)\n\n const toast = useToast()\n\n const fetchingId = useRef<string | null>(null)\n\n const idsRef = useRef<{ prev: string | null; curr: string | null; next: string | null }>({\n prev: null,\n curr: null,\n next: null,\n })\n\n const updateCurr = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.prev === id) {\n idsRef.current.prev = null\n }\n if (idsRef.current.next === id) {\n idsRef.current.next = null\n }\n }\n idsRef.current.curr = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const updateNext = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.prev === id) {\n idsRef.current.prev = null\n }\n if (idsRef.current.curr === id) {\n idsRef.current.curr = null\n }\n }\n idsRef.current.next = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const updatePrev = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.curr === id) {\n idsRef.current.curr = null\n }\n if (idsRef.current.next === id) {\n idsRef.current.next = null\n }\n }\n idsRef.current.prev = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const fetchIds = useCallback(\n async (\n startBefore: string | null,\n startAfter: string | null,\n isPrefetch: boolean,\n ): Promise<string[]> => {\n if (!user && authRequired) return []\n if (!isPrefetch) setLoading(true)\n\n try {\n const data = await fetch({ limit, startAfter, startBefore })\n if (!isPrefetch) {\n const firstId = data.ids[0]\n const secondId = data.ids[1] || null\n updateCurr(firstId)\n updateNext(secondId)\n updatePrev(startAfter)\n if (startAfter) {\n setIds(s => [s[1], data.ids, null])\n } else if (startBefore) {\n setIds(s => [null, data.ids, s[1]])\n } else {\n setIds([null, data.ids, null])\n }\n const newLastId = data.ids[data.ids.length - 1]\n if (newLastId) {\n fetchIds(null, newLastId, true)\n }\n } else if (startAfter) {\n setIds(s => [s[0], s[1], data.ids])\n } else if (startBefore) {\n setIds(s => [data.ids, s[1], s[2]])\n }\n setLoading(false)\n return data.ids || []\n } catch (err: any) {\n setError(err.message)\n toast({\n title: 'Error fetching feed',\n description: err.message,\n status: 'error',\n duration: 9000,\n isClosable: true,\n })\n }\n setLoading(false)\n return []\n },\n [fetch, toast, user, authRequired, updateCurr, updateNext, updatePrev, limit],\n )\n\n // handles prefetching of next items\n const getNextId = useCallback(\n async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {\n const currIds = ids[1] ?? []\n const nextIds = ids[2] ?? []\n const nextIdx = currIdx + 1\n if (nextIdx < currIds.length) {\n return { id: currIds[nextIdx], idx: nextIdx }\n }\n if (nextIds[0]) {\n const newLastId = nextIds[nextIds.length - 1]\n if (!isPrefetch) {\n setIds(s => [s[1], s[2], null])\n fetchIds(null, newLastId, true)\n }\n return { id: nextIds[0], idx: 0 }\n }\n const fetchedNextIds = await fetchIds(null, currIds[currIds.length - 1], isPrefetch)\n const fetchedNextId = fetchedNextIds[0]\n return fetchedNextId ? { id: fetchedNextId, idx: 0 } : null\n },\n [ids, fetchIds],\n )\n\n const getPrevId = useCallback(\n async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {\n const currIds = ids[1] ?? []\n const prevIds = ids[0] ?? []\n const prevIdx = currIdx - 1\n if (prevIdx >= 0) {\n return { id: currIds[prevIdx], idx: prevIdx }\n }\n if (prevIds[prevIds.length - 1]) {\n const newFirstId = prevIds[0]\n if (!isPrefetch) {\n setIds([null, ids[0], ids[1]])\n fetchIds(newFirstId, null, true)\n }\n return { id: prevIds[prevIds.length - 1], idx: prevIds.length - 1 }\n }\n const fetchedPrevIds = await fetchIds(currIds[0], null, isPrefetch)\n const fetchedPrevId = fetchedPrevIds[fetchedPrevIds.length - 1]\n return fetchedPrevId ? { id: fetchedPrevId, idx: fetchedPrevIds.length - 1 } : null\n },\n [ids, fetchIds],\n )\n\n const goNext = useCallback(async () => {\n if (itemLoading) return\n // case 1: next item ID is fetched\n const newPrev = idsRef.current.curr\n\n setItemLoading(true)\n const nextIdData = await getNextId(idIdx, false)\n setDirection('next')\n if (nextIdData) {\n const { id: nextId, idx: nextIdx } = nextIdData\n fetchingId.current = nextId\n setIdIdx(nextIdx)\n updateCurr(nextId)\n updateNext(null)\n updatePrev(newPrev)\n getNextId(nextIdx, true).then(newNextId => updateNext(newNextId?.id ?? null))\n } else {\n toast({\n title: 'No more items',\n status: 'info',\n duration: 3000,\n isClosable: true,\n })\n }\n setItemLoading(false)\n }, [idIdx, getNextId, updateCurr, updateNext, updatePrev, toast, itemLoading])\n\n const goPrev = useCallback(async () => {\n if (itemLoading) return\n // case 1: next item ID is fetched\n const newNext = idsRef.current.curr\n\n setDirection('prev')\n setItemLoading(true)\n const prevIdData = await getPrevId(idIdx, false)\n if (prevIdData) {\n const { id: prevId, idx: prevIdx } = prevIdData\n fetchingId.current = prevId\n setIdIdx(prevIdx)\n updateCurr(prevId)\n updatePrev(null)\n updateNext(newNext)\n getPrevId(prevIdx, true).then(newPrevId => updatePrev(newPrevId?.id ?? null))\n } else {\n toast({\n title: 'No more items',\n status: 'info',\n duration: 3000,\n isClosable: true,\n })\n }\n setItemLoading(false)\n }, [idIdx, getPrevId, updateCurr, updateNext, updatePrev, toast, itemLoading])\n\n const refresh = useCallback(async () => {\n setLoading(true)\n setRefreshing(true)\n setIds([null, null, null])\n updateCurr(null)\n updateNext(null)\n updatePrev(null)\n setDirection(null)\n setIdIdx(0)\n await fetchIds(null, null, false)\n setRefreshing(false)\n }, [fetchIds, updateCurr, updateNext, updatePrev])\n\n const [initFetchIds] = useState(() => fetchIds)\n useEffect(() => {\n initFetchIds(null, null, false)\n }, [initFetchIds])\n\n const canGoPrev = useMemo(() => (idIdx > 0 && !!ids[1]?.length) || !!ids[0]?.length, [ids, idIdx])\n const canGoNext = useMemo(\n () => (ids[1] && idIdx < ids[1].length) ?? !!ids[2]?.length,\n [ids, idIdx],\n )\n return useMemo(\n () => ({\n ids,\n goNext,\n goPrev,\n error,\n refresh,\n refreshing,\n loading,\n canGoNext,\n direction,\n canGoPrev,\n itemLoading,\n }),\n [\n ids,\n goNext,\n goPrev,\n loading,\n error,\n itemLoading,\n canGoNext,\n canGoPrev,\n refresh,\n refreshing,\n direction,\n ],\n )\n}\n","import { Center, CenterProps } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useObjectUrl } from '@chem-po/react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { LoadingLogo } from '../loading'\nimport { GetBackgroundUrl, GetBackgroundValue } from './types'\n\nconst emptyPng =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkAAIAAAoAAv/lxKUAAAAASUVORK5CYII='\nconst FillBackground = ({\n background,\n ...props\n}: Omit<CenterProps, 'background'> & { background: string | null }) => (\n <Center\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n opacity={background ? 0.7 : 0}\n transition=\"opacity 500ms\"\n right=\"0\"\n bottom=\"0\"\n zIndex={0}\n transform=\"scale(1.075)\"\n pointerEvents=\"none\"\n backgroundImage={`url(${background ?? emptyPng})`}\n backgroundSize=\"cover\"\n backgroundPosition=\"center\"\n {...props}\n filter={props.filter ?? 'blur(15px) brightness(70%)'}\n />\n)\n\ninterface FileValueBackgroundProps<T extends AnyObject = AnyObject> {\n getBackgroundValue: GetBackgroundValue<T>\n item: WithId<T> | null\n filter?: string\n}\nconst FileValueBackground = <T extends AnyObject = AnyObject>({\n getBackgroundValue,\n item,\n filter,\n}: FileValueBackgroundProps<T>) => {\n const background = useMemo(\n () => (item ? getBackgroundValue(item) : null),\n [getBackgroundValue, item],\n )\n const { loading, url } = useObjectUrl(background)\n const usedIndex = useRef(0)\n const [index, setIndex] = useState(0)\n const [url1, setUrl1] = useState<string | null>(null)\n const [url2, setUrl2] = useState<string | null>(null)\n\n useEffect(() => {\n const usedIdx = usedIndex.current\n if (usedIdx === 0) {\n setUrl1(url)\n usedIndex.current = 1\n setIndex(0)\n } else {\n setUrl2(url)\n usedIndex.current = 0\n setIndex(1)\n }\n }, [url])\n\n return (\n <Center position=\"absolute\" top=\"0\" left=\"0\" right=\"0\" bottom=\"0\" zIndex={0}>\n <FillBackground filter={filter} opacity={index === 0 ? 1 : 0} background={url1} />\n <FillBackground filter={filter} opacity={index === 1 ? 1 : 0} background={url2} />\n <LoadingLogo isLoading={loading} />\n </Center>\n )\n}\n\nconst UrlBackground = <T extends AnyObject = AnyObject>({\n getBackgroundUrl,\n item,\n filter,\n}: {\n getBackgroundUrl: GetBackgroundUrl<T>\n item: T | null\n filter?: string\n}) => {\n const background = useMemo(() => (item ? getBackgroundUrl(item) : null), [getBackgroundUrl, item])\n const usedIndex = useRef(0)\n const [index, setIndex] = useState(0)\n const [url1, setUrl1] = useState<string | null>(null)\n const [url2, setUrl2] = useState<string | null>(null)\n\n useEffect(() => {\n if (!background) return\n if (usedIndex.current === 0) {\n setUrl1(background)\n usedIndex.current = 1\n setIndex(0)\n } else {\n setUrl2(background)\n usedIndex.current = 0\n setIndex(1)\n }\n }, [background])\n\n return (\n <Center position=\"absolute\" top=\"0\" left=\"0\" right=\"0\" bottom=\"0\" zIndex={0}>\n <FillBackground filter={filter} opacity={index === 0 ? 1 : 0} background={url1} />\n <FillBackground filter={filter} opacity={index === 1 ? 1 : 0} background={url2} />\n </Center>\n )\n}\n\ninterface MediaFeedBackgroundProps<T extends AnyObject = AnyObject> {\n getBackgroundValue?: GetBackgroundValue<T>\n getBackgroundUrl?: GetBackgroundUrl<T>\n filter?: string\n item: WithId<T> | null\n}\n\nexport const MediaFeedBackground = <T extends AnyObject = AnyObject>({\n getBackgroundValue,\n getBackgroundUrl,\n ...props\n}: MediaFeedBackgroundProps<T>) => {\n if (getBackgroundValue)\n return <FileValueBackground getBackgroundValue={getBackgroundValue} {...props} />\n if (getBackgroundUrl) return <UrlBackground getBackgroundUrl={getBackgroundUrl} {...props} />\n return null\n}\n","import { RepeatIcon } from '@chakra-ui/icons'\nimport { Center } from '@chakra-ui/react'\nimport { motion, MotionValue, useSpring, useTransform } from 'framer-motion'\nimport { useEffect } from 'react'\nimport { CircularProgress } from '../loading/CircularProgress'\nimport { REFRESH_THRESHOLD, SWIPE_THRESHOLD } from './constants'\n\nconst WINDOW = REFRESH_THRESHOLD - SWIPE_THRESHOLD\nexport const MediaFeedRefresh = ({\n offsetY,\n refreshing,\n canRefresh,\n}: {\n offsetY: MotionValue<number>\n refreshing: boolean\n canRefresh: boolean\n}) => {\n const progress = useTransform(offsetY, v => {\n const dist = Math.max(0, v - SWIPE_THRESHOLD)\n return dist / WINDOW\n })\n const baseY = useSpring(0)\n const isIn = useSpring(0)\n useEffect(() => {\n if (refreshing) {\n baseY.set(50)\n } else {\n baseY.set(0)\n }\n }, [refreshing, baseY])\n\n useEffect(() => {\n if (canRefresh) {\n isIn.set(1)\n } else {\n isIn.set(0)\n }\n }, [isIn, canRefresh])\n\n const y = useTransform(\n () => isIn.get() * Math.min(20, Math.max(0, baseY.get() + progress.get() ** 0.5 * 20)),\n )\n const scale = useTransform(y, v => isIn.get() * Math.min(1, Math.max(0, v / 30)))\n const rotate = useTransform(() => isIn.get() * progress.get() * 180)\n return (\n <motion.div\n style={{\n opacity: scale,\n pointerEvents: 'none',\n y,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: 'auto',\n scale,\n rotate,\n }}>\n <Center w=\"100%\">\n <RepeatIcon\n opacity={refreshing ? 0 : 1}\n transition={`opacity 300ms ease ${!refreshing ? 300 : 0}ms`}\n w={8}\n h={8}\n color=\"white\"\n filter=\"drop-shadow(1px 1px 3px #000000aa)\"\n />\n <CircularProgress\n size={8}\n position=\"absolute\"\n isIndeterminate\n opacity={refreshing ? 1 : 0}\n transition={`opacity 300ms ease ${refreshing ? 300 : 0}ms`}\n />\n </Center>\n </motion.div>\n )\n}\n","import { Center } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useMobileFrame } from '@chem-po/react'\nimport { useMotionValue } from 'framer-motion'\nimport React, {\n CSSProperties,\n Dispatch,\n PropsWithChildren,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { LoadingOverlay } from '../loading'\nimport { REFRESH_THRESHOLD, SWIPE_THRESHOLD } from './constants'\nimport { MediaFeedProvider } from './context'\nimport { FeedContentPane } from './FeedContentPane'\nimport { useMediaFeed } from './hooks'\nimport { MediaFeedBackground } from './MediaFeedBackground'\nimport { MediaFeedRefresh } from './MediaFeedRefresh'\nimport { MediaBackgroundRef, MediaFeedProps, PanelData, UpdatePanelsArgs } from './types'\n\nconst useUpdatePanels = (setItems: Dispatch<React.SetStateAction<Array<PanelData>>>) =>\n useCallback(\n (data: UpdatePanelsArgs) => {\n const updated: PanelData[] = []\n if (data.prev) updated.push({ status: 'prev', id: data.prev })\n if (data.curr) {\n updated.push({\n status: 'current',\n id: data.curr,\n })\n }\n if (data.next) updated.push({ status: 'next', id: data.next })\n setItems(updated)\n },\n [setItems],\n )\n\nexport const MediaFeed = <T extends AnyObject = AnyObject>({\n fetch,\n collection: collectionPath,\n RenderItem,\n authRequired,\n getBackgroundUrl,\n getBackgroundValue,\n limit,\n defaultBackground,\n swipeDisabled,\n children,\n}: PropsWithChildren<MediaFeedProps<T>>) => {\n const { width, height } = useMobileFrame()\n\n const contentRef = useRef<HTMLDivElement>(null)\n\n const containerRef = useRef<HTMLDivElement>(null)\n // const panels = useRef<Array<FeedContentPaneRef>>([])\n const [direction, setDirection] = useState<'next' | 'prev' | null>(null)\n const [panels, setPanels] = useState<Array<PanelData>>([])\n\n const offsetY = useMotionValue(0)\n const onNewData = useUpdatePanels(setPanels)\n\n const backgroundRef = useRef<MediaBackgroundRef<T>>(null)\n\n const { goNext, goPrev, loading, canGoNext, canGoPrev, refresh, refreshing } = useMediaFeed(\n fetch,\n onNewData,\n limit,\n authRequired,\n )\n\n const pointerDown = useRef(false)\n const dragStart = useRef({ x: 0, y: 0 })\n\n const onDragStart = useCallback(\n (e: React.PointerEvent) => {\n if (swipeDisabled) return\n pointerDown.current = true\n dragStart.current = { x: e.clientX, y: e.clientY }\n const dragEndListener = (ev: PointerEvent) => {\n // const oX = Math.max(-width / 4, Math.min(width / 4, ev.clientX - dragStart.current.x))\n const maxY = canGoPrev ? SWIPE_THRESHOLD : REFRESH_THRESHOLD\n const minY = canGoNext ? -SWIPE_THRESHOLD : -REFRESH_THRESHOLD\n const oY = Math.max(minY, Math.min(maxY, ev.clientY - dragStart.current.y))\n if (contentRef.current) contentRef.current.style.setProperty('pointer-events', 'auto')\n if (canGoNext && oY < -(SWIPE_THRESHOLD - 10)) {\n setDirection('next')\n goNext()\n } else if (canGoPrev && oY > SWIPE_THRESHOLD - 10) {\n setDirection('prev')\n goPrev()\n } else if (oY > REFRESH_THRESHOLD - 10 || oY < -(REFRESH_THRESHOLD - 10)) {\n refresh()\n if (backgroundRef.current) backgroundRef.current.onNewData(null)\n }\n // else if (onSwipeUp && oY < -97) {\n // onSwipeUp()\n // }\n offsetY.set(0)\n pointerDown.current = false\n window.removeEventListener('pointerup', dragEndListener)\n }\n\n window.addEventListener('pointerup', dragEndListener)\n },\n [offsetY, goNext, goPrev, canGoNext, canGoPrev, refresh, swipeDisabled],\n )\n\n const onDragMove = useCallback(\n (e: React.PointerEvent) => {\n requestAnimationFrame(() => {\n if (pointerDown.current) {\n const oX = Math.max(-10, Math.min(10, e.clientX - dragStart.current.x))\n const maxY = canGoPrev ? SWIPE_THRESHOLD : REFRESH_THRESHOLD\n const minY = canGoNext ? -SWIPE_THRESHOLD : -REFRESH_THRESHOLD\n const oY = Math.max(minY, Math.min(maxY, e.clientY - dragStart.current.y))\n\n const dist = Math.sqrt(oX ** 2 + oY ** 2)\n if (dist > 10 && contentRef.current) {\n contentRef.current.style.setProperty('pointer-events', 'none')\n }\n // offsetX.jump(oX)\n offsetY.set(oY)\n }\n })\n },\n [offsetY, canGoNext, canGoPrev],\n )\n\n const containerStyle = useMemo<CSSProperties>(\n () => ({\n height: `${height}px`,\n width: `${width}px`,\n overflow: 'hidden',\n pointerEvents: swipeDisabled ? 'none' : 'auto',\n }),\n [width, height, swipeDisabled],\n )\n const [curr, setCurr] = useState<WithId<T> | null>(null)\n\n const handleItemLoad = useCallback(\n (data: WithId<T> | null) => {\n const isCurr = panels.find(p => p.status === 'current')?.id === data?._id\n if (isCurr) setCurr(data)\n },\n [panels],\n )\n\n return (\n <MediaFeedProvider curr={curr}>\n <Center\n background={defaultBackground ?? 'background.100'}\n style={{ touchAction: 'none' }}\n userSelect=\"none\"\n position=\"relative\"\n w=\"100%\"\n h=\"100%\"\n overflow=\"hidden\"\n onPointerDown={onDragStart}\n onPointerMove={onDragMove}>\n <MediaFeedBackground\n item={curr}\n getBackgroundValue={getBackgroundValue}\n getBackgroundUrl={getBackgroundUrl}\n />\n <div ref={containerRef} style={containerStyle}>\n <Center ref={contentRef} h=\"100%\" w=\"100%\">\n {panels.map(panel => (\n <FeedContentPane<T>\n key={panel.id}\n id={panel.id}\n collectionPath={collectionPath}\n RenderItem={RenderItem}\n onItemLoad={handleItemLoad}\n status={panel.status}\n enterStatus={direction}\n offsetY={offsetY}\n />\n ))}\n </Center>\n </div>\n <MediaFeedRefresh canRefresh={!canGoPrev} refreshing={refreshing} offsetY={offsetY} />\n {/* {onSwipeUp ? <MediaFeedSwipeUp offsetY={offsetY} /> : null} */}\n <LoadingOverlay\n inFeed\n zIndex={2}\n bg=\"transparent\"\n pointerEvents=\"none\"\n isLoading={loading}\n />\n {children ? (\n <Center position=\"absolute\" bottom=\"0\" left=\"0\" right=\"0\" zIndex={3} pointerEvents=\"none\">\n {children}\n </Center>\n ) : null}\n </Center>\n </MediaFeedProvider>\n )\n}\n","import { PropsWithChildren, useMemo } from 'react'\nimport { useWatch } from 'react-hook-form'\nimport { ExpandOnMount } from '../box'\n\nexport const Condition = ({\n path,\n condition,\n children,\n}: PropsWithChildren<{\n path: string\n condition: (values: any) => boolean\n}>) => {\n // const { register } = useFormContext()\n // const {\n // input: { value },\n // } = useField(path ?? '', { subscription: { value: true } })\n const value = useWatch({ exact: true, name: path })\n const isVisible = useMemo(() => condition(value), [value, condition])\n\n if (!isVisible) return null\n return (\n <ExpandOnMount py=\"3px\" animateOpacity in>\n {children}\n </ExpandOnMount>\n )\n}\n","import { InputRef } from '@chem-po/core'\nimport { ForwardedRef, forwardRef } from 'react'\n\nimport { Field, useField } from '@chem-po/react'\nimport { ChangeHandler, Controller } from 'react-hook-form'\nimport { Input } from './input/input'\n\nconst FieldComponentBase = (\n { field, name }: { field: Field; name: string },\n ref: ForwardedRef<InputRef>,\n) => {\n const { control, getOnChange, meta, onFocus, onBlur: fieldBlur } = useField(name, field)\n return (\n <Controller<Field['defaultValue']>\n control={control}\n name={name}\n render={({ field: { name: _, ref: _r, onBlur, ...inputProps } }) => {\n return (\n <Input\n ref={ref}\n field={field}\n input={{\n ...inputProps,\n onFocus,\n onBlur: () => {\n fieldBlur()\n onBlur()\n },\n onChange: getOnChange(inputProps.onChange as ChangeHandler),\n }}\n meta={meta}\n />\n )\n }}\n />\n )\n}\n\nexport const FieldComponent = forwardRef(FieldComponentBase)\n","import { Checkbox, Flex, Switch, Text } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { BooleanField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n\nconst BaseCheckboxComponent = (\n { field, input: { onChange, value, ...input } }: FieldProps<BooleanField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const { placeholder } = field\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Checkbox isChecked={value} onChange={e => onChange(e.target.checked)} {...input}>\n {placeholder}\n </Checkbox>\n )\n}\n\nconst CheckboxBooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(\n BaseCheckboxComponent,\n)\n\nconst BaseSwitchComponent = (\n { field, input: { onChange, value, ...input } }: FieldProps<BooleanField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const { placeholder } = field\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Flex gap={1} align=\"center\">\n <Switch isChecked={value} onChange={e => onChange(e.target.checked)} {...input} />\n <Text fontWeight={600} opacity={value ? 0.9 : 0.6}>\n {placeholder}\n </Text>\n </Flex>\n )\n}\n\nconst SwitchBooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(BaseSwitchComponent)\n\nconst BaseBooleanComponent = (props: FieldProps<BooleanField>, ref: ForwardedRef<InputRef>) => {\n if (props.field.type === 'switch') return <SwitchBooleanComponent ref={ref} {...props} />\n return <CheckboxBooleanComponent ref={ref} {...props} />\n}\n\nexport const BooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(BaseBooleanComponent)\n","import { InputRef } from '@chem-po/core'\nimport { Ref, useImperativeHandle, useRef } from 'react'\n\nexport const useInputImperativeHandle = (\n ref: Ref<InputRef>,\n onFocus?: () => void,\n onBlur?: () => void,\n) => {\n const inputRef = useRef<HTMLInputElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: onFocus ?? (() => inputRef.current?.focus()),\n blur: onBlur ?? (() => inputRef.current?.blur()),\n }))\n return inputRef\n}\n","import {\n HStack,\n Slider,\n SliderFilledTrack,\n SliderProps,\n SliderThumb,\n SliderTrack,\n StackProps,\n Text,\n Tooltip,\n} from '@chakra-ui/react'\nimport { Gradient, gradientToCssGradientProp } from '@chem-po/core'\nimport { GradientText } from '../../text/GradientText'\n\nexport const InputSlider = ({\n label,\n stackProps,\n gradient,\n value,\n min,\n max,\n ...props\n}: {\n label: string\n stackProps?: StackProps\n gradient?: Gradient\n} & SliderProps) => {\n const gradientCss = gradient ? gradientToCssGradientProp(gradient) : null\n return (\n <HStack\n opacity={value !== undefined ? 1 : 0.5}\n // filter={`grayscale(${value !== undefined ? 0 : 100}%)`}\n _hover={{\n opacity: 1,\n // filter: 'grayscale(0%)',\n }}\n transition=\"all 500ms\"\n spacing={2}\n width=\"100%\"\n align=\"center\"\n {...stackProps}>\n <HStack w=\"100%\" align=\"center\">\n {min !== undefined && gradientCss ? (\n <GradientText fontSize=\"sm\" color={gradientCss}>\n {typeof min === 'number' ? min.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}\n </GradientText>\n ) : null}\n {min !== undefined && !gradientCss ? (\n <Text>{typeof min === 'number' ? min.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}</Text>\n ) : null}\n <Slider min={min} max={max} step={1} aria-label={label} flex={1} {...props}>\n <SliderTrack bg=\"gray.400\">\n <SliderFilledTrack bg={gradientCss ?? 'blackAlpha.500'} />\n </SliderTrack>\n <Tooltip\n bg=\"gray.100\"\n color=\"gray.500\"\n placement=\"top\"\n hasArrow\n label={typeof value === 'number' ? value.toFixed(0) : ''}>\n <SliderThumb width={2} height={4} />\n </Tooltip>\n </Slider>\n {max !== undefined && gradientCss ? (\n <GradientText fontSize=\"sm\" color={gradientCss}>\n {typeof max === 'number' ? max.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}\n </GradientText>\n ) : null}\n {max !== undefined && !gradientCss ? (\n <Text>{typeof max === 'number' ? max.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}</Text>\n ) : null}\n </HStack>\n </HStack>\n )\n}\n","import { Box, BoxProps, Text, TextProps } from '@chakra-ui/react'\nimport './styles.css'\n\nexport const GradientText = ({\n children,\n color,\n background,\n boxProps,\n ...props\n}: TextProps & { boxProps?: BoxProps }) => (\n <Box background={background} {...boxProps}>\n <Text cursor=\"default\" className=\"gradient-text\" background={color} {...props}>\n {children}\n </Text>\n </Box>\n)\n","import { Box, Center, HStack, SliderProps, StackProps, Text, VStack } from '@chakra-ui/react'\n\nimport { colorValueToHex, Gradient, gradients, InputRef } from '@chem-po/core'\nimport { ColorField } from '@chem-po/react'\nimport { forwardRef, useCallback, useMemo } from 'react'\nimport { useInputImperativeHandle } from '../hooks/useInputImperativeHandle'\nimport { InputSlider } from '../InputSlider'\nimport { FieldProps } from '../types'\n\nconst ColorComponentSlider = ({\n label,\n stackProps,\n gradient,\n value,\n ...props\n}: {\n label: string\n stackProps?: StackProps\n gradient: Gradient\n} & SliderProps) => (\n <InputSlider\n label={label}\n value={value}\n min={0}\n step={1}\n max={255}\n stackProps={{ width: '100%', ...stackProps }}\n gradient={gradient}\n {...props}\n />\n)\n\nexport const ColorComponent = forwardRef<InputRef, FieldProps<ColorField>>(\n ({ input: { onChange, value }, field, meta }, ref) => {\n // my colors: {r: 0, g: 0, b: 0, a: 0}\n // input colors: '#rrggbbaa'\n const { withAlpha, defaultValue } = field\n const { active } = meta || {}\n\n useInputImperativeHandle(ref)\n\n const handleChange = useCallback(\n (key: 'r' | 'g' | 'b' | 'a', val: number) => {\n if (withAlpha) {\n onChange({\n r: 0,\n g: 0,\n b: 0,\n a: 1,\n ...value,\n [key]: val,\n })\n } else {\n onChange({\n r: 0,\n g: 0,\n b: 0,\n ...value,\n [key]: val,\n })\n }\n },\n [value, onChange, withAlpha],\n )\n\n const withDefault = useMemo(() => ({ ...defaultValue, ...value }), [defaultValue, value])\n const asHex = useMemo(() => colorValueToHex(!!withAlpha, withDefault), [withDefault, withAlpha])\n return (\n <HStack w=\"100%\">\n <Box\n boxShadow=\"inset 0 0 12px rgba(255,255,255,0.4), 0 0 4px rgba(0,0,0,0.4)\"\n p={2}\n bg=\"blackAlpha.800\"\n borderRadius=\"full\">\n <Center\n transition=\"background 300ms\"\n bg={asHex}\n width=\"80px\"\n h=\"80px\"\n borderRadius=\"full\">\n <Text style={{ fontSize: '1.3rem' }}>{asHex}</Text>\n </Center>\n </Box>\n <VStack\n spacing={1}\n flex={1}\n px={2}\n align=\"flex-start\"\n borderRadius={6}\n transition=\"all 400ms\"\n boxShadow={`0 0 5px ${active ? '#ffffff' : 'transparent'}`}>\n <ColorComponentSlider\n label=\"R\"\n gradient={gradients.red}\n defaultValue={defaultValue.r}\n value={value?.r}\n onChange={updatedRed => handleChange('r', updatedRed)}\n />\n <ColorComponentSlider\n label=\"G\"\n defaultValue={defaultValue.g}\n gradient={gradients.green}\n value={value?.g}\n onChange={updatedGreen => handleChange('g', updatedGreen)}\n />\n <ColorComponentSlider\n label=\"B\"\n gradient={gradients.blue}\n defaultValue={defaultValue.b}\n value={value?.b}\n onChange={updatedBlue => handleChange('b', updatedBlue)}\n />\n {withAlpha ? (\n <ColorComponentSlider\n label=\"A\"\n gradient={gradients.midnight}\n defaultValue={1}\n value={value?.a}\n onChange={updatedAlpha => handleChange('a', updatedAlpha)}\n />\n ) : null}\n </VStack>\n </HStack>\n )\n },\n)\n","import {\n Button,\n Image,\n Popover,\n PopoverArrow,\n PopoverContent,\n PopoverTrigger,\n Portal,\n Text,\n} from '@chakra-ui/react'\nimport { forwardRef, useImperativeHandle, useMemo } from 'react'\nimport { DayPicker } from 'react-day-picker'\n// import 'react-day-picker/dist/style.css'\nimport { getDateString, InputRef } from '@chem-po/core'\nimport { DateField } from '@chem-po/react'\nimport { FieldProps } from '../types'\n\nconst padZeros = (n: number, digits: number) => {\n let v = `${n}`\n for (let i = v.length; i < digits; i += 1) {\n v = `0${v}`\n }\n return v\n}\nexport const parseDate = (date?: Date) =>\n date\n ? `${padZeros(date.getFullYear(), 4)}-${padZeros(date.getMonth() + 1, 2)}-${padZeros(\n date.getDate(),\n 2,\n )}`\n : undefined\nexport const DateInput = forwardRef<InputRef, FieldProps<DateField>>(\n (props: FieldProps<DateField>, ref) => {\n const {\n input,\n field: { placeholder, minDate, maxDate, optional },\n meta: { active },\n } = props\n const { onChange, value, onFocus, onBlur } = input\n const date = useMemo(() => (value ? new Date(`${value}T00:00:00.000`) : new Date()), [value])\n const disabled = useMemo(() => {\n const res: { from: Date; to: Date }[] = []\n if (minDate !== undefined) {\n res.push({\n to: minDate === 'now' ? new Date() : new Date(minDate),\n from: new Date(0),\n })\n }\n if (maxDate !== undefined) {\n res.push({\n from: maxDate === 'now' ? new Date() : new Date(maxDate),\n to: new Date(Infinity),\n })\n }\n return res\n }, [minDate, maxDate])\n\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n\n return (\n <Popover\n isOpen={active}\n onOpen={onFocus}\n onClose={onBlur}\n closeDelay={100}\n placement=\"bottom\">\n <PopoverTrigger>\n <Button\n w=\"100%\"\n fontFamily=\"Public Sans\"\n fontWeight=\"normal\"\n alignItems=\"center\"\n _hover={{ bg: '#efefef' }}\n lineHeight={1}\n variant=\"outline\">\n <Text fontSize=\"md\" height=\"16px\" align=\"left\" flex={1}>\n {value ? getDateString(value, 'short') : placeholder}\n </Text>\n <Image src=\"/svg/calendar.svg\" height=\"20px\" />\n </Button>\n </PopoverTrigger>\n <Portal>\n <PopoverContent zIndex={2} onFocus={onFocus}>\n <PopoverArrow />\n <DayPicker\n required={!optional}\n disabled={disabled}\n styles={{\n caption: {\n fontFamily: 'Public Sans',\n fontWeight: '400',\n fontSize: '0.9rem',\n color: '#555',\n },\n head: {\n fontFamily: 'Public Sans',\n },\n nav: {\n fontFamily: 'Public Sans',\n },\n }}\n modifiersStyles={{\n selected: {\n background: '#454545',\n },\n }}\n // id={name}\n mode=\"single\"\n selected={date}\n onSelect={(updated: Date | undefined) => onChange(parseDate(updated))}\n />\n </PopoverContent>\n </Portal>\n </Popover>\n )\n },\n)\n\nDateInput.displayName = 'DateInput'\n","import { Input } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { TimeField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n// import '../input.css'\n\nexport const TimeInput = forwardRef<InputRef, FieldProps<TimeField>>(\n ({ field, input }: FieldProps<TimeField>, ref) => {\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Input\n fontFamily=\"Public Sans\"\n css={`\n ::-webkit-calendar-picker-indicator {\n background: url(/svg/clock.svg) center/80% no-repeat;\n color: white;\n }\n `}\n fontSize=\"md\"\n type=\"time\"\n placeholder={field.placeholder}\n {...input}\n value={input.value ?? ''}\n />\n )\n },\n)\n\nTimeInput.displayName = 'TimeInput'\n","import { HStack } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { DateTimeField, FieldMeta } from '@chem-po/react'\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react'\nimport { DateInput, parseDate } from '../date'\nimport '../input.css'\nimport { TimeInput } from '../time'\nimport { FieldProps } from '../types'\n\nconst parseDateAndTime = (timestamp?: number | string) => {\n if (!timestamp) return { date: undefined, time: undefined }\n const d = new Date(timestamp)\n return { date: parseDate(d), time: d.toTimeString().substring(0, 5) }\n}\n\nexport const DateTimeInput = forwardRef<InputRef, FieldProps<DateTimeField>>(\n ({ input: { value, onBlur, onChange, onFocus } }, ref) => {\n const [{ date, time }, set] = useState<{ date?: string; time?: string }>(\n parseDateAndTime(value),\n )\n const [focusedElement, setFocused] = useState<'date' | 'time' | null>(null)\n const handleChange = useCallback(\n (type: 'date' | 'time', updated?: string) => {\n if (type === 'date') {\n set({ date: updated, time })\n if (updated && time) onChange(new Date(`${updated}T${time}`).getTime())\n } else {\n set({ time: updated, date })\n if (updated && date) {\n onChange(new Date(`${date}T${updated}:00.000`).getTime())\n }\n }\n },\n [date, time, onChange],\n )\n\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n\n const meta = useMemo<FieldMeta>(\n () => ({\n active: focusedElement === 'date',\n error: undefined,\n touched: false,\n }),\n [focusedElement],\n )\n\n return (\n <HStack w=\"100%\">\n <DateInput\n field={{ _type: 'date', placeholder: 'Date' }}\n input={{\n // name: '',\n value: date,\n onChange: (dateString: string) => {\n handleChange('date', dateString)\n },\n onBlur: () => {\n setFocused(null)\n onBlur()\n },\n onFocus: () => {\n setFocused('date')\n onFocus()\n },\n }}\n meta={meta}\n />\n <TimeInput\n field={{ _type: 'time', placeholder: 'Time' }}\n input={{\n value: time,\n onChange: e => handleChange('time', e.target.value),\n onBlur: () => {\n setFocused(null)\n onBlur()\n },\n onFocus: () => {\n setFocused('time')\n onFocus()\n },\n }}\n meta={meta}\n />\n </HStack>\n )\n },\n)\n\nDateTimeInput.displayName = 'DateTimeInput'\n","import { Playlist, SpotifyTrack, WithId } from '@chem-po/core'\nimport { MotionValue } from 'framer-motion'\nimport { Howl } from 'howler'\nimport { useMemo } from 'react'\nimport { create } from 'zustand'\n\nexport type SetMediaArgs =\n | { playlist: PlaylistInterface; media?: never }\n | { media: WithId<SpotifyTrack>; playlist?: never }\nexport interface AudioPlayerApi {\n play: () => void\n pause: () => void\n goNext: () => void\n goPrev: () => void\n canGoNext: boolean\n canGoPrev: boolean\n sound: Howl | null\n trackProgress: MotionValue<number>\n seek: (to: number) => void\n setMedia: (args: SetMediaArgs) => void\n stop: () => void\n loop: (loop: boolean) => void\n}\n\nexport interface PlaylistInterface extends Playlist {\n currentId: string | null\n}\ninterface UsePlayerData {\n isPlaying: boolean\n isLoading: boolean\n fetchingMedia: WithId<SpotifyTrack> | null\n playlist: PlaylistInterface | null\n media: WithId<SpotifyTrack> | null\n repeat: boolean\n shuffle: boolean\n api: AudioPlayerApi\n volume: number\n}\n\nexport const usePlayer = create<UsePlayerData>(() => ({\n isPlaying: false,\n media: null,\n isLoading: false,\n fetchingMedia: null,\n shuffle: false,\n playlist: null,\n volume: 0.5,\n repeat: false,\n api: {\n pause: () => {},\n play: () => {},\n canGoNext: false,\n canGoPrev: false,\n goNext: () => {},\n goPrev: () => {},\n seek: () => {},\n sound: null,\n trackProgress: new MotionValue(0),\n setMedia: () => {},\n stop: () => {},\n loop: () => {},\n },\n}))\n\nexport const useActiveMedia = () => {\n const { media, playlist } = usePlayer()\n return useMemo(() => {\n if (playlist) {\n return playlist.currentId !== null\n ? (playlist.items.find(i => i.id === playlist.currentId) ?? null)\n : null\n }\n return media\n }, [playlist, media])\n}\n","import { ButtonProps, Center, IconButton, Image } from '@chakra-ui/react'\nimport { SpotifyTrack, WithId } from '@chem-po/core'\nimport { usePlaylist } from '@chem-po/react'\nimport { useActiveMedia, usePlayer } from '../../store/usePlayer'\n\nexport const PlayButton = ({\n media,\n size = 50,\n opacity = 0.8,\n // withThumbnail,\n buttonProps,\n}: {\n media: WithId<SpotifyTrack> | null\n size?: number\n opacity?: number\n withThumbnail?: boolean\n buttonProps?: ButtonProps\n}) => {\n const { id: mediaId } = media ?? {}\n const { playlist } = usePlaylist()\n const api = usePlayer(s => s.api)\n const playerIsPlaying = usePlayer(s => s.isPlaying)\n const playerIsLoading = usePlayer(s => s.isLoading)\n const currentMedia = useActiveMedia()\n const isPlaying = playerIsPlaying && currentMedia?.id === mediaId\n const isFetching = playerIsLoading && currentMedia?.id === mediaId\n\n return (\n <IconButton\n boxShadow=\"md\"\n p={1}\n height={`${size}px`}\n width={`${size}px`}\n minW=\"0\"\n minH=\"0\"\n borderRadius=\"full\"\n isLoading={isFetching}\n aria-label=\"play/pause\"\n onClick={e => {\n e.stopPropagation()\n if (!media) return\n if (currentMedia?.id === mediaId) {\n if (playerIsPlaying) api.pause()\n else api.play()\n } else if (playlist) {\n api.setMedia({\n playlist: {\n ...playlist,\n currentId: mediaId ?? null,\n },\n })\n } else {\n api.setMedia({ media })\n }\n }}\n style={{ background: '#eee' }}\n {...buttonProps}\n icon={\n <Center borderRadius=\"full\" height={`${size}px`} width={`${size}px`}>\n {/* {\n media ? (\n <StorageImage\n borderRadius='full'\n position='absolute'\n objectFit='cover'\n width='100%'\n height='100%'\n storagePath={`${media.storageDir}/photoFile`}\n alt={media.title}\n />\n ) : null\n } */}\n <Image\n opacity={isPlaying ? opacity : 0}\n width=\"100%\"\n transition=\"all 0.2s ease-in-out\"\n src=\"/svg/pause.svg\"\n filter=\"invert(100%) drop-shadow(0 0 4px black)\"\n transform={`scale(${isPlaying ? 0.8 : 1})`}\n />\n <Image\n position=\"absolute\"\n width=\"100%\"\n opacity={isPlaying ? 0 : opacity}\n transition=\"all 0.2s ease-in-out\"\n filter=\"invert(100%) drop-shadow(0 0 3px black)\"\n src=\"/svg/play.svg\"\n transform={`scale(${!isPlaying ? 0.8 : 1})`}\n />\n </Center>\n }\n />\n )\n}\n","import {\n Center,\n Flex,\n HStack,\n IconButton,\n Image,\n ImageProps,\n Text,\n useColorModeValue,\n VStack,\n} from '@chakra-ui/react'\n\nimport { FileValue, generateId, ImageViewOptions, InputRef, WithId } from '@chem-po/core'\nimport { FileField, useImageSize, useObjectUrl } from '@chem-po/react'\nimport {\n ChangeEventHandler,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useBorderColor } from '../../../hooks'\nimport { LoadingImage } from '../../loading/LoadingImage'\nimport { PlayButton } from '../../media/PlayButton'\nimport { FieldProps } from './types'\n\nconst generateAccept = (field: FileField) => {\n if (!field.accept) return undefined\n const accept: string[] = []\n if (field.accept.includes('image')) {\n accept.push('image/jpg', 'image/jpeg', 'image/png', 'image/svg', 'image/gif')\n }\n if (field.accept.includes('pdf')) accept.push('application/pdf')\n if (field.accept.includes('audio')) {\n accept.push('audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/webm', 'audio/ogg')\n }\n return accept.join(',')\n}\n\nexport const AudioFileView = ({\n hasUpload,\n value,\n noLabel,\n}: {\n value: FileValue\n noLabel?: boolean\n hasUpload?: boolean\n}) => {\n const media = useMemo<WithId<any>>(\n () => ({\n id: generateId(),\n title: value.filename || 'Uploaded file',\n artistName: '',\n artistId: '',\n storageDir: '',\n producerId: '',\n songwriterId: '',\n }),\n [value],\n )\n\n return (\n <VStack>\n <HStack spacing={4}>\n <PlayButton withThumbnail media={media} />\n {hasUpload ? (\n <IconButton\n w=\"40px\"\n h=\"40px\"\n p={2}\n borderRadius=\"full\"\n boxShadow=\"0 0 4px black\"\n aria-label=\"upload\"\n icon={<Image filter=\"invert(100%)\" src=\"/svg/upload.svg\" opacity={0.8} />}\n />\n ) : null}\n </HStack>\n {!noLabel && value.filename ? (\n <Text fontSize=\"md\">{value.filename || 'Uploaded file'}</Text>\n ) : null}\n </VStack>\n )\n}\n\nconst ImageFileView = ({\n value,\n options,\n hasUpload,\n loading: loadingProp,\n}: {\n value: FileValue\n options?: ImageViewOptions\n hasUpload?: boolean\n loading?: boolean\n}) => {\n const [loaded, setLoaded] = useState(false)\n const { url, loading } = useObjectUrl(value)\n const [imageSize, setImageSize] = useState({ width: 0, height: 0 })\n const { shape, placeholder, objectFit, noFullView, background } = options ?? {}\n const {\n src: placeholderSrc,\n opacity: placeholderOpacity,\n scale: placeholderScale,\n } = placeholder ?? {}\n\n const size = useImageSize(options, imageSize)\n const { width: optWidth, height: optHeight } = size ?? {}\n\n const opacity = useMemo(() => {\n if (loaded) return url ? 1 : (placeholderOpacity ?? 0.8)\n return 0\n }, [loaded, url, placeholderOpacity])\n\n const imageProps = useMemo<ImageProps>(() => {\n if (!url) {\n return {\n width: size ? `${size.width * (placeholderScale ?? 0.9)}px` : 'auto',\n height: size ? `${size.height * (placeholderScale ?? 0.9)}px` : '80px',\n }\n }\n return {\n objectFit: objectFit ?? (loaded && shape ? 'cover' : 'contain'),\n onLoad: e => {\n setLoaded(true)\n setImageSize({\n width: e.currentTarget.naturalWidth,\n height: e.currentTarget.naturalHeight,\n })\n },\n }\n }, [url, size, placeholderScale, loaded, shape, objectFit])\n const isLoading = !!loadingProp || loading\n const width = typeof optWidth === 'number' ? `${optWidth}px` : 'auto'\n const height = typeof optHeight === 'number' ? `${optHeight}px` : '100px'\n return (\n <LoadingImage\n width={width}\n height={height}\n noFullView={hasUpload ?? noFullView}\n overflow=\"hidden\"\n borderRadius={shape === 'circle' ? 'full' : 4}\n boxShadow={shape ? '1px 1px 3px #00000066' : 'none'}\n opacity={opacity}\n background={background}\n transition=\"opacity 333ms ease\"\n loadingOverride={isLoading}\n imageProps={imageProps}\n src={url ?? placeholderSrc}\n />\n )\n}\n\nconst extensionIcons: Record<string, string> = {\n txt: '/icons/description.svg',\n pdf: '/icons/pdf.svg',\n zip: '/icons/zip.svg',\n '7z': '/icons/zip.svg',\n rar: '/icons/zip.svg',\n}\n\nconst ExtensionIcon = ({ value }: { value: FileValue | null | undefined }) => {\n const extension = useMemo(() => {\n if (!value) return ''\n const parts = value.filename.split('.')\n return parts[parts.length - 1]\n }, [value])\n const icon = extensionIcons[extension]\n const filter = useColorModeValue('invert(0)', 'invert(1)')\n if (!icon) return null\n\n return <Image filter={extension !== 'pdf' ? filter : 'none'} h=\"24px\" src={icon} />\n}\n\nconst FileViewBody = ({\n value,\n noLabel,\n imageOptions,\n loading,\n hasUpload,\n}: {\n value: FileValue\n imageOptions?: ImageViewOptions\n loading?: boolean\n noLabel?: boolean\n hasUpload?: boolean\n}) => {\n const fileType = useMemo(() => value.type?.split('/')?.[0], [value])\n switch (fileType) {\n case 'image':\n return (\n <ImageFileView\n hasUpload={hasUpload}\n loading={loading}\n options={imageOptions}\n value={value}\n />\n )\n case 'audio':\n return <AudioFileView noLabel={noLabel} value={value} hasUpload={hasUpload} />\n case 'pdf':\n return <Image src=\"/icons/pdf.svg\" />\n default:\n return (\n <Flex gap={2}>\n <ExtensionIcon value={value} />\n <Text>{value.filename}</Text>\n </Flex>\n )\n }\n}\n\nconst NoFileView = ({\n hasUpload,\n imageOptions,\n}: {\n hasUpload?: boolean\n imageOptions?: ImageViewOptions\n}) => {\n const imageSize = useImageSize(imageOptions)\n const { shape, placeholder } = imageOptions ?? {}\n const {\n src: placeholderSrc,\n scale: placeholderScale,\n opacity: placeholderOpacity,\n } = placeholder ?? {}\n const { width, height } = imageSize ?? {}\n const filter = useColorModeValue('invert(0)', 'invert(1)')\n\n const bg = useColorModeValue('whiteAlpha.500', 'whiteAlpha.100')\n const borderColor = useBorderColor()\n\n const body = imageOptions ? (\n <Center\n height={shape ? `${height}px` : 'auto'}\n width={shape ? `${width}px` : 'auto'}\n bg={shape ? bg : 'transparent'}\n borderRadius={shape === 'circle' ? 'full' : 4}\n overflow=\"hidden\"\n boxShadow={shape ? '1px 1px 4px #00000055' : 'none'}>\n <Image\n filter={filter}\n opacity={placeholderOpacity}\n height={typeof height === 'number' ? `${height * (placeholderScale ?? 0.6)}px` : '50px'}\n src={placeholderSrc ?? '/icons/image.svg'}\n />\n </Center>\n ) : (\n <Text\n border=\"1px dashed\"\n borderColor={borderColor}\n p={3}\n fontSize=\"sm\"\n textAlign=\"center\"\n w=\"100%\"\n opacity={0.8}>\n {hasUpload ? 'Click to upload or drop file here' : 'No file uploaded'}\n </Text>\n )\n return (\n <Center\n width={typeof width === 'number' ? `${width}px` : 'auto'}\n height={typeof height === 'number' ? `${height}px` : 'auto'}>\n {body}\n </Center>\n )\n}\n\nexport const FileView = ({\n value,\n hasUpload,\n noLabel,\n loading,\n imageOptions,\n}: {\n value?: FileValue | null\n hasUpload?: boolean\n noLabel?: boolean\n loading?: boolean\n imageOptions?: ImageViewOptions\n}) => {\n const { storagePath, dataUrl } = value ?? {}\n\n const missingFile = useMemo(() => !dataUrl && !storagePath, [dataUrl, storagePath])\n if (!value || missingFile) {\n return <NoFileView hasUpload={hasUpload} imageOptions={imageOptions} />\n }\n return (\n <FileViewBody\n loading={loading}\n imageOptions={imageOptions}\n noLabel={noLabel}\n hasUpload={hasUpload}\n value={value}\n />\n )\n}\nexport const FileComponent = forwardRef<InputRef, FieldProps<FileField>>(\n ({ input: { value, onChange }, field }, ref) => {\n const { imageOptions } = field || {}\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n e => {\n const file = e.target.files?.[0]\n if (!file) return\n if (value?.dataUrl) URL.revokeObjectURL(value.dataUrl)\n\n onChange({\n ...value,\n dataUrl: URL.createObjectURL(file),\n type: file.type,\n filename: file.name,\n })\n },\n [onChange, value],\n )\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.click()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n const isImageField = useMemo(\n () => field.accept && field.accept.length === 1 && field.accept[0] === 'image',\n [field],\n )\n const imgOptions = useMemo<ImageViewOptions | undefined>(\n () =>\n isImageField || value?.type?.startsWith('image/') || value?.type?.startsWith('video/')\n ? {\n height: 120,\n ...imageOptions,\n objectFit: 'contain',\n }\n : undefined,\n [imageOptions, isImageField, value],\n )\n return (\n <Center\n flexFlow=\"column\"\n position=\"relative\"\n cursor=\"pointer\"\n onClick={() => inputRef.current?.click()}\n width=\"100%\">\n <Text fontSize=\"sm\" opacity={0.8} mb={1}>\n {field.placeholder}\n </Text>\n <Center\n // maxW='160px'\n width=\"100%\"\n position=\"relative\"\n p={2}\n overflow=\"hidden\">\n <FileView hasUpload imageOptions={imgOptions} value={value} />\n <input\n onChange={handleChange}\n ref={inputRef}\n accept={generateAccept(field)}\n type=\"file\"\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n height: 0.1,\n width: 0.1,\n opacity: 0,\n }}\n />\n </Center>\n </Center>\n )\n },\n)\n\nFileComponent.displayName = 'FileComponent'\n","import { Box, Button, Flex, Text, useColorMode } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { MultipleSelectField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n\nexport const MultipleSelectComponent = forwardRef<InputRef, FieldProps<MultipleSelectField>>(\n ({ field, input, inEditable }, ref) => {\n const { options, renderOption, getOptionKey } = field\n const { onChange, value, onFocus, onBlur } = input\n const { colorMode } = useColorMode()\n useImperativeHandle(ref, () => ({\n focus: () => {\n onFocus()\n },\n blur: () => {\n onBlur()\n },\n }))\n\n const body = (\n <Flex w=\"100%\" flexFlow=\"row wrap\">\n {options.map(o => (\n <Box key={getOptionKey ? getOptionKey(o) : o} p={0.5}>\n <Button\n w=\"100%\"\n minH={0}\n size=\"xs\"\n p={0}\n opacity={value?.includes(o) ? 1 : 0.7}\n variant=\"unstyled\"\n onClick={e => {\n e.stopPropagation()\n onChange(value?.includes(o) ? value.filter(v => v !== o) : [...(value ?? []), o])\n }}\n _hover={{ opacity: 0.8 }}>\n {renderOption(o, colorMode, !!value?.includes(o))}\n </Button>\n </Box>\n ))}\n </Flex>\n )\n\n return inEditable ? (\n <Flex py={0.5} flexFlow=\"column\" w=\"100%\">\n <Text lineHeight={1} px={2} opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n {field.placeholder}\n </Text>\n {body}\n </Flex>\n ) : (\n body\n )\n },\n)\n","import { InputSize } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\n\nconst inputPaddingY: Record<InputSize, number> = {\n xs: 0.25,\n sm: 0.35,\n md: 0.5,\n lg: 0.5,\n xl: 0.5,\n}\n\nconst inputPaddingX: Record<InputSize, number> = {\n xs: 0.5,\n sm: 0.75,\n md: 0.75,\n lg: 0.75,\n xl: 0.75,\n}\nconst getInputPadding = (size: InputSize) => {\n const paddingY = inputPaddingY[size]\n const paddingX = inputPaddingX[size]\n return `${paddingY}rem ${paddingX}rem`\n}\nconst fontSize: Record<InputSize, string> = {\n xs: '0.75rem',\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n}\n\nexport const useInputStyle = (size?: InputSize) =>\n useMemo<Partial<CSSProperties>>(\n () => ({\n padding: getInputPadding(size ?? 'md'),\n fontSize: fontSize[size ?? 'md'],\n }),\n [size],\n )\n","import { useColorModeValue } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { CurrencyAmountField, NumberField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport CurrencyInput from 'react-currency-input-field'\nimport { InputSlider } from '../InputSlider'\nimport { useInputImperativeHandle } from '../hooks/useInputImperativeHandle'\nimport { useInputStyle } from '../hooks/useInputStyle'\nimport { FieldProps } from '../types'\nimport './styles.css'\n\nexport const NumberComponent = forwardRef<InputRef, FieldProps<NumberField> & { prefix?: string }>(\n ({ input: { onChange, value, ...input }, field, size, prefix, inEditable: _, ...props }, ref) => {\n const { type, defaultValue, placeholder } = field\n const className = useColorModeValue('number-input', 'number-input-dark')\n const style = useInputStyle(size)\n const inputRef = useInputImperativeHandle(ref)\n const [endsWith, setEndsWith] = useState('')\n const displayed = typeof value === 'number' && !Number.isNaN(value) ? `${value}${endsWith}` : ''\n if (type === 'slider') {\n return (\n <InputSlider\n label={placeholder}\n onChange={onChange}\n value={value}\n defaultValue={defaultValue}\n />\n )\n }\n return (\n <CurrencyInput\n className={className}\n placeholder={field.placeholder}\n decimalsLimit={field.precision}\n allowDecimals={!!field.precision}\n prefix={prefix}\n ref={inputRef}\n onValueChange={(v, _, values) => {\n if (v?.endsWith('.')) setEndsWith('.')\n else if (v?.includes('.') && v?.endsWith('0')) setEndsWith('0')\n else setEndsWith('')\n onChange(values?.float)\n }}\n value={displayed}\n {...props}\n style={{\n background: 'none',\n // height: 'auto',\n resize: 'none',\n fontFamily: 'Encode Sans',\n boxSizing: 'border-box',\n width: '100%',\n borderRadius: '4px',\n border: 'none',\n outline: 'none',\n ...style,\n ...props.style,\n }}\n {...input}\n />\n )\n },\n)\nconst BaseCurrencyAmountComponent = (\n { field, ...props }: FieldProps<CurrencyAmountField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const inputRef = useRef<HTMLInputElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n return <NumberComponent prefix=\"$\" field={{ ...field, _type: 'number' }} {...props} />\n}\n\nexport const CurrencyAmountComponent = forwardRef<InputRef, FieldProps<CurrencyAmountField>>(\n BaseCurrencyAmountComponent as any,\n)\n","import { Flex, Text } from '@chakra-ui/react'\nimport { Field } from '@chem-po/react'\nimport { useMemo } from 'react'\n\nexport const OptionalTag = <T extends Field>({\n value,\n field,\n}: {\n field: T\n value: T['defaultValue'] | undefined | null\n}) => {\n const top = useMemo(() => {\n if (value === '' || value === undefined || value === null) return 1\n switch (field._type) {\n case 'text':\n case 'number':\n case 'select':\n case 'date':\n case 'time':\n case 'datetime':\n return -1\n default:\n return 1\n }\n }, [value, field])\n return (\n <Flex transition=\"top 300ms\" top={top} position=\"absolute\" right={3}>\n <Text fontSize=\"xs\" opacity={0.6}>\n OPTIONAL\n </Text>\n </Flex>\n )\n}\n","import {\n Box,\n Button,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Text,\n useColorMode,\n} from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { SelectField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle, useMemo } from 'react'\nimport { FieldProps } from '../types'\n\nconst DefaultRenderOption = (value: any) => {\n return <Text>{typeof value === 'string' ? value : JSON.stringify(value)}</Text>\n}\n\nexport const SelectComponent = forwardRef<InputRef, FieldProps<SelectField>>(\n ({ field, input, meta }, ref) => {\n const { placeholder, options, renderOption: customRender, getOptionKey } = field\n const { onChange, value, onFocus, onBlur } = input\n const { active } = meta\n const selected = useMemo(() => value && options.find(o => o === value), [value, options])\n const { colorMode } = useColorMode()\n useImperativeHandle(ref, () => ({\n focus: () => {\n onFocus()\n },\n blur: () => {\n onBlur()\n },\n }))\n\n const renderOption = customRender ?? DefaultRenderOption\n\n return (\n <Popover strategy=\"fixed\" placement=\"bottom\" matchWidth isOpen={active} onClose={onBlur}>\n <PopoverTrigger>\n <Button\n fontWeight={500}\n w=\"100%\"\n opacity={value ? 1 : 0.7}\n onClick={e => {\n e.stopPropagation()\n onFocus()\n }}\n variant=\"unstyled\"\n position=\"relative\">\n <Box>{selected ? renderOption(selected, colorMode, true) : placeholder}</Box>\n </Button>\n </PopoverTrigger>\n <PopoverContent w=\"100%\" overflowY=\"auto\" maxH=\"300px\">\n <PopoverBody p={0}>\n {options.map(o => (\n <Button\n key={getOptionKey ? getOptionKey(o) : o}\n w=\"100%\"\n variant=\"unstyled\"\n onClick={e => {\n e.stopPropagation()\n onChange(o)\n onBlur()\n }}\n _hover={{ bg: 'blackAlpha.100' }}\n _dark={{\n _hover: { bg: 'whiteAlpha.100' },\n }}>\n {renderOption(o, colorMode, o === selected)}\n </Button>\n ))}\n </PopoverBody>\n <PopoverArrow />\n </PopoverContent>\n </Popover>\n )\n },\n)\n","import {\n Center,\n Collapse,\n HStack,\n Image,\n Input,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Text,\n VStack,\n} from '@chakra-ui/react'\n\nimport { getHandle, InputRef, SocialMediaSites } from '@chem-po/core'\nimport { SocialMediaField } from '@chem-po/react'\nimport { FC, ForwardedRef, forwardRef, useCallback, useImperativeHandle, useMemo } from 'react'\nimport { FieldProps } from '../types'\n\nconst facebookLogo = '/icons/facebook.svg'\nconst instagramLogo = '/icons/instagram.svg'\nconst soundcloudLogo = '/icons/soundcloud.svg'\nconst twitterLogo = '/icons/twitter.svg'\nconst youtubeLogo = '/icons/youtube.svg'\n\nconst siteToIcon: Record<SocialMediaSites, any> = {\n facebook: facebookLogo,\n instagram: instagramLogo,\n twitter: twitterLogo,\n youtube: youtubeLogo,\n soundcloud: soundcloudLogo,\n}\n\nconst SocialMediaSiteInput: FC<{\n site: SocialMediaSites\n value?: string\n onChange: (v?: string) => void\n}> = ({ site, value, onChange }) => {\n const { handle, error } = useMemo(() => {\n try {\n const h = getHandle(site, value)\n return { handle: h }\n } catch (e: any) {\n return { error: e?.message ?? 'Error parsing handle' }\n }\n }, [value, site])\n const displayedText = useMemo(\n () => (handle ? `${site.toUpperCase()}: ${handle}` : site.toUpperCase()),\n [site, handle],\n )\n return (\n <Popover trigger=\"hover\">\n <PopoverTrigger>\n <Center opacity={handle ? 1 : 0.6} borderRadius=\"full\" width=\"34px\" height=\"34px\">\n <Image\n cursor=\"pointer\"\n filter={`grayscale(${handle ? 0 : 100}%)`}\n height=\"24px\"\n width=\"24px\"\n objectFit=\"contain\"\n src={siteToIcon[site]}\n />\n </Center>\n </PopoverTrigger>\n <PopoverContent w=\"auto\">\n <PopoverBody overflow=\"hidden\" borderRadius={4} p={0} w=\"auto\">\n <VStack spacing={0} p={2} w=\"300px\" align=\"flex-start\">\n <Text fontSize=\"md\">{displayedText}</Text>\n\n <Collapse in={!!error} style={{ width: '100%' }}>\n <Text px={1} bg=\"red.500\" fontSize=\"sm\" color=\"white\">\n {error}\n </Text>\n </Collapse>\n <Input\n onChange={e => onChange(e.target.value)}\n placeholder=\"Handle or URL\"\n width=\"100%\"\n value={value}\n size=\"md\"\n />\n </VStack>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n )\n}\nexport const SocialMediaComponent = forwardRef<InputRef, FieldProps<SocialMediaField>>(\n (props: FieldProps<SocialMediaField>, ref: ForwardedRef<InputRef>) => {\n const {\n input: { value, onChange },\n field: { sites },\n } = props\n const handleChange = useCallback(\n (site: SocialMediaSites, v?: string) => {\n const { [site]: _curr, ...rest } = value ?? {}\n if (!v && Object.keys(rest).length === 0) {\n onChange({ target: { value: undefined } })\n }\n if (!v) onChange(rest)\n onChange({ ...rest, [site]: v })\n },\n [onChange, value],\n )\n\n useImperativeHandle(ref, () => ({\n blur: () => {},\n focus: () => {},\n }))\n\n return (\n <VStack w=\"100%\" p={1}>\n <VStack borderRadius={4} p={2} spacing={0} w=\"100%\">\n <Text fontSize=\"md\">Links</Text>\n <HStack>\n {!sites || sites.facebook ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('facebook', v)}\n site=\"facebook\"\n value={value?.facebook}\n />\n ) : null}\n {!sites || sites.instagram ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('instagram', v)}\n site=\"instagram\"\n value={value?.instagram}\n />\n ) : null}\n {!sites || sites.twitter ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('twitter', v)}\n site=\"twitter\"\n value={value?.twitter}\n />\n ) : null}\n {!sites || sites.youtube ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('youtube', v)}\n site=\"youtube\"\n value={value?.youtube}\n />\n ) : null}\n {!sites || sites.soundcloud ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('soundcloud', v)}\n site=\"soundcloud\"\n value={value?.soundcloud}\n />\n ) : null}\n </HStack>\n </VStack>\n </VStack>\n )\n },\n)\n\nSocialMediaComponent.displayName = 'SocialMediaComponent'\n","import { switchAnatomy } from '@chakra-ui/anatomy'\nimport { createMultiStyleConfigHelpers, extendTheme } from '@chakra-ui/react'\nimport { cssVar } from '@chakra-ui/theme-tools'\nimport { palette } from '@chem-po/core'\n\nconst { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(\n switchAnatomy.keys,\n)\n\nconst switchBaseTheme = definePartsStyle({\n // define the part you're going to style\n track: {\n _focusVisible: {\n boxShadow: 'none',\n },\n },\n})\n\nexport const switchTheme = defineMultiStyleConfig({ baseStyle: switchBaseTheme })\nconst $arrowBg = cssVar('popper-arrow-bg')\n\nexport const headingFont = 'Encode Sans'\nexport const bodyFont = 'Noto Sans'\n\nexport const baseTheme = extendTheme({\n semanticTokens: {\n colors: {\n background: {\n // 100: mode('gray.50', palette.gray.dark)(props),\n // 200: mode('gray.100', palette.gray.medium)(props),\n // 300: mode('gray.200', palette.gray.light)(props),\n // 400: mode('gray.300', palette.gray.lighter)(props),\n 50: {\n default: 'white',\n _dark: palette.gray.darker,\n },\n 100: {\n default: 'gray.100',\n _dark: palette.gray.dark,\n },\n 200: {\n default: '#efefef',\n _dark: palette.gray.medium,\n },\n },\n accent: {\n 50: {\n default: 'blue.50',\n _dark: 'blue.900',\n },\n 100: {\n default: 'blue.100',\n _dark: 'blue.800',\n },\n 200: {\n default: 'blue.200',\n _dark: 'blue.700',\n },\n 300: {\n default: 'blue.300',\n _dark: 'blue.600',\n },\n 400: {\n default: 'blue.400',\n _dark: 'blue.500',\n },\n 500: {\n default: 'blue.500',\n _dark: 'blue.400',\n },\n 600: {\n default: 'blue.600',\n _dark: 'blue.300',\n },\n 700: {\n default: 'blue.700',\n _dark: 'blue.200',\n },\n 800: {\n default: 'blue.800',\n _dark: 'blue.100',\n },\n 900: {\n default: 'blue.900',\n _dark: 'blue.50',\n },\n },\n error: {\n default: 'red.500',\n _dark: 'red.300',\n },\n },\n fonts: {\n body: bodyFont,\n heading: headingFont,\n },\n },\n components: {\n Badge: {\n baseStyle: {\n bg: '#9a9a9a',\n textShadow: 'none',\n color: 'white',\n boxShadow: '1px 1px 3px #00000077',\n _dark: {\n bg: '#555555',\n textShadow: '1px 1px 2px #00000077',\n color: '#efefef',\n },\n },\n },\n Tooltip: {\n baseStyle: {\n bg: '#ababab',\n textShadow: '0 0 3px rgba(0,0,0,0.5)',\n color: 'white',\n [$arrowBg.variable]: '#ababab',\n _dark: {\n bg: '#777777',\n textShadow: 'none',\n color: '#efefef',\n [$arrowBg.variable]: '#777777',\n },\n },\n },\n Button: {\n baseStyle: {\n fontFamily: headingFont,\n fontWeight: 500,\n _focus: { boxShadow: 'none' },\n },\n variants: {\n link: {\n color: '#444',\n _dark: { color: 'rgba(230,230,255,0.9)' },\n },\n ghost: {\n _hover: { bg: 'blackAlpha.500' },\n },\n solid: {\n textShadow: '1px 1px 3px #00000077',\n bg: 'blackAlpha.400',\n color: 'whiteAlpha.800',\n _hover: {\n bg: 'blackAlpha.500',\n },\n _dark: {\n bg: 'whiteAlpha.300',\n color: 'whiteAlpha.800',\n _hover: {\n bg: 'whiteAlpha.400',\n },\n },\n },\n outline: {\n border: '1px solid',\n borderColor: '#ababab',\n color: '#656565',\n _hover: {\n bg: 'blackAlpha.100',\n },\n _dark: {\n border: '1px solid #999',\n color: '#999',\n _hover: {\n bg: 'whiteAlpha.300',\n },\n },\n },\n },\n },\n Tabs: {\n baseStyle: {\n tab: { _focus: { boxShadow: 'none' } },\n },\n },\n Text: {\n baseStyle: {\n fontFamily: bodyFont,\n },\n },\n Popover: {\n baseStyle: {\n root: { _focus: { boxShadow: 'none' } },\n content: {\n bg: 'background.100',\n border: 'none',\n boxShadow: '0 0 4px rgba(0,0,0,0.5)',\n [$arrowBg.variable]: 'background.100',\n _dark: {\n bg: 'background.100',\n [$arrowBg.variable]: 'background.100',\n },\n },\n },\n },\n Checkbox: {\n baseStyle: {\n control: {\n _focus: { boxShadow: 'none' },\n border: '2px solid #ababab',\n borderColor: '#ababab',\n _checked: {\n bg: '#666666',\n color: '#efefef',\n border: 'none',\n },\n _hover: { bg: '#555', border: 'none' },\n _dark: {\n _checked: {\n bg: '#efefef',\n color: '#444444',\n border: 'none',\n },\n _hover: { bg: '#555', border: 'none' },\n },\n },\n label: {\n color: '#888',\n _dark: { color: '#999999' },\n _checked: {\n color: '#444444',\n _dark: { color: '#cdcdcd' },\n },\n },\n },\n variants: {\n noBox: {\n control: {\n bg: 'transparent',\n _hover: { bg: 'none' },\n },\n },\n },\n },\n Modal: {\n baseStyle: {\n dialog: {\n bg: 'background.100',\n boxShadow: '0 0 6px rgba(0,0,0,0.5)',\n _dark: {\n bg: 'background.100',\n },\n },\n },\n },\n Input: {\n baseStyle: {\n field: {\n _focus: {\n boxShadow: 'none',\n outline: 'none',\n border: '1px solid #bcbcbc',\n },\n },\n },\n variants: {\n text: {\n field: {\n borderRadius: 6,\n border: '1px solid #dedede',\n _focus: { boxShadow: 'none', borderColor: '#bcbcbc' },\n _active: { boxShadow: 'none' },\n _placeholder: { color: '#777' },\n _dark: {\n border: '1px solid #777',\n _focus: { borderColor: '#999', boxShadow: 'none' },\n _placeholder: { color: '#777' },\n },\n },\n },\n },\n defaultProps: {\n variant: 'text',\n },\n },\n Switch: switchTheme,\n Menu: {\n baseStyle: {\n list: {\n bg: 'background.100',\n border: 'none',\n boxShadow: '0 0 6px rgba(0,0,0,0.5)',\n _dark: {\n bg: 'background.100',\n },\n },\n item: {\n _hover: {\n bg: 'rgba(0,0,0,0.3)',\n },\n _focus: {\n bg: 'rgba(0,0,0,0.2)',\n },\n },\n },\n },\n Progress: {\n baseStyle: {\n track: {\n bg: 'blackAlpha.300',\n borderRadius: 'full',\n _dark: {\n bg: 'whiteAlpha.300',\n },\n },\n filledTrack: {\n bg: 'blackAlpha.400',\n _dark: {\n bg: 'whiteAlpha.500',\n },\n },\n },\n },\n },\n})\n","import { InputRef } from '@chem-po/core'\nimport { TextField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle, useRef } from 'react'\nimport TextareaAutosize from 'react-textarea-autosize'\nimport { bodyFont } from '../../../../contexts'\nimport { FieldProps } from '../types'\n\nexport const TextAreaComponent = forwardRef<InputRef, FieldProps<TextField>>(\n ({ input, field, inEditable }, ref: ForwardedRef<InputRef>) => {\n const inputRef = useRef<HTMLTextAreaElement>(null)\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n return (\n <TextareaAutosize\n placeholder={field.placeholder}\n minRows={2}\n maxRows={5}\n ref={inputRef}\n style={{\n // height: 'auto',\n resize: 'none',\n width: '100%',\n color: bodyFont,\n background: 'none',\n fontFamily: 'fonts.body',\n boxSizing: 'border-box',\n borderRadius: '4px',\n padding: inEditable ? 0 : '0.6rem 1rem',\n border: 'none',\n outline: 'none',\n }}\n {...input}\n />\n )\n },\n)\n\nTextAreaComponent.displayName = 'TextAreaComponent'\n","import { ViewIcon, ViewOffIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton, Input } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { TextField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport { FieldProps } from '../types'\nimport { TextAreaComponent } from './textarea'\n\nexport const TextComponent = forwardRef<InputRef, FieldProps<TextField>>(\n ({ input, inEditable, meta, field }, ref) => {\n const { placeholder, type } = field\n const [isHidden, setIsHidden] = useState(type === 'password')\n const { value } = input\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n const body =\n type === 'textarea' ? (\n <TextAreaComponent inEditable={inEditable} field={field} input={input} meta={meta} />\n ) : (\n <Input\n ref={inputRef as any}\n border=\"none\"\n _dark={{\n border: 'none',\n }}\n borderRadius={0}\n px={inEditable ? 0 : 3}\n background=\"transparent\"\n _focus={{\n border: 'none',\n }}\n py={inEditable ? 0 : 0.5}\n type={isHidden ? 'password' : 'text'}\n height={inEditable ? 'auto' : 10}\n placeholder={placeholder}\n {...input}\n onChange={e => {\n input.onChange({ target: { value: e.target.value } })\n }}\n value={value ?? ''}\n />\n )\n\n return type === 'password' ? (\n <Flex width=\"100%\" position=\"relative\" align=\"center\">\n {body}\n <IconButton\n position=\"absolute\"\n right={2}\n onClick={() => setIsHidden(!isHidden)}\n variant=\"ghost\"\n icon={isHidden ? <ViewIcon /> : <ViewOffIcon />}\n aria-label={isHidden ? 'show' : 'hide'}\n title={isHidden ? 'Show' : 'Hide'}\n size=\"xs\"\n />\n </Flex>\n ) : (\n body\n )\n },\n)\n\nTextComponent.displayName = 'TextComponent'\n","import { Flex, FlexProps, Text, VStack } from '@chakra-ui/react'\nimport { FieldType, InputRef } from '@chem-po/core'\nimport { Field, TypedField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, ForwardRefExoticComponent, useMemo } from 'react'\nimport { BooleanComponent } from './boolean'\nimport { ColorComponent } from './color'\nimport { DateInput } from './date'\nimport { DateTimeInput } from './datetime'\nimport { FileComponent } from './file'\nimport { MultipleSelectComponent } from './multipleSelect'\nimport { CurrencyAmountComponent, NumberComponent } from './number'\nimport { OptionalTag } from './OptionalTag'\nimport { SelectComponent } from './select'\nimport { SocialMediaComponent } from './socialMedia'\nimport { TextComponent } from './text'\nimport { TimeInput } from './time'\nimport { FieldProps } from './types'\n\ntype ComponentType<T extends Field> = ForwardRefExoticComponent<\n FieldProps<T> & React.RefAttributes<InputRef>\n>\n\nconst Components: { [Key in FieldType]: ComponentType<TypedField<Key>> } = {\n text: TextComponent,\n file: FileComponent,\n boolean: BooleanComponent,\n select: SelectComponent,\n multipleSelect: MultipleSelectComponent,\n currency: CurrencyAmountComponent,\n number: NumberComponent,\n date: DateInput,\n datetime: DateTimeInput,\n time: TimeInput,\n socialMedia: SocialMediaComponent,\n color: ColorComponent,\n}\n\nconst InputBase = <T extends Field>(props: FieldProps<T>, ref: ForwardedRef<InputRef>) => {\n const {\n field,\n meta: { error, active, touched },\n input,\n inEditable,\n } = props\n\n const { value } = input\n\n const color = useMemo(() => {\n if (error && touched) return '#ff7777'\n if (active) return 'rgba(0,0,0,0.7)'\n return 'rgba(0,0,0,0.3)'\n }, [error, active, touched])\n const { _type, optional, label } = field\n const showPlaceholder = useMemo(\n () => _type === 'multipleSelect' || (!!value && _type !== 'file' && _type !== 'boolean'),\n [value, _type],\n )\n const styles = useMemo<FlexProps>(() => {\n if (inEditable) return {}\n switch (_type) {\n case 'text':\n case 'number':\n case 'currency':\n case 'select':\n return { boxShadow: `0 0 7px ${color}`, transition: 'all 300ms', bg: 'background.50' }\n default:\n return {}\n }\n }, [_type, color, inEditable])\n const Component = useMemo(() => Components[_type] as ComponentType<T>, [_type])\n\n const pb = useMemo(() => {\n if (inEditable) return 0\n return error && touched ? 6 : 2\n }, [inEditable, error, touched])\n return (\n <VStack\n position=\"relative\"\n align=\"flex-start\"\n width=\"100%\"\n py={inEditable ? 0 : 1}\n px={1}\n spacing={0}\n pb={pb}\n transition=\"all 500ms\"\n pt={showPlaceholder && !inEditable ? 4 : 0}>\n {label && !inEditable ? (\n <Text color=\"gray.800\" fontSize=\"sm\" px={2}>\n {label}\n </Text>\n ) : null}\n <Flex width=\"100%\" borderRadius={4} py={0.5} overflow=\"hidden\" {...styles}>\n <Component ref={ref} {...props} />\n </Flex>\n {inEditable ? null : (\n <>\n <Text\n opacity={error && touched ? 1 : 0}\n transition={`opacity 500ms ease ${error && touched ? 250 : 0}ms`}\n position=\"absolute\"\n bottom=\"0px\"\n fontSize=\"sm\"\n px={1}\n pointerEvents=\"none\"\n color=\"red.600\">\n {error}\n </Text>\n <Text\n opacity={showPlaceholder ? 1 : 0}\n transition={`opacity 500ms ease ${showPlaceholder ? 250 : 0}ms`}\n position=\"absolute\"\n top=\"-4px\"\n pointerEvents=\"none\"\n fontSize=\"sm\"\n fontFamily=\"fonts.heading\"\n px={1}\n color=\"blackAlpha.600\"\n _dark={{\n color: 'whiteAlpha.600',\n }}>\n {field.placeholder || ''}\n </Text>\n </>\n )}\n {optional && !inEditable ? <OptionalTag field={field} value={value} /> : null}\n </VStack>\n )\n}\n\nexport const Input = forwardRef<InputRef, FieldProps<Field>>(InputBase)\n","import { Button, ButtonProps, Collapse, Flex, HStack, Progress, Text } from '@chakra-ui/react'\n\nimport { FC, PropsWithChildren } from 'react'\n\nimport { FormProps, useChempoForm, UseSubmitData } from '@chem-po/react'\nimport { useFormState } from 'react-hook-form'\nimport { UploadProgress } from './UploadProgress'\n\nconst CancelButton = ({ onBack, children }: PropsWithChildren<{ onBack: () => void }>) => (\n <Button\n flex={1}\n transition=\"all 500ms\"\n onClick={onBack}\n variant=\"outline\"\n border=\"1px solid #cdcdcd\"\n color=\"#777\"\n ml=\"auto\">\n {children}\n </Button>\n)\nexport const SubmitButton: FC<{ onSubmitClick: () => void; submitting: boolean } & ButtonProps> = ({\n onSubmitClick,\n submitting,\n children,\n filter,\n opacity,\n}) => (\n <Button\n isLoading={submitting}\n filter={filter}\n flex={1}\n transition=\"all 500ms\"\n opacity={opacity}\n onClick={onSubmitClick}\n ml=\"auto\"\n variant=\"solid\">\n {children}\n </Button>\n)\n\nconst FormErrorView = () => {\n const { formError } = useChempoForm()\n return (\n <Collapse in={!!formError}>\n <Text color=\"red\">{formError ?? ''}</Text>\n </Collapse>\n )\n}\n\nexport const FormFooter = ({\n isLoading,\n uploads,\n onSubmit,\n renderFooter,\n onBack,\n buttonText,\n}: Pick<FormProps, 'renderFooter' | 'onBack' | 'buttonText'> &\n Pick<UseSubmitData, 'isLoading' | 'uploads'> & {\n onSubmit: () => void\n }) => {\n const { isSubmitting: submitting, isValid: valid } = useFormState()\n return (\n <Flex w=\"100%\" flexFlow=\"column\">\n <Collapse endingHeight={5} style={{ width: '100%' }} in={isLoading}>\n <Progress w=\"100%\" h=\"5px\" isIndeterminate />\n </Collapse>\n <UploadProgress uploads={uploads} />\n <FormErrorView />\n {renderFooter ? (\n renderFooter({})\n ) : (\n <HStack py={2} borderTop=\"1px solid\" borderColor=\"background.200\" px={3} w=\"100%\">\n {onBack ? <CancelButton onBack={onBack}>Cancel</CancelButton> : null}\n <SubmitButton\n size=\"sm\"\n filter={`grayscale(${!valid ? 100 : 0}%)`}\n opacity={!valid ? 0.5 : 1}\n onSubmitClick={onSubmit}\n submitting={submitting}>\n {buttonText}\n </SubmitButton>\n </HStack>\n )}\n </Flex>\n )\n}\n","import { Center, Flex, Progress, Text } from '@chakra-ui/react'\nimport { UploadsProgressEvent } from '@chem-po/core'\nimport { useMemo } from 'react'\nimport { TransitionGroup } from 'react-transition-group'\nimport { ExpandOnMount } from '../../box'\nimport './styles.css'\n\nexport const UploadProgress = ({ uploads }: { uploads: UploadsProgressEvent }) => {\n const asArr = useMemo(() => Object.values(uploads), [uploads])\n return (\n <TransitionGroup component={Flex} width=\"100%\" flexFlow=\"column\">\n {asArr.map(upload => (\n <ExpandOnMount key={upload.label}>\n <Center px={2} height=\"26px\" position=\"relative\" w=\"100%\" flexDirection=\"column\">\n <Progress\n borderRadius=\"full\"\n value={upload.percent * 100}\n mx={2}\n my={1}\n size=\"md\"\n height=\"100%\"\n width=\"100%\"\n />\n <Text\n fontFamily=\"fonts.heading\"\n textShadow=\"1px 1px 3px #000000aa\"\n color=\"white\"\n position=\"absolute\"\n fontSize=\"sm\"\n fontWeight={500}>\n {upload.label.toUpperCase()}\n </Text>\n </Center>\n </ExpandOnMount>\n ))}\n </TransitionGroup>\n )\n}\n","import { Box, Flex, Text } from '@chakra-ui/react'\nimport { ImageViewOptions } from '@chem-po/core'\nimport { FileField } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\nimport { ExpandOnMount } from '../../box/ExpandOnMount'\nimport { FileView } from '../input/file'\n\nexport const FileFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: FileField\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { imageOptions, placeholder } = field\n const options = useMemo<ImageViewOptions>(\n () => ({\n height: 150,\n ...imageOptions,\n }),\n [imageOptions],\n )\n return (\n <Flex flexFlow={value ? 'column' : 'row'} style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? (\n <ExpandOnMount>\n <Box p={1}>\n <FileView imageOptions={options} value={value} />\n </Box>\n </ExpandOnMount>\n ) : (\n <Text opacity={0.7}>None</Text>\n )}\n </Flex>\n )\n}\n","import { Box, Text } from '@chakra-ui/react'\n\nimport { Flex, useColorMode } from '@chakra-ui/react'\nimport { MultipleSelectField } from '@chem-po/react'\nimport { CSSProperties } from 'react'\n\nexport const MultipleSelectFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: MultipleSelectField\n value: any[]\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder, renderOption } = field\n const { colorMode } = useColorMode()\n return (\n <Flex maxW=\"100%\" flexFlow=\"row wrap\" align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? (\n value.map((v: any) => (\n <Box key={field.getOptionKey ? field.getOptionKey(v) : v} p={0.5}>\n {renderOption(v, colorMode, true)}\n </Box>\n ))\n ) : (\n <Text opacity={0.6}>None</Text>\n )}\n </Flex>\n )\n}\n","import { Flex, Text, useColorMode } from '@chakra-ui/react'\nimport { SelectField } from '@chem-po/react'\nimport { CSSProperties } from 'react'\n\nconst DefaultRenderOption = (value: any) => {\n return <Text>{typeof value === 'string' ? value : JSON.stringify(value)}</Text>\n}\n\nexport const SelectFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: SelectField\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder, renderOption: customRender } = field\n const { colorMode } = useColorMode()\n const renderOption = customRender ?? DefaultRenderOption\n return (\n <Flex align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? renderOption(value, colorMode, true) : 'None'}\n </Flex>\n )\n}\n","import { Flex, Text } from '@chakra-ui/react'\n\nimport { formatField } from '@chem-po/core'\nimport { Field } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\nimport { FileFieldView } from './file'\nimport { MultipleSelectFieldView } from './multipleSelect'\nimport { SelectFieldView } from './select'\n\nconst DefaultFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: Field\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder } = field\n\n const formatted = useMemo(() => {\n const format = formatField[field._type]\n if (!format) return value\n return format(field, value)\n }, [value, field])\n return (\n <Flex align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n <Text opacity={value !== undefined && value !== null ? 1 : 0.6}>{formatted ?? 'None'}</Text>\n </Flex>\n )\n}\n\nexport const FieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: Field\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n switch (field._type) {\n case 'select':\n return <SelectFieldView style={style} field={field} value={value} noLabel={noLabel} />\n case 'multipleSelect':\n return <MultipleSelectFieldView style={style} field={field} value={value} noLabel={noLabel} />\n case 'file':\n return <FileFieldView style={style} field={field} value={value} noLabel={noLabel} />\n default:\n return <DefaultFieldView style={style} field={field} value={value} noLabel={noLabel} />\n }\n}\n","import { InputRef } from '@chem-po/core'\nimport { Field, useStandaloneInput } from '@chem-po/react'\nimport { CSSProperties, ForwardedRef, forwardRef } from 'react'\nimport { Input } from './input'\n\nconst StandaloneInputBase = (\n {\n onChange,\n value,\n field,\n onBlur,\n inEditable,\n onFocus,\n style,\n }: {\n onChange: (v?: any) => void\n value?: any\n field: Field\n onBlur?: () => void\n onFocus?: () => void\n theme?: 'basic' | 'detailed'\n inEditable?: boolean\n style?: CSSProperties\n },\n ref: ForwardedRef<InputRef>,\n) => {\n const { inputProps, meta } = useStandaloneInput(field, value, onChange, onFocus, onBlur)\n\n return (\n <Input\n ref={ref}\n field={field}\n inEditable={inEditable}\n style={style}\n input={inputProps}\n meta={meta}\n />\n )\n}\n\nexport const StandaloneInput = forwardRef(StandaloneInputBase)\n","import { CheckIcon, CloseIcon, EditIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton } from '@chakra-ui/react'\nimport { palette } from '@chem-po/core'\nimport {\n ChempoFormProvider,\n EditableProps,\n Field,\n useColorModeValue,\n useEditable,\n} from '@chem-po/react'\nimport { CSSProperties, useEffect, useMemo } from 'react'\nimport { LoadingOverlay } from '../../loading/Loading'\nimport { UploadProgress } from '../UploadProgress'\nimport { FieldView } from '../view'\nimport { StandaloneInput } from './StandaloneInput'\n\nexport const Editable = <T extends Field>({\n value: initValue,\n field,\n onSubmit,\n storagePath,\n style,\n onEditClose,\n onEditOpen,\n}: EditableProps<CSSProperties, T>) => {\n const {\n formattedValue,\n inputRef,\n setValue,\n isLoading,\n uploads,\n editHovered,\n handleEditOpen,\n handleEditClose,\n isEditing,\n value,\n setEditHovered,\n submit,\n parse,\n } = useEditable({\n value: initValue,\n field,\n onSubmit,\n storagePath,\n onEditOpen,\n onEditClose,\n })\n const alwaysEditing = useMemo(() => field._type === 'file' || field._type === 'boolean', [field])\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus()\n }\n }, [isEditing, inputRef])\n\n const editingBorderColor = useColorModeValue('#00000055', '#ffffff55')\n\n return (\n <ChempoFormProvider>\n <Flex\n borderRadius={4}\n border={`1px dashed ${editHovered && !isEditing ? editingBorderColor : 'transparent'}`}\n flexFlow=\"column\"\n w=\"100%\">\n <Flex align=\"center\" px={1} position=\"relative\" w=\"100%\">\n <Flex\n opacity={isLoading ? 0 : 1}\n transition=\"all 300ms\"\n mr={1}\n border={`1px dashed ${isEditing ? editingBorderColor : 'transparent'}`}\n flex={1}\n minW=\"0\">\n {isEditing || alwaysEditing ? (\n <StandaloneInput\n ref={inputRef}\n value={formattedValue}\n inEditable\n field={field}\n style={{ padding: 0, ...style }}\n onChange={alwaysEditing ? v => submit(parse(v)) : v => setValue(parse(v))}\n />\n ) : (\n <FieldView style={style} field={field} value={value} />\n )}\n </Flex>\n {alwaysEditing ? null : (\n <>\n <IconButton\n aria-label=\"Edit\"\n size=\"xs\"\n icon={isEditing ? <CloseIcon width={3} /> : <EditIcon />}\n onMouseEnter={() => setEditHovered(true)}\n onMouseLeave={() => setEditHovered(false)}\n onClick={() => {\n if (isEditing) {\n setValue(value)\n handleEditClose()\n } else handleEditOpen()\n }}\n />\n <Flex\n transition=\"all 300ms\"\n justify=\"flex-end\"\n opacity={isEditing ? 1 : 0}\n overflow=\"hidden\"\n w={isEditing ? '30px' : '0px'}>\n <IconButton\n aria-label=\"Edit\"\n size=\"xs\"\n bg={palette.cyan.light}\n _dark={{ bg: palette.cyan.light, _hover: { bg: palette.cyan.lighter } }}\n _hover={{\n bg: palette.cyan.medium,\n }}\n icon={<CheckIcon filter=\"drop-shadow(1px 1px 3px #000000aa)\" />}\n onClick={() => {\n submit(value)\n }}\n />\n </Flex>\n </>\n )}\n <LoadingOverlay isLoading={isLoading} />\n </Flex>\n <UploadProgress uploads={uploads} />\n </Flex>\n </ChempoFormProvider>\n )\n}\n","import { CloseIcon, DeleteIcon, DragHandleIcon, EditIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Stack,\n Text,\n useColorModeValue,\n VStack,\n} from '@chakra-ui/react'\nimport { isField, isListField } from '@chem-po/core'\nimport {\n ChempoFormProvider,\n DataViewProps,\n DataViewProvider,\n FieldFormProps,\n FieldMap,\n FieldMapFormProps,\n FormProps,\n IFormElement,\n ListField,\n useDataView,\n useFormSubmit,\n useSubmitData,\n UseSubmitDataProps,\n} from '@chem-po/react'\nimport { DragDropContext, Draggable, Droppable, DropResult } from '@hello-pangea/dnd'\nimport { FC, useMemo, useState } from 'react'\nimport { FieldValues, useFieldArray, UseFieldArrayMove, useFormContext } from 'react-hook-form'\nimport { useBorderColor } from '../../hooks'\nimport { Expandable } from '../box'\nimport { ExpandOnMount } from '../box/ExpandOnMount'\nimport { DeleteButton } from '../button/DeleteButton'\nimport { Condition } from './Condition'\nimport { FieldComponent } from './Field'\nimport { FormFooter } from './FormFooter'\nimport { Editable } from './input/Editable'\nimport { FieldView } from './view'\n\nconst makeOnDragEndFunction = (move: UseFieldArrayMove) => (result: DropResult) => {\n // dropped outside the list\n if (!result.destination) {\n return\n }\n\n move(result.source.index, result.destination.index)\n}\n\nexport const ListFieldInput: FC<{ field: ListField; name: string }> = ({ field, name }) => {\n const emptyData = useMemo(() => {\n if (isField(field.itemField)) return ''\n if (isListField(field.itemField)) return []\n return {}\n }, [field])\n const draggingBg = useColorModeValue('#efefef', '#2b2b2b')\n const borderColor = useBorderColor()\n const { control } = useFormContext()\n const { fields, append, remove, move } = useFieldArray({\n control,\n name,\n })\n const onDragEnd = useMemo(() => makeOnDragEndFunction(move), [move])\n return (\n <Flex overflow=\"hidden\" gap={2} flexFlow=\"column\" w=\"100%\" px={2} py={1}>\n <Text lineHeight={1} opacity={0.7} fontSize=\"sm\">\n {field.placeholder}\n </Text>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"droppable\">\n {(droppableProvided, { draggingFromThisWith }) => (\n <Flex\n ref={droppableProvided.innerRef}\n flexFlow=\"column\"\n w=\"100%\"\n py={1}\n borderRadius={4}\n minH=\"30px\"\n align=\"flex\"\n {...droppableProvided.droppableProps}>\n {fields.length ? (\n fields.map((formField, idx) => (\n <Draggable key={formField.id} draggableId={formField.id} index={idx}>\n {({ dragHandleProps, draggableProps, innerRef }, { isDragging }) => (\n <Flex\n transition=\"all 300ms\"\n boxShadow={`2px 2px 4px #000000${isDragging ? '55' : '00'}`}\n borderRadius={4}\n pt={2}\n px={2}\n border={`1px solid ${borderColor}`}\n bg={`${draggingBg}${isDragging ? 'ff' : '00'}`}\n ref={innerRef}\n w=\"100%\"\n {...draggableProps}>\n <ExpandOnMount>\n <Flex\n opacity={draggingFromThisWith && !isDragging ? 0.5 : 1}\n gap={1}\n align=\"center\"\n w=\"100%\">\n <IconButton\n aria-label=\"drag\"\n size=\"xs\"\n opacity={0.8}\n variant=\"ghost\"\n icon={<DragHandleIcon />}\n {...dragHandleProps}\n />\n <Box minW=\"0\" flex={1}>\n <FormElement name={formField.id} field={field.itemField} />\n </Box>\n <IconButton\n aria-label=\"delete\"\n size=\"xs\"\n bg=\"red.600\"\n color=\"white\"\n icon={<DeleteIcon filter=\"drop-shadow(1px 1px 3px #00000088)\" />}\n onClick={e => {\n e.stopPropagation()\n remove(idx)\n }}\n />\n </Flex>\n </ExpandOnMount>\n </Flex>\n )}\n </Draggable>\n ))\n ) : (\n <Text fontSize=\"sm\" opacity={0.7} py={1} px={2}>\n No items\n </Text>\n )}\n {droppableProvided.placeholder}\n </Flex>\n )}\n </Droppable>\n </DragDropContext>\n <Flex>\n <Button mr=\"auto\" width=\"auto\" size=\"xs\" onClick={() => append(emptyData)}>\n + NEW\n </Button>\n </Flex>\n </Flex>\n )\n}\n\nexport const FormElement = ({\n field,\n name,\n // validate,\n}: {\n field: FormProps['field']\n name: string\n // validate?: boolean\n}) => {\n const fields = useMemo<Array<{ name: string; field: IFormElement }>>(() => {\n if (isField(field) || isListField(field)) return [{ name: 'value', field }]\n\n return Object.entries((field as FieldMap).children).map(([childName, childField]) => ({\n name: `${name ? `${name}.` : ''}${childName}`,\n field: childField,\n }))\n }, [field, name])\n return (\n <VStack spacing={1} w=\"100%\">\n {fields.map(f => {\n if (isListField(f.field)) {\n const b = <ListFieldInput key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n }\n if (isField(f.field)) {\n const b = <FieldComponent key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n }\n\n const b = <FormElement key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n })}\n </VStack>\n )\n}\nconst ListFieldView = ({\n field,\n value,\n path,\n}: {\n field: ListField\n value: any[]\n path: string\n}) => {\n const { itemField, placeholder } = field\n const borderColor = useBorderColor()\n return (\n <Box w=\"100%\" p={1}>\n <Expandable\n border={`1px solid ${borderColor}`}\n borderRadius={4}\n initExpanded\n header={() => <Text py={1}>{placeholder}</Text>}>\n <Flex flexFlow=\"column\" bg=\"background.200\" gap={2} px={2} py={1}>\n {value?.length ? (\n value.map((item, index) => (\n <Box\n bg=\"background.100\"\n key={`${path}.${index}`}\n border={`1px solid ${borderColor}`}\n borderRadius={3}>\n <FormElementView\n path={`${path}.${index}`}\n field={{ ...itemField, placeholder: `${placeholder} ${index + 1}` }}\n value={item}\n />\n </Box>\n ))\n ) : (\n <Text fontSize=\"sm\" opacity={0.7} py={1} px={2}>\n No items\n </Text>\n )}\n </Flex>\n </Expandable>\n </Box>\n )\n}\n\nconst FormElementView = ({\n field,\n value,\n path,\n storagePath,\n}: {\n field: IFormElement\n value: any\n path: string\n storagePath?: string\n}) => {\n const { updateField } = useDataView()\n if (isField(field)) {\n return updateField ? (\n <Editable\n storagePath={storagePath}\n field={field}\n value={value}\n onSubmit={v => updateField(path, v)}\n />\n ) : (\n <FieldView field={field} value={value} />\n )\n }\n if (isListField(field)) {\n return <ListFieldView path={path} field={field} value={value} />\n }\n return (\n <DataView\n storagePath={storagePath ? `${storagePath}.${path}` : undefined}\n path={path}\n field={field}\n />\n )\n}\n\nexport const DataView = ({\n field,\n value,\n onClose,\n onDelete,\n onSubmit,\n itemName,\n storagePath,\n path = '',\n}: DataViewProps & { path?: string }) => {\n const { name: fieldName, children } = field\n const [isEditing, setIsEditing] = useState(false)\n return (\n <DataViewProvider value={value} onSubmit={onSubmit}>\n <Expandable\n alwaysExpanded\n header={() => (\n <Flex align=\"center\" px={2} w=\"100%\">\n <Text py={2} fontSize=\"lg\" fontFamily=\"fonts.heading\">\n {fieldName}\n </Text>\n <Flex gap={2} align=\"center\" ml=\"auto\">\n {onDelete ? <DeleteButton onDelete={onDelete} itemName={itemName ?? 'item'} /> : null}\n {onSubmit ? (\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n minW={0}\n w={7}\n h={7}\n ml=\"auto\"\n aria-label=\"edit\"\n icon={<EditIcon />}\n onClick={() => setIsEditing(true)}\n />\n ) : null}\n {onClose ? (\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n minW={0}\n w={7}\n h={7}\n variant=\"ghost\"\n aria-label=\"close\"\n icon={<CloseIcon opacity={0.8} w={3} h={3} />}\n onClick={onClose}\n />\n ) : null}\n </Flex>\n </Flex>\n )}>\n {isEditing && onSubmit ? (\n <Form\n storagePath={storagePath}\n field={field}\n value={value}\n onSubmit={onSubmit}\n onBack={() => setIsEditing(false)}\n />\n ) : (\n <Flex flexFlow=\"column\" px={4} py={2}>\n {Object.entries(children).map(([key, childField]) => (\n <FormElementView\n storagePath={storagePath ? `${storagePath}/${key}` : undefined}\n path={path ? `${path}.${key}` : key}\n key={key}\n field={childField}\n value={value?.[key]}\n />\n ))}\n </Flex>\n )}\n </Expandable>\n </DataViewProvider>\n )\n}\n\nexport const FieldMapForm: FC<FieldMapFormProps> = ({\n onSubmit: onSubmitProp,\n onBack,\n field,\n value,\n buttonText = 'SUBMIT',\n renderFooter,\n storagePath,\n}) => {\n const useSubmitDataProps = useMemo<UseSubmitDataProps<FieldValues>>(\n () => ({\n field,\n value,\n onSubmit: onSubmitProp,\n storagePath,\n }),\n [field, value, onSubmitProp, storagePath],\n )\n const { submit, uploads, isLoading } = useSubmitData(useSubmitDataProps)\n\n const onSubmit = useFormSubmit(field, submit)\n\n return (\n <Stack w=\"100%\" spacing={3}>\n <form onSubmit={onSubmit}>\n <Box pt={1} px={2} w=\"100%\">\n <FormElement name=\"\" field={field} />\n </Box>\n <FormFooter\n isLoading={isLoading}\n uploads={uploads}\n onSubmit={onSubmit}\n renderFooter={renderFooter}\n onBack={onBack}\n buttonText={buttonText}\n />\n </form>\n </Stack>\n )\n}\n\nexport const FieldForm: FC<FieldFormProps> = ({ onSubmit, field, value, ...props }) => {\n const fieldMap = useMemo<FieldMap>(() => ({ children: { value: field } }), [field])\n return (\n <FieldMapForm field={fieldMap} value={{ value }} onSubmit={data => onSubmit(data)} {...props} />\n )\n}\n\nexport const Form: FC<FormProps> = ({ field, ...props }) => {\n const body =\n isField(field) || isListField(field) ? (\n <FieldForm field={field} {...props} />\n ) : (\n <FieldMapForm field={field} {...props} />\n )\n\n return <ChempoFormProvider>{body}</ChempoFormProvider>\n}\n","import { Flex, FlexProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport { FullSizeProvider } from '../box'\n\nexport const ListContainer = (props: FlexProps) => {\n const mounted = useMounted()\n return (\n <FullSizeProvider>\n <Flex\n overflow=\"hidden\"\n flexFlow=\"column\"\n h=\"100%\"\n w=\"100%\"\n opacity={mounted ? 1 : 0}\n transition=\"opacity 300ms\"\n {...props}\n />\n </FullSizeProvider>\n )\n}\n","import { Flex } from '@chakra-ui/react'\nimport { AnyObject, ColorMode, DBItem } from '@chem-po/core'\nimport { DataList, ListGridOptions } from '@chem-po/react'\nimport { GridChildComponentProps } from 'react-window'\n\nexport interface GridItemProps<T extends AnyObject> {\n list: DataList<T>\n grid: ListGridOptions<T>\n items: Array<DBItem<T>>\n colorMode: ColorMode\n numCols: number\n mobileLayout: boolean\n onSelect: (item: DBItem<T>) => void\n refetch?: (id: string) => Promise<void>\n}\nexport const ListCell = <T extends AnyObject>({\n data,\n rowIndex,\n columnIndex,\n style,\n}: GridChildComponentProps<GridItemProps<T>>) => {\n const { items, onSelect, refetch, grid, numCols, colorMode } = data || {}\n const { ItemPreview: Render } = grid\n\n const itemIdx = rowIndex * numCols + columnIndex\n const item = items[itemIdx]\n if (!item) return null\n return (\n <Flex\n display=\"flex\"\n cursor=\"pointer\"\n aria-label=\"list-item\"\n onClick={() => {\n onSelect(item)\n }}\n style={style}\n px={1}\n py={0.25}\n key={itemIdx}>\n {Render({\n index: itemIdx,\n item,\n refetch: refetch ? () => refetch(item._id) : undefined,\n colorMode,\n })}\n </Flex>\n )\n}\n","import { Flex, Text } from '@chakra-ui/react'\nimport { toPlural } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { Loading } from '../loading'\n\nexport const NoItemsRow = () => {\n const {\n list,\n search: { debounced, search },\n } = useDataList()\n const {\n data: { isLoading },\n } = usePaginatedList()\n const showLoading = useMemo(\n () => isLoading || debounced !== search,\n [isLoading, debounced, search],\n )\n const { itemName, pluralItemName, noItemsMessage, searchRequired } = list\n return (\n <Flex justify=\"center\" align=\"flex-start\" w=\"100%\" h=\"100%\">\n {showLoading ? (\n <Loading text={`Loading ${pluralItemName ?? toPlural(itemName)}`} />\n ) : (\n <Text textAlign=\"center\" flex={1} p={3} fontStyle=\"italic\" opacity={0.7}>\n {!debounced && searchRequired\n ? `Search ${pluralItemName ?? toPlural(itemName)}`\n : (noItemsMessage ?? `No ${pluralItemName ?? toPlural(itemName)}`)}\n </Text>\n )}\n </Flex>\n )\n}\n","import {\n AnyObject,\n arrayOperators,\n BaseQuery,\n QueryFilter,\n SearchPath,\n stringTransforms,\n} from '@chem-po/core'\nimport { FilterPreset } from '@chem-po/react'\nimport { Query, query, where } from 'firebase/firestore'\n\nexport const getIsDynamicSize = (itemHeight: number | ((item: any) => number)) =>\n typeof itemHeight === 'function'\n\nexport const getTextSearchQuery = <T extends AnyObject>(\n baseQuery: Query<T>,\n searchQuery: string,\n searchPath: SearchPath<T>,\n) => {\n let trimmed = searchQuery.trim()\n if (!trimmed) return baseQuery\n if (searchPath.transform) trimmed = stringTransforms[searchPath.transform](trimmed)\n return query(\n baseQuery,\n where(searchPath.prop, '>=', trimmed),\n where(searchPath.prop, '<=', `${trimmed}\\uf8ff`),\n )\n}\nexport const getSearchQueries = <T extends AnyObject>(\n baseQuery: Query<T>,\n searchData: BaseQuery<T>['search'],\n): Array<Query<T>> => {\n const { paths, query: search } = searchData\n if (!paths?.length || !search) return [baseQuery]\n return paths.map(path => getTextSearchQuery(baseQuery, search, path))\n}\nconst nativeFilterMatchesPreset = <T extends AnyObject>(\n nativeFilter: QueryFilter<T>,\n presetFilter: QueryFilter<T>,\n) => {\n if (nativeFilter.key !== presetFilter.key) return false\n if (nativeFilter.operator !== presetFilter.operator) return false\n if (arrayOperators.includes(nativeFilter.operator)) {\n const nativeValues = Array.isArray(nativeFilter.value)\n ? nativeFilter.value\n : [nativeFilter.value]\n const presetValues = Array.isArray(presetFilter.value)\n ? presetFilter.value\n : [presetFilter.value]\n if (presetValues.every(value => !nativeValues.includes(value))) return false\n return true\n }\n return nativeFilter.value === presetFilter.value\n}\n\nexport const filterMatchesPreset = <T extends AnyObject>(\n filter: QueryFilter<T>,\n { nativeFilter }: FilterPreset<T>,\n) => {\n const nativeFilters = Array.isArray(nativeFilter) ? nativeFilter : [nativeFilter]\n return nativeFilters.every(nativeFilter => nativeFilterMatchesPreset(nativeFilter, filter))\n}\n","import { AnyObject } from '@chem-po/core'\nimport { DataList, ListGridOptions, usePaginatedList } from '@chem-po/react'\nimport { useMemo } from 'react'\n\n// determine number of columns and rows based on data and grid options\n// if row height and column width are both variable, throw an error\n// if row height is variable, calculate dims based on data\n// if column width is variable, calculate dims based on data\ninterface CellDims {\n numRows: number\n numCols: number\n}\nconst getCellDims = <T extends AnyObject>(\n data: T[],\n grid: Required<DataList<T>>['grid'],\n gridWidth: number,\n): CellDims => {\n const { rowHeight, columnWidth } = grid\n if (typeof rowHeight !== 'number' && typeof columnWidth !== 'number') {\n throw new Error('Cannot have both variable row height and variable column width')\n }\n\n if (typeof columnWidth === 'function') {\n const numCols = Math.floor(gridWidth / columnWidth(data[0]))\n const numRows = Math.ceil(data.length / numCols)\n return { numRows, numCols }\n }\n const numCols = Math.max(1, Math.floor(gridWidth / columnWidth))\n const numRows = Math.ceil(data.length / numCols)\n return { numRows, numCols }\n}\n\ntype CellSize = CellDims & {\n rowHeight: number | ((idx: number) => number)\n colWidth: number | ((idx: number) => number)\n}\n\nconst getCellSize = <T extends AnyObject>(\n data: T[],\n grid: Required<DataList<T>>['grid'],\n gridWidth: number,\n): CellSize => {\n const { rowHeight: preferredHeight, columnWidth: preferredWidth } = grid\n const { numRows, numCols } = getCellDims(data, grid, gridWidth)\n\n const colWidths =\n typeof preferredWidth === 'number'\n ? gridWidth / numCols\n : Array.from({ length: numCols }, (_i, i) => {\n const col = data.filter((_j, j) => j % numCols === i)\n return col.reduce((acc, item) => {\n const itemWidth = preferredWidth(item)\n return Math.max(acc, itemWidth)\n }, 0)\n })\n\n const rowHeights =\n typeof preferredHeight === 'number'\n ? preferredHeight\n : Array.from({ length: numRows }, (_, i) => {\n const row = data.slice(i * numCols, (i + 1) * numCols)\n return row.reduce((acc, item) => {\n const itemHeight = preferredHeight(item)\n return Math.max(acc, itemHeight)\n }, 0)\n })\n\n const rowHeight = Array.isArray(rowHeights) ? (idx: number) => rowHeights[idx] : rowHeights\n const colWidth = Array.isArray(colWidths) ? (idx: number) => colWidths[idx] : colWidths\n\n return {\n rowHeight,\n colWidth,\n numCols,\n numRows,\n }\n}\n\nexport const useGridDims = <T extends AnyObject>(grid: ListGridOptions<T>, width: number) => {\n const {\n data: { data },\n } = usePaginatedList<T>()\n return useMemo(() => getCellSize(data, grid, width), [data, grid, width])\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { ListGridOptions, useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport {\n FixedSizeGrid,\n GridOnItemsRenderedProps,\n ListOnItemsRenderedProps,\n VariableSizeGrid,\n} from 'react-window'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { GridItemProps, ListCell } from '../ListItem/ListCell'\nimport { ListItemProps } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\nimport { useGridDims } from './hooks'\n\nexport const InfiniteScrollGridBody = <T extends AnyObject>({\n height,\n options,\n}: {\n height: number\n options: ListGridOptions<T>\n}) => {\n const {\n totalCount,\n data: { data: items },\n refetchItem,\n isItemLoaded,\n goNext: fetchMoreData,\n } = usePaginatedList<T>()\n const { list, onSelectItem, mobileLayout, query } = useDataList<T>()\n const { width } = useFullSize()\n const { numCols, numRows, rowHeight, colWidth } = useGridDims<T>(options, width)\n const { previewHeight, mobile } = list\n const { colorMode } = useColorMode()\n const itemData = useMemo<GridItemProps<T>>(\n () => ({\n list,\n items,\n mobileLayout,\n grid: options,\n colorMode,\n numCols,\n onSelect: (item: WithId<T>) => onSelectItem(item._id),\n refetch: refetchItem,\n }),\n [items, list, refetchItem, onSelectItem, mobileLayout, numCols, options, colorMode],\n )\n\n const varRef = useRef<VariableSizeGrid | null>(null)\n\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n useEffect(() => {\n const varGrid = varRef.current\n if (varGrid) {\n varGrid.resetAfterColumnIndex(0)\n varGrid.resetAfterRowIndex(0)\n }\n }, [query])\n\n const infiniteLoaderRef = useRef<InfiniteLoader>(null)\n useEffect(() => {\n if (infiniteLoaderRef.current) {\n infiniteLoaderRef.current.resetloadMoreItemsCache(true)\n }\n }, [totalCount])\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n const itemKey = useCallback(\n ({\n columnIndex,\n rowIndex,\n data,\n }: {\n columnIndex: number\n rowIndex: number\n data: ListItemProps<T>\n }) => {\n const index = rowIndex * numCols + columnIndex\n return data.items[index]?._id || `${index}`\n },\n [numCols],\n )\n\n const onRendered = useCallback(\n (\n {\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n }: GridOnItemsRenderedProps,\n onItemsRendered: (p: ListOnItemsRenderedProps) => void,\n ) => {\n const start = visibleRowStartIndex * numCols + visibleColumnStartIndex\n const stop = visibleRowStopIndex * numCols + visibleColumnStopIndex\n const overscanStart = overscanRowStartIndex * numCols + overscanColumnStartIndex\n const overscanStop = overscanRowStopIndex * numCols + overscanColumnStopIndex\n onItemsRendered({\n overscanStartIndex: overscanStart,\n overscanStopIndex: overscanStop,\n visibleStartIndex: start,\n visibleStopIndex: stop,\n })\n },\n [numCols],\n )\n\n if (!items.length) {\n return <NoItemsRow />\n }\n\n return isDynamicHeight ? (\n <InfiniteLoader\n isItemLoaded={isItemLoaded}\n ref={infiniteLoaderRef}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <VariableSizeGrid<GridItemProps<T>>\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as (idx: number) => number}\n columnWidth={colWidth as (idx: number) => number}\n itemData={itemData}\n style={{ overflowX: 'hidden' }}\n itemKey={itemKey}\n onItemsRendered={i => onRendered(i, onItemsRendered)}\n ref={r => {\n ref(r)\n varRef.current = r\n }}>\n {ListCell}\n </VariableSizeGrid>\n )}\n </InfiniteLoader>\n ) : (\n <InfiniteLoader\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n ref={infiniteLoaderRef}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <FixedSizeGrid<GridItemProps<T>>\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as number}\n columnWidth={colWidth as number}\n itemData={itemData}\n onItemsRendered={i => onRendered(i, onItemsRendered)}\n style={{\n overflowX: 'hidden',\n }}\n ref={r => {\n ref(r)\n varRef.current = null\n }}>\n {ListCell}\n </FixedSizeGrid>\n )}\n </InfiniteLoader>\n )\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList, VariableSizeGrid, VariableSizeList } from 'react-window'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { ListItemProps, ListRow } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\n\nexport const InfiniteScrollListBody = ({ height }: { height: number }) => {\n const {\n totalCount,\n data: { data: items },\n refetchItem,\n isItemLoaded,\n goNext: fetchMoreData,\n } = usePaginatedList()\n const { list, onSelectItem, mobileLayout, query } = useDataList()\n const { previewHeight, mobile } = list\n const { colorMode } = useColorMode()\n const { width } = useFullSize()\n const itemData = useMemo<ListItemProps>(\n () => ({\n list,\n items,\n mobileLayout,\n colorMode,\n onSelect: (item: WithId<AnyObject>) => onSelectItem(item._id),\n refetch: refetchItem,\n }),\n [items, list, refetchItem, onSelectItem, mobileLayout, colorMode],\n )\n\n const varRef = useRef<VariableSizeGrid | null>(null)\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n const infiniteLoaderRef = useRef<InfiniteLoader>(null)\n useEffect(() => {\n if (infiniteLoaderRef.current) {\n infiniteLoaderRef.current.resetloadMoreItemsCache(true)\n }\n }, [totalCount])\n\n useEffect(() => {\n const varGrid = varRef.current\n if (varGrid) {\n varGrid.resetAfterRowIndex(0)\n varGrid.resetAfterColumnIndex(0)\n }\n }, [query])\n\n const getItemSize = useCallback(\n (index: number) => (typeof itemHeight === 'function' ? itemHeight(items[index]) : itemHeight),\n [items, itemHeight],\n )\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n if (!items.length) {\n return <NoItemsRow />\n }\n\n return isDynamicHeight ? (\n <InfiniteLoader\n ref={infiniteLoaderRef}\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <VariableSizeList<ListItemProps>\n height={height}\n width={width}\n itemSize={getItemSize}\n itemCount={totalCount ?? 0}\n itemData={itemData}\n style={{ overflowX: 'hidden' }}\n itemKey={index => items[index]?._id || `${index}`}\n onItemsRendered={i => {\n onItemsRendered(i)\n }}\n ref={ref}>\n {ListRow}\n </VariableSizeList>\n )}\n </InfiniteLoader>\n ) : (\n <InfiniteLoader\n ref={infiniteLoaderRef}\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <FixedSizeList<ListItemProps>\n height={height}\n width={width}\n itemSize={itemHeight as number}\n itemCount={totalCount ?? 0}\n itemData={itemData}\n itemKey={index => items[index]?._id || `${index}`}\n style={{\n overflowX: 'hidden',\n }}\n onItemsRendered={onItemsRendered}\n ref={ref}>\n {ListRow}\n </FixedSizeList>\n )}\n </InfiniteLoader>\n )\n}\n","import { Flex } from '@chakra-ui/react'\nimport { AnyObject, ColorMode, DBItem } from '@chem-po/core'\nimport { DataList } from '@chem-po/react'\nimport { ListChildComponentProps } from 'react-window'\n\nexport interface ListItemProps<T extends AnyObject = AnyObject> {\n list: DataList<T>\n items: Array<DBItem<T>>\n mobileLayout: boolean\n onSelect: (item: DBItem<T>) => void\n colorMode: ColorMode\n refetch?: (id: string) => Promise<void>\n}\nexport const ListRow = <T extends AnyObject>({\n data,\n index,\n style,\n}: ListChildComponentProps<ListItemProps<T>>) => {\n const { list, items, onSelect, refetch, mobileLayout, colorMode } = data || {}\n const { ItemPreview: RenderItem, mobile } = list\n\n const Render = mobileLayout ? (mobile?.ItemPreview ?? RenderItem) : RenderItem\n const item = items[index]\n if (!item) return null\n return (\n <Flex\n display=\"flex\"\n cursor=\"pointer\"\n aria-label=\"list-item\"\n onClick={() => {\n onSelect(items[index])\n }}\n style={style}\n key={index}>\n {Render({ index, item, refetch: refetch ? () => refetch(item._id) : undefined, colorMode })}\n </Flex>\n )\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, BaseComponent, ItemPreviewProps, ListGridOptions } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { memo, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeGrid, VariableSizeGrid } from 'react-window'\nimport { GridItemProps, ListCell } from '../ListItem/ListCell'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\nimport { useGridDims } from './hooks'\n\nconst BasePagedGridBody = <\n T extends AnyObject,\n ItemPreviewComponent extends BaseComponent<ItemPreviewProps<T>>,\n>({\n height,\n options,\n}: {\n height: number\n options: ListGridOptions<T, ItemPreviewComponent>\n}) => {\n const { list, onSelectItem, mobileLayout, query } = useDataList<T>()\n const {\n data: { data: items },\n pageIndex,\n } = usePaginatedList<T>()\n const variableRef = useRef<VariableSizeGrid>(null)\n const fixedRef = useRef<FixedSizeGrid>(null)\n const { width } = useFullSize()\n const { numCols, numRows, rowHeight, colWidth } = useGridDims<T>(options, width)\n const { colorMode } = useColorMode()\n const itemData = useMemo<GridItemProps<T>>(\n () => ({\n list,\n items,\n numCols,\n onSelect: item => onSelectItem(item._id),\n mobileLayout,\n colorMode,\n grid: options,\n }),\n [items, list, onSelectItem, mobileLayout, numCols, options, colorMode],\n )\n\n useEffect(() => {\n const varGrid = variableRef.current\n if (varGrid) {\n varGrid.resetAfterColumnIndex(0)\n varGrid.resetAfterRowIndex(0)\n }\n }, [query])\n\n // scroll to top when page or query changes\n useEffect(() => {\n const varGrid = variableRef.current\n const fixGrid = fixedRef.current\n if (varGrid) {\n varGrid.scrollTo({ scrollLeft: 0, scrollTop: 0 })\n }\n if (fixGrid) {\n fixGrid.scrollTo({ scrollLeft: 0, scrollTop: 0 })\n }\n }, [pageIndex, query])\n\n const isDynamicHeight = useMemo(\n () => getIsDynamicSize(options.rowHeight) || getIsDynamicSize(options.columnWidth),\n [options],\n )\n\n if (!items.length) return <NoItemsRow />\n\n return isDynamicHeight ? (\n <VariableSizeGrid<GridItemProps<T>>\n ref={variableRef}\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as (idx: number) => number}\n columnWidth={colWidth as (idx: number) => number}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListCell}\n </VariableSizeGrid>\n ) : (\n <FixedSizeGrid<GridItemProps<T>>\n height={height}\n ref={fixedRef}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as number}\n columnWidth={colWidth as number}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListCell}\n </FixedSizeGrid>\n )\n}\n\nexport const PagedGridBody = memo(BasePagedGridBody) as typeof BasePagedGridBody\n","import { useColorMode } from '@chakra-ui/react'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList, VariableSizeList } from 'react-window'\nimport { ListItemProps, ListRow } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\n\nconst BasePagedListBody = ({ height }: { height: number }) => {\n const { list, onSelectItem, mobileLayout, query } = useDataList()\n const {\n data: { data: items },\n pageIndex,\n } = usePaginatedList()\n const { width } = useFullSize()\n const { previewHeight, mobile } = list\n const varRef = useRef<VariableSizeList>(null)\n const fixedRef = useRef<FixedSizeList>(null)\n const { colorMode } = useColorMode()\n const itemData = useMemo<ListItemProps>(\n () => ({\n list,\n colorMode,\n items,\n onSelect: item => onSelectItem(item._id),\n mobileLayout,\n }),\n [items, list, onSelectItem, mobileLayout, colorMode],\n )\n\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n useEffect(() => {\n const varList = varRef.current\n if (varList) {\n varList.resetAfterIndex(0)\n }\n }, [query])\n\n // scroll to top when page or query changes\n useEffect(() => {\n const varList = varRef.current\n const fixList = fixedRef.current\n if (varList) {\n varList.scrollTo(0)\n }\n if (fixList) {\n fixList.scrollTo(0)\n }\n }, [query, pageIndex])\n\n const getItemSize = useCallback(\n (index: number) => (typeof itemHeight === 'function' ? itemHeight(items[index]) : itemHeight),\n [items, itemHeight],\n )\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n if (!items.length) return <NoItemsRow />\n return isDynamicHeight ? (\n <FixedSizeList<ListItemProps>\n ref={fixedRef}\n height={height}\n width={width}\n itemSize={itemHeight as number}\n itemCount={items.length}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListRow}\n </FixedSizeList>\n ) : (\n <VariableSizeList<ListItemProps>\n ref={varRef}\n height={height}\n width={width}\n itemSize={getItemSize}\n itemCount={items.length}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListRow}\n </VariableSizeList>\n )\n}\n\nexport const PagedListBody = memo(BasePagedListBody) as typeof BasePagedListBody\n","import { useDataList } from '@chem-po/react'\nimport { InfiniteScrollGridBody } from './InfiniteScrollGridBody'\nimport { InfiniteScrollListBody } from './InfiniteScrollListBody'\nimport { PagedGridBody } from './PagedGridBody'\nimport { PagedListBody } from './PagedListBody'\n\nexport const ListBody = ({ height }: { height: number }) => {\n const { infiniteScroll, gridLayout, list } = useDataList()\n const { grid } = list\n\n if (gridLayout && grid) {\n return infiniteScroll ? (\n <InfiniteScrollGridBody options={grid} height={height} />\n ) : (\n <PagedGridBody options={grid} height={height} />\n )\n }\n return infiniteScroll ? (\n <InfiniteScrollListBody height={height} />\n ) : (\n <PagedListBody height={height} />\n )\n}\n","import { CloseIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton, Text } from '@chakra-ui/react'\nimport { FieldMap, useBackendBase, useDataList, usePaginatedList } from '@chem-po/react'\nimport { useCallback } from 'react'\nimport { Form } from '../form'\nimport { DesktopModal } from '../modal'\n\nexport const ListCreate = ({ field }: { field: FieldMap }) => {\n const {\n list: { baseQuery, itemName },\n newItemOpen: isOpen,\n setNewItemOpen: setIsOpen,\n } = useDataList()\n const {\n adapter: { db },\n } = useBackendBase()\n const { refetch } = usePaginatedList()\n // const collectionRef = useMemo(() => collection(db, collectionPath), [collectionPath, db])\n // const newItemDoc = useMemo(() => (isOpen ? doc(collectionRef) : null), [collectionRef, isOpen])\n // const newItemStoragePath = useMemo(\n // () => (newItemDoc ? `${storagePath}/${newItemDoc.id}` : null),\n // [storagePath, newItemDoc],\n // )\n const handleSubmit = useCallback(\n async (data: object) => {\n // if (!newItemDoc) return { [FORM_ERROR]: 'No document reference' }\n // await setDoc(newItemDoc, data)\n await db.createItem(baseQuery.collection, data)\n setIsOpen(false)\n if (refetch) refetch()\n return undefined\n },\n [setIsOpen, refetch, db, baseQuery],\n )\n\n return (\n <DesktopModal isOpen={isOpen} onClose={() => setIsOpen(false)}>\n <Flex align=\"center\" pt={3} px={3} w=\"100%\">\n <Text pl={1} opacity={0.7} fontWeight={600}>\n NEW {itemName.toUpperCase()}\n </Text>\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n ml=\"auto\"\n h={7}\n w={7}\n minW={0}\n onClick={() => setIsOpen(false)}\n aria-label=\"Close\"\n icon={<CloseIcon opacity={0.8} w={3} h={3} />}\n />\n </Flex>\n <Form field={field} onSubmit={handleSubmit} />\n </DesktopModal>\n )\n}\n","import { Box, Modal, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport { DefaultModalProps } from './type'\n\nexport const DesktopModal = ({ children, isOpen, contentProps, ...props }: DefaultModalProps) => (\n <Modal scrollBehavior=\"inside\" isCentered isOpen={isOpen} {...props}>\n <ModalOverlay />\n <ModalContent position=\"relative\" overflowY=\"auto\" bg=\"background.100\" {...contentProps}>\n <Box>{children}</Box>\n </ModalContent>\n </Modal>\n)\n","import { Flex, FlexProps, Portal } from '@chakra-ui/react'\nimport { useMobileFrame } from '@chem-po/react'\n\nexport const MobileOverlay = (props: FlexProps) => {\n const { overlayRef } = useMobileFrame()\n\n return (\n <Portal containerRef={overlayRef}>\n <Flex\n justify=\"center\"\n align=\"center\"\n transition=\"opacity 300ms\"\n position=\"absolute\"\n left={0}\n top={0}\n height=\"100%\"\n width=\"100%\"\n {...props}\n />\n </Portal>\n )\n}\n","import { Flex, useColorModeValue } from '@chakra-ui/react'\nimport { useMobileFrame } from '@chem-po/react'\nimport { useEffect, useRef, useState } from 'react'\nimport { MobileOverlay } from '../overlay/MobileOverlay'\nimport { DefaultModalProps } from './type'\n\nexport const MobileOverlayBackground = ({ onClick }: { onClick?: () => void }) => (\n <Flex\n onClick={onClick}\n w=\"100%\"\n h=\"100%\"\n position=\"absolute\"\n bg=\"blackAlpha.400\"\n transition=\"opacity 300ms\"\n />\n)\n\nexport const MobileModal = ({\n isOpen,\n onClose,\n children,\n contentProps,\n onContentMounted,\n closeOnOverlayClick,\n}: DefaultModalProps) => {\n const { height, width } = useMobileFrame()\n\n const bg = useColorModeValue('gray.100', '#454545')\n\n const [isMounted, setIsMounted] = useState(false)\n const [contentMounted, setContentMounted] = useState(false)\n\n const unmountTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n const contentMountTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n useEffect(() => {\n if (unmountTimeout.current) {\n clearTimeout(unmountTimeout.current)\n unmountTimeout.current = null\n }\n\n if (contentMountTimeout.current) {\n clearTimeout(contentMountTimeout.current)\n contentMountTimeout.current = null\n }\n\n if (isOpen) {\n setIsMounted(true)\n contentMountTimeout.current = setTimeout(() => {\n setContentMounted(true)\n if (onContentMounted) onContentMounted(true)\n }, 50)\n } else {\n setContentMounted(false)\n if (onContentMounted) onContentMounted(false)\n unmountTimeout.current = setTimeout(() => {\n setIsMounted(false)\n }, 300)\n }\n return () => {\n if (unmountTimeout.current) {\n clearTimeout(unmountTimeout.current)\n unmountTimeout.current = null\n }\n if (contentMountTimeout.current) {\n clearTimeout(contentMountTimeout.current)\n contentMountTimeout.current = null\n }\n }\n }, [isOpen, onContentMounted])\n return isMounted ? (\n <MobileOverlay\n opacity={contentMounted ? 1 : 0}\n pointerEvents={contentMounted ? 'auto' : 'none'}>\n <MobileOverlayBackground onClick={closeOnOverlayClick !== false ? onClose : undefined} />\n <Flex\n width={`${width - 10}px`}\n maxH={`${height - 10}px`}\n overflowY=\"auto\"\n overflowX=\"hidden\"\n minH=\"100px\"\n bg={bg}\n borderRadius={6}\n position=\"relative\"\n {...contentProps}>\n {children}\n </Flex>\n </MobileOverlay>\n ) : null\n}\n","import { useScreen } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { DesktopModal } from './DesktopModal'\nimport { useForceMobile } from './ForceMobile'\nimport { MobileModal } from './MobileModal'\nimport { DefaultModalProps } from './type'\n\nexport const DefaultModal = (props: DefaultModalProps) => {\n const isMobile = useScreen(s => s.isMobile)\n\n const forceMobile = useForceMobile()\n const Component = useMemo(\n () => (isMobile || forceMobile ? MobileModal : DesktopModal),\n [isMobile, forceMobile],\n )\n\n return <Component {...props} />\n}\n","import { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Button,\n Collapse,\n Flex,\n IconButton,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Progress,\n Text,\n Tooltip,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { toPlural } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { useCallback, useMemo, useRef } from 'react'\nimport { useBorderColor } from '../../hooks'\nimport { ExpandOnMount } from '../box'\nimport { DataListFooterProps } from './types'\n\nconst NextButton = ({\n goNext,\n canGoNext,\n mobileLayout,\n}: {\n goNext?: () => void\n canGoNext: boolean\n mobileLayout?: boolean\n}) => (\n <Button\n opacity={canGoNext ? 1 : 0.6}\n pointerEvents={canGoNext ? 'auto' : 'none'}\n borderRadius=\"full\"\n onClick={goNext}\n aria-label=\"next\"\n variant=\"ghost\"\n size={mobileLayout ? 'xs' : 'sm'}\n pl={3}\n pr={1}\n gap={1}>\n <Text>Next</Text>\n <ChevronRightIcon w={5} h={5} />\n </Button>\n)\n\nconst PrevButton = ({\n goPrev,\n canGoPrev,\n mobileLayout,\n}: {\n goPrev?: () => void\n canGoPrev: boolean\n mobileLayout?: boolean\n}) => (\n <Button\n opacity={canGoPrev ? 1 : 0.5}\n pointerEvents={canGoPrev ? 'auto' : 'none'}\n onClick={goPrev}\n borderRadius=\"full\"\n aria-label=\"back\"\n variant=\"ghost\"\n pr={3}\n pl={1}\n gap={1}\n size={mobileLayout ? 'xs' : 'sm'}>\n <ChevronLeftIcon w={5} h={5} />\n <Text>Back</Text>\n </Button>\n)\n\nconst FooterLoadingAndError = ({\n progressBg,\n borderColor,\n}: {\n progressBg: string\n borderColor: string\n}) => {\n const {\n data: { isLoading, error },\n } = usePaginatedList()\n return (\n <Box position=\"absolute\" bottom=\"100%\" w=\"100%\" left={0}>\n <Collapse style={{ width: '100%' }} in={!!error} animateOpacity>\n <Box borderTopRadius={6} bg=\"red.600\" maxW=\"100%\" p={1}>\n <Tooltip placement=\"top\" hasArrow label={error?.message ?? ''} aria-label=\"error\">\n <Text\n textShadow=\"1px 1px 3px #00000077\"\n _dark={{ textShadow: 'none' }}\n px={1}\n fontWeight={600}\n isTruncated\n maxW=\"100%\"\n fontSize=\"sm\"\n color=\"white\">\n {error?.message}\n </Text>\n </Tooltip>\n </Box>\n </Collapse>\n <ExpandOnMount in={isLoading} animateOpacity>\n <Flex\n bg={progressBg}\n borderTop=\"1px solid\"\n borderBottom=\"1px solid\"\n borderColor={borderColor}\n w=\"100%\">\n <Progress borderRadius={0} w=\"100%\" height=\"8px\" isIndeterminate={isLoading} />\n </Flex>\n </ExpandOnMount>\n </Box>\n )\n}\n\ninterface PageIndicator {\n index: number\n isActive: boolean\n}\ninterface PageIndicatorGroup {\n indicators: PageIndicator[]\n collapsed: boolean\n}\n\n/* \npage nav groups: \n0 - first group - pages 1:3 if not in current group\n1 - second group (collapsed) - pages 4:i-1 if not in current group, where i is the selected page\n2 - current group - pages i:i+2\n3 - fourth group (collapsed) - pages i+3:n-3 if not in current group, where n is the last page\n4 - last group - pages n-2:n\n*/\nconst getGroupIndex = (index: number, selected: number, numPages: number) => {\n if (Math.abs(index - selected) <= 1) return 2\n if (index < 3) return selected === 0 ? 2 : 0\n if (index > numPages - 4) return selected > numPages - 3 ? 2 : 4\n return index < selected ? 1 : 3\n}\n\nconst NAV_BUTTON_SIZE = 28\nconst MOBILE_NAV_BUTTON_SIZE = 24\n\nconst PageNavButton = ({\n index,\n isActive,\n onClick,\n borderColor,\n isLoading,\n mobileLayout,\n}: {\n index: number\n isActive: boolean\n onClick: () => void\n borderColor: string\n isLoading: boolean\n mobileLayout: boolean\n}) => {\n return (\n <Button\n key={index}\n onClick={onClick}\n variant=\"unstyled\"\n display=\"flex\"\n border=\"1px solid\"\n borderColor={isActive ? 'transparent' : borderColor}\n justifyContent=\"center\"\n alignItems=\"center\"\n width={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n height={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n fontFamily=\"fonts.heading\"\n lineHeight={1}\n fontWeight={600}\n minW=\"0\"\n bg={isActive ? 'accent.400' : 'transparent'}\n _hover={{\n bg: isActive ? 'accent.500' : 'whiteAlpha.500',\n }}\n color={isActive ? 'white' : borderColor}\n textShadow={isActive ? '1px 1px 3px #00000088' : 'none'}\n size=\"sm\"\n disabled={isLoading}\n aria-label={`Go to page ${index + 1}`}>\n {index + 1}\n </Button>\n )\n}\n\nconst PageNavGroup = ({\n group: { indicators, collapsed },\n mobileLayout,\n}: {\n group: PageIndicatorGroup\n mobileLayout: boolean\n}) => {\n const {\n data: { isLoading },\n goToPage,\n } = usePaginatedList()\n const borderColor = useBorderColor()\n\n if (collapsed) {\n return (\n <Popover trigger=\"hover\" gutter={1} variant=\"fixed\">\n {({ onClose }) => (\n <>\n <PopoverTrigger>\n <IconButton\n variant=\"unstyled\"\n width={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n height={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n minW=\"0\"\n opacity={0.7}\n _hover={{\n opacity: 1,\n }}\n aria-label=\"more pages\"\n icon={\n <Text fontSize=\"md\" position=\"relative\" bottom=\"2px\">\n ...\n </Text>\n }\n />\n </PopoverTrigger>\n <PopoverContent\n bg=\"background.200\"\n w=\"auto\"\n border=\"1px solid\"\n borderColor={borderColor}\n boxShadow=\"none\">\n <PopoverBody w=\"auto\" maxW=\"166px\" p={0.5}>\n <Flex align=\"center\" justify=\"center\" flexFlow=\"row wrap\">\n {indicators.map(({ index, isActive }) => (\n <Box key={`ind-${index}`} m={0.5}>\n <PageNavButton\n mobileLayout={mobileLayout}\n index={index}\n isActive={isActive}\n onClick={() => {\n goToPage(index)\n onClose()\n }}\n borderColor={borderColor}\n isLoading={isLoading}\n />\n </Box>\n ))}\n </Flex>\n </PopoverBody>\n </PopoverContent>\n </>\n )}\n </Popover>\n )\n }\n return (\n <>\n {indicators.map(({ index, isActive }) => (\n <PageNavButton\n mobileLayout={mobileLayout}\n key={index}\n index={index}\n isActive={isActive}\n onClick={() => goToPage(index)}\n borderColor={borderColor}\n isLoading={isLoading}\n />\n ))}\n </>\n )\n}\n\nconst PageNav = () => {\n const { pageIndex, numPages } = usePaginatedList()\n const { mobileLayout } = useDataList()\n const groups = useMemo<PageIndicatorGroup[]>(() => {\n const nPages = numPages ?? 0\n if (nPages <= 9)\n return [\n {\n indicators: Array.from({ length: nPages }, (_, i) => ({\n index: i,\n isActive: i === pageIndex,\n })),\n collapsed: false,\n },\n ]\n const g: PageIndicatorGroup[] = Array.from({ length: 5 }, (_, i) => ({\n indicators: [],\n collapsed: i % 2 === 1,\n }))\n\n for (let i = 0; i < nPages; i += 1) {\n const groupIndex = getGroupIndex(i, pageIndex, nPages)\n if (!g[groupIndex]) {\n g[groupIndex] = { indicators: [], collapsed: groupIndex !== 2 }\n }\n g[groupIndex].indicators.push({ index: i, isActive: i === pageIndex })\n }\n return g\n .filter(group => group.indicators.length)\n .map(g => ({ ...g, collapsed: g.collapsed && g.indicators.length > 1 }))\n }, [numPages, pageIndex])\n return (\n <Flex gap={1} align=\"center\">\n {groups.map((group, i) => (\n <PageNavGroup mobileLayout={mobileLayout} key={`group-${i}`} group={group} />\n ))}\n </Flex>\n )\n}\n\nconst FOOTER_TEXT_WIDTH = 120\nexport const ListFooter = ({ onResize, flexProps, noFooter }: DataListFooterProps) => {\n const borderColor = useColorModeValue('#cdcdcd', '#2d3748')\n\n const {\n list,\n mobileLayout,\n infiniteScroll,\n search: { search, debounced },\n } = useDataList()\n const {\n data: { data, isLoading },\n totalCount,\n pageIndex,\n limit,\n numFetched,\n goNext,\n goPrev,\n hasMoreData,\n } = usePaginatedList()\n const { itemName, pluralItemName, searchRequired } = list\n\n const { itemsText, pageText } = useMemo(() => {\n if (isLoading && !infiniteScroll)\n return { itemsText: mobileLayout ? 'Loading...' : '', pageText: '' }\n if (totalCount === null) return { itemsText: 'Loading...', pageText: '' }\n if (totalCount === 0 && !isLoading && search === debounced) {\n return {\n itemsText:\n !search && searchRequired\n ? `Search ${pluralItemName ?? toPlural(itemName)}`\n : `No ${pluralItemName ?? toPlural(itemName)} found`,\n pageText: '',\n }\n }\n const firstItemIndex = infiniteScroll ? 1 : (pageIndex || 0) * limit + 1\n // return `Displaying ${pluralItemName || toPlural(itemName)} ${firstItemIndex} - ${\n // infiniteScroll ? numFetched : pageIndex * limit + data.length\n // } of ${totalCount}`\n return {\n itemsText: `${firstItemIndex} - ${\n infiniteScroll ? numFetched : pageIndex * limit + data.length\n } of ${totalCount}`,\n pageText: `Page ${pageIndex + 1} of ${limit ? Math.ceil((totalCount ?? 0) / limit) : 0}`,\n }\n }, [\n totalCount,\n isLoading,\n itemName,\n pluralItemName,\n limit,\n pageIndex,\n search,\n searchRequired,\n mobileLayout,\n debounced,\n data,\n infiniteScroll,\n numFetched,\n ])\n const hasPrev = useMemo(() => !infiniteScroll && goPrev, [infiniteScroll, goPrev])\n const hasNext = useMemo(() => !infiniteScroll && goNext, [infiniteScroll, goNext])\n const progressBg = useColorModeValue('#efefef', '#212121')\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback(\n (e: ResizeObserverEntry) => {\n const height = e.borderBoxSize[0].blockSize\n const width = e.borderBoxSize[0].inlineSize\n onResize({ height, width })\n },\n [onResize],\n )\n useResizeObserver(ref, handleResize)\n\n return (\n <Flex\n ref={ref}\n py={noFooter ? 0 : 2}\n px={noFooter ? 0 : 3}\n borderTop={`1px solid ${borderColor}`}\n position=\"relative\"\n flexFlow={mobileLayout ? 'column' : 'row'}\n gap={mobileLayout ? 1 : 0}\n w=\"100%\"\n {...flexProps}>\n {noFooter || (mobileLayout && infiniteScroll) ? null : (\n <Flex\n align=\"center\"\n justify={mobileLayout ? 'center' : 'space-between'}\n position=\"relative\"\n w=\"100%\">\n {hasPrev && !mobileLayout ? (\n <PrevButton goPrev={goPrev} canGoPrev={!isLoading && !!pageIndex} />\n ) : null}\n <Flex gap={1} align=\"center\">\n {infiniteScroll ? null : (\n <>\n {!mobileLayout ? (\n <Text\n fontFamily=\"fonts.heading\"\n whiteSpace=\"nowrap\"\n textAlign=\"center\"\n w={`${FOOTER_TEXT_WIDTH}px`}\n fontSize=\"sm\">\n {pageText}\n </Text>\n ) : null}\n <PageNav />\n </>\n )}\n {!mobileLayout ? (\n <Text\n fontFamily=\"fonts.heading\"\n textAlign=\"center\"\n w={mobileLayout || infiniteScroll ? 'auto' : `${FOOTER_TEXT_WIDTH}px`}\n whiteSpace=\"nowrap\"\n fontSize=\"sm\">\n {itemsText}\n </Text>\n ) : null}\n </Flex>\n {hasNext && !mobileLayout ? (\n <NextButton goNext={goNext} canGoNext={!isLoading && hasMoreData} />\n ) : null}\n </Flex>\n )}\n {mobileLayout && !noFooter ? (\n <Flex gap={2} w=\"100%\" justify=\"space-between\" align=\"center\">\n {hasPrev ? <PrevButton mobileLayout goPrev={goPrev} canGoPrev={!!pageIndex} /> : null}\n <Text\n fontFamily=\"fonts.heading\"\n textAlign=\"center\"\n w={mobileLayout || infiniteScroll ? 'auto' : `${FOOTER_TEXT_WIDTH}px`}\n whiteSpace=\"nowrap\"\n fontSize=\"sm\">\n {itemsText}\n </Text>\n {hasNext ? <NextButton mobileLayout goNext={goNext} canGoNext={hasMoreData} /> : null}\n </Flex>\n ) : null}\n <FooterLoadingAndError progressBg={progressBg} borderColor={borderColor} />\n </Flex>\n )\n}\n","import { AddIcon, RepeatIcon, SearchIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Flex,\n IconButton,\n Image,\n Input,\n InputGroup,\n InputLeftElement,\n Tooltip,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { getHasAccess, toPlural } from '@chem-po/core'\nimport { useAuth, useDataList } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { useCallback, useMemo, useRef } from 'react'\nimport { useBorderColor } from '../../hooks/ui/useBorderColor'\nimport { Toggle, ToggleOption } from '../button/Toggle'\nimport { PresetFilters } from './ListFilters'\nimport { ListSortView } from './ListSort'\nimport { DataListHeaderProps } from './types'\n\nconst ListSearch = () => {\n const {\n list,\n search: { search, update },\n } = useDataList()\n const { searchIcon, itemName, pluralItemName } = list\n const iconFilter = useColorModeValue('invert(0)', 'invert(1)')\n\n return (\n <Flex p={1} flex={1} minW=\"0\">\n <InputGroup>\n <InputLeftElement pointerEvents=\"none\">\n {searchIcon ? (\n <Image filter={iconFilter} src={searchIcon} w=\"24px\" />\n ) : (\n <SearchIcon w=\"24px\" opacity={0.5} />\n )}\n </InputLeftElement>\n <Input\n bg=\"whiteAlpha.700\"\n pl={9}\n borderRadius={6}\n _focus={{ boxShadow: 'none', outline: 'none' }}\n border=\"none\"\n _dark={{\n bg: 'blackAlpha.400',\n color: '#cdcdcd',\n _placeholder: {\n color: '#ababab',\n },\n border: 'none',\n }}\n value={search}\n placeholder={`Search for ${pluralItemName ?? toPlural(itemName)}`}\n onChange={e => update(e.target.value)}\n />\n </InputGroup>\n </Flex>\n )\n}\n\nconst HeaderButtons = ({ refetch }: { refetch?: () => void }) => {\n const { list, setNewItemOpen } = useDataList()\n const auth = useAuth()\n const { itemName, field, access } = list\n\n const canCreate = useMemo(() => getHasAccess(auth, access?.create, null), [access, auth])\n return (\n <Flex gap={2} ml=\"auto\" align=\"center\">\n {refetch ? (\n <Tooltip placement=\"left\" hasArrow label=\"Refresh\" aria-label=\"Refresh\">\n <IconButton size=\"xs\" icon={<RepeatIcon />} aria-label=\"Refresh\" onClick={refetch} />\n </Tooltip>\n ) : null}\n {field && canCreate ? (\n <Tooltip\n placement=\"left\"\n hasArrow\n label={`Create new ${itemName}`}\n aria-label={`Create new ${itemName}`}>\n <IconButton\n size=\"xs\"\n icon={<AddIcon />}\n aria-label={`Create new ${itemName}`}\n onClick={() => setNewItemOpen(true)}\n />\n </Tooltip>\n ) : null}\n </Flex>\n )\n}\n\nconst gridToggleOptions: ToggleOption<'grid' | 'list'>[] = [\n {\n id: 'grid',\n label: 'Grid View',\n Render: selected => <Image w={5} opacity={selected ? 1 : 0.7} src=\"/icons/grid_view.svg\" />,\n },\n {\n id: 'list',\n label: 'List View',\n Render: selected => <Image w={6} opacity={selected ? 1 : 0.7} src=\"/icons/list.svg\" />,\n },\n]\n\nconst GridViewToggle = () => {\n const { toggleGridLayout, gridLayout } = useDataList()\n if (!toggleGridLayout) return null\n return (\n <Toggle\n onChange={toggleGridLayout}\n options={gridToggleOptions}\n value={gridLayout ? 'grid' : 'list'}\n />\n )\n}\n\nexport const DataListHeader = ({ onResize, refetch, boxProps }: DataListHeaderProps) => {\n const { list, mobileLayout, toggleGridLayout } = useDataList()\n const { searchPath, sortPresets, filterPresets, Header } = list\n\n const borderColor = useBorderColor()\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback(\n (entry: ResizeObserverEntry) => {\n onResize({ height: entry.contentRect.height, width: entry.contentRect.width })\n },\n [onResize],\n )\n const hasSearch = useMemo(() => !!Object.keys(searchPath ?? {}).length, [searchPath])\n\n useResizeObserver(ref, handleResize)\n\n return (\n <Box\n ref={ref}\n bg=\"background.200\"\n borderBottom={`1px solid ${borderColor}`}\n w=\"100%\"\n {...boxProps}>\n <Flex px={2} align=\"center\" w=\"100%\">\n {sortPresets?.length || filterPresets?.length || hasSearch ? (\n <Flex w=\"100%\" flexFlow={mobileLayout ? 'column' : 'row'}>\n {mobileLayout && !Header ? null : (\n <Flex flex={1} px={2} py={mobileLayout ? 0 : 1} gap={1} align=\"center\">\n {mobileLayout ? null : (\n <Flex flex={1} minW=\"0\" align=\"center\" gap={2}>\n {toggleGridLayout ? <GridViewToggle /> : null}\n <PresetFilters />\n <ListSortView />\n {hasSearch ? <ListSearch /> : null}\n </Flex>\n )}\n <Flex align=\"center\" minW=\"0\" gap={3} ml=\"auto\">\n {Header ? (\n <Box minW=\"0\" flex={1}>\n <Header />\n </Box>\n ) : null}\n {mobileLayout ? null : <HeaderButtons refetch={refetch} />}\n </Flex>\n </Flex>\n )}\n {hasSearch && mobileLayout ? <ListSearch /> : null}\n {mobileLayout && (sortPresets?.length || filterPresets?.length) ? (\n <Flex pl={1} py={1} gap={1.5} align=\"center\" w=\"100%\">\n {toggleGridLayout ? <GridViewToggle /> : null}\n <PresetFilters />\n <ListSortView />\n <HeaderButtons refetch={refetch} />\n </Flex>\n ) : null}\n </Flex>\n ) : null}\n </Flex>\n </Box>\n )\n}\n","import {\n Box,\n Button,\n Flex,\n HStack,\n IconButton,\n Image,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverTrigger,\n Portal,\n Text,\n useColorMode,\n useColorModeValue,\n} from '@chakra-ui/react'\n\nimport { AnyObject, isFilterGroup, QueryFilter } from '@chem-po/core'\nimport { FilterPreset, FilterPresetGroup, useDataList, useScreen } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { useBorderColor } from '../../hooks'\nimport { filterMatchesPreset } from './utils'\n\nconst FilterButton = <T extends AnyObject>({\n filter,\n filters,\n GroupRender,\n toggleFilter,\n}: {\n filter: FilterPreset<T>\n filters: QueryFilter<T>[]\n GroupRender?: FilterPresetGroup<T>['RenderFilter']\n toggleFilter: (toggled: FilterPreset<T>) => void\n}) => {\n const { label, Render } = filter\n const isActive = useMemo(\n () => filters.some(f => filterMatchesPreset(f, filter)),\n [filters, filter],\n )\n const { colorMode } = useColorMode()\n const borderColor = useBorderColor()\n const textColor = useColorModeValue('gray.700', 'gray.100')\n const CustomRender = Render ?? GroupRender\n return (\n <Box p={0.5}>\n <Button\n onClick={() => toggleFilter(filter)}\n variant=\"unstyled\"\n color={isActive && !CustomRender ? 'white' : textColor}\n bg={isActive && !CustomRender ? 'accent.400' : 'transparent'}\n px={CustomRender ? 0 : 2}\n py={CustomRender ? 0 : 1}\n transition=\"all 300ms\"\n border=\"none\"\n boxShadow={`0px 0px 1px 1px ${isActive ? 'transparent' : '#00000033'}`}\n w=\"auto\"\n _dark={{\n boxShadow: `0px 0px 1px 1px ${isActive ? 'transparent' : '#ffffff66'}`,\n }}\n h=\"auto\"\n minW=\"0\"\n minH=\"0\"\n alignItems=\"center\"\n justifyContent=\"center\"\n borderColor={isActive ? 'transparent' : borderColor}\n size=\"none\">\n {CustomRender ? (\n <CustomRender active={isActive} colorMode={colorMode} preset={filter} />\n ) : (\n <Text textShadow={isActive ? '0 0 3px rgba(0,0,0,0.8)' : 'none'} fontSize=\"xs\">\n {label}\n </Text>\n )}\n </Button>\n </Box>\n )\n}\n\nconst FilterGroup = <T extends AnyObject>({\n group,\n filters,\n toggleFilter,\n}: {\n group: FilterPresetGroup<T>\n filters: QueryFilter<T>[]\n toggleFilter: (toggled: FilterPreset<T>) => void\n}) => {\n const { label, filters: groupFilters } = group\n return (\n <Flex px={1} flexFlow=\"column\" w=\"100%\">\n <Text px={1} opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n {label}\n </Text>\n <Flex w=\"100%\" flexFlow=\"row wrap\">\n {groupFilters.map(filter => (\n <FilterButton\n toggleFilter={toggleFilter}\n GroupRender={group.RenderFilter}\n filters={filters}\n key={filter.label}\n filter={filter}\n />\n ))}\n </Flex>\n </Flex>\n )\n}\n\nexport const PresetFilters = () => {\n const { query, list, toggleFilter } = useDataList()\n const isMobile = useScreen(s => s.isMobile)\n const { filters: currentFilters = [] } = query || {}\n const { filterPresets } = list\n const borderColor = useBorderColor()\n return filterPresets?.length ? (\n <HStack spacing={1}>\n <Popover\n // closeOnBlur={false}\n placement=\"right-start\"\n trigger={isMobile ? 'click' : 'hover'}\n // trigger=\n strategy=\"fixed\">\n <PopoverTrigger>\n <IconButton\n size=\"sm\"\n variant=\"ghost\"\n aria-label=\"Filters\"\n icon={\n <Image\n width=\"24px\"\n filter={`grayscale(${currentFilters.length ? 0 : 100}%)`}\n src=\"/icons/tune.svg\"\n />\n }\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent borderRadius={6} w=\"auto\">\n <PopoverBody w=\"240px\" p={0}>\n <Flex flexFlow=\"column\" w=\"100%\">\n <HStack\n py={1.5}\n px={2}\n w=\"100%\"\n spacing={1}\n borderBottom={`1px solid ${borderColor}`}>\n <Image width=\"18px\" filter=\"grayscale(100%)\" src=\"/icons/tune.svg\" />\n <Text opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n FILTERS\n </Text>\n </HStack>\n <Flex justify=\"center\" w=\"100%\" flexFlow=\"row wrap\" py={1} px={2}>\n {filterPresets.map(filter =>\n isFilterGroup(filter) ? (\n <FilterGroup\n toggleFilter={toggleFilter}\n filters={currentFilters}\n key={filter.label}\n group={filter}\n />\n ) : (\n <FilterButton\n toggleFilter={toggleFilter}\n filters={currentFilters}\n key={filter.label}\n filter={filter}\n />\n ),\n )}\n </Flex>\n </Flex>\n </PopoverBody>\n <PopoverArrow />\n <PopoverCloseButton />\n </PopoverContent>\n </Portal>\n </Popover>\n </HStack>\n ) : null\n}\n","import { ArrowDownIcon, ArrowUpIcon } from '@chakra-ui/icons'\nimport { Button, HStack, Text, useColorMode } from '@chakra-ui/react'\nimport { SortDirection } from '@chem-po/core'\nimport { SortPreset, useDataList } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { CollapseHorizontal } from '../box/CollapseHorizontal'\n\nconst SortButton = ({ preset }: { preset: SortPreset }) => {\n const { setSort: setSortFromPreset, query } = useDataList()\n const { sort } = query\n const { label, key, Render } = preset\n const active = useMemo<SortDirection | null>(\n () => (sort?.key === key ? sort.direction : null),\n [sort, key],\n )\n const { colorMode } = useColorMode()\n\n const color = useMemo(() => {\n if (active) return 'white'\n return colorMode === 'light' ? 'gray.500' : 'gray.400'\n }, [active, colorMode])\n const icon = useMemo(\n () => (sort?.direction === 'asc' ? <ArrowUpIcon w={4} h={4} /> : <ArrowDownIcon w={4} h={4} />),\n [sort],\n )\n\n return (\n <Button\n size=\"xs\"\n variant=\"outline\"\n bg={active ? 'accent.400' : 'transparent'}\n transition=\"all 300ms\"\n textShadow={active ? '0 0 2px rgba(0,0,0,0.7)' : 'none'}\n boxShadow={`0px 0px 1px 1px ${active ? 'transparent' : '#00000033'}`}\n border=\"none\"\n // borderColor={active ? 'transparent' : 'blackAlpha.200'}\n _dark={{\n // borderColor: active ? 'transparent' : 'whiteAlpha.300',\n boxShadow: `0px 0px 1px 1px ${active ? 'transparent' : '#ffffff66'}`,\n color,\n textShadow: active ? '0 0 2px rgba(0,0,0,0.7)' : 'none',\n }}\n aria-label={label}\n opacity={active ? 1 : 0.8}\n height={6}\n pl={active ? 3 : 2}\n pr={2}\n _hover={{ opacity: 1 }}\n gap={0}\n color={color}\n onClick={() =>\n setSortFromPreset({\n direction: active && sort?.direction === 'asc' ? 'desc' : 'asc',\n key,\n })\n }>\n {Render ? (\n <Render active={active} colorMode={colorMode} preset={preset} />\n ) : (\n <Text fontWeight={600} fontSize=\"sm\" color={color}>\n {label}\n </Text>\n )}\n <CollapseHorizontal active={!!active} h=\"16px\" width={20}>\n {icon}\n </CollapseHorizontal>\n </Button>\n )\n}\n\nexport const ListSortView = () => {\n const {\n list: { sortPresets },\n } = useDataList()\n\n if (!sortPresets) return null\n return (\n <HStack spacing={2}>\n {sortPresets.map(preset => (\n <SortButton key={preset.label} preset={preset} />\n ))}\n </HStack>\n )\n}\n","import { Text, useColorMode, useColorModeValue } from '@chakra-ui/react'\nimport { AnyObject, DBItem } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport { useEffect, useMemo, useState } from 'react'\nimport { DefaultModal } from '../modal'\n\nexport const ListItemView = () => {\n const { selectedItemId, deselectItem, list } = useDataList()\n const { ItemView, itemName } = list || {}\n const [contentOffset, setContentOffset] = useState({ x: 0, y: 0 })\n const {\n data: { data },\n // refetchItem,\n } = usePaginatedList()\n const item = useMemo(\n () => data.find(d => d._id === selectedItemId) ?? null,\n [data, selectedItemId],\n )\n const { colorMode } = useColorMode()\n const errorColor = useColorModeValue('red.600', 'red.300')\n const [prevItem, setPrevItem] = useState<DBItem<AnyObject> | null>(null)\n useEffect(() => {\n if (item) {\n setPrevItem(item)\n }\n }, [item])\n\n return (\n <DefaultModal\n contentProps={{\n p: 0,\n transition: 'all 300ms',\n transform: `translate(${contentOffset.x}px, ${contentOffset.y}px)`,\n }}\n scrollBehavior=\"inside\"\n onClose={deselectItem}\n isOpen={!!ItemView && !!selectedItemId}>\n {ItemView && prevItem ? (\n <ItemView\n item={prevItem}\n colorMode={colorMode}\n clearContentOffset={() => setContentOffset({ x: 0, y: 0 })}\n updateContentOffset={(x, y) => setContentOffset({ x, y })}\n // onEdited={onEdited}\n />\n ) : (\n <Text color={errorColor} p={4}>\n Error displaying {itemName}\n </Text>\n )}\n </DefaultModal>\n )\n}\n","import { Box } from '@chakra-ui/react'\nimport { AnyObject } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useMemo, useState } from 'react'\nimport { LoadingOverlay } from '../loading'\nimport { ListBody } from './Body/ListBody'\nimport { ListCreate } from './ListCreate'\nimport { ListFooter } from './ListFooter'\nimport { DataListHeader } from './ListHeader'\nimport { ListItemView } from './ListItemView'\nimport { ListContentProps } from './types'\n\nexport const ListContent = <T extends AnyObject>({\n modals,\n noFooter,\n headerProps,\n footerProps,\n}: ListContentProps<T>) => {\n const {\n data: { isLoading, data },\n } = usePaginatedList()\n const { list } = useDataList<T>()\n const { height } = useFullSize()\n\n const [headerHeight, setHeaderHeight] = useState(0)\n const [footerHeight, setFooterHeight] = useState(0)\n const bodyHeight = useMemo(\n () => height - headerHeight - footerHeight,\n [height, headerHeight, footerHeight],\n )\n const handleHeaderResize = useCallback((updated: { height: number; width: number }) => {\n setHeaderHeight(updated.height)\n }, [])\n\n const handleFooterResize = useCallback((size: { width: number; height: number }) => {\n setFooterHeight(size.height)\n }, [])\n\n const { ItemView: ItemViewComponent, field: createField } = list\n\n return (\n <>\n <DataListHeader boxProps={headerProps} onResize={handleHeaderResize} />\n <Box h={`${bodyHeight}px`} position=\"relative\" w=\"100%\">\n <ListBody height={bodyHeight} />\n {noFooter ? <LoadingOverlay isLoading={!data.length && isLoading} /> : null}\n </Box>\n <ListFooter noFooter={noFooter} flexProps={footerProps} onResize={handleFooterResize} />\n {modals ?? null}\n {ItemViewComponent ? <ListItemView /> : null}\n {createField ? <ListCreate field={createField} /> : null}\n </>\n )\n}\n","import { AnyObject } from '@chem-po/core'\nimport {\n PaginatedListProvider,\n useBackendBase,\n useDataListData,\n usePaginatedQuery,\n} from '@chem-po/react'\nimport { ListContainer } from './ListContainer'\nimport { ListContent } from './ListContent'\nimport { ListViewProps } from './types'\n\nexport const DataList = <T extends AnyObject>({\n list,\n basePath,\n flexProps,\n infiniteScroll,\n ...rest\n}: ListViewProps<T>) => {\n const {\n adapter: { db },\n } = useBackendBase()\n const { baseQuery } = list\n const state = useDataListData(list, infiniteScroll, basePath)\n const data = usePaginatedQuery<T>(db, baseQuery, !!infiniteScroll)\n return (\n <PaginatedListProvider<T> state={state} data={data}>\n <ListContainer {...flexProps}>\n <ListContent {...rest} />\n </ListContainer>\n </PaginatedListProvider>\n )\n}\n","import { useEffect, useRef } from 'react'\n\nexport const NumberTicker = ({ value, duration = 30 }: { value: number; duration?: number }) => {\n const spanRef = useRef<HTMLSpanElement>(null)\n const helperValue = useRef(value)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n useEffect(() => {\n intervalRef.current = setInterval(() => {\n if (spanRef.current) {\n if (helperValue.current === value && intervalRef.current)\n return clearInterval(intervalRef.current)\n if (helperValue.current < value) {\n helperValue.current += 1\n spanRef.current.innerText = helperValue.current.toString()\n } else if (helperValue.current > value) {\n helperValue.current -= 1\n spanRef.current.innerText = helperValue.current.toString()\n }\n }\n return () => {}\n }, duration)\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current)\n }\n }, [value, duration])\n\n return <span ref={spanRef}>{value}</span>\n}\n","import { MoonIcon, SunIcon } from '@chakra-ui/icons'\nimport { Flex, FlexProps, IconButton, useColorMode, useColorModeValue } from '@chakra-ui/react'\n\nexport const DarkModeToggle = () => {\n const { colorMode, toggleColorMode } = useColorMode()\n const bg = useColorModeValue('gray.200', 'whiteAlpha.200')\n const color = useColorModeValue('blackAlpha.700', 'whiteAlpha.800')\n const hoverBg = useColorModeValue('gray.300', 'whiteAlpha.300')\n const hoverColor = useColorModeValue('gray.800', 'whiteAlpha.800')\n return (\n <IconButton\n aria-label=\"Toggle dark mode\"\n bg={bg}\n color={color}\n borderRadius=\"full\"\n _hover={{\n bg: hoverBg,\n color: hoverColor,\n }}\n w={8}\n h={8}\n minW={0}\n icon={\n colorMode === 'light' ? (\n <SunIcon w={4} h={4} />\n ) : (\n <MoonIcon w={4} h={4} filter=\"drop-shadow(1px 1px 2px #000000aa)\" />\n )\n }\n onClick={toggleColorMode}\n variant=\"ghost\"\n />\n )\n}\n\nexport const AbsoluteDarkModeToggle = (props: FlexProps) => (\n <Flex position=\"absolute\" bottom={3} right={3} {...props}>\n <DarkModeToggle />\n </Flex>\n)\n","import { useScreen } from '@chem-po/react'\n\nexport const initializeScreen = () => {\n if (typeof window !== 'undefined') {\n const onResize = () => {\n const width = window.innerWidth\n const height = window.innerHeight\n useScreen.setState({\n width,\n height,\n isMobile: width < 769,\n isPortrait: width < height,\n })\n window.addEventListener('resize', onResize)\n }\n onResize()\n return () => {\n window.removeEventListener('resize', onResize)\n }\n }\n return () => {}\n}\n"]}
1
+ {"version":3,"sources":["../src/components/auth/SignIn.tsx","../src/components/box/CollapseHorizontal.tsx","../src/components/box/ContentBox.tsx","../src/hooks/ui/useBorderColor.ts","../src/components/button/ViewButton.tsx","../src/components/box/Expandable.tsx","../src/components/box/ExpandOnMount.tsx","../src/components/box/FullSizeContainer.tsx","../src/components/modal/ForceMobile.tsx","../src/components/nav/NavBar.tsx","../src/components/view/ErrorView.tsx","../src/components/loading/CircularProgress.tsx","../src/components/loading/Loading.tsx","../src/components/view/RedirectView.tsx","../src/components/box/MobileFrame/index.tsx","../src/components/button/DeleteButton.tsx","../src/components/button/Toggle.tsx","../src/components/feed/context.tsx","../src/components/overlay/ImageViewOverlay.tsx","../src/components/loading/LoadingImage.tsx","../src/components/loading/LoadingSwitch.tsx","../src/components/feed/constants.ts","../src/components/feed/FeedContentPane.tsx","../src/components/feed/hooks.ts","../src/components/feed/MediaFeedBackground.tsx","../src/components/feed/MediaFeedRefresh.tsx","../src/components/feed/MediaFeed.tsx","../src/components/form/Condition.tsx","../src/components/form/Field.tsx","../src/components/form/input/boolean/index.tsx","../src/components/form/input/hooks/useInputImperativeHandle.ts","../src/components/form/input/InputSlider.tsx","../src/components/text/GradientText/index.tsx","../src/components/form/input/color/index.tsx","../src/components/form/input/date/index.tsx","../src/components/form/input/time/index.tsx","../src/components/form/input/datetime/index.tsx","../src/store/usePlayer.ts","../src/components/media/PlayButton.tsx","../src/components/form/input/file.tsx","../src/components/form/input/multipleSelect/index.tsx","../src/components/form/input/hooks/useInputStyle.ts","../src/components/form/input/number/index.tsx","../src/components/form/input/OptionalTag.tsx","../src/components/form/input/select/index.tsx","../src/components/form/input/socialMedia/index.tsx","../src/components/form/input/text/index.tsx","../src/components/form/input/text/textarea.tsx","../src/components/form/input/input.tsx","../src/components/form/FormFooter.tsx","../src/components/form/UploadProgress/index.tsx","../src/components/form/view/file.tsx","../src/components/form/view/multipleSelect.tsx","../src/components/form/view/select.tsx","../src/components/form/view/index.tsx","../src/components/form/input/StandaloneInput.tsx","../src/components/form/input/Editable.tsx","../src/components/form/Form.tsx","../src/components/list/ListContainer.tsx","../src/components/list/ListItem/ListCell.tsx","../src/components/list/NoItems.tsx","../src/components/list/utils.ts","../src/components/list/Body/hooks.ts","../src/components/list/Body/InfiniteScrollGridBody.tsx","../src/components/list/ListItem/ListRow.tsx","../src/components/list/Body/InfiniteScrollListBody.tsx","../src/components/list/Body/PagedGridBody.tsx","../src/components/list/Body/PagedListBody.tsx","../src/components/list/Body/ListBody.tsx","../src/components/modal/DesktopModal.tsx","../src/components/overlay/MobileOverlay.tsx","../src/components/modal/MobileModal.tsx","../src/components/modal/DefaultModal.tsx","../src/components/list/ListCreate.tsx","../src/components/list/ListFooter.tsx","../src/components/list/ListHeader.tsx","../src/components/list/ListFilters.tsx","../src/components/list/ListSort.tsx","../src/components/list/ListItemView.tsx","../src/components/list/ListContent.tsx","../src/components/list/DataList.tsx","../src/components/text/NumberTicker.tsx","../src/components/theme/colorMode/DarkModeToggle.tsx","../src/contexts/theme.ts","../src/store/useScreen.ts"],"names":["SignIn","layout","auth","useBackendBase","user","useAuth","s","jsx","Flex","Button","jsxs","Fragment","Text","AbsoluteLogin","props","Portal","CollapseHorizontal","width","children","active","duration","Center","ContentBoxBase","ref","ContentBox","forwardRef","useBorderColor","useColorModeValue","ViewButton","viewText","hideText","onClick","isOpen","color","IconButton","ChevronUpIcon","ChevronDownIcon","e","Expandable","header","initExpanded","nested","alwaysExpanded","headerProps","iconColor","footer","isOpenProp","onCloseProp","onOpenProp","stackProps","onClose","onOpen","useDisclosure","handleOpenClick","useCallback","borderColor","VStack","HStack","Box","Collapse","ExpandOnMount","animateOpacity","isIn","onExited","mounted","useMounted","bodyHeight","setBodyHeight","useState","bodyRef","useRef","isAnimating","setIsAnimating","expanded","useMemo","height","handleBodyResize","useResizeObserver","animatingTimeout","useEffect","transition","FullSizeContainer","setWidth","setHeight","handleResize","entry","FullSizeProvider","contextValue","FullSizeContext","ForceMobileContext","React","ForceMobile","useForceMobile","useContext","NAV_BAR_HEIGHT","NavBarLink","view","absolute","paths","name","icon","iconScale","path","iconBrightness","usedBrightness","pathname","useLocation","hoverBg","body","Image","Link","NavBar","selectedView","bg","palette","defaultBorderColor","views","useViews","menuViews","v","isAbsolute","background","ErrorView","message","CircularProgress","Orig","LottieLoadingLogo","size","isLoading","speed","inFeed","asset","_animationData","animationData","options","style","View","pause","play","setSpeed","useLottie","SVGLoadingLogo","_svg","svg","LoadingBody","loading","useAppAssets","LoadingLogo","Loading","text","inBox","LoadingOverlay","RedirectView","timer","authLoading","navigate","useNavigate","IPHONE_12_WIDTH","IPHONE_12_HEIGHT","IPHONE_12_ASPECT","MobileFrameBody","navBarChildren","isMobile","screenHeight","screenWidth","useScreen","contentHeight","contentWidth","h","w","cappedHeight","cappedWidth","outerBg","cssGradients","location","currentOutlet","useOutlet","matchRoutes","viewKey","overlayRef","nodeRef","absoluteNavBar","contextData","MobileFrameProvider","AnimatePresence","SwitchTransition","CSSTransition","motion","ErrorBoundary","MobileFrame","ViewsProvider","defaultAlertBodyText","DeleteConfirmAlert","confirmActive","onCancel","onConfirm","actionName","actionLoading","itemName","cancelRef","AlertDialog","AlertDialogOverlay","AlertDialogContent","AlertDialogBody","DeleteButton","onDelete","noConfirm","alertBody","deleteLoading","setDeleteLoading","setConfirmActive","confirmTimer","isMounted","toast","useToast","handleDelete","err","DeleteIcon","ToggleButton","selected","Render","label","disabledMessage","Tooltip","Toggle","value","onChange","option","MediaFeedContext","createContext","MediaFeedProvider","curr","useMediaFeed","ImageViewOverlay","src","setLoading","imageSize","setImageSize","ratio","onLoadStart","onLoad","naturalWidth","naturalHeight","Modal","ModalOverlay","ModalContent","CloseIcon","emptyPng","LoadingImage","loadingOverride","alt","noFullView","buttonFullView","imageProps","boxProps","imageLoading","setImageLoading","imageRef","viewing","setViewing","handleImageLoad","prevSrc","setPrevSrc","LoadingSwitch","setIsLoading","reportComplete","fetchedOn","buffer","Switch","springConfig","SWIPE_THRESHOLD","REFRESH_THRESHOLD","getContentScale","status","getContentX","contentSize","cWidth","getContentY","cHeight","FeedContentPane","id","collectionPath","onItemLoad","RenderItem","offsetY","enterStatus","useMobileFrame","scale","useSpring","baseY","useMotionValue","yVal","useTransform","y","docPath","item","useDocument","init","newScale","updatedX","DEFAULT_LIMIT","fetch","onUpdatePanels","limit","authRequired","ids","setIds","idIdx","setIdIdx","refreshing","setRefreshing","error","setError","itemLoading","setItemLoading","direction","setDirection","fetchingId","idsRef","updateCurr","updateNext","updatePrev","fetchIds","startBefore","startAfter","isPrefetch","data","firstId","secondId","newLastId","getNextId","currIdx","currIds","nextIds","nextIdx","fetchedNextId","getPrevId","prevIds","prevIdx","newFirstId","fetchedPrevIds","fetchedPrevId","goNext","newPrev","nextIdData","nextId","newNextId","goPrev","newNext","prevIdData","prevId","newPrevId","refresh","initFetchIds","canGoPrev","canGoNext","FillBackground","FileValueBackground","getBackgroundValue","filter","url","useObjectUrl","usedIndex","index","setIndex","url1","setUrl1","url2","setUrl2","UrlBackground","getBackgroundUrl","MediaFeedBackground","WINDOW","MediaFeedRefresh","canRefresh","progress","rotate","RepeatIcon","useUpdatePanels","setItems","updated","MediaFeed","defaultBackground","swipeDisabled","contentRef","containerRef","panels","setPanels","onNewData","backgroundRef","pointerDown","dragStart","onDragStart","dragEndListener","ev","maxY","minY","oY","onDragMove","oX","containerStyle","setCurr","handleItemLoad","p","panel","Condition","condition","useWatch","BaseCheckboxComponent","field","input","placeholder","useImperativeHandle","Checkbox","CheckboxBooleanComponent","BaseSwitchComponent","SwitchBooleanComponent","BaseBooleanComponent","BooleanComponent","useInputImperativeHandle","onFocus","onBlur","inputRef","GradientText","InputSlider","gradient","min","max","gradientCss","gradientToCssGradientProp","Slider","SliderTrack","SliderFilledTrack","SliderThumb","ColorComponentSlider","ColorComponent","meta","withAlpha","defaultValue","handleChange","key","val","withDefault","asHex","colorValueToHex","gradients","updatedRed","updatedGreen","updatedBlue","updatedAlpha","padZeros","n","digits","i","parseDate","date","DateInput","minDate","maxDate","optional","disabled","res","Popover","PopoverTrigger","getDateString","PopoverContent","PopoverArrow","DayPicker","TimeInput","Input","parseDateAndTime","timestamp","d","DateTimeInput","time","set","focusedElement","setFocused","type","dateString","usePlayer","create","MotionValue","useActiveMedia","media","playlist","PlayButton","opacity","buttonProps","mediaId","usePlaylist","api","playerIsPlaying","playerIsLoading","currentMedia","isPlaying","isFetching","generateAccept","accept","AudioFileView","hasUpload","noLabel","generateId","ImageFileView","loadingProp","loaded","setLoaded","shape","objectFit","placeholderSrc","placeholderOpacity","placeholderScale","useImageSize","optWidth","optHeight","extensionIcons","ExtensionIcon","extension","parts","FileViewBody","imageOptions","NoFileView","FileView","storagePath","dataUrl","missingFile","FileComponent","file","isImageField","imgOptions","MultipleSelectComponent","inEditable","renderOption","getOptionKey","colorMode","useColorMode","o","inputPaddingY","inputPaddingX","getInputPadding","paddingY","paddingX","fontSize","useInputStyle","NumberComponent","prefix","_","className","endsWith","setEndsWith","displayed","CurrencyInput","values","BaseCurrencyAmountComponent","CurrencyAmountComponent","OptionalTag","top","DefaultRenderOption","SelectComponent","customRender","PopoverBody","facebookLogo","instagramLogo","soundcloudLogo","twitterLogo","youtubeLogo","siteToIcon","SocialMediaSiteInput","site","handle","getHandle","displayedText","SocialMediaComponent","sites","_curr","rest","TextAreaComponent","textColor","useTextColor","TextareaAutosize","TextComponent","isHidden","setIsHidden","ViewIcon","ViewOffIcon","Components","InputBase","touched","_type","showPlaceholder","styles","Component","pb","FieldComponentBase","control","getOnChange","fieldBlur","useField","Controller","_r","inputProps","FieldComponent","UploadProgress","uploads","asArr","TransitionGroup","upload","Progress","CancelButton","onBack","SubmitButton","onSubmitClick","submitting","FormErrorView","formError","useChempoForm","FormFooter","renderFooter","buttonText","onSubmit","valid","useFormState","FileFieldView","MultipleSelectFieldView","SelectFieldView","DefaultFieldView","formatted","format","formatField","FieldView","StandaloneInputBase","useStandaloneInput","StandaloneInput","Editable","initValue","onEditClose","onEditOpen","formattedValue","setValue","editHovered","handleEditOpen","handleEditClose","isEditing","setEditHovered","submit","submitValue","parse","useEditable","alwaysEditing","editingBorderColor","ChempoFormProvider","EditIcon","CheckIcon","makeOnDragEndFunction","move","result","ListFieldInput","emptyData","isField","isListField","draggingBg","useFormContext","fields","append","remove","useFieldArray","onDragEnd","DragDropContext","Droppable","droppableProvided","draggingFromThisWith","formField","idx","Draggable","dragHandleProps","draggableProps","innerRef","isDragging","DragHandleIcon","FormElement","childName","childField","f","b","ListFieldView","itemField","FormElementView","updateField","useDataView","DataView","fieldName","setIsEditing","DataViewProvider","Form","FieldMapForm","submitDataProps","useFormSubmit","Stack","FieldForm","fieldMap","ListContainer","ListCell","rowIndex","columnIndex","items","onSelect","refetch","grid","numCols","itemIdx","NoItemsRow","list","debounced","search","useDataList","usePaginatedList","showLoading","pluralItemName","noItemsMessage","searchRequired","toPlural","getIsDynamicSize","itemHeight","nativeFilterMatchesPreset","nativeFilter","presetFilter","arrayOperators","nativeValues","filterMatchesPreset","getCellDims","gridWidth","rowHeight","columnWidth","getCellSize","preferredHeight","preferredWidth","numRows","colWidths","_i","_j","j","acc","itemWidth","rowHeights","colWidth","useGridDims","InfiniteScrollGridBody","totalCount","refetchItem","isItemLoaded","fetchMoreData","onSelectItem","mobileLayout","query","useFullSize","previewHeight","mobile","itemData","varRef","varGrid","infiniteLoaderRef","isDynamicHeight","itemKey","onRendered","overscanColumnStartIndex","overscanColumnStopIndex","overscanRowStartIndex","overscanRowStopIndex","visibleColumnStartIndex","visibleColumnStopIndex","visibleRowStartIndex","visibleRowStopIndex","onItemsRendered","start","stop","overscanStart","overscanStop","InfiniteLoader","VariableSizeGrid","r","FixedSizeGrid","ListRow","InfiniteScrollListBody","getItemSize","VariableSizeList","FixedSizeList","BasePagedGridBody","pageIndex","variableRef","fixedRef","fixGrid","PagedGridBody","memo","BasePagedListBody","varList","fixList","PagedListBody","ListBody","infiniteScroll","gridLayout","DesktopModal","contentProps","MobileOverlay","MobileOverlayBackground","MobileModal","onContentMounted","closeOnOverlayClick","setIsMounted","contentMounted","setContentMounted","unmountTimeout","contentMountTimeout","DefaultModal","forceMobile","ListCreate","baseQuery","setIsOpen","db","handleSubmit","NextButton","ChevronRightIcon","PrevButton","ChevronLeftIcon","FooterLoadingAndError","progressBg","getGroupIndex","numPages","NAV_BUTTON_SIZE","MOBILE_NAV_BUTTON_SIZE","PageNavButton","isActive","PageNavGroup","indicators","collapsed","goToPage","PageNav","groups","nPages","g","groupIndex","group","FOOTER_TEXT_WIDTH","ListFooter","onResize","flexProps","noFooter","numFetched","hasMoreData","itemsText","pageText","hasPrev","hasNext","FilterButton","filters","GroupRender","toggleFilter","CustomRender","FilterGroup","groupFilters","PresetFilters","currentFilters","filterPresets","isFilterGroup","PopoverCloseButton","SortButton","preset","setSortFromPreset","sort","ArrowUpIcon","ArrowDownIcon","ListSortView","sortPresets","ListSearch","update","searchIcon","iconFilter","InputGroup","InputLeftElement","SearchIcon","HeaderButtons","setNewItemOpen","access","canCreate","getHasAccess","AddIcon","gridToggleOptions","GridViewToggle","toggleGridLayout","DataListHeader","searchPath","Header","hasSearch","ListItemView","selectedItemId","deselectItem","ItemView","contentOffset","setContentOffset","errorColor","prevItem","setPrevItem","x","ListContent","modals","footerProps","headerHeight","setHeaderHeight","footerHeight","setFooterHeight","handleHeaderResize","handleFooterResize","ItemViewComponent","createField","DataList","basePath","state","useDataListData","usePaginatedQuery","PaginatedListProvider","NumberTicker","spanRef","helperValue","intervalRef","DarkModeToggle","toggleColorMode","hoverColor","SunIcon","MoonIcon","AbsoluteDarkModeToggle","definePartsStyle","defineMultiStyleConfig","createMultiStyleConfigHelpers","switchAnatomy","switchBaseTheme","switchTheme","$arrowBg","cssVar","headingFont","bodyFont","baseTheme","extendTheme","initializeScreen"],"mappings":"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","file":"index.js","sourcesContent":["import { Button, Flex, Portal, Text } from '@chakra-ui/react'\nimport { useAuth, useBackendBase } from '@chem-po/react'\n\ninterface SignInProps {\n // authProviders: Array<AuthProviderData<FC<{ noText?: boolean }>>>\n layout?: 'row' | 'column'\n}\n\nexport const SignIn = ({ layout = 'row' }: SignInProps) => {\n const {\n adapter: { auth },\n } = useBackendBase()\n\n const user = useAuth(s => s.user)\n return (\n <Flex gap={[1, 1, 2]} align=\"center\" flexFlow={['column', 'column', 'row']}>\n {user ? (\n <Button\n size=\"sm\"\n onClick={() => {\n auth.logout()\n }}>\n SIGN OUT\n </Button>\n ) : (\n <>\n <Text whiteSpace=\"nowrap\" textAlign=\"center\" opacity={0.8} fontWeight={600} fontSize=\"sm\">\n SIGN IN\n </Text>\n <Flex flexFlow={layout} gap={2} w=\"100%\"></Flex>\n </>\n )}\n </Flex>\n )\n}\n\nexport const AbsoluteLogin = (props: SignInProps) => (\n <Portal>\n <Flex position=\"fixed\" bottom={4} left={4}>\n <SignIn {...props} />\n </Flex>\n </Portal>\n)\n","import { Center, CenterProps } from '@chakra-ui/react'\n\nexport const CollapseHorizontal = ({\n width,\n children,\n active,\n duration = 400,\n ...props\n}: CenterProps & { width: number; active: boolean; duration?: number }) => (\n <Center\n width={`${active ? width : 0}px`}\n opacity={active ? 1 : 0}\n transition={`all ${duration}ms ease-in-out`}\n overflow=\"hidden\"\n {...props}>\n {children}\n </Center>\n)\n","import { Flex, FlexProps } from '@chakra-ui/react'\nimport { ForwardedRef, forwardRef } from 'react'\n\nconst ContentBoxBase = (props: FlexProps, ref: ForwardedRef<HTMLDivElement>) => {\n return (\n <Flex\n ref={ref}\n bg=\"background.100\"\n p={3}\n borderRadius={6}\n boxShadow=\"1px 1px 4px #00000066\"\n {...props}\n />\n )\n}\n\nexport const ContentBox = forwardRef<HTMLDivElement, FlexProps>(ContentBoxBase)\n","import { useColorModeValue } from '@chakra-ui/react'\n\n// TODO: these need to be updated to use chakra theme\nexport const useBorderColor = () => useColorModeValue('#00000033', '#ffffff33')\n","import { ChevronDownIcon, ChevronUpIcon } from '@chakra-ui/icons'\nimport { IconButton } from '@chakra-ui/react'\nimport { FC, MouseEvent } from 'react'\n\nexport const ViewButton: FC<{\n onClick: (e: MouseEvent) => void\n isOpen: boolean\n viewText?: string\n hideText?: string\n color?: string\n}> = ({ viewText = 'View', hideText = 'Hide', onClick, isOpen, color }) => (\n <IconButton\n icon={\n isOpen ? <ChevronUpIcon width={5} height={5} /> : <ChevronDownIcon width={5} height={5} />\n }\n aria-label={isOpen ? hideText : viewText}\n variant=\"ghost\"\n p=\"2px\"\n ml=\"auto\"\n size=\"xs\"\n fontSize=\"xs\"\n borderRadius=\"full\"\n _hover={{ bg: 'blackAlpha.200' }}\n color={color ?? '#777'}\n onClick={e => {\n e.stopPropagation()\n onClick(e)\n }}\n />\n)\n","import {\n Box,\n Collapse,\n Flex,\n HStack,\n StackProps,\n Text,\n useDisclosure,\n VStack,\n} from '@chakra-ui/react'\nimport React, { FC, PropsWithChildren, useCallback } from 'react'\nimport { useBorderColor } from '../../hooks/ui/useBorderColor'\nimport { ViewButton } from '../button/ViewButton'\n\nexport const Expandable = ({\n header,\n children,\n initExpanded = false,\n nested,\n alwaysExpanded,\n headerProps,\n iconColor,\n footer,\n isOpen: isOpenProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n ...stackProps\n}: PropsWithChildren<\n StackProps & {\n header: string | FC<{ isOpen: boolean; onClose: () => void }>\n footer?: FC<{ isOpen: boolean; onClose: () => void }>\n headerProps?: StackProps\n nested?: boolean\n alwaysExpanded?: boolean\n initExpanded?: boolean\n isOpen?: boolean\n onClose?: () => void\n iconColor?: string\n onOpen?: () => void\n }\n>) => {\n const { isOpen, onClose, onOpen } = useDisclosure({\n defaultIsOpen: alwaysExpanded ?? initExpanded,\n isOpen: isOpenProp,\n onClose: onCloseProp,\n onOpen: onOpenProp,\n })\n\n const handleOpenClick = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation()\n if (alwaysExpanded) return\n if (isOpen) {\n onClose()\n return\n }\n onOpen()\n },\n [alwaysExpanded, onOpen, onClose, isOpen],\n )\n const borderColor = useBorderColor()\n return (\n <VStack spacing={0} borderColor={borderColor} w=\"100%\" {...stackProps}>\n <HStack\n borderBottom={isOpen ? `1px solid ${borderColor}` : undefined}\n px={2}\n spacing={0}\n w=\"100%\"\n {...headerProps}>\n <Flex\n onClick={handleOpenClick}\n cursor=\"pointer\"\n aria-label=\"expand/hide\"\n align=\"center\"\n flex={1}>\n {typeof header === 'string' ? (\n <Text fontWeight={600} color=\"gray.500\" flex={1}>\n {header}\n </Text>\n ) : (\n header({ isOpen, onClose })\n )}\n </Flex>\n {alwaysExpanded ? null : (\n <ViewButton color={iconColor} onClick={handleOpenClick} isOpen={isOpen} />\n )}\n </HStack>\n <Box w=\"100%\" borderLeft={nested ? '4px solid #00000033' : undefined}>\n <Collapse unmountOnExit style={{ width: '100%' }} in={isOpen}>\n {children as any}\n </Collapse>\n </Box>\n {footer ? footer({ isOpen, onClose }) : null}\n </VStack>\n )\n}\n","import { Box, BoxProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nexport const ExpandOnMount: FC<\n BoxProps & { in?: boolean; animateOpacity?: boolean; duration?: number; onExited?: () => void }\n> = ({ animateOpacity, duration = 300, children, in: isIn = true, onExited, ...props }) => {\n const mounted = useMounted()\n\n const [bodyHeight, setBodyHeight] = useState<number>(0)\n const bodyRef = useRef<HTMLDivElement | null>(null)\n\n const [isAnimating, setIsAnimating] = useState(false)\n const expanded = useMemo(() => mounted && isIn, [isIn, mounted])\n const height = useMemo(() => (expanded ? bodyHeight : 0), [bodyHeight, expanded])\n const handleBodyResize = useCallback((e: ResizeObserverEntry) => {\n setBodyHeight(e.target.scrollHeight)\n }, [])\n\n useResizeObserver(bodyRef, handleBodyResize)\n\n const animatingTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n useEffect(() => {\n if (animatingTimeout.current) {\n clearTimeout(animatingTimeout.current)\n animatingTimeout.current = null\n }\n setIsAnimating(true)\n animatingTimeout.current = setTimeout(() => {\n setIsAnimating(false)\n if (onExited && !expanded) onExited()\n }, duration)\n }, [expanded, duration, onExited])\n const transition = useMemo(() => {\n if (!isAnimating && expanded) return 'height 0ms'\n if (!animateOpacity) return `height ${duration}ms`\n return `height ${duration}ms, opacity ${duration}ms ease ${expanded ? duration : 0}ms`\n }, [animateOpacity, duration, expanded, isAnimating])\n\n return (\n <Box overflow=\"hidden\" w=\"100%\" transition={transition} height={`${height}px`} {...props}>\n <Box ref={bodyRef} w=\"100%\" {...props}>\n {children}\n </Box>\n </Box>\n )\n}\n","import { Box, BoxProps } from '@chakra-ui/react'\nimport { FullSizeContext } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { FC, useCallback, useMemo, useRef, useState } from 'react'\n\nexport const FullSizeContainer = ({\n children,\n ...props\n}: Omit<BoxProps, 'children'> & { children: FC<{ width: number; height: number }> }) => {\n const [width, setWidth] = useState(0)\n const [height, setHeight] = useState(0)\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback((entry: ResizeObserverEntry) => {\n // const rect = entry.target.getBoundingClientRect()\n setWidth(entry.target.scrollWidth)\n setHeight(entry.target.scrollHeight)\n }, [])\n\n useResizeObserver(ref, handleResize)\n\n return (\n <Box ref={ref} {...props} width=\"100%\" height=\"100%\">\n {children({ width, height })}\n </Box>\n )\n}\n\n// same as FullSizeContainer, but provides the width and height in a context instead of a render prop\nexport const FullSizeProvider = ({ children, ...props }: BoxProps) => {\n const [width, setWidth] = useState(0)\n const [height, setHeight] = useState(0)\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback((entry: ResizeObserverEntry) => {\n // const rect = entry.target.getBoundingClientRect()\n setWidth(entry.target.scrollWidth)\n setHeight(entry.target.scrollHeight)\n }, [])\n\n useResizeObserver(ref, handleResize)\n\n const contextValue = useMemo(() => ({ width, height }), [width, height])\n\n return (\n <Box ref={ref} {...props} width=\"100%\" height=\"100%\">\n <FullSizeContext.Provider value={contextValue}>{children}</FullSizeContext.Provider>\n </Box>\n )\n}\n","import React, { PropsWithChildren, useContext } from 'react'\n\nconst ForceMobileContext = React.createContext(false)\nexport const ForceMobile = ({ children }: PropsWithChildren) => (\n <ForceMobileContext.Provider value={true}>{children}</ForceMobileContext.Provider>\n)\nexport const useForceMobile = () => useContext(ForceMobileContext)\n","import { Button, Flex, Image, useColorModeValue } from '@chakra-ui/react'\nimport { palette } from '@chem-po/core'\nimport { useViews, View } from '@chem-po/react'\nimport { PropsWithChildren, useMemo } from 'react'\nimport { Link, useLocation } from 'react-router-dom'\n\nexport const NAV_BAR_HEIGHT = 50\n\nconst NavBarLink = ({ view, absolute }: { view: View; absolute: boolean }) => {\n const { path: paths, name, icon, iconScale } = view\n const path = Array.isArray(paths) ? paths[0] : paths\n\n // const hoverBg = useColorModeValue('#00000033', '#f7f7f777')\n // const textColor = useColorModeValue('#777', '#cdcdcd')\n const iconBrightness = useColorModeValue(1, 1.8)\n const usedBrightness = useMemo(\n () => (absolute ? 2.4 : iconBrightness),\n [absolute, iconBrightness],\n )\n const { pathname } = useLocation()\n const hoverBg = useColorModeValue('#ffffff33', '#00000033')\n const body = (\n <Button\n pointerEvents={pathname === path ? 'none' : 'auto'}\n opacity={pathname === path ? 1 : 0.7}\n width=\"100%\"\n height=\"100%\"\n borderRadius={0}\n flexFlow=\"column\"\n _hover={{\n bg: hoverBg,\n }}\n variant=\"unstyled\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\">\n <Image\n height={`${34 * (iconScale ?? 1)}px`}\n filter={`brightness(${usedBrightness})${\n absolute ? ' drop-shadow(1px 1px 3px #00000099 )' : ''\n }`}\n src={icon}\n alt={name}\n />\n {/* <Text color={textColor} lineHeight={1} fontWeight={400} fontSize='xs'>\n {name}\n </Text> */}\n </Button>\n )\n return pathname === path ? (\n <Flex key={path} flex={1} h=\"100%\" justify=\"center\">\n {body}\n </Flex>\n ) : (\n <Link\n key={path}\n style={{\n flex: 1,\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n }}\n to={path}>\n {body}\n </Link>\n )\n}\n\nexport const NavBar = ({\n selectedView,\n children,\n}: PropsWithChildren<{ selectedView?: View | null }>) => {\n const bg = useColorModeValue('#dedede', palette.gray.dark)\n const defaultBorderColor = useColorModeValue('#00000022', '#ffffff33')\n const views = useViews()\n const menuViews = useMemo(() => views.filter(v => !!v.view.icon), [views])\n const isAbsolute = useMemo(() => !!selectedView?.navBar?.absolute, [selectedView])\n const background = useMemo(() => selectedView?.navBar?.backgroundColor ?? bg, [bg, selectedView])\n const borderColor = useMemo(() => {\n if (selectedView?.navBar?.borderColor) return !!selectedView?.navBar?.borderColor\n return isAbsolute ? '#ffffff33' : defaultBorderColor\n }, [defaultBorderColor, selectedView, isAbsolute])\n return (\n <Flex\n position=\"absolute\"\n bottom={0}\n left={0}\n bg={background}\n w=\"100%\"\n transition=\"all 500ms\"\n h={`${NAV_BAR_HEIGHT}px`}\n borderTop={`1px solid ${borderColor}`}>\n <Flex position=\"relative\" w=\"100%\" justify=\"space-around\" align=\"center\">\n {menuViews.map(({ view }) => (\n <NavBarLink absolute={isAbsolute} key={view.name} view={view} />\n ))}\n {children}\n </Flex>\n </Flex>\n )\n}\n","import { Flex, Text, useColorModeValue } from '@chakra-ui/react'\nimport { ContentBox } from '../box/ContentBox'\n\nexport const ErrorView = ({ message }: { message?: string }) => {\n const color = useColorModeValue('gray.600', 'gray.100')\n return (\n <Flex pt={4}>\n <ContentBox>\n <Text color={color}>{message ?? 'Sorry, something went wrong.'}</Text>\n </ContentBox>\n </Flex>\n )\n}\n","import {\n CircularProgressProps,\n CircularProgress as Orig,\n useColorModeValue,\n} from '@chakra-ui/react'\n\nexport const CircularProgress = (props: CircularProgressProps) => {\n const color = useColorModeValue('gray.400', 'gray.400')\n const bg = useColorModeValue('gray.300', 'gray.600')\n return <Orig isIndeterminate trackColor={bg} color={color} {...props} />\n}\n","import { Center, CenterProps, HStack, StackProps, Text, useColorModeValue } from '@chakra-ui/react'\nimport { ThemedAsset, useAppAssets } from '@chem-po/react'\nimport { LottieOptions, useLottie } from 'lottie-react'\nimport { useEffect, useMemo } from 'react'\nimport { ContentBox } from '../box/ContentBox'\n// import loadingAnimation from './circles_loading.json'\n// import loadingAnimationLight from './circles_loading_light.json'\n\nexport const LottieLoadingLogo = ({\n size = 30,\n isLoading,\n speed = 2,\n inFeed,\n asset,\n}: {\n size?: number | string\n color?: string\n isLoading: boolean\n asset: ThemedAsset\n inFeed?: boolean\n speed?: number\n}) => {\n const _animationData = useColorModeValue(asset.default, asset.dark ?? asset.default)\n const animationData = useMemo(\n () => (inFeed ? (asset.dark ?? asset.default) : _animationData),\n [_animationData, asset, inFeed],\n )\n const options = useMemo<LottieOptions>(\n () => ({\n // animationData: getLoaderJson(propColor || defaultColor),\n animationData,\n loop: true,\n }),\n [animationData],\n )\n const style = useMemo(\n () => ({\n width: size,\n height: size,\n opacity: isLoading ? 0.85 : 0,\n transition: 'opacity 300ms ease-in-out',\n }),\n [size, isLoading],\n )\n const { View, pause, play, setSpeed } = useLottie(options, style)\n useEffect(() => {\n setSpeed(speed)\n }, [setSpeed, speed])\n useEffect(() => {\n if (isLoading) {\n play()\n } else pause()\n }, [isLoading, play, pause])\n\n return <>{View}</>\n}\n\nconst SVGLoadingLogo = ({\n size = 30,\n isLoading,\n asset,\n inFeed,\n}: {\n size?: number | string\n isLoading: boolean\n asset: ThemedAsset\n inFeed?: boolean\n}) => {\n const _svg = useColorModeValue(asset.default, asset.dark ?? asset.default)\n const svg = useMemo(() => (inFeed ? (asset.dark ?? asset.default) : _svg), [_svg, asset, inFeed])\n const style = useMemo(\n () => ({\n width: size,\n height: size,\n opacity: isLoading ? 0.85 : 0,\n transition: 'opacity 300ms ease-in-out',\n }),\n [size, isLoading],\n )\n return <img src={svg} style={style} alt=\"loading\" />\n}\n\nconst LoadingBody = ({ isLoading, size }: { isLoading: boolean; size?: number | string }) => {\n const { loading } = useAppAssets()\n if (loading.lottieJson)\n return <LottieLoadingLogo isLoading={isLoading} size={size} asset={loading.lottieJson} />\n if (loading.svg) return <SVGLoadingLogo isLoading={isLoading} size={size} asset={loading.svg} />\n return null\n}\n\nexport const LoadingLogo = ({\n isLoading,\n size,\n inFeed,\n}: {\n isLoading: boolean\n size?: number | string\n inFeed?: boolean\n}) => {\n const { loading } = useAppAssets()\n if (loading.lottieJson)\n return (\n <LottieLoadingLogo\n inFeed={inFeed}\n isLoading={isLoading}\n size={size}\n asset={loading.lottieJson}\n />\n )\n if (loading.svg)\n return <SVGLoadingLogo inFeed={inFeed} isLoading={isLoading} size={size} asset={loading.svg} />\n return <Text color=\"red\">ERROR: No loading animation found</Text>\n}\n\nexport const Loading = ({\n text = 'Loading...',\n inBox,\n stackProps,\n}: {\n text?: string\n inBox?: boolean\n stackProps?: StackProps\n}) => {\n const body = (\n <HStack p={2} {...stackProps}>\n <LoadingBody isLoading />\n <Text opacity={0.8} fontSize=\"sm\">\n {text}\n </Text>\n </HStack>\n )\n return inBox ? <ContentBox>{body}</ContentBox> : body\n}\n\nexport const LoadingOverlay = ({\n isLoading,\n text,\n inFeed,\n ...props\n}: { isLoading: boolean; text?: string; inFeed?: boolean } & CenterProps) => {\n const bg = useColorModeValue('#ffffffaa', '#00000088')\n return (\n <Center\n pos={'absolute'}\n top={0}\n left={0}\n right={0}\n bottom={0}\n bg={bg}\n pointerEvents={isLoading ? 'auto' : 'none'}\n opacity={isLoading ? 1 : 0}\n {...props}>\n {!text ? (\n <LoadingLogo inFeed={inFeed} size={100} isLoading={isLoading} />\n ) : (\n <Loading text={text} />\n )}\n </Center>\n )\n}\n","import { Center, HStack, Text, VStack } from '@chakra-ui/react'\nimport { useAuth } from '@chem-po/react'\nimport React, { useEffect, useRef } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { ContentBox } from '../box/ContentBox'\nimport { CircularProgress } from '../loading/CircularProgress'\nimport { Loading } from '../loading/Loading'\n\nexport const RedirectView: React.FC<{ loading?: boolean }> = ({ loading }) => {\n const timer = useRef<any>()\n const authLoading = useAuth(s => s.loading)\n\n const navigate = useNavigate()\n useEffect(() => {\n if (!loading && !authLoading) {\n timer.current = setTimeout(() => {\n navigate('/')\n }, 1500)\n }\n return () => {\n if (timer.current) clearTimeout(timer.current)\n }\n }, [loading, navigate, authLoading])\n\n return !loading && !authLoading ? (\n <Center minH=\"100%\" w=\"100%\">\n <ContentBox maxW=\"500px\">\n <HStack spacing={3}>\n <CircularProgress size={6} />\n <VStack spacing={0} align=\"flex-start\">\n <Text>404</Text>\n <Text fontSize=\"sm\" opacity={0.7}>\n Page not found - redirecting to Home...\n </Text>\n </VStack>\n </HStack>\n </ContentBox>\n </Center>\n ) : (\n <Loading />\n )\n}\n","import { Box, Center, Flex, useColorModeValue } from '@chakra-ui/react'\nimport { cssGradients } from '@chem-po/core'\nimport { MobileFrameProvider, useScreen, useViews, View, ViewsProvider } from '@chem-po/react'\nimport { AnimatePresence, motion } from 'framer-motion'\nimport { PropsWithChildren, ReactNode, useMemo, useRef } from 'react'\nimport { ErrorBoundary } from 'react-error-boundary'\nimport { matchRoutes, useLocation, useOutlet } from 'react-router-dom'\nimport { CSSTransition, SwitchTransition } from 'react-transition-group'\nimport { ForceMobile } from '../../modal/ForceMobile'\nimport { NAV_BAR_HEIGHT, NavBar } from '../../nav/NavBar'\nimport { ErrorView } from '../../view/ErrorView'\nimport { RedirectView } from '../../view/RedirectView'\nimport './styles.css'\n\nconst IPHONE_12_WIDTH = 390\nconst IPHONE_12_HEIGHT = 844\nconst IPHONE_12_ASPECT = IPHONE_12_WIDTH / IPHONE_12_HEIGHT\n\nconst MobileFrameBody = ({\n children,\n navBarChildren,\n}: PropsWithChildren<{ navBarChildren?: ReactNode }>) => {\n const { isMobile, height: screenHeight, width: screenWidth } = useScreen()\n\n // const contentHeight = useMemo(() => (isMobile ? screenHeight : IPHONE_12_HEIGHT), [isMobile, screenHeight])\n // const contentWidth = useMemo(() => (isMobile ? screenWidth : IPHONE_12_WIDTH), [isMobile, screenWidth])\n // should be constrained to the screen size\n const { contentHeight, contentWidth } = useMemo(() => {\n let h = isMobile ? screenHeight : IPHONE_12_HEIGHT\n let w = isMobile ? screenWidth : IPHONE_12_WIDTH\n if (isMobile) return { contentHeight: h, contentWidth: w }\n const cappedHeight = Math.floor(screenHeight * 0.9)\n const cappedWidth = Math.floor(screenWidth * 0.9)\n if (h > cappedHeight) {\n w = Math.floor(cappedHeight * IPHONE_12_ASPECT)\n h = cappedHeight\n } else if (w > cappedWidth) {\n h = Math.floor(cappedWidth / IPHONE_12_ASPECT)\n w = cappedWidth\n }\n return { contentHeight: h, contentWidth: w }\n }, [isMobile, screenHeight, screenWidth])\n\n const outerBg = useColorModeValue(cssGradients.accentGray, cssGradients.darkGray)\n const location = useLocation()\n const currentOutlet = useOutlet()\n const views = useViews()\n const view = useMemo(() => views.find(v => !!matchRoutes(v.routes, location)), [views, location])\n const viewKey = useMemo(() => {\n if (!view) return '404'\n return typeof view.view.path === 'string' ? view.view.path : view.view.path[0]\n }, [view])\n const overlayRef = useRef<HTMLDivElement>(null)\n const nodeRef = useRef<HTMLDivElement>(null)\n const absoluteNavBar = useMemo(() => !!view?.view?.navBar?.absolute, [view])\n const bodyHeight = useMemo(\n () => contentHeight - (absoluteNavBar ? 0 : NAV_BAR_HEIGHT),\n [contentHeight, absoluteNavBar],\n )\n const contextData = useMemo(\n () => ({\n overlayRef,\n height: contentHeight,\n width: contentWidth,\n absoluteNavBar,\n bodyHeight,\n }),\n [overlayRef, contentHeight, contentWidth, absoluteNavBar, bodyHeight],\n )\n return (\n <ForceMobile>\n <MobileFrameProvider value={contextData}>\n <Center position=\"relative\" bg={outerBg} w=\"100%\" height=\"100%\">\n <Flex\n bg=\"background.100\"\n // ref={frameRef}\n position=\"relative\"\n style={{ height: `${contentHeight}px`, width: `${contentWidth}px` }}\n boxShadow={isMobile ? 'none' : '1px 1px 4px rgba(0,0,0,0.4)'}\n borderRadius={isMobile ? 0 : 10}\n overflow=\"hidden\"\n direction=\"column\"\n maxH={contentHeight}>\n <AnimatePresence>\n <SwitchTransition>\n <CSSTransition\n key={viewKey}\n nodeRef={nodeRef}\n unmountOnExit\n classNames=\"page\"\n timeout={300}>\n {() => (\n <motion.div\n style={{\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n }}\n animate={{\n height: bodyHeight,\n opacity: 1,\n dur: 0.5,\n scale: 1,\n }}\n initial={{ opacity: 0, scale: 0.9, height: bodyHeight }}\n exit={{ opacity: 0 }}>\n <ErrorBoundary FallbackComponent={() => <ErrorView />}>\n {view ? currentOutlet : <RedirectView />}\n </ErrorBoundary>\n {children ? (\n <Box\n height=\"100%\"\n w=\"100%\"\n position=\"absolute\"\n top={0}\n left={0}\n pointerEvents=\"none\">\n {children}\n </Box>\n ) : null}\n </motion.div>\n )}\n </CSSTransition>\n </SwitchTransition>\n </AnimatePresence>\n <NavBar selectedView={view?.view}>{navBarChildren}</NavBar>\n <Flex pos=\"absolute\" pointerEvents=\"none\" bottom={0} w=\"100%\" h=\"100%\">\n <Flex ref={overlayRef} w=\"100%\" h=\"100%\" pos=\"relative\" />\n </Flex>\n </Flex>\n </Center>\n </MobileFrameProvider>\n </ForceMobile>\n )\n}\n\nexport const MobileFrame = ({\n children,\n navBarChildren,\n views,\n}: PropsWithChildren<{ views: View[]; navBarChildren?: ReactNode }>) => (\n <ViewsProvider views={views}>\n <MobileFrameBody navBarChildren={navBarChildren}>{children}</MobileFrameBody>\n </ViewsProvider>\n)\n","import { DeleteIcon } from '@chakra-ui/icons'\nimport {\n AlertDialog,\n AlertDialogBody,\n AlertDialogContent,\n AlertDialogOverlay,\n Button,\n Flex,\n HStack,\n IconButton,\n IconButtonProps,\n Text,\n useToast,\n VStack,\n} from '@chakra-ui/react'\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\nconst defaultAlertBodyText = \"Are you sure? You can't undo this action afterwards.\"\nexport const DeleteConfirmAlert = ({\n confirmActive,\n onCancel,\n onConfirm,\n body = defaultAlertBodyText,\n actionName = 'Delete',\n actionLoading,\n itemName,\n}: {\n confirmActive: boolean\n onCancel: () => void\n onConfirm: () => void\n body?: string | ReactNode\n actionLoading?: boolean\n actionName?: string\n itemName: string\n}) => {\n const cancelRef = useRef<HTMLButtonElement>(null)\n return (\n <AlertDialog\n isCentered\n isOpen={confirmActive}\n leastDestructiveRef={cancelRef}\n onClose={() => onCancel()}>\n <AlertDialogOverlay>\n <AlertDialogContent gap={0}>\n <AlertDialogBody>\n <VStack align=\"flex-start\" py={1}>\n <Text fontSize=\"lg\" fontWeight={500}>\n {actionName} {itemName}?\n </Text>\n {typeof body === 'string' ? <Text fontSize=\"md\">{body}</Text> : body}\n <HStack justify=\"flex-end\" w=\"100%\">\n <Button size=\"sm\" ref={cancelRef} onClick={onCancel}>\n Cancel\n </Button>\n <Button\n size=\"sm\"\n isLoading={actionLoading}\n color=\"white\"\n textShadow=\"1px 1px 3px #00000077\"\n bg=\"red.500\"\n _dark={{\n bg: 'red.500',\n }}\n onClick={onConfirm}>\n {actionName}\n </Button>\n </HStack>\n </VStack>\n </AlertDialogBody>\n </AlertDialogContent>\n </AlertDialogOverlay>\n </AlertDialog>\n )\n}\n\nexport const DeleteButton: React.FC<\n Partial<IconButtonProps> & {\n onDelete: (() => Promise<any>) | (() => void)\n itemName: string\n actionName?: string\n noConfirm?: boolean\n text?: string\n alertBody?: string | ReactNode\n }\n> = ({ onDelete, itemName, noConfirm, alertBody, text, actionName = 'Delete', ...props }) => {\n const [deleteLoading, setDeleteLoading] = useState(false)\n const [confirmActive, setConfirmActive] = useState(false)\n const confirmTimer = useRef<any>()\n const isMounted = useRef(true)\n useEffect(() => {\n isMounted.current = true\n\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const toast = useToast()\n const handleDelete = useCallback(async () => {\n if (confirmTimer.current) clearTimeout(confirmTimer.current)\n setConfirmActive(false)\n if (onDelete) {\n setDeleteLoading(true)\n try {\n await onDelete()\n } catch (err: any) {\n console.error(err)\n toast({\n title: 'Error',\n description: err.message ?? 'An error occurred',\n status: 'error',\n duration: 5000,\n isClosable: true,\n })\n }\n if (isMounted.current) {\n setDeleteLoading(false)\n }\n } else {\n console.error('No delete function')\n }\n }, [onDelete, toast])\n\n return (\n <>\n {text ? (\n <Button\n variant=\"ghost\"\n size={props.size ?? 'md'}\n aria-label=\"delete\"\n _hover={{ color: 'red.600', bg: 'red.200' }}\n color=\"red.600\"\n onClick={e => {\n e.stopPropagation()\n if (noConfirm) handleDelete()\n else setConfirmActive(true)\n }}\n isLoading={deleteLoading}\n {...props}>\n <Flex align=\"center\" gap={1}>\n <DeleteIcon />\n <Text>{text}</Text>\n </Flex>\n </Button>\n ) : (\n <IconButton\n variant=\"ghost\"\n size={props.size ?? 'sm'}\n aria-label={actionName}\n _hover={{ color: 'red.600', bg: 'red.200' }}\n color=\"red.500\"\n borderRadius=\"full\"\n icon={<DeleteIcon />}\n onClick={e => {\n e.stopPropagation()\n if (noConfirm) handleDelete()\n else setConfirmActive(true)\n }}\n isLoading={deleteLoading}\n {...props}\n />\n )}\n {noConfirm ? null : (\n <DeleteConfirmAlert\n confirmActive={confirmActive}\n onCancel={() => setConfirmActive(false)}\n actionLoading={deleteLoading}\n onConfirm={() => {\n handleDelete()\n }}\n actionName={actionName}\n body={alertBody}\n itemName={itemName}\n />\n )}\n </>\n )\n}\n","import { Box, Flex, IconButton, IconButtonProps, Tooltip } from '@chakra-ui/react'\nimport { JSX } from 'react'\nimport { useBorderColor } from '../../hooks'\n\nexport interface ToggleOption<Option extends string = string> {\n id: Option\n label: string\n disabledMessage?: string\n Render: (selected: boolean) => JSX.Element\n}\nexport interface ToggleProps<Option extends string> {\n options: ToggleOption<Option>[]\n value: Option\n size?: number\n onChange: (value: Option) => Promise<void> | void\n}\n\nconst ToggleButton = <Option extends string>({\n selected,\n option: { Render, label, disabledMessage },\n size,\n ...props\n}: Omit<IconButtonProps, 'children' | 'aria-label' | 'size'> & {\n option: ToggleOption<Option>\n size: number\n selected: boolean\n}) => {\n const body = (\n <Box>\n <IconButton\n variant=\"unstyled\"\n w={`${size}px`}\n h={`${size}px`}\n minW={0}\n borderRadius={0}\n outline=\"none\"\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n opacity={!disabledMessage ? 1 : 0.6}\n filter={!disabledMessage ? 'none' : 'grayscale(1)'}\n bg={selected ? 'whiteAlpha.500' : 'blackAlpha.100'}\n _dark={{ bg: selected ? 'blackAlpha.500' : 'whiteAlpha.200' }}\n icon={Render(selected)}\n pointerEvents={selected ? 'none' : 'auto'}\n aria-label={label}\n {...props}\n />\n </Box>\n )\n\n return (\n <Tooltip label={disabledMessage ?? label} aria-label={label}>\n {body}\n </Tooltip>\n )\n}\n\nexport const Toggle = <Option extends string>({\n value,\n onChange,\n size = 28,\n options,\n}: ToggleProps<Option>) => {\n const borderColor = useBorderColor()\n return (\n <Flex\n bg=\"whiteAlpha.300\"\n _dark={{ bg: 'blackAlpha.300' }}\n border={`1px solid ${borderColor}`}\n borderRadius={3}>\n {options.map((option, i) => (\n <ToggleButton<Option>\n key={option.id}\n onClick={() => {\n onChange(option.id)\n }}\n option={option}\n size={size}\n borderLeftRadius={i ? 0 : 3}\n borderRightRadius={i === options.length - 1 ? 3 : 0}\n selected={option.id === value}\n borderLeft={i ? `1px solid ${borderColor}` : 'none'}\n />\n ))}\n </Flex>\n )\n}\n","import { AnyObject, WithId } from '@chem-po/core'\nimport { createContext, PropsWithChildren, useContext, useMemo } from 'react'\n\ninterface MediaFeedContextValue<T extends AnyObject = AnyObject> {\n curr: WithId<T> | null\n}\nexport const MediaFeedContext = createContext<MediaFeedContextValue<any>>(\n {} as MediaFeedContextValue<any>,\n)\n\nexport const MediaFeedProvider = <T extends AnyObject = AnyObject>({\n curr,\n children,\n}: PropsWithChildren<{ curr: WithId<T> | null }>) => {\n const contextData = useMemo(() => ({ curr }), [curr])\n return <MediaFeedContext.Provider value={contextData}>{children}</MediaFeedContext.Provider>\n}\nexport const useMediaFeed = <T extends AnyObject = AnyObject>() =>\n useContext(MediaFeedContext) as MediaFeedContextValue<T>\n","import { CloseIcon } from '@chakra-ui/icons'\nimport { Center, IconButton, Image, Modal, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport { useScreen } from '@chem-po/react'\nimport { SyntheticEvent, useCallback, useMemo, useState } from 'react'\nimport { LoadingLogo } from '../loading/Loading'\n\nexport const ImageViewOverlay = ({ src, onClose }: { src: string; onClose: () => void }) => {\n const [loading, setLoading] = useState(true)\n const screenWidth = useScreen(s => s.width)\n const screenHeight = useScreen(s => s.height)\n const [imageSize, setImageSize] = useState({ width: screenWidth / 2, height: screenHeight / 2 })\n\n const { height, width } = useMemo(() => {\n if (loading) return imageSize\n const ratio = imageSize.width / imageSize.height\n let h = Math.min(imageSize.height, screenHeight * 0.9)\n let w = h * ratio\n if (w > screenWidth * 0.9) {\n w = Math.min(imageSize.width, screenWidth * 0.9)\n h = w / ratio\n }\n return { height: h, width: w }\n }, [screenHeight, screenWidth, imageSize, loading])\n\n const onLoadStart = useCallback(() => setLoading(true), [])\n const onLoad = useCallback((e: SyntheticEvent<HTMLImageElement>) => {\n const { naturalWidth, naturalHeight } = e.currentTarget\n setImageSize({ width: naturalWidth, height: naturalHeight })\n setLoading(false)\n }, [])\n return (\n <Modal size=\"full\" isOpen onClose={onClose}>\n <ModalOverlay bg=\"blackAlpha.700\" />\n <ModalContent\n style={{ background: 'transparent' }}\n pointerEvents=\"none\"\n width=\"100%\"\n height=\"100%\">\n <Center\n pointerEvents=\"none\"\n position=\"fixed\"\n p={[4, 6, 8]}\n top={0}\n left={0}\n right={0}\n bottom={0}\n zIndex={4}>\n <Center\n opacity={loading ? 0 : 1}\n transition=\"all 500ms\"\n overflow=\"hidden\"\n w={`${width}px`}\n height={`${height}px`}>\n <Image\n onLoadStart={onLoadStart}\n onLoad={onLoad}\n transition=\"opacity 300ms\"\n height=\"100%\"\n objectFit=\"contain\"\n borderRadius={4}\n src={src}\n />\n </Center>\n <IconButton\n borderRadius=\"full\"\n position=\"absolute\"\n top={4}\n right={4}\n aria-label=\"close\"\n icon={<CloseIcon />}\n onClick={onClose}\n />\n </Center>\n <Center\n position=\"absolute\"\n top={0}\n left={0}\n right={0}\n bottom={0}\n pointerEvents=\"none\"\n opacity={loading ? 1 : 0}\n transition=\"opacity 300ms\">\n <LoadingLogo isLoading={loading} size={70} />\n </Center>\n </ModalContent>\n </Modal>\n )\n}\n","import { BoxProps, Center, IconButton, Image, ImageProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport { SyntheticEvent, useCallback, useEffect, useRef, useState } from 'react'\nimport { ImageViewOverlay } from '../overlay/ImageViewOverlay'\nimport { LoadingLogo } from './Loading'\n\nexport interface LoadingImageProps {\n src?: string | null\n loadingOverride?: boolean\n onLoad?: ImageProps['onLoad']\n alt?: string\n noFullView?: boolean\n buttonFullView?: boolean\n imageProps?: Omit<ImageProps, 'onLoad'>\n}\n\nconst emptyPng =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkAAIAAAoAAv/lxKUAAAAASUVORK5CYII='\nexport const LoadingImage = ({\n src,\n loadingOverride,\n alt,\n onLoad,\n width,\n height,\n noFullView,\n buttonFullView,\n imageProps,\n ...boxProps\n}: LoadingImageProps & Omit<BoxProps, 'onLoad'>) => {\n const [imageLoading, setImageLoading] = useState(!!src)\n const imageRef = useRef<HTMLImageElement>(null)\n\n const [viewing, setViewing] = useState(false)\n const mounted = useMounted(100)\n useEffect(() => {\n if (imageRef.current?.complete) {\n setImageLoading(true)\n }\n }, [imageRef])\n\n const handleImageLoad = useCallback(\n (e: SyntheticEvent<HTMLImageElement>) => {\n setImageLoading(false)\n if (onLoad) onLoad(e)\n },\n [onLoad],\n )\n\n const [prevSrc, setPrevSrc] = useState(src)\n useEffect(() => {\n if (src) setPrevSrc(src)\n }, [src, prevSrc])\n\n const loading = imageLoading || !!loadingOverride\n return (\n <Center\n opacity={mounted ? 1 : 0}\n transition=\"opacity 333ms\"\n w={width ?? '100%'}\n h={height ?? '100%'}\n overflow=\"hidden\"\n position=\"relative\"\n {...boxProps}>\n <Image\n src={src ?? emptyPng}\n alt={alt}\n onClick={noFullView || buttonFullView ? undefined : () => setViewing(true)}\n onLoad={handleImageLoad}\n onLoadStart={() => setImageLoading(true)}\n top={0}\n left={0}\n cursor={noFullView || buttonFullView ? 'default' : 'pointer'}\n draggable={false}\n opacity={src && !loading ? 1 : 0}\n transition=\"opacity 300ms ease-in-out\"\n w=\"100%\"\n h=\"100%\"\n objectFit={src ? 'cover' : 'contain'}\n zIndex={0}\n {...imageProps}\n />\n {buttonFullView ? (\n <IconButton\n pos=\"absolute\"\n top={2}\n right={2}\n zIndex={1}\n w={7}\n minW={0}\n borderRadius={10}\n h={7}\n size=\"sm\"\n aria-label=\"View Image\"\n icon={\n <Image\n height=\"20px\"\n src=\"/icons/open_in_full.svg\"\n opacity={0.8}\n filter=\"brightness(300%) drop-shadow(1px 1px 3px #00000066)\"\n />\n }\n onClick={() => setViewing(true)}\n />\n ) : null}\n <Center\n pos=\"absolute\"\n top={0}\n left={0}\n zIndex={2}\n pointerEvents=\"none\"\n transition=\"opacity 0.5s ease-in-out\"\n opacity={loading || !src ? 1 : 0}\n w=\"100%\"\n h=\"100%\">\n <LoadingLogo isLoading={loading} size=\"60%\" />\n </Center>\n {viewing ? (\n <ImageViewOverlay src={src ?? emptyPng} onClose={() => setViewing(false)} />\n ) : null}\n </Center>\n )\n}\n","import { Center, Flex, Switch, Text, useToast } from '@chakra-ui/react'\nimport { useCallback, useState } from 'react'\nimport { Loading } from './Loading'\n\nexport const LoadingSwitch = ({\n value,\n label,\n onChange,\n}: {\n value: boolean\n label: string\n onChange: (updated: boolean) => Promise<void>\n}) => {\n const toast = useToast()\n const [isLoading, setIsLoading] = useState(false)\n\n const reportComplete = useCallback((fetchedOn: number) => {\n const buffer = Math.max(0, 1000 - (Date.now() - fetchedOn))\n setTimeout(() => {\n setIsLoading(false)\n }, buffer)\n }, [])\n\n return (\n <Flex\n py={1}\n pr={2}\n pl={3}\n bg=\"gray.700\"\n borderRadius={12}\n boxShadow=\"0 0 4px black\"\n pos=\"relative\"\n align=\"center\">\n <Flex\n opacity={isLoading ? 0 : 1}\n transition={`opacity 300ms ${isLoading ? 'ease-out' : 'ease-in'}`}\n pointerEvents={isLoading ? 'none' : 'auto'}\n align=\"center\"\n gap={2}>\n <Text style={{ fontSize: '1.2rem', height: '24px' }}>{label}</Text>\n <Switch\n size=\"md\"\n isChecked={value}\n onChange={e => {\n setIsLoading(true)\n const fetchedOn = Date.now()\n onChange(e.target.checked).catch(err => {\n console.error(err)\n toast({\n title: 'Error',\n description: err?.message ?? 'Error occurred',\n status: 'error',\n duration: 5000,\n isClosable: true,\n })\n })\n\n reportComplete(fetchedOn)\n }}\n />\n </Flex>\n <Center\n opacity={isLoading ? 1 : 0}\n transition={`opacity 300ms ${!isLoading ? 'ease-out' : 'ease-in'}`}\n pointerEvents={isLoading ? 'auto' : 'none'}\n pos=\"absolute\"\n top=\"-10%\"\n left=\"-10%\"\n w=\"120%\"\n borderRadius={8}\n p={1}\n gap={2}\n h=\"120%\">\n <Loading />\n </Center>\n </Flex>\n )\n}\n","import { SpringOptions } from 'framer-motion'\n\nexport const springConfig: SpringOptions = {\n damping: 25,\n stiffness: 200,\n bounce: 0.5,\n // restSpeed: 0.1,\n}\n\nexport const SWIPE_THRESHOLD = 75\nexport const REFRESH_THRESHOLD = 100\n","import { AnyObject, WithId } from '@chem-po/core'\nimport { MobileFrameContextData, useDocument, useMobileFrame } from '@chem-po/react'\nimport { motion, MotionValue, useMotionValue, useSpring, useTransform } from 'framer-motion'\nimport { JSX, useEffect, useMemo, useRef } from 'react'\nimport { springConfig } from './constants'\nimport { PanelStatus } from './types'\n\nconst getContentScale = (status: PanelStatus) => {\n // if (status === 'current') return 1\n if (status === 'current') return 1\n return 0\n}\nconst getContentX = (status: PanelStatus, contentSize: { width: number; height: number }) => {\n const { width: cWidth } = contentSize\n if (status === 'current') return 0\n if (status === 'next') return cWidth\n if (status === 'prev') return -cWidth\n return 0\n}\n\nconst getContentY = (status: PanelStatus, contentSize: { width: number; height: number }) => {\n const { height: cHeight } = contentSize\n if (status === 'current') return 0\n if (status === 'next') return cHeight * 1.1\n if (status === 'prev') return -cHeight * 1.1\n return 0\n}\n\ninterface FeedContentPaneProps<T extends AnyObject = AnyObject> {\n id: string\n collectionPath: string\n RenderItem: (i: WithId<T>) => JSX.Element\n onItemLoad: (data: WithId<T> | null) => void\n status: PanelStatus\n enterStatus?: PanelStatus | null\n offsetY: MotionValue<number>\n}\n\nexport const FeedContentPane = <T extends AnyObject = AnyObject>({\n id,\n collectionPath,\n onItemLoad,\n RenderItem,\n status,\n offsetY,\n enterStatus,\n}: FeedContentPaneProps<T>) => {\n const contentSize = useMobileFrame()\n const scale = useSpring(0, springConfig)\n const baseY = useMotionValue(getContentY(enterStatus ?? 'next', contentSize))\n const yVal = useTransform(() => baseY.get() + offsetY.get())\n const y = useSpring(yVal, springConfig)\n\n const docPath = useMemo(() => `${collectionPath}/${id}`, [collectionPath, id])\n const { data: item } = useDocument<T>(docPath, onItemLoad)\n\n const init = useRef<{\n status: PanelStatus\n contentSize: MobileFrameContextData\n y: number\n scale: number\n }>({\n contentSize,\n status: enterStatus ?? status,\n // x: getContentX(fromStatus || status, contentSize),\n y: getContentY(enterStatus ?? status, contentSize),\n scale: getContentScale(enterStatus ?? status),\n })\n\n useEffect(() => {\n const newScale = getContentScale(status)\n const updatedX = getContentX(status, contentSize)\n baseY.set(updatedX)\n scale.set(newScale)\n }, [status, baseY, scale, contentSize])\n\n return (\n // <AnimatePresence>\n <motion.div\n initial={{\n x: 0,\n y: init.current.y,\n scale: init.current.scale,\n }}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n touchAction: 'none',\n userSelect: 'none',\n height: '100%',\n y,\n scale,\n opacity: scale,\n width: '100%',\n }}\n exit={{\n opacity: 0,\n scale: 0,\n // x: getContentX(fromStatus || status, contentSize),\n x: 0,\n y: getContentY(enterStatus === 'next' ? 'prev' : 'next', contentSize),\n }}>\n {item ? RenderItem(item) : null}\n </motion.div>\n // </AnimatePresence>\n )\n}\n","import { useToast } from '@chakra-ui/react'\nimport { FetchFeedFunction } from '@chem-po/core'\nimport { useAuth } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { UpdatePanelsArgs } from './types'\n\nconst DEFAULT_LIMIT = 10\nexport const useMediaFeed = (\n fetch: FetchFeedFunction,\n onUpdatePanels: (items: UpdatePanelsArgs) => void,\n limit: number = DEFAULT_LIMIT,\n authRequired = false,\n) => {\n // first element is prev ids, second element is curr ids, third element is next ids\n const [ids, setIds] = useState<[string[] | null, string[] | null, string[] | null]>([\n null,\n null,\n null,\n ])\n const [idIdx, setIdIdx] = useState<number>(0)\n const user = useAuth(s => s.user)\n\n const [loading, setLoading] = useState(false)\n const [refreshing, setRefreshing] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [itemLoading, setItemLoading] = useState(false)\n const [direction, setDirection] = useState<'next' | 'prev' | null>(null)\n\n const toast = useToast()\n\n const fetchingId = useRef<string | null>(null)\n\n const idsRef = useRef<{ prev: string | null; curr: string | null; next: string | null }>({\n prev: null,\n curr: null,\n next: null,\n })\n\n const updateCurr = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.prev === id) {\n idsRef.current.prev = null\n }\n if (idsRef.current.next === id) {\n idsRef.current.next = null\n }\n }\n idsRef.current.curr = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const updateNext = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.prev === id) {\n idsRef.current.prev = null\n }\n if (idsRef.current.curr === id) {\n idsRef.current.curr = null\n }\n }\n idsRef.current.next = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const updatePrev = useCallback(\n (id: string | null) => {\n if (id) {\n if (idsRef.current.curr === id) {\n idsRef.current.curr = null\n }\n if (idsRef.current.next === id) {\n idsRef.current.next = null\n }\n }\n idsRef.current.prev = id\n onUpdatePanels({ ...idsRef.current })\n },\n [onUpdatePanels],\n )\n\n const fetchIds = useCallback(\n async (\n startBefore: string | null,\n startAfter: string | null,\n isPrefetch: boolean,\n ): Promise<string[]> => {\n if (!user && authRequired) return []\n if (!isPrefetch) setLoading(true)\n\n try {\n const data = await fetch({ limit, startAfter, startBefore })\n if (!isPrefetch) {\n const firstId = data.ids[0]\n const secondId = data.ids[1] || null\n updateCurr(firstId)\n updateNext(secondId)\n updatePrev(startAfter)\n if (startAfter) {\n setIds(s => [s[1], data.ids, null])\n } else if (startBefore) {\n setIds(s => [null, data.ids, s[1]])\n } else {\n setIds([null, data.ids, null])\n }\n const newLastId = data.ids[data.ids.length - 1]\n if (newLastId) {\n fetchIds(null, newLastId, true)\n }\n } else if (startAfter) {\n setIds(s => [s[0], s[1], data.ids])\n } else if (startBefore) {\n setIds(s => [data.ids, s[1], s[2]])\n }\n setLoading(false)\n return data.ids || []\n } catch (err: any) {\n setError(err.message)\n toast({\n title: 'Error fetching feed',\n description: err.message,\n status: 'error',\n duration: 9000,\n isClosable: true,\n })\n }\n setLoading(false)\n return []\n },\n [fetch, toast, user, authRequired, updateCurr, updateNext, updatePrev, limit],\n )\n\n // handles prefetching of next items\n const getNextId = useCallback(\n async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {\n const currIds = ids[1] ?? []\n const nextIds = ids[2] ?? []\n const nextIdx = currIdx + 1\n if (nextIdx < currIds.length) {\n return { id: currIds[nextIdx], idx: nextIdx }\n }\n if (nextIds[0]) {\n const newLastId = nextIds[nextIds.length - 1]\n if (!isPrefetch) {\n setIds(s => [s[1], s[2], null])\n fetchIds(null, newLastId, true)\n }\n return { id: nextIds[0], idx: 0 }\n }\n const fetchedNextIds = await fetchIds(null, currIds[currIds.length - 1], isPrefetch)\n const fetchedNextId = fetchedNextIds[0]\n return fetchedNextId ? { id: fetchedNextId, idx: 0 } : null\n },\n [ids, fetchIds],\n )\n\n const getPrevId = useCallback(\n async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {\n const currIds = ids[1] ?? []\n const prevIds = ids[0] ?? []\n const prevIdx = currIdx - 1\n if (prevIdx >= 0) {\n return { id: currIds[prevIdx], idx: prevIdx }\n }\n if (prevIds[prevIds.length - 1]) {\n const newFirstId = prevIds[0]\n if (!isPrefetch) {\n setIds([null, ids[0], ids[1]])\n fetchIds(newFirstId, null, true)\n }\n return { id: prevIds[prevIds.length - 1], idx: prevIds.length - 1 }\n }\n const fetchedPrevIds = await fetchIds(currIds[0], null, isPrefetch)\n const fetchedPrevId = fetchedPrevIds[fetchedPrevIds.length - 1]\n return fetchedPrevId ? { id: fetchedPrevId, idx: fetchedPrevIds.length - 1 } : null\n },\n [ids, fetchIds],\n )\n\n const goNext = useCallback(async () => {\n if (itemLoading) return\n // case 1: next item ID is fetched\n const newPrev = idsRef.current.curr\n\n setItemLoading(true)\n const nextIdData = await getNextId(idIdx, false)\n setDirection('next')\n if (nextIdData) {\n const { id: nextId, idx: nextIdx } = nextIdData\n fetchingId.current = nextId\n setIdIdx(nextIdx)\n updateCurr(nextId)\n updateNext(null)\n updatePrev(newPrev)\n getNextId(nextIdx, true).then(newNextId => updateNext(newNextId?.id ?? null))\n } else {\n toast({\n title: 'No more items',\n status: 'info',\n duration: 3000,\n isClosable: true,\n })\n }\n setItemLoading(false)\n }, [idIdx, getNextId, updateCurr, updateNext, updatePrev, toast, itemLoading])\n\n const goPrev = useCallback(async () => {\n if (itemLoading) return\n // case 1: next item ID is fetched\n const newNext = idsRef.current.curr\n\n setDirection('prev')\n setItemLoading(true)\n const prevIdData = await getPrevId(idIdx, false)\n if (prevIdData) {\n const { id: prevId, idx: prevIdx } = prevIdData\n fetchingId.current = prevId\n setIdIdx(prevIdx)\n updateCurr(prevId)\n updatePrev(null)\n updateNext(newNext)\n getPrevId(prevIdx, true).then(newPrevId => updatePrev(newPrevId?.id ?? null))\n } else {\n toast({\n title: 'No more items',\n status: 'info',\n duration: 3000,\n isClosable: true,\n })\n }\n setItemLoading(false)\n }, [idIdx, getPrevId, updateCurr, updateNext, updatePrev, toast, itemLoading])\n\n const refresh = useCallback(async () => {\n setLoading(true)\n setRefreshing(true)\n setIds([null, null, null])\n updateCurr(null)\n updateNext(null)\n updatePrev(null)\n setDirection(null)\n setIdIdx(0)\n await fetchIds(null, null, false)\n setRefreshing(false)\n }, [fetchIds, updateCurr, updateNext, updatePrev])\n\n const [initFetchIds] = useState(() => fetchIds)\n useEffect(() => {\n initFetchIds(null, null, false)\n }, [initFetchIds])\n\n const canGoPrev = useMemo(() => (idIdx > 0 && !!ids[1]?.length) || !!ids[0]?.length, [ids, idIdx])\n const canGoNext = useMemo(\n () => (ids[1] && idIdx < ids[1].length) ?? !!ids[2]?.length,\n [ids, idIdx],\n )\n return useMemo(\n () => ({\n ids,\n goNext,\n goPrev,\n error,\n refresh,\n refreshing,\n loading,\n canGoNext,\n direction,\n canGoPrev,\n itemLoading,\n }),\n [\n ids,\n goNext,\n goPrev,\n loading,\n error,\n itemLoading,\n canGoNext,\n canGoPrev,\n refresh,\n refreshing,\n direction,\n ],\n )\n}\n","import { Center, CenterProps } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useObjectUrl } from '@chem-po/react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport { LoadingLogo } from '../loading'\nimport { GetBackgroundUrl, GetBackgroundValue } from './types'\n\nconst emptyPng =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkAAIAAAoAAv/lxKUAAAAASUVORK5CYII='\nconst FillBackground = ({\n background,\n ...props\n}: Omit<CenterProps, 'background'> & { background: string | null }) => (\n <Center\n position=\"absolute\"\n top=\"0\"\n left=\"0\"\n opacity={background ? 0.7 : 0}\n transition=\"opacity 500ms\"\n right=\"0\"\n bottom=\"0\"\n zIndex={0}\n transform=\"scale(1.075)\"\n pointerEvents=\"none\"\n backgroundImage={`url(${background ?? emptyPng})`}\n backgroundSize=\"cover\"\n backgroundPosition=\"center\"\n {...props}\n filter={props.filter ?? 'blur(15px) brightness(70%)'}\n />\n)\n\ninterface FileValueBackgroundProps<T extends AnyObject = AnyObject> {\n getBackgroundValue: GetBackgroundValue<T>\n item: WithId<T> | null\n filter?: string\n}\nconst FileValueBackground = <T extends AnyObject = AnyObject>({\n getBackgroundValue,\n item,\n filter,\n}: FileValueBackgroundProps<T>) => {\n const background = useMemo(\n () => (item ? getBackgroundValue(item) : null),\n [getBackgroundValue, item],\n )\n const { loading, url } = useObjectUrl(background)\n const usedIndex = useRef(0)\n const [index, setIndex] = useState(0)\n const [url1, setUrl1] = useState<string | null>(null)\n const [url2, setUrl2] = useState<string | null>(null)\n\n useEffect(() => {\n const usedIdx = usedIndex.current\n if (usedIdx === 0) {\n setUrl1(url)\n usedIndex.current = 1\n setIndex(0)\n } else {\n setUrl2(url)\n usedIndex.current = 0\n setIndex(1)\n }\n }, [url])\n\n return (\n <Center position=\"absolute\" top=\"0\" left=\"0\" right=\"0\" bottom=\"0\" zIndex={0}>\n <FillBackground filter={filter} opacity={index === 0 ? 1 : 0} background={url1} />\n <FillBackground filter={filter} opacity={index === 1 ? 1 : 0} background={url2} />\n <LoadingLogo isLoading={loading} />\n </Center>\n )\n}\n\nconst UrlBackground = <T extends AnyObject = AnyObject>({\n getBackgroundUrl,\n item,\n filter,\n}: {\n getBackgroundUrl: GetBackgroundUrl<T>\n item: T | null\n filter?: string\n}) => {\n const background = useMemo(() => (item ? getBackgroundUrl(item) : null), [getBackgroundUrl, item])\n const usedIndex = useRef(0)\n const [index, setIndex] = useState(0)\n const [url1, setUrl1] = useState<string | null>(null)\n const [url2, setUrl2] = useState<string | null>(null)\n\n useEffect(() => {\n if (!background) return\n if (usedIndex.current === 0) {\n setUrl1(background)\n usedIndex.current = 1\n setIndex(0)\n } else {\n setUrl2(background)\n usedIndex.current = 0\n setIndex(1)\n }\n }, [background])\n\n return (\n <Center position=\"absolute\" top=\"0\" left=\"0\" right=\"0\" bottom=\"0\" zIndex={0}>\n <FillBackground filter={filter} opacity={index === 0 ? 1 : 0} background={url1} />\n <FillBackground filter={filter} opacity={index === 1 ? 1 : 0} background={url2} />\n </Center>\n )\n}\n\ninterface MediaFeedBackgroundProps<T extends AnyObject = AnyObject> {\n getBackgroundValue?: GetBackgroundValue<T>\n getBackgroundUrl?: GetBackgroundUrl<T>\n filter?: string\n item: WithId<T> | null\n}\n\nexport const MediaFeedBackground = <T extends AnyObject = AnyObject>({\n getBackgroundValue,\n getBackgroundUrl,\n ...props\n}: MediaFeedBackgroundProps<T>) => {\n if (getBackgroundValue)\n return <FileValueBackground getBackgroundValue={getBackgroundValue} {...props} />\n if (getBackgroundUrl) return <UrlBackground getBackgroundUrl={getBackgroundUrl} {...props} />\n return null\n}\n","import { RepeatIcon } from '@chakra-ui/icons'\nimport { Center } from '@chakra-ui/react'\nimport { motion, MotionValue, useSpring, useTransform } from 'framer-motion'\nimport { useEffect } from 'react'\nimport { CircularProgress } from '../loading/CircularProgress'\nimport { REFRESH_THRESHOLD, SWIPE_THRESHOLD } from './constants'\n\nconst WINDOW = REFRESH_THRESHOLD - SWIPE_THRESHOLD\nexport const MediaFeedRefresh = ({\n offsetY,\n refreshing,\n canRefresh,\n}: {\n offsetY: MotionValue<number>\n refreshing: boolean\n canRefresh: boolean\n}) => {\n const progress = useTransform(offsetY, v => {\n const dist = Math.max(0, v - SWIPE_THRESHOLD)\n return dist / WINDOW\n })\n const baseY = useSpring(0)\n const isIn = useSpring(0)\n useEffect(() => {\n if (refreshing) {\n baseY.set(50)\n } else {\n baseY.set(0)\n }\n }, [refreshing, baseY])\n\n useEffect(() => {\n if (canRefresh) {\n isIn.set(1)\n } else {\n isIn.set(0)\n }\n }, [isIn, canRefresh])\n\n const y = useTransform(\n () => isIn.get() * Math.min(20, Math.max(0, baseY.get() + progress.get() ** 0.5 * 20)),\n )\n const scale = useTransform(y, v => isIn.get() * Math.min(1, Math.max(0, v / 30)))\n const rotate = useTransform(() => isIn.get() * progress.get() * 180)\n return (\n <motion.div\n style={{\n opacity: scale,\n pointerEvents: 'none',\n y,\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: 'auto',\n scale,\n rotate,\n }}>\n <Center w=\"100%\">\n <RepeatIcon\n opacity={refreshing ? 0 : 1}\n transition={`opacity 300ms ease ${!refreshing ? 300 : 0}ms`}\n w={8}\n h={8}\n color=\"white\"\n filter=\"drop-shadow(1px 1px 3px #000000aa)\"\n />\n <CircularProgress\n size={8}\n position=\"absolute\"\n isIndeterminate\n opacity={refreshing ? 1 : 0}\n transition={`opacity 300ms ease ${refreshing ? 300 : 0}ms`}\n />\n </Center>\n </motion.div>\n )\n}\n","import { Center } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useMobileFrame } from '@chem-po/react'\nimport { useMotionValue } from 'framer-motion'\nimport React, {\n CSSProperties,\n Dispatch,\n PropsWithChildren,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { LoadingOverlay } from '../loading'\nimport { REFRESH_THRESHOLD, SWIPE_THRESHOLD } from './constants'\nimport { MediaFeedProvider } from './context'\nimport { FeedContentPane } from './FeedContentPane'\nimport { useMediaFeed } from './hooks'\nimport { MediaFeedBackground } from './MediaFeedBackground'\nimport { MediaFeedRefresh } from './MediaFeedRefresh'\nimport { MediaBackgroundRef, MediaFeedProps, PanelData, UpdatePanelsArgs } from './types'\n\nconst useUpdatePanels = (setItems: Dispatch<React.SetStateAction<Array<PanelData>>>) =>\n useCallback(\n (data: UpdatePanelsArgs) => {\n const updated: PanelData[] = []\n if (data.prev) updated.push({ status: 'prev', id: data.prev })\n if (data.curr) {\n updated.push({\n status: 'current',\n id: data.curr,\n })\n }\n if (data.next) updated.push({ status: 'next', id: data.next })\n setItems(updated)\n },\n [setItems],\n )\n\nexport const MediaFeed = <T extends AnyObject = AnyObject>({\n fetch,\n collection: collectionPath,\n RenderItem,\n authRequired,\n getBackgroundUrl,\n getBackgroundValue,\n limit,\n defaultBackground,\n swipeDisabled,\n children,\n}: PropsWithChildren<MediaFeedProps<T>>) => {\n const { width, height } = useMobileFrame()\n\n const contentRef = useRef<HTMLDivElement>(null)\n\n const containerRef = useRef<HTMLDivElement>(null)\n // const panels = useRef<Array<FeedContentPaneRef>>([])\n const [direction, setDirection] = useState<'next' | 'prev' | null>(null)\n const [panels, setPanels] = useState<Array<PanelData>>([])\n\n const offsetY = useMotionValue(0)\n const onNewData = useUpdatePanels(setPanels)\n\n const backgroundRef = useRef<MediaBackgroundRef<T>>(null)\n\n const { goNext, goPrev, loading, canGoNext, canGoPrev, refresh, refreshing } = useMediaFeed(\n fetch,\n onNewData,\n limit,\n authRequired,\n )\n\n const pointerDown = useRef(false)\n const dragStart = useRef({ x: 0, y: 0 })\n\n const onDragStart = useCallback(\n (e: React.PointerEvent) => {\n if (swipeDisabled) return\n pointerDown.current = true\n dragStart.current = { x: e.clientX, y: e.clientY }\n const dragEndListener = (ev: PointerEvent) => {\n // const oX = Math.max(-width / 4, Math.min(width / 4, ev.clientX - dragStart.current.x))\n const maxY = canGoPrev ? SWIPE_THRESHOLD : REFRESH_THRESHOLD\n const minY = canGoNext ? -SWIPE_THRESHOLD : -REFRESH_THRESHOLD\n const oY = Math.max(minY, Math.min(maxY, ev.clientY - dragStart.current.y))\n if (contentRef.current) contentRef.current.style.setProperty('pointer-events', 'auto')\n if (canGoNext && oY < -(SWIPE_THRESHOLD - 10)) {\n setDirection('next')\n goNext()\n } else if (canGoPrev && oY > SWIPE_THRESHOLD - 10) {\n setDirection('prev')\n goPrev()\n } else if (oY > REFRESH_THRESHOLD - 10 || oY < -(REFRESH_THRESHOLD - 10)) {\n refresh()\n if (backgroundRef.current) backgroundRef.current.onNewData(null)\n }\n // else if (onSwipeUp && oY < -97) {\n // onSwipeUp()\n // }\n offsetY.set(0)\n pointerDown.current = false\n window.removeEventListener('pointerup', dragEndListener)\n }\n\n window.addEventListener('pointerup', dragEndListener)\n },\n [offsetY, goNext, goPrev, canGoNext, canGoPrev, refresh, swipeDisabled],\n )\n\n const onDragMove = useCallback(\n (e: React.PointerEvent) => {\n requestAnimationFrame(() => {\n if (pointerDown.current) {\n const oX = Math.max(-10, Math.min(10, e.clientX - dragStart.current.x))\n const maxY = canGoPrev ? SWIPE_THRESHOLD : REFRESH_THRESHOLD\n const minY = canGoNext ? -SWIPE_THRESHOLD : -REFRESH_THRESHOLD\n const oY = Math.max(minY, Math.min(maxY, e.clientY - dragStart.current.y))\n\n const dist = Math.sqrt(oX ** 2 + oY ** 2)\n if (dist > 10 && contentRef.current) {\n contentRef.current.style.setProperty('pointer-events', 'none')\n }\n // offsetX.jump(oX)\n offsetY.set(oY)\n }\n })\n },\n [offsetY, canGoNext, canGoPrev],\n )\n\n const containerStyle = useMemo<CSSProperties>(\n () => ({\n height: `${height}px`,\n width: `${width}px`,\n overflow: 'hidden',\n pointerEvents: swipeDisabled ? 'none' : 'auto',\n }),\n [width, height, swipeDisabled],\n )\n const [curr, setCurr] = useState<WithId<T> | null>(null)\n\n const handleItemLoad = useCallback(\n (data: WithId<T> | null) => {\n const isCurr = panels.find(p => p.status === 'current')?.id === data?._id\n if (isCurr) setCurr(data)\n },\n [panels],\n )\n\n return (\n <MediaFeedProvider curr={curr}>\n <Center\n background={defaultBackground ?? 'background.100'}\n style={{ touchAction: 'none' }}\n userSelect=\"none\"\n position=\"relative\"\n w=\"100%\"\n h=\"100%\"\n overflow=\"hidden\"\n onPointerDown={onDragStart}\n onPointerMove={onDragMove}>\n <MediaFeedBackground\n item={curr}\n getBackgroundValue={getBackgroundValue}\n getBackgroundUrl={getBackgroundUrl}\n />\n <div ref={containerRef} style={containerStyle}>\n <Center ref={contentRef} h=\"100%\" w=\"100%\">\n {panels.map(panel => (\n <FeedContentPane<T>\n key={panel.id}\n id={panel.id}\n collectionPath={collectionPath}\n RenderItem={RenderItem}\n onItemLoad={handleItemLoad}\n status={panel.status}\n enterStatus={direction}\n offsetY={offsetY}\n />\n ))}\n </Center>\n </div>\n <MediaFeedRefresh canRefresh={!canGoPrev} refreshing={refreshing} offsetY={offsetY} />\n {/* {onSwipeUp ? <MediaFeedSwipeUp offsetY={offsetY} /> : null} */}\n <LoadingOverlay\n inFeed\n zIndex={2}\n bg=\"transparent\"\n pointerEvents=\"none\"\n isLoading={loading}\n />\n {children ? (\n <Center position=\"absolute\" bottom=\"0\" left=\"0\" right=\"0\" zIndex={3} pointerEvents=\"none\">\n {children}\n </Center>\n ) : null}\n </Center>\n </MediaFeedProvider>\n )\n}\n","import { PropsWithChildren, useMemo } from 'react'\nimport { useWatch } from 'react-hook-form'\nimport { ExpandOnMount } from '../box'\n\nexport const Condition = ({\n path,\n condition,\n children,\n}: PropsWithChildren<{\n path: string\n condition: (values: any) => boolean\n}>) => {\n // const { register } = useFormContext()\n // const {\n // input: { value },\n // } = useField(path ?? '', { subscription: { value: true } })\n const value = useWatch({ exact: true, name: path })\n const isVisible = useMemo(() => condition(value), [value, condition])\n\n if (!isVisible) return null\n return (\n <ExpandOnMount py=\"3px\" animateOpacity in>\n {children}\n </ExpandOnMount>\n )\n}\n","import { InputRef } from '@chem-po/core'\nimport { ForwardedRef, forwardRef } from 'react'\n\nimport { Field, useField } from '@chem-po/react'\nimport { ChangeHandler, Controller } from 'react-hook-form'\nimport { Input } from './input/input'\n\nconst FieldComponentBase = (\n { field, name }: { field: Field; name: string },\n ref: ForwardedRef<InputRef>,\n) => {\n const { control, getOnChange, meta, onFocus, onBlur: fieldBlur } = useField(name, field)\n return (\n <Controller<Field['defaultValue']>\n control={control}\n name={name}\n render={({ field: { name: _, ref: _r, onBlur, ...inputProps } }) => {\n return (\n <Input\n ref={ref}\n field={field}\n input={{\n ...inputProps,\n onFocus,\n onBlur: () => {\n fieldBlur()\n onBlur()\n },\n onChange: getOnChange(inputProps.onChange as ChangeHandler),\n }}\n meta={meta}\n />\n )\n }}\n />\n )\n}\n\nexport const FieldComponent = forwardRef(FieldComponentBase)\n","import { Checkbox, Flex, Switch, Text } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { BooleanField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n\nconst BaseCheckboxComponent = (\n { field, input: { onChange, value, ...input } }: FieldProps<BooleanField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const { placeholder } = field\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Checkbox isChecked={value} onChange={e => onChange(e.target.checked)} {...input}>\n {placeholder}\n </Checkbox>\n )\n}\n\nconst CheckboxBooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(\n BaseCheckboxComponent,\n)\n\nconst BaseSwitchComponent = (\n { field, input: { onChange, value, ...input } }: FieldProps<BooleanField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const { placeholder } = field\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Flex gap={1} align=\"center\">\n <Switch isChecked={value} onChange={e => onChange(e.target.checked)} {...input} />\n <Text fontWeight={600} opacity={value ? 0.9 : 0.6}>\n {placeholder}\n </Text>\n </Flex>\n )\n}\n\nconst SwitchBooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(BaseSwitchComponent)\n\nconst BaseBooleanComponent = (props: FieldProps<BooleanField>, ref: ForwardedRef<InputRef>) => {\n if (props.field.type === 'switch') return <SwitchBooleanComponent ref={ref} {...props} />\n return <CheckboxBooleanComponent ref={ref} {...props} />\n}\n\nexport const BooleanComponent = forwardRef<InputRef, FieldProps<BooleanField>>(BaseBooleanComponent)\n","import { InputRef } from '@chem-po/core'\nimport { Ref, useImperativeHandle, useRef } from 'react'\n\nexport const useInputImperativeHandle = (\n ref: Ref<InputRef>,\n onFocus?: () => void,\n onBlur?: () => void,\n) => {\n const inputRef = useRef<HTMLInputElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: onFocus ?? (() => inputRef.current?.focus()),\n blur: onBlur ?? (() => inputRef.current?.blur()),\n }))\n return inputRef\n}\n","import {\n HStack,\n Slider,\n SliderFilledTrack,\n SliderProps,\n SliderThumb,\n SliderTrack,\n StackProps,\n Text,\n Tooltip,\n} from '@chakra-ui/react'\nimport { Gradient, gradientToCssGradientProp } from '@chem-po/core'\nimport { GradientText } from '../../text/GradientText'\n\nexport const InputSlider = ({\n label,\n stackProps,\n gradient,\n value,\n min,\n max,\n ...props\n}: {\n label: string\n stackProps?: StackProps\n gradient?: Gradient\n} & SliderProps) => {\n const gradientCss = gradient ? gradientToCssGradientProp(gradient) : null\n return (\n <HStack\n opacity={value !== undefined ? 1 : 0.5}\n // filter={`grayscale(${value !== undefined ? 0 : 100}%)`}\n _hover={{\n opacity: 1,\n // filter: 'grayscale(0%)',\n }}\n transition=\"all 500ms\"\n spacing={2}\n width=\"100%\"\n align=\"center\"\n {...stackProps}>\n <HStack w=\"100%\" align=\"center\">\n {min !== undefined && gradientCss ? (\n <GradientText fontSize=\"sm\" color={gradientCss}>\n {typeof min === 'number' ? min.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}\n </GradientText>\n ) : null}\n {min !== undefined && !gradientCss ? (\n <Text>{typeof min === 'number' ? min.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}</Text>\n ) : null}\n <Slider min={min} max={max} step={1} aria-label={label} flex={1} {...props}>\n <SliderTrack bg=\"gray.400\">\n <SliderFilledTrack bg={gradientCss ?? 'blackAlpha.500'} />\n </SliderTrack>\n <Tooltip\n bg=\"gray.100\"\n color=\"gray.500\"\n placement=\"top\"\n hasArrow\n label={typeof value === 'number' ? value.toFixed(0) : ''}>\n <SliderThumb width={2} height={4} />\n </Tooltip>\n </Slider>\n {max !== undefined && gradientCss ? (\n <GradientText fontSize=\"sm\" color={gradientCss}>\n {typeof max === 'number' ? max.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}\n </GradientText>\n ) : null}\n {max !== undefined && !gradientCss ? (\n <Text>{typeof max === 'number' ? max.toFixed((props?.step ?? 1) < 1 ? 2 : 0) : ''}</Text>\n ) : null}\n </HStack>\n </HStack>\n )\n}\n","import { Box, BoxProps, Text, TextProps } from '@chakra-ui/react'\nimport './styles.css'\n\nexport const GradientText = ({\n children,\n color,\n background,\n boxProps,\n ...props\n}: TextProps & { boxProps?: BoxProps }) => (\n <Box background={background} {...boxProps}>\n <Text cursor=\"default\" className=\"gradient-text\" background={color} {...props}>\n {children}\n </Text>\n </Box>\n)\n","import { Box, Center, HStack, SliderProps, StackProps, Text, VStack } from '@chakra-ui/react'\n\nimport { colorValueToHex, Gradient, gradients, InputRef } from '@chem-po/core'\nimport { ColorField } from '@chem-po/react'\nimport { forwardRef, useCallback, useMemo } from 'react'\nimport { useInputImperativeHandle } from '../hooks/useInputImperativeHandle'\nimport { InputSlider } from '../InputSlider'\nimport { FieldProps } from '../types'\n\nconst ColorComponentSlider = ({\n label,\n stackProps,\n gradient,\n value,\n ...props\n}: {\n label: string\n stackProps?: StackProps\n gradient: Gradient\n} & SliderProps) => (\n <InputSlider\n label={label}\n value={value}\n min={0}\n step={1}\n max={255}\n stackProps={{ width: '100%', ...stackProps }}\n gradient={gradient}\n {...props}\n />\n)\n\nexport const ColorComponent = forwardRef<InputRef, FieldProps<ColorField>>(\n ({ input: { onChange, value }, field, meta }, ref) => {\n // my colors: {r: 0, g: 0, b: 0, a: 0}\n // input colors: '#rrggbbaa'\n const { withAlpha, defaultValue } = field\n const { active } = meta || {}\n\n useInputImperativeHandle(ref)\n\n const handleChange = useCallback(\n (key: 'r' | 'g' | 'b' | 'a', val: number) => {\n if (withAlpha) {\n onChange({\n r: 0,\n g: 0,\n b: 0,\n a: 1,\n ...value,\n [key]: val,\n })\n } else {\n onChange({\n r: 0,\n g: 0,\n b: 0,\n ...value,\n [key]: val,\n })\n }\n },\n [value, onChange, withAlpha],\n )\n\n const withDefault = useMemo(() => ({ ...defaultValue, ...value }), [defaultValue, value])\n const asHex = useMemo(() => colorValueToHex(!!withAlpha, withDefault), [withDefault, withAlpha])\n return (\n <HStack w=\"100%\">\n <Box\n boxShadow=\"inset 0 0 12px rgba(255,255,255,0.4), 0 0 4px rgba(0,0,0,0.4)\"\n p={2}\n bg=\"blackAlpha.800\"\n borderRadius=\"full\">\n <Center\n transition=\"background 300ms\"\n bg={asHex}\n width=\"80px\"\n h=\"80px\"\n borderRadius=\"full\">\n <Text style={{ fontSize: '1.3rem' }}>{asHex}</Text>\n </Center>\n </Box>\n <VStack\n spacing={1}\n flex={1}\n px={2}\n align=\"flex-start\"\n borderRadius={6}\n transition=\"all 400ms\"\n boxShadow={`0 0 5px ${active ? '#ffffff' : 'transparent'}`}>\n <ColorComponentSlider\n label=\"R\"\n gradient={gradients.red}\n defaultValue={defaultValue.r}\n value={value?.r}\n onChange={updatedRed => handleChange('r', updatedRed)}\n />\n <ColorComponentSlider\n label=\"G\"\n defaultValue={defaultValue.g}\n gradient={gradients.green}\n value={value?.g}\n onChange={updatedGreen => handleChange('g', updatedGreen)}\n />\n <ColorComponentSlider\n label=\"B\"\n gradient={gradients.blue}\n defaultValue={defaultValue.b}\n value={value?.b}\n onChange={updatedBlue => handleChange('b', updatedBlue)}\n />\n {withAlpha ? (\n <ColorComponentSlider\n label=\"A\"\n gradient={gradients.midnight}\n defaultValue={1}\n value={value?.a}\n onChange={updatedAlpha => handleChange('a', updatedAlpha)}\n />\n ) : null}\n </VStack>\n </HStack>\n )\n },\n)\n","import {\n Button,\n Image,\n Popover,\n PopoverArrow,\n PopoverContent,\n PopoverTrigger,\n Portal,\n Text,\n} from '@chakra-ui/react'\nimport { forwardRef, useImperativeHandle, useMemo } from 'react'\nimport { DayPicker } from 'react-day-picker'\n// import 'react-day-picker/dist/style.css'\nimport { getDateString, InputRef } from '@chem-po/core'\nimport { DateField } from '@chem-po/react'\nimport { FieldProps } from '../types'\n\nconst padZeros = (n: number, digits: number) => {\n let v = `${n}`\n for (let i = v.length; i < digits; i += 1) {\n v = `0${v}`\n }\n return v\n}\nexport const parseDate = (date?: Date) =>\n date\n ? `${padZeros(date.getFullYear(), 4)}-${padZeros(date.getMonth() + 1, 2)}-${padZeros(\n date.getDate(),\n 2,\n )}`\n : undefined\nexport const DateInput = forwardRef<InputRef, FieldProps<DateField>>(\n (props: FieldProps<DateField>, ref) => {\n const {\n input,\n field: { placeholder, minDate, maxDate, optional },\n meta: { active },\n } = props\n const { onChange, value, onFocus, onBlur } = input\n const date = useMemo(() => (value ? new Date(`${value}T00:00:00.000`) : new Date()), [value])\n const disabled = useMemo(() => {\n const res: { from: Date; to: Date }[] = []\n if (minDate !== undefined) {\n res.push({\n to: minDate === 'now' ? new Date() : new Date(minDate),\n from: new Date(0),\n })\n }\n if (maxDate !== undefined) {\n res.push({\n from: maxDate === 'now' ? new Date() : new Date(maxDate),\n to: new Date(Infinity),\n })\n }\n return res\n }, [minDate, maxDate])\n\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n\n return (\n <Popover\n isOpen={active}\n onOpen={onFocus}\n onClose={onBlur}\n closeDelay={100}\n placement=\"bottom\">\n <PopoverTrigger>\n <Button\n w=\"100%\"\n fontFamily=\"Public Sans\"\n fontWeight=\"normal\"\n alignItems=\"center\"\n _hover={{ bg: '#efefef' }}\n lineHeight={1}\n variant=\"outline\">\n <Text fontSize=\"md\" height=\"16px\" align=\"left\" flex={1}>\n {value ? getDateString(value, 'short') : placeholder}\n </Text>\n <Image src=\"/svg/calendar.svg\" height=\"20px\" />\n </Button>\n </PopoverTrigger>\n <Portal>\n <PopoverContent zIndex={2} onFocus={onFocus}>\n <PopoverArrow />\n <DayPicker\n required={!optional}\n disabled={disabled}\n styles={{\n caption: {\n fontFamily: 'Public Sans',\n fontWeight: '400',\n fontSize: '0.9rem',\n color: '#555',\n },\n head: {\n fontFamily: 'Public Sans',\n },\n nav: {\n fontFamily: 'Public Sans',\n },\n }}\n modifiersStyles={{\n selected: {\n background: '#454545',\n },\n }}\n // id={name}\n mode=\"single\"\n selected={date}\n onSelect={(updated: Date | undefined) => onChange(parseDate(updated))}\n />\n </PopoverContent>\n </Portal>\n </Popover>\n )\n },\n)\n\nDateInput.displayName = 'DateInput'\n","import { Input } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { TimeField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n// import '../input.css'\n\nexport const TimeInput = forwardRef<InputRef, FieldProps<TimeField>>(\n ({ field, input }: FieldProps<TimeField>, ref) => {\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n return (\n <Input\n fontFamily=\"Public Sans\"\n css={`\n ::-webkit-calendar-picker-indicator {\n background: url(/svg/clock.svg) center/80% no-repeat;\n color: white;\n }\n `}\n fontSize=\"md\"\n type=\"time\"\n placeholder={field.placeholder}\n {...input}\n value={input.value ?? ''}\n />\n )\n },\n)\n\nTimeInput.displayName = 'TimeInput'\n","import { HStack } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { DateTimeField, FieldMeta } from '@chem-po/react'\nimport { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react'\nimport { DateInput, parseDate } from '../date'\nimport '../input.css'\nimport { TimeInput } from '../time'\nimport { FieldProps } from '../types'\n\nconst parseDateAndTime = (timestamp?: number | string) => {\n if (!timestamp) return { date: undefined, time: undefined }\n const d = new Date(timestamp)\n return { date: parseDate(d), time: d.toTimeString().substring(0, 5) }\n}\n\nexport const DateTimeInput = forwardRef<InputRef, FieldProps<DateTimeField>>(\n ({ input: { value, onBlur, onChange, onFocus } }, ref) => {\n const [{ date, time }, set] = useState<{ date?: string; time?: string }>(\n parseDateAndTime(value),\n )\n const [focusedElement, setFocused] = useState<'date' | 'time' | null>(null)\n const handleChange = useCallback(\n (type: 'date' | 'time', updated?: string) => {\n if (type === 'date') {\n set({ date: updated, time })\n if (updated && time) onChange(new Date(`${updated}T${time}`).getTime())\n } else {\n set({ time: updated, date })\n if (updated && date) {\n onChange(new Date(`${date}T${updated}:00.000`).getTime())\n }\n }\n },\n [date, time, onChange],\n )\n\n useImperativeHandle(ref, () => ({\n focus: () => {},\n blur: () => {},\n }))\n\n const meta = useMemo<FieldMeta>(\n () => ({\n active: focusedElement === 'date',\n error: undefined,\n touched: false,\n }),\n [focusedElement],\n )\n\n return (\n <HStack w=\"100%\">\n <DateInput\n field={{ _type: 'date', placeholder: 'Date' }}\n input={{\n // name: '',\n value: date,\n onChange: (dateString: string) => {\n handleChange('date', dateString)\n },\n onBlur: () => {\n setFocused(null)\n onBlur()\n },\n onFocus: () => {\n setFocused('date')\n onFocus()\n },\n }}\n meta={meta}\n />\n <TimeInput\n field={{ _type: 'time', placeholder: 'Time' }}\n input={{\n value: time,\n onChange: e => handleChange('time', e.target.value),\n onBlur: () => {\n setFocused(null)\n onBlur()\n },\n onFocus: () => {\n setFocused('time')\n onFocus()\n },\n }}\n meta={meta}\n />\n </HStack>\n )\n },\n)\n\nDateTimeInput.displayName = 'DateTimeInput'\n","import { Playlist, SpotifyTrack, WithId } from '@chem-po/core'\nimport { MotionValue } from 'framer-motion'\nimport { Howl } from 'howler'\nimport { useMemo } from 'react'\nimport { create } from 'zustand'\n\nexport type SetMediaArgs =\n | { playlist: PlaylistInterface; media?: never }\n | { media: WithId<SpotifyTrack>; playlist?: never }\nexport interface AudioPlayerApi {\n play: () => void\n pause: () => void\n goNext: () => void\n goPrev: () => void\n canGoNext: boolean\n canGoPrev: boolean\n sound: Howl | null\n trackProgress: MotionValue<number>\n seek: (to: number) => void\n setMedia: (args: SetMediaArgs) => void\n stop: () => void\n loop: (loop: boolean) => void\n}\n\nexport interface PlaylistInterface extends Playlist {\n currentId: string | null\n}\ninterface UsePlayerData {\n isPlaying: boolean\n isLoading: boolean\n fetchingMedia: WithId<SpotifyTrack> | null\n playlist: PlaylistInterface | null\n media: WithId<SpotifyTrack> | null\n repeat: boolean\n shuffle: boolean\n api: AudioPlayerApi\n volume: number\n}\n\nexport const usePlayer = create<UsePlayerData>(() => ({\n isPlaying: false,\n media: null,\n isLoading: false,\n fetchingMedia: null,\n shuffle: false,\n playlist: null,\n volume: 0.5,\n repeat: false,\n api: {\n pause: () => {},\n play: () => {},\n canGoNext: false,\n canGoPrev: false,\n goNext: () => {},\n goPrev: () => {},\n seek: () => {},\n sound: null,\n trackProgress: new MotionValue(0),\n setMedia: () => {},\n stop: () => {},\n loop: () => {},\n },\n}))\n\nexport const useActiveMedia = () => {\n const { media, playlist } = usePlayer()\n return useMemo(() => {\n if (playlist) {\n return playlist.currentId !== null\n ? (playlist.items.find(i => i.id === playlist.currentId) ?? null)\n : null\n }\n return media\n }, [playlist, media])\n}\n","import { ButtonProps, Center, IconButton, Image } from '@chakra-ui/react'\nimport { SpotifyTrack, WithId } from '@chem-po/core'\nimport { usePlaylist } from '@chem-po/react'\nimport { useActiveMedia, usePlayer } from '../../store/usePlayer'\n\nexport const PlayButton = ({\n media,\n size = 50,\n opacity = 0.8,\n // withThumbnail,\n buttonProps,\n}: {\n media: WithId<SpotifyTrack> | null\n size?: number\n opacity?: number\n withThumbnail?: boolean\n buttonProps?: ButtonProps\n}) => {\n const { id: mediaId } = media ?? {}\n const { playlist } = usePlaylist()\n const api = usePlayer(s => s.api)\n const playerIsPlaying = usePlayer(s => s.isPlaying)\n const playerIsLoading = usePlayer(s => s.isLoading)\n const currentMedia = useActiveMedia()\n const isPlaying = playerIsPlaying && currentMedia?.id === mediaId\n const isFetching = playerIsLoading && currentMedia?.id === mediaId\n\n return (\n <IconButton\n boxShadow=\"md\"\n p={1}\n height={`${size}px`}\n width={`${size}px`}\n minW=\"0\"\n minH=\"0\"\n borderRadius=\"full\"\n isLoading={isFetching}\n aria-label=\"play/pause\"\n onClick={e => {\n e.stopPropagation()\n if (!media) return\n if (currentMedia?.id === mediaId) {\n if (playerIsPlaying) api.pause()\n else api.play()\n } else if (playlist) {\n api.setMedia({\n playlist: {\n ...playlist,\n currentId: mediaId ?? null,\n },\n })\n } else {\n api.setMedia({ media })\n }\n }}\n style={{ background: '#eee' }}\n {...buttonProps}\n icon={\n <Center borderRadius=\"full\" height={`${size}px`} width={`${size}px`}>\n {/* {\n media ? (\n <StorageImage\n borderRadius='full'\n position='absolute'\n objectFit='cover'\n width='100%'\n height='100%'\n storagePath={`${media.storageDir}/photoFile`}\n alt={media.title}\n />\n ) : null\n } */}\n <Image\n opacity={isPlaying ? opacity : 0}\n width=\"100%\"\n transition=\"all 0.2s ease-in-out\"\n src=\"/svg/pause.svg\"\n filter=\"invert(100%) drop-shadow(0 0 4px black)\"\n transform={`scale(${isPlaying ? 0.8 : 1})`}\n />\n <Image\n position=\"absolute\"\n width=\"100%\"\n opacity={isPlaying ? 0 : opacity}\n transition=\"all 0.2s ease-in-out\"\n filter=\"invert(100%) drop-shadow(0 0 3px black)\"\n src=\"/svg/play.svg\"\n transform={`scale(${!isPlaying ? 0.8 : 1})`}\n />\n </Center>\n }\n />\n )\n}\n","import {\n Center,\n Flex,\n HStack,\n IconButton,\n Image,\n ImageProps,\n Text,\n useColorModeValue,\n VStack,\n} from '@chakra-ui/react'\n\nimport { FileValue, generateId, ImageViewOptions, InputRef, WithId } from '@chem-po/core'\nimport { FileField, useImageSize, useObjectUrl } from '@chem-po/react'\nimport {\n ChangeEventHandler,\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { useBorderColor } from '../../../hooks'\nimport { LoadingImage } from '../../loading/LoadingImage'\nimport { PlayButton } from '../../media/PlayButton'\nimport { FieldProps } from './types'\n\nconst generateAccept = (field: FileField) => {\n if (!field.accept) return undefined\n const accept: string[] = []\n if (field.accept.includes('image')) {\n accept.push('image/jpg', 'image/jpeg', 'image/png', 'image/svg', 'image/gif')\n }\n if (field.accept.includes('pdf')) accept.push('application/pdf')\n if (field.accept.includes('audio')) {\n accept.push('audio/mp3', 'audio/wav', 'audio/x-wav', 'audio/webm', 'audio/ogg')\n }\n return accept.join(',')\n}\n\nexport const AudioFileView = ({\n hasUpload,\n value,\n noLabel,\n}: {\n value: FileValue\n noLabel?: boolean\n hasUpload?: boolean\n}) => {\n const media = useMemo<WithId<any>>(\n () => ({\n id: generateId(),\n title: value.filename || 'Uploaded file',\n artistName: '',\n artistId: '',\n storageDir: '',\n producerId: '',\n songwriterId: '',\n }),\n [value],\n )\n\n return (\n <VStack>\n <HStack spacing={4}>\n <PlayButton withThumbnail media={media} />\n {hasUpload ? (\n <IconButton\n w=\"40px\"\n h=\"40px\"\n p={2}\n borderRadius=\"full\"\n boxShadow=\"0 0 4px black\"\n aria-label=\"upload\"\n icon={<Image filter=\"invert(100%)\" src=\"/svg/upload.svg\" opacity={0.8} />}\n />\n ) : null}\n </HStack>\n {!noLabel && value.filename ? (\n <Text fontSize=\"md\">{value.filename || 'Uploaded file'}</Text>\n ) : null}\n </VStack>\n )\n}\n\nconst ImageFileView = ({\n value,\n options,\n hasUpload,\n loading: loadingProp,\n}: {\n value: FileValue\n options?: ImageViewOptions\n hasUpload?: boolean\n loading?: boolean\n}) => {\n const [loaded, setLoaded] = useState(false)\n const { url, loading } = useObjectUrl(value)\n const [imageSize, setImageSize] = useState({ width: 0, height: 0 })\n const { shape, placeholder, objectFit, noFullView, background } = options ?? {}\n const {\n src: placeholderSrc,\n opacity: placeholderOpacity,\n scale: placeholderScale,\n } = placeholder ?? {}\n\n const size = useImageSize(options, imageSize)\n const { width: optWidth, height: optHeight } = size ?? {}\n\n const opacity = useMemo(() => {\n if (loaded) return url ? 1 : (placeholderOpacity ?? 0.8)\n return 0\n }, [loaded, url, placeholderOpacity])\n\n const imageProps = useMemo<ImageProps>(() => {\n if (!url) {\n return {\n width: size ? `${size.width * (placeholderScale ?? 0.9)}px` : 'auto',\n height: size ? `${size.height * (placeholderScale ?? 0.9)}px` : '80px',\n }\n }\n return {\n objectFit: objectFit ?? (loaded && shape ? 'cover' : 'contain'),\n onLoad: e => {\n setLoaded(true)\n setImageSize({\n width: e.currentTarget.naturalWidth,\n height: e.currentTarget.naturalHeight,\n })\n },\n }\n }, [url, size, placeholderScale, loaded, shape, objectFit])\n const isLoading = !!loadingProp || loading\n const width = typeof optWidth === 'number' ? `${optWidth}px` : 'auto'\n const height = typeof optHeight === 'number' ? `${optHeight}px` : '100px'\n return (\n <LoadingImage\n width={width}\n height={height}\n noFullView={hasUpload ?? noFullView}\n overflow=\"hidden\"\n borderRadius={shape === 'circle' ? 'full' : 4}\n boxShadow={shape ? '1px 1px 3px #00000066' : 'none'}\n opacity={opacity}\n background={background}\n transition=\"opacity 333ms ease\"\n loadingOverride={isLoading}\n imageProps={imageProps}\n src={url ?? placeholderSrc}\n />\n )\n}\n\nconst extensionIcons: Record<string, string> = {\n txt: '/icons/description.svg',\n pdf: '/icons/pdf.svg',\n zip: '/icons/zip.svg',\n '7z': '/icons/zip.svg',\n rar: '/icons/zip.svg',\n}\n\nconst ExtensionIcon = ({ value }: { value: FileValue | null | undefined }) => {\n const extension = useMemo(() => {\n if (!value) return ''\n const parts = value.filename.split('.')\n return parts[parts.length - 1]\n }, [value])\n const icon = extensionIcons[extension]\n const filter = useColorModeValue('invert(0)', 'invert(1)')\n if (!icon) return null\n\n return <Image filter={extension !== 'pdf' ? filter : 'none'} h=\"24px\" src={icon} />\n}\n\nconst FileViewBody = ({\n value,\n noLabel,\n imageOptions,\n loading,\n hasUpload,\n}: {\n value: FileValue\n imageOptions?: ImageViewOptions\n loading?: boolean\n noLabel?: boolean\n hasUpload?: boolean\n}) => {\n const fileType = useMemo(() => value.type?.split('/')?.[0], [value])\n switch (fileType) {\n case 'image':\n return (\n <ImageFileView\n hasUpload={hasUpload}\n loading={loading}\n options={imageOptions}\n value={value}\n />\n )\n case 'audio':\n return <AudioFileView noLabel={noLabel} value={value} hasUpload={hasUpload} />\n case 'pdf':\n return <Image src=\"/icons/pdf.svg\" />\n default:\n return (\n <Flex gap={2}>\n <ExtensionIcon value={value} />\n <Text>{value.filename}</Text>\n </Flex>\n )\n }\n}\n\nconst NoFileView = ({\n hasUpload,\n imageOptions,\n}: {\n hasUpload?: boolean\n imageOptions?: ImageViewOptions\n}) => {\n const imageSize = useImageSize(imageOptions)\n const { shape, placeholder } = imageOptions ?? {}\n const {\n src: placeholderSrc,\n scale: placeholderScale,\n opacity: placeholderOpacity,\n } = placeholder ?? {}\n const { width, height } = imageSize ?? {}\n const filter = useColorModeValue('invert(0)', 'invert(1)')\n\n const bg = useColorModeValue('whiteAlpha.500', 'whiteAlpha.100')\n const borderColor = useBorderColor()\n\n const body = imageOptions ? (\n <Center\n height={shape ? `${height}px` : 'auto'}\n width={shape ? `${width}px` : 'auto'}\n bg={shape ? bg : 'transparent'}\n borderRadius={shape === 'circle' ? 'full' : 4}\n overflow=\"hidden\"\n boxShadow={shape ? '1px 1px 4px #00000055' : 'none'}>\n <Image\n filter={filter}\n opacity={placeholderOpacity}\n height={typeof height === 'number' ? `${height * (placeholderScale ?? 0.6)}px` : '50px'}\n src={placeholderSrc ?? '/icons/image.svg'}\n />\n </Center>\n ) : (\n <Text\n border=\"1px dashed\"\n borderColor={borderColor}\n p={3}\n fontSize=\"sm\"\n textAlign=\"center\"\n w=\"100%\"\n opacity={0.8}>\n {hasUpload ? 'Click to upload or drop file here' : 'No file uploaded'}\n </Text>\n )\n return (\n <Center\n width={typeof width === 'number' ? `${width}px` : 'auto'}\n height={typeof height === 'number' ? `${height}px` : 'auto'}>\n {body}\n </Center>\n )\n}\n\nexport const FileView = ({\n value,\n hasUpload,\n noLabel,\n loading,\n imageOptions,\n}: {\n value?: FileValue | null\n hasUpload?: boolean\n noLabel?: boolean\n loading?: boolean\n imageOptions?: ImageViewOptions\n}) => {\n const { storagePath, dataUrl } = value ?? {}\n\n const missingFile = useMemo(() => !dataUrl && !storagePath, [dataUrl, storagePath])\n if (!value || missingFile) {\n return <NoFileView hasUpload={hasUpload} imageOptions={imageOptions} />\n }\n return (\n <FileViewBody\n loading={loading}\n imageOptions={imageOptions}\n noLabel={noLabel}\n hasUpload={hasUpload}\n value={value}\n />\n )\n}\nexport const FileComponent = forwardRef<InputRef, FieldProps<FileField>>(\n ({ input: { value, onChange }, field }, ref) => {\n const { imageOptions } = field || {}\n const inputRef = useRef<HTMLInputElement>(null)\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = useCallback(\n e => {\n const file = e.target.files?.[0]\n if (!file) return\n if (value?.dataUrl) URL.revokeObjectURL(value.dataUrl)\n\n onChange({\n ...value,\n dataUrl: URL.createObjectURL(file),\n type: file.type,\n filename: file.name,\n })\n },\n [onChange, value],\n )\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.click()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n const isImageField = useMemo(\n () => field.accept && field.accept.length === 1 && field.accept[0] === 'image',\n [field],\n )\n const imgOptions = useMemo<ImageViewOptions | undefined>(\n () =>\n isImageField || value?.type?.startsWith('image/') || value?.type?.startsWith('video/')\n ? {\n height: 120,\n ...imageOptions,\n objectFit: 'contain',\n }\n : undefined,\n [imageOptions, isImageField, value],\n )\n return (\n <Center\n flexFlow=\"column\"\n position=\"relative\"\n cursor=\"pointer\"\n onClick={() => inputRef.current?.click()}\n width=\"100%\">\n <Text fontSize=\"sm\" opacity={0.8} mb={1}>\n {field.placeholder}\n </Text>\n <Center\n // maxW='160px'\n width=\"100%\"\n position=\"relative\"\n p={2}\n overflow=\"hidden\">\n <FileView hasUpload imageOptions={imgOptions} value={value} />\n <input\n onChange={handleChange}\n ref={inputRef}\n accept={generateAccept(field)}\n type=\"file\"\n style={{\n position: 'absolute',\n pointerEvents: 'none',\n height: 0.1,\n width: 0.1,\n opacity: 0,\n }}\n />\n </Center>\n </Center>\n )\n },\n)\n\nFileComponent.displayName = 'FileComponent'\n","import { Box, Button, Flex, Text, useColorMode } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { MultipleSelectField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle } from 'react'\nimport { FieldProps } from '../types'\n\nexport const MultipleSelectComponent = forwardRef<InputRef, FieldProps<MultipleSelectField>>(\n ({ field, input, inEditable }, ref) => {\n const { options, renderOption, getOptionKey } = field\n const { onChange, value, onFocus, onBlur } = input\n const { colorMode } = useColorMode()\n useImperativeHandle(ref, () => ({\n focus: () => {\n onFocus()\n },\n blur: () => {\n onBlur()\n },\n }))\n\n const body = (\n <Flex w=\"100%\" flexFlow=\"row wrap\">\n {options.map(o => (\n <Box key={getOptionKey ? getOptionKey(o) : o} p={0.5}>\n <Button\n w=\"100%\"\n minH={0}\n size=\"xs\"\n p={0}\n opacity={value?.includes(o) ? 1 : 0.7}\n variant=\"unstyled\"\n onClick={e => {\n e.stopPropagation()\n onChange(value?.includes(o) ? value.filter(v => v !== o) : [...(value ?? []), o])\n }}\n _hover={{ opacity: 0.8 }}>\n {renderOption(o, colorMode, !!value?.includes(o))}\n </Button>\n </Box>\n ))}\n </Flex>\n )\n\n return inEditable ? (\n <Flex py={0.5} flexFlow=\"column\" w=\"100%\">\n <Text lineHeight={1} px={2} opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n {field.placeholder}\n </Text>\n {body}\n </Flex>\n ) : (\n body\n )\n },\n)\n","import { InputSize } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\n\nconst inputPaddingY: Record<InputSize, number> = {\n xs: 0.25,\n sm: 0.35,\n md: 0.5,\n lg: 0.5,\n xl: 0.5,\n}\n\nconst inputPaddingX: Record<InputSize, number> = {\n xs: 0.5,\n sm: 0.75,\n md: 0.75,\n lg: 0.75,\n xl: 0.75,\n}\nconst getInputPadding = (size: InputSize) => {\n const paddingY = inputPaddingY[size]\n const paddingX = inputPaddingX[size]\n return `${paddingY}rem ${paddingX}rem`\n}\nconst fontSize: Record<InputSize, string> = {\n xs: '0.75rem',\n sm: '0.875rem',\n md: '1rem',\n lg: '1.125rem',\n xl: '1.25rem',\n}\n\nexport const useInputStyle = (size?: InputSize) =>\n useMemo<Partial<CSSProperties>>(\n () => ({\n padding: getInputPadding(size ?? 'md'),\n fontSize: fontSize[size ?? 'md'],\n }),\n [size],\n )\n","import { useColorModeValue } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { CurrencyAmountField, NumberField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport CurrencyInput from 'react-currency-input-field'\nimport { InputSlider } from '../InputSlider'\nimport { useInputImperativeHandle } from '../hooks/useInputImperativeHandle'\nimport { useInputStyle } from '../hooks/useInputStyle'\nimport { FieldProps } from '../types'\nimport './styles.css'\n\nexport const NumberComponent = forwardRef<InputRef, FieldProps<NumberField> & { prefix?: string }>(\n ({ input: { onChange, value, ...input }, field, size, prefix, inEditable: _, ...props }, ref) => {\n const { type, defaultValue, placeholder } = field\n const className = useColorModeValue('number-input', 'number-input-dark')\n const style = useInputStyle(size)\n const inputRef = useInputImperativeHandle(ref)\n const [endsWith, setEndsWith] = useState('')\n const displayed = typeof value === 'number' && !Number.isNaN(value) ? `${value}${endsWith}` : ''\n if (type === 'slider') {\n return (\n <InputSlider\n label={placeholder}\n onChange={onChange}\n value={value}\n defaultValue={defaultValue}\n />\n )\n }\n return (\n <CurrencyInput\n className={className}\n placeholder={field.placeholder}\n decimalsLimit={field.precision}\n allowDecimals={!!field.precision}\n prefix={prefix}\n ref={inputRef}\n onValueChange={(v, _, values) => {\n if (v?.endsWith('.')) setEndsWith('.')\n else if (v?.includes('.') && v?.endsWith('0')) setEndsWith('0')\n else setEndsWith('')\n onChange(values?.float)\n }}\n value={displayed}\n {...props}\n style={{\n background: 'none',\n // height: 'auto',\n resize: 'none',\n fontFamily: 'Encode Sans',\n boxSizing: 'border-box',\n width: '100%',\n borderRadius: '4px',\n border: 'none',\n outline: 'none',\n ...style,\n ...props.style,\n }}\n {...input}\n />\n )\n },\n)\nconst BaseCurrencyAmountComponent = (\n { field, ...props }: FieldProps<CurrencyAmountField>,\n ref: ForwardedRef<InputRef>,\n) => {\n const inputRef = useRef<HTMLInputElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n return <NumberComponent prefix=\"$\" field={{ ...field, _type: 'number' }} {...props} />\n}\n\nexport const CurrencyAmountComponent = forwardRef<InputRef, FieldProps<CurrencyAmountField>>(\n BaseCurrencyAmountComponent as any,\n)\n","import { Flex, Text } from '@chakra-ui/react'\nimport { Field } from '@chem-po/react'\nimport { useMemo } from 'react'\n\nexport const OptionalTag = <T extends Field>({\n value,\n field,\n}: {\n field: T\n value: T['defaultValue'] | undefined | null\n}) => {\n const top = useMemo(() => {\n if (value === '' || value === undefined || value === null) return 1\n switch (field._type) {\n case 'text':\n case 'number':\n case 'select':\n case 'date':\n case 'time':\n case 'datetime':\n return -1\n default:\n return 1\n }\n }, [value, field])\n return (\n <Flex transition=\"top 300ms\" top={top} position=\"absolute\" right={3}>\n <Text fontSize=\"xs\" opacity={0.6}>\n OPTIONAL\n </Text>\n </Flex>\n )\n}\n","import {\n Box,\n Button,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Text,\n useColorMode,\n} from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { SelectField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle, useMemo } from 'react'\nimport { FieldProps } from '../types'\n\nconst DefaultRenderOption = (value: any) => {\n return <Text>{typeof value === 'string' ? value : JSON.stringify(value)}</Text>\n}\n\nexport const SelectComponent = forwardRef<InputRef, FieldProps<SelectField>>(\n ({ field, input, meta }, ref) => {\n const { placeholder, options, renderOption: customRender, getOptionKey } = field\n const { onChange, value, onFocus, onBlur } = input\n const { active } = meta\n const selected = useMemo(() => value && options.find(o => o === value), [value, options])\n const { colorMode } = useColorMode()\n useImperativeHandle(ref, () => ({\n focus: () => {\n onFocus()\n },\n blur: () => {\n onBlur()\n },\n }))\n\n const renderOption = customRender ?? DefaultRenderOption\n\n return (\n <Popover strategy=\"fixed\" placement=\"bottom\" matchWidth isOpen={active} onClose={onBlur}>\n <PopoverTrigger>\n <Button\n fontWeight={500}\n w=\"100%\"\n opacity={value ? 1 : 0.7}\n onClick={e => {\n e.stopPropagation()\n onFocus()\n }}\n variant=\"unstyled\"\n position=\"relative\">\n <Box>{selected ? renderOption(selected, colorMode, true) : placeholder}</Box>\n </Button>\n </PopoverTrigger>\n <PopoverContent w=\"100%\" overflowY=\"auto\" maxH=\"300px\">\n <PopoverBody p={0}>\n {options.map(o => (\n <Button\n key={getOptionKey ? getOptionKey(o) : o}\n w=\"100%\"\n variant=\"unstyled\"\n onClick={e => {\n e.stopPropagation()\n onChange(o)\n onBlur()\n }}\n _hover={{ bg: 'blackAlpha.100' }}\n _dark={{\n _hover: { bg: 'whiteAlpha.100' },\n }}>\n {renderOption(o, colorMode, o === selected)}\n </Button>\n ))}\n </PopoverBody>\n <PopoverArrow />\n </PopoverContent>\n </Popover>\n )\n },\n)\n","import {\n Center,\n Collapse,\n HStack,\n Image,\n Input,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Text,\n VStack,\n} from '@chakra-ui/react'\n\nimport { getHandle, InputRef, SocialMediaSites } from '@chem-po/core'\nimport { SocialMediaField } from '@chem-po/react'\nimport { FC, ForwardedRef, forwardRef, useCallback, useImperativeHandle, useMemo } from 'react'\nimport { FieldProps } from '../types'\n\nconst facebookLogo = '/icons/facebook.svg'\nconst instagramLogo = '/icons/instagram.svg'\nconst soundcloudLogo = '/icons/soundcloud.svg'\nconst twitterLogo = '/icons/twitter.svg'\nconst youtubeLogo = '/icons/youtube.svg'\n\nconst siteToIcon: Record<SocialMediaSites, any> = {\n facebook: facebookLogo,\n instagram: instagramLogo,\n twitter: twitterLogo,\n youtube: youtubeLogo,\n soundcloud: soundcloudLogo,\n}\n\nconst SocialMediaSiteInput: FC<{\n site: SocialMediaSites\n value?: string\n onChange: (v?: string) => void\n}> = ({ site, value, onChange }) => {\n const { handle, error } = useMemo(() => {\n try {\n const h = getHandle(site, value)\n return { handle: h }\n } catch (e: any) {\n return { error: e?.message ?? 'Error parsing handle' }\n }\n }, [value, site])\n const displayedText = useMemo(\n () => (handle ? `${site.toUpperCase()}: ${handle}` : site.toUpperCase()),\n [site, handle],\n )\n return (\n <Popover trigger=\"hover\">\n <PopoverTrigger>\n <Center opacity={handle ? 1 : 0.6} borderRadius=\"full\" width=\"34px\" height=\"34px\">\n <Image\n cursor=\"pointer\"\n filter={`grayscale(${handle ? 0 : 100}%)`}\n height=\"24px\"\n width=\"24px\"\n objectFit=\"contain\"\n src={siteToIcon[site]}\n />\n </Center>\n </PopoverTrigger>\n <PopoverContent w=\"auto\">\n <PopoverBody overflow=\"hidden\" borderRadius={4} p={0} w=\"auto\">\n <VStack spacing={0} p={2} w=\"300px\" align=\"flex-start\">\n <Text fontSize=\"md\">{displayedText}</Text>\n\n <Collapse in={!!error} style={{ width: '100%' }}>\n <Text px={1} bg=\"red.500\" fontSize=\"sm\" color=\"white\">\n {error}\n </Text>\n </Collapse>\n <Input\n onChange={e => onChange(e.target.value)}\n placeholder=\"Handle or URL\"\n width=\"100%\"\n value={value}\n size=\"md\"\n />\n </VStack>\n </PopoverBody>\n </PopoverContent>\n </Popover>\n )\n}\nexport const SocialMediaComponent = forwardRef<InputRef, FieldProps<SocialMediaField>>(\n (props: FieldProps<SocialMediaField>, ref: ForwardedRef<InputRef>) => {\n const {\n input: { value, onChange },\n field: { sites },\n } = props\n const handleChange = useCallback(\n (site: SocialMediaSites, v?: string) => {\n const { [site]: _curr, ...rest } = value ?? {}\n if (!v && Object.keys(rest).length === 0) {\n onChange({ target: { value: undefined } })\n }\n if (!v) onChange(rest)\n onChange({ ...rest, [site]: v })\n },\n [onChange, value],\n )\n\n useImperativeHandle(ref, () => ({\n blur: () => {},\n focus: () => {},\n }))\n\n return (\n <VStack w=\"100%\" p={1}>\n <VStack borderRadius={4} p={2} spacing={0} w=\"100%\">\n <Text fontSize=\"md\">Links</Text>\n <HStack>\n {!sites || sites.facebook ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('facebook', v)}\n site=\"facebook\"\n value={value?.facebook}\n />\n ) : null}\n {!sites || sites.instagram ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('instagram', v)}\n site=\"instagram\"\n value={value?.instagram}\n />\n ) : null}\n {!sites || sites.twitter ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('twitter', v)}\n site=\"twitter\"\n value={value?.twitter}\n />\n ) : null}\n {!sites || sites.youtube ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('youtube', v)}\n site=\"youtube\"\n value={value?.youtube}\n />\n ) : null}\n {!sites || sites.soundcloud ? (\n <SocialMediaSiteInput\n onChange={v => handleChange('soundcloud', v)}\n site=\"soundcloud\"\n value={value?.soundcloud}\n />\n ) : null}\n </HStack>\n </VStack>\n </VStack>\n )\n },\n)\n\nSocialMediaComponent.displayName = 'SocialMediaComponent'\n","import { ViewIcon, ViewOffIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton, Input } from '@chakra-ui/react'\nimport { InputRef } from '@chem-po/core'\nimport { TextField } from '@chem-po/react'\nimport { forwardRef, useImperativeHandle, useRef, useState } from 'react'\nimport { FieldProps } from '../types'\nimport { TextAreaComponent } from './textarea'\n\nexport const TextComponent = forwardRef<InputRef, FieldProps<TextField>>(\n ({ input, inEditable, meta, field }, ref) => {\n const { placeholder, type } = field\n const [isHidden, setIsHidden] = useState(type === 'password')\n const { value } = input\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null)\n\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n const body =\n type === 'textarea' ? (\n <TextAreaComponent inEditable={inEditable} field={field} input={input} meta={meta} />\n ) : (\n <Input\n ref={inputRef as any}\n border=\"none\"\n _dark={{\n border: 'none',\n }}\n borderRadius={0}\n px={inEditable ? 0 : 3}\n background=\"transparent\"\n _focus={{\n border: 'none',\n }}\n py={inEditable ? 0 : 0.5}\n type={isHidden ? 'password' : 'text'}\n height={inEditable ? 'auto' : 10}\n placeholder={placeholder}\n {...input}\n onChange={e => {\n input.onChange({ target: { value: e.target.value } })\n }}\n value={value ?? ''}\n />\n )\n\n return type === 'password' ? (\n <Flex width=\"100%\" position=\"relative\" align=\"center\">\n {body}\n <IconButton\n position=\"absolute\"\n right={2}\n onClick={() => setIsHidden(!isHidden)}\n variant=\"ghost\"\n icon={isHidden ? <ViewIcon /> : <ViewOffIcon />}\n aria-label={isHidden ? 'show' : 'hide'}\n title={isHidden ? 'Show' : 'Hide'}\n size=\"xs\"\n />\n </Flex>\n ) : (\n body\n )\n },\n)\n\nTextComponent.displayName = 'TextComponent'\n","import { InputRef } from '@chem-po/core'\nimport { TextField, useTextColor } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, useImperativeHandle, useRef } from 'react'\nimport TextareaAutosize from 'react-textarea-autosize'\nimport { FieldProps } from '../types'\n\nexport const TextAreaComponent = forwardRef<InputRef, FieldProps<TextField>>(\n ({ input, field, inEditable }, ref: ForwardedRef<InputRef>) => {\n const textColor = useTextColor()\n const inputRef = useRef<HTMLTextAreaElement>(null)\n useImperativeHandle(ref, () => ({\n focus: () => {\n inputRef.current?.focus()\n },\n blur: () => {\n inputRef.current?.blur()\n },\n }))\n return (\n <TextareaAutosize\n placeholder={field.placeholder}\n minRows={2}\n maxRows={5}\n ref={inputRef}\n style={{\n // height: 'auto',\n resize: 'none',\n width: '100%',\n color: textColor,\n background: 'none',\n fontFamily: 'fonts.body',\n boxSizing: 'border-box',\n borderRadius: '4px',\n padding: inEditable ? 0 : '0.6rem 1rem',\n border: 'none',\n outline: 'none',\n }}\n {...input}\n />\n )\n },\n)\n\nTextAreaComponent.displayName = 'TextAreaComponent'\n","import { Flex, FlexProps, Text, VStack } from '@chakra-ui/react'\nimport { FieldType, InputRef } from '@chem-po/core'\nimport { Field, TypedField } from '@chem-po/react'\nimport { ForwardedRef, forwardRef, ForwardRefExoticComponent, useMemo } from 'react'\nimport { BooleanComponent } from './boolean'\nimport { ColorComponent } from './color'\nimport { DateInput } from './date'\nimport { DateTimeInput } from './datetime'\nimport { FileComponent } from './file'\nimport { MultipleSelectComponent } from './multipleSelect'\nimport { CurrencyAmountComponent, NumberComponent } from './number'\nimport { OptionalTag } from './OptionalTag'\nimport { SelectComponent } from './select'\nimport { SocialMediaComponent } from './socialMedia'\nimport { TextComponent } from './text'\nimport { TimeInput } from './time'\nimport { FieldProps } from './types'\n\ntype ComponentType<T extends Field> = ForwardRefExoticComponent<\n FieldProps<T> & React.RefAttributes<InputRef>\n>\n\nconst Components: { [Key in FieldType]: ComponentType<TypedField<Key>> } = {\n text: TextComponent,\n file: FileComponent,\n boolean: BooleanComponent,\n select: SelectComponent,\n multipleSelect: MultipleSelectComponent,\n currency: CurrencyAmountComponent,\n number: NumberComponent,\n date: DateInput,\n datetime: DateTimeInput,\n time: TimeInput,\n socialMedia: SocialMediaComponent,\n color: ColorComponent,\n}\n\nconst InputBase = <T extends Field>(props: FieldProps<T>, ref: ForwardedRef<InputRef>) => {\n const {\n field,\n meta: { error, active, touched },\n input,\n inEditable,\n } = props\n\n const { value } = input\n\n const color = useMemo(() => {\n if (error && touched) return '#ff7777'\n if (active) return 'rgba(0,0,0,0.7)'\n return 'rgba(0,0,0,0.3)'\n }, [error, active, touched])\n const { _type, optional, label } = field\n const showPlaceholder = useMemo(\n () => _type === 'multipleSelect' || (!!value && _type !== 'file' && _type !== 'boolean'),\n [value, _type],\n )\n const styles = useMemo<FlexProps>(() => {\n if (inEditable) return {}\n switch (_type) {\n case 'text':\n case 'number':\n case 'currency':\n case 'select':\n return { boxShadow: `0 0 7px ${color}`, transition: 'all 300ms', bg: 'background.50' }\n default:\n return {}\n }\n }, [_type, color, inEditable])\n const Component = useMemo(() => Components[_type] as ComponentType<T>, [_type])\n\n const pb = useMemo(() => {\n if (inEditable) return 0\n return error && touched ? 6 : 2\n }, [inEditable, error, touched])\n return (\n <VStack\n position=\"relative\"\n align=\"flex-start\"\n width=\"100%\"\n py={inEditable ? 0 : 1}\n px={1}\n spacing={0}\n pb={pb}\n transition=\"all 500ms\"\n pt={showPlaceholder && !inEditable ? 4 : 0}>\n {label && !inEditable ? (\n <Text color=\"gray.800\" fontSize=\"sm\" px={2}>\n {label}\n </Text>\n ) : null}\n <Flex width=\"100%\" borderRadius={4} py={0.5} overflow=\"hidden\" {...styles}>\n <Component ref={ref} {...props} />\n </Flex>\n {inEditable ? null : (\n <>\n <Text\n opacity={error && touched ? 1 : 0}\n transition={`opacity 500ms ease ${error && touched ? 250 : 0}ms`}\n position=\"absolute\"\n bottom=\"0px\"\n fontSize=\"sm\"\n px={1}\n pointerEvents=\"none\"\n color=\"red.600\">\n {error}\n </Text>\n <Text\n opacity={showPlaceholder ? 1 : 0}\n transition={`opacity 500ms ease ${showPlaceholder ? 250 : 0}ms`}\n position=\"absolute\"\n top=\"-4px\"\n pointerEvents=\"none\"\n fontSize=\"sm\"\n fontFamily=\"fonts.heading\"\n px={1}\n color=\"blackAlpha.600\"\n _dark={{\n color: 'whiteAlpha.600',\n }}>\n {field.placeholder || ''}\n </Text>\n </>\n )}\n {optional && !inEditable ? <OptionalTag field={field} value={value} /> : null}\n </VStack>\n )\n}\n\nexport const Input = forwardRef<InputRef, FieldProps<Field>>(InputBase)\n","import { Button, ButtonProps, Collapse, Flex, HStack, Progress, Text } from '@chakra-ui/react'\n\nimport { FC, PropsWithChildren } from 'react'\n\nimport { FormProps, IFormElement, useChempoForm, UseFormSubmit } from '@chem-po/react'\nimport { useFormState } from 'react-hook-form'\nimport { UploadProgress } from './UploadProgress'\n\nconst CancelButton = ({ onBack, children }: PropsWithChildren<{ onBack: () => void }>) => (\n <Button\n flex={1}\n transition=\"all 500ms\"\n onClick={onBack}\n variant=\"outline\"\n border=\"1px solid #cdcdcd\"\n color=\"#777\"\n ml=\"auto\">\n {children}\n </Button>\n)\n\nexport const SubmitButton: FC<\n { onSubmitClick: () => Promise<void>; submitting: boolean } & ButtonProps\n> = ({ onSubmitClick, submitting, children, filter, opacity }) => (\n <Button\n isLoading={submitting}\n filter={filter}\n flex={1}\n transition=\"all 500ms\"\n opacity={opacity}\n onClick={() => {\n onSubmitClick()\n }}\n ml=\"auto\"\n variant=\"solid\">\n {children}\n </Button>\n)\n\nconst FormErrorView = () => {\n const { formError } = useChempoForm()\n return (\n <Collapse in={!!formError}>\n <Text color=\"red\">{formError ?? ''}</Text>\n </Collapse>\n )\n}\n\nexport const FormFooter = <F extends IFormElement>({\n renderFooter,\n ...props\n}: Pick<FormProps<F>, 'renderFooter' | 'onBack' | 'buttonText'> &\n Pick<UseFormSubmit, 'uploads'> & {\n onSubmit: () => Promise<void>\n }) => {\n const { uploads, onBack, buttonText, onSubmit } = props\n const { isSubmitting: submitting, isValid: valid } = useFormState()\n return (\n <Flex w=\"100%\" flexFlow=\"column\">\n <Collapse endingHeight={5} style={{ width: '100%' }} in={submitting}>\n <Progress w=\"100%\" h=\"5px\" isIndeterminate />\n </Collapse>\n <UploadProgress uploads={uploads} />\n <FormErrorView />\n {renderFooter ? (\n renderFooter(props)\n ) : (\n <HStack py={2} borderTop=\"1px solid\" borderColor=\"background.200\" px={3} w=\"100%\">\n {onBack ? <CancelButton onBack={onBack}>Cancel</CancelButton> : null}\n <SubmitButton\n size=\"sm\"\n filter={`grayscale(${!valid ? 100 : 0}%)`}\n opacity={!valid ? 0.5 : 1}\n onSubmitClick={onSubmit}\n submitting={submitting}>\n {buttonText}\n </SubmitButton>\n </HStack>\n )}\n </Flex>\n )\n}\n","import { Center, Flex, Progress, Text } from '@chakra-ui/react'\nimport { UploadsState } from '@chem-po/core'\nimport { useMemo } from 'react'\nimport { TransitionGroup } from 'react-transition-group'\nimport { ExpandOnMount } from '../../box'\nimport './styles.css'\n\nexport const UploadProgress = ({ uploads }: { uploads: UploadsState }) => {\n const asArr = useMemo(() => Object.values(uploads), [uploads])\n return (\n <TransitionGroup component={Flex} width=\"100%\" flexFlow=\"column\">\n {asArr.map(upload => (\n <ExpandOnMount key={upload.label}>\n <Center px={2} height=\"26px\" position=\"relative\" w=\"100%\" flexDirection=\"column\">\n <Progress\n borderRadius=\"full\"\n value={upload.percent * 100}\n mx={2}\n my={1}\n size=\"md\"\n height=\"100%\"\n width=\"100%\"\n />\n <Text\n fontFamily=\"fonts.heading\"\n textShadow=\"1px 1px 3px #000000aa\"\n color=\"white\"\n position=\"absolute\"\n fontSize=\"sm\"\n fontWeight={500}>\n {upload.label.toUpperCase()}\n </Text>\n </Center>\n </ExpandOnMount>\n ))}\n </TransitionGroup>\n )\n}\n","import { Box, Flex, Text } from '@chakra-ui/react'\nimport { ImageViewOptions } from '@chem-po/core'\nimport { FileField } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\nimport { ExpandOnMount } from '../../box/ExpandOnMount'\nimport { FileView } from '../input/file'\n\nexport const FileFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: FileField\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { imageOptions, placeholder } = field\n const options = useMemo<ImageViewOptions>(\n () => ({\n height: 150,\n ...imageOptions,\n }),\n [imageOptions],\n )\n return (\n <Flex flexFlow={value ? 'column' : 'row'} style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? (\n <ExpandOnMount>\n <Box p={1}>\n <FileView imageOptions={options} value={value} />\n </Box>\n </ExpandOnMount>\n ) : (\n <Text opacity={0.7}>None</Text>\n )}\n </Flex>\n )\n}\n","import { Box, Text } from '@chakra-ui/react'\n\nimport { Flex, useColorMode } from '@chakra-ui/react'\nimport { MultipleSelectField } from '@chem-po/react'\nimport { CSSProperties } from 'react'\n\nexport const MultipleSelectFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: MultipleSelectField\n value: any[]\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder, renderOption } = field\n const { colorMode } = useColorMode()\n return (\n <Flex maxW=\"100%\" flexFlow=\"row wrap\" align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? (\n value.map((v: any) => (\n <Box key={field.getOptionKey ? field.getOptionKey(v) : v} p={0.5}>\n {renderOption(v, colorMode, true)}\n </Box>\n ))\n ) : (\n <Text opacity={0.6}>None</Text>\n )}\n </Flex>\n )\n}\n","import { Flex, Text, useColorMode } from '@chakra-ui/react'\nimport { SelectField } from '@chem-po/react'\nimport { CSSProperties } from 'react'\n\nconst DefaultRenderOption = (value: any) => {\n return <Text>{typeof value === 'string' ? value : JSON.stringify(value)}</Text>\n}\n\nexport const SelectFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: SelectField\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder, renderOption: customRender } = field\n const { colorMode } = useColorMode()\n const renderOption = customRender ?? DefaultRenderOption\n return (\n <Flex align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n {value ? renderOption(value, colorMode, true) : 'None'}\n </Flex>\n )\n}\n","import { Flex, Text } from '@chakra-ui/react'\n\nimport { formatField } from '@chem-po/core'\nimport { Field } from '@chem-po/react'\nimport { CSSProperties, useMemo } from 'react'\nimport { FileFieldView } from './file'\nimport { MultipleSelectFieldView } from './multipleSelect'\nimport { SelectFieldView } from './select'\n\nconst DefaultFieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: Field\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n const { placeholder } = field\n\n const formatted = useMemo(() => {\n const format = formatField[field._type]\n if (!format) return value\n return format(field, value)\n }, [value, field])\n return (\n <Flex align=\"center\" style={style}>\n {noLabel ? null : (\n <Text pr={2} opacity={0.7} fontWeight={600}>\n {placeholder}\n </Text>\n )}\n <Text opacity={value !== undefined && value !== null ? 1 : 0.6}>{formatted ?? 'None'}</Text>\n </Flex>\n )\n}\n\nexport const FieldView = ({\n field,\n value,\n noLabel,\n style,\n}: {\n field: Field\n value: any\n noLabel?: boolean\n style?: CSSProperties\n}) => {\n switch (field._type) {\n case 'select':\n return <SelectFieldView style={style} field={field} value={value} noLabel={noLabel} />\n case 'multipleSelect':\n return <MultipleSelectFieldView style={style} field={field} value={value} noLabel={noLabel} />\n case 'file':\n return <FileFieldView style={style} field={field} value={value} noLabel={noLabel} />\n default:\n return <DefaultFieldView style={style} field={field} value={value} noLabel={noLabel} />\n }\n}\n","import { InputRef } from '@chem-po/core'\nimport { Field, useStandaloneInput } from '@chem-po/react'\nimport { CSSProperties, ForwardedRef, forwardRef } from 'react'\nimport { Input } from './input'\n\nconst StandaloneInputBase = (\n {\n onChange,\n value,\n field,\n onBlur,\n inEditable,\n onFocus,\n style,\n }: {\n onChange: (v?: any) => void\n value?: any\n field: Field\n onBlur?: () => void\n onFocus?: () => void\n theme?: 'basic' | 'detailed'\n inEditable?: boolean\n style?: CSSProperties\n },\n ref: ForwardedRef<InputRef>,\n) => {\n const { inputProps, meta } = useStandaloneInput(field, value, onChange, onFocus, onBlur)\n\n return (\n <Input\n ref={ref}\n field={field}\n inEditable={inEditable}\n style={style}\n input={inputProps}\n meta={meta}\n />\n )\n}\n\nexport const StandaloneInput = forwardRef(StandaloneInputBase)\n","import { CheckIcon, CloseIcon, EditIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton } from '@chakra-ui/react'\nimport { palette } from '@chem-po/core'\nimport {\n ChempoFormProvider,\n EditableProps,\n Field,\n useColorModeValue,\n useEditable,\n} from '@chem-po/react'\nimport { CSSProperties, useEffect, useMemo } from 'react'\nimport { LoadingOverlay } from '../../loading/Loading'\nimport { UploadProgress } from '../UploadProgress'\nimport { FieldView } from '../view'\nimport { StandaloneInput } from './StandaloneInput'\n\nexport const Editable = <T extends Field>({\n value: initValue,\n field,\n onSubmit,\n storagePath,\n style,\n onEditClose,\n onEditOpen,\n}: EditableProps<CSSProperties, T>) => {\n const {\n formattedValue,\n inputRef,\n setValue,\n isLoading,\n uploads,\n editHovered,\n handleEditOpen,\n handleEditClose,\n isEditing,\n value,\n setEditHovered,\n submit,\n submitValue,\n parse,\n } = useEditable({\n value: initValue,\n field,\n onSubmit,\n storagePath,\n onEditOpen,\n onEditClose,\n })\n const alwaysEditing = useMemo(() => field._type === 'file' || field._type === 'boolean', [field])\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus()\n }\n }, [isEditing, inputRef])\n\n const editingBorderColor = useColorModeValue('#00000055', '#ffffff55')\n\n return (\n <ChempoFormProvider>\n <Flex\n borderRadius={4}\n border={`1px dashed ${editHovered && !isEditing ? editingBorderColor : 'transparent'}`}\n flexFlow=\"column\"\n w=\"100%\">\n <Flex align=\"center\" px={1} position=\"relative\" w=\"100%\">\n <Flex\n opacity={isLoading ? 0 : 1}\n transition=\"all 300ms\"\n mr={1}\n border={`1px dashed ${isEditing ? editingBorderColor : 'transparent'}`}\n flex={1}\n minW=\"0\">\n {isEditing || alwaysEditing ? (\n <StandaloneInput\n ref={inputRef}\n value={formattedValue}\n inEditable\n field={field}\n style={{ padding: 0, ...style }}\n onChange={alwaysEditing ? v => submitValue(parse(v)) : v => setValue(parse(v))}\n />\n ) : (\n <FieldView style={style} field={field} value={value} />\n )}\n </Flex>\n {alwaysEditing ? null : (\n <>\n <IconButton\n aria-label=\"Edit\"\n size=\"xs\"\n icon={isEditing ? <CloseIcon width={3} /> : <EditIcon />}\n onMouseEnter={() => setEditHovered(true)}\n onMouseLeave={() => setEditHovered(false)}\n onClick={() => {\n if (isEditing) {\n setValue(value)\n handleEditClose()\n } else handleEditOpen()\n }}\n />\n <Flex\n transition=\"all 300ms\"\n justify=\"flex-end\"\n opacity={isEditing ? 1 : 0}\n overflow=\"hidden\"\n w={isEditing ? '30px' : '0px'}>\n <IconButton\n aria-label=\"Edit\"\n size=\"xs\"\n bg={palette.cyan.light}\n _dark={{ bg: palette.cyan.light, _hover: { bg: palette.cyan.lighter } }}\n _hover={{\n bg: palette.cyan.medium,\n }}\n icon={<CheckIcon filter=\"drop-shadow(1px 1px 3px #000000aa)\" />}\n onClick={() => {\n submit()\n }}\n />\n </Flex>\n </>\n )}\n <LoadingOverlay isLoading={isLoading} />\n </Flex>\n <UploadProgress uploads={uploads} />\n </Flex>\n </ChempoFormProvider>\n )\n}\n","import { CloseIcon, DeleteIcon, DragHandleIcon, EditIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Stack,\n Text,\n useColorModeValue,\n VStack,\n} from '@chakra-ui/react'\nimport { isField, isListField } from '@chem-po/core'\nimport {\n ChempoFormProvider,\n DataViewProps,\n DataViewProvider,\n Field,\n FieldFormProps,\n FieldMap,\n FieldMapFormProps,\n FormProps,\n IFormElement,\n ListField,\n useDataView,\n useFormSubmit,\n UseFormSubmitProps,\n} from '@chem-po/react'\nimport { DragDropContext, Draggable, Droppable, DropResult } from '@hello-pangea/dnd'\nimport { FC, useMemo, useState } from 'react'\nimport { useFieldArray, UseFieldArrayMove, useFormContext } from 'react-hook-form'\nimport { useBorderColor } from '../../hooks'\nimport { Expandable } from '../box'\nimport { ExpandOnMount } from '../box/ExpandOnMount'\nimport { DeleteButton } from '../button/DeleteButton'\nimport { Condition } from './Condition'\nimport { FieldComponent } from './Field'\nimport { FormFooter } from './FormFooter'\nimport { Editable } from './input/Editable'\nimport { FieldView } from './view'\n\nconst makeOnDragEndFunction = (move: UseFieldArrayMove) => (result: DropResult) => {\n // dropped outside the list\n if (!result.destination) {\n return\n }\n\n move(result.source.index, result.destination.index)\n}\n\nexport const ListFieldInput: FC<{ field: ListField; name: string }> = ({ field, name }) => {\n const emptyData = useMemo(() => {\n if (isField(field.itemField)) return ''\n if (isListField(field.itemField)) return []\n return {}\n }, [field])\n const draggingBg = useColorModeValue('#efefef', '#2b2b2b')\n const borderColor = useBorderColor()\n const { control } = useFormContext()\n const { fields, append, remove, move } = useFieldArray({\n control,\n name,\n })\n const onDragEnd = useMemo(() => makeOnDragEndFunction(move), [move])\n return (\n <Flex overflow=\"hidden\" gap={2} flexFlow=\"column\" w=\"100%\" px={2} py={1}>\n <Text lineHeight={1} opacity={0.7} fontSize=\"sm\">\n {field.placeholder}\n </Text>\n <DragDropContext onDragEnd={onDragEnd}>\n <Droppable droppableId=\"droppable\">\n {(droppableProvided, { draggingFromThisWith }) => (\n <Flex\n ref={droppableProvided.innerRef}\n flexFlow=\"column\"\n w=\"100%\"\n py={1}\n borderRadius={4}\n minH=\"30px\"\n align=\"flex\"\n {...droppableProvided.droppableProps}>\n {fields.length ? (\n fields.map((formField, idx) => (\n <Draggable key={formField.id} draggableId={formField.id} index={idx}>\n {({ dragHandleProps, draggableProps, innerRef }, { isDragging }) => (\n <Flex\n transition=\"all 300ms\"\n boxShadow={`2px 2px 4px #000000${isDragging ? '55' : '00'}`}\n borderRadius={4}\n pt={2}\n px={2}\n border={`1px solid ${borderColor}`}\n bg={`${draggingBg}${isDragging ? 'ff' : '00'}`}\n ref={innerRef}\n w=\"100%\"\n {...draggableProps}>\n <ExpandOnMount>\n <Flex\n opacity={draggingFromThisWith && !isDragging ? 0.5 : 1}\n gap={1}\n align=\"center\"\n w=\"100%\">\n <IconButton\n aria-label=\"drag\"\n size=\"xs\"\n opacity={0.8}\n variant=\"ghost\"\n icon={<DragHandleIcon />}\n {...dragHandleProps}\n />\n <Box minW=\"0\" flex={1}>\n <FormElement name={formField.id} field={field.itemField} />\n </Box>\n <IconButton\n aria-label=\"delete\"\n size=\"xs\"\n bg=\"red.600\"\n color=\"white\"\n icon={<DeleteIcon filter=\"drop-shadow(1px 1px 3px #00000088)\" />}\n onClick={e => {\n e.stopPropagation()\n remove(idx)\n }}\n />\n </Flex>\n </ExpandOnMount>\n </Flex>\n )}\n </Draggable>\n ))\n ) : (\n <Text fontSize=\"sm\" opacity={0.7} py={1} px={2}>\n No items\n </Text>\n )}\n {droppableProvided.placeholder}\n </Flex>\n )}\n </Droppable>\n </DragDropContext>\n <Flex>\n <Button mr=\"auto\" width=\"auto\" size=\"xs\" onClick={() => append(emptyData)}>\n + NEW\n </Button>\n </Flex>\n </Flex>\n )\n}\n\nexport const FormElement = ({\n field,\n name,\n // validate,\n}: {\n field: IFormElement\n name: string\n // validate?: boolean\n}) => {\n const fields = useMemo<Array<{ name: string; field: IFormElement }>>(() => {\n if (isField(field) || isListField(field)) return [{ name: 'value', field }]\n\n return Object.entries((field as FieldMap).children).map(([childName, childField]) => ({\n name: `${name ? `${name}.` : ''}${childName}`,\n field: childField,\n }))\n }, [field, name])\n return (\n <VStack spacing={1} w=\"100%\">\n {fields.map(f => {\n if (isListField(f.field)) {\n const b = <ListFieldInput key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n }\n if (isField(f.field)) {\n const b = <FieldComponent key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n }\n\n const b = <FormElement key={f.name} name={f.name} field={f.field} />\n return f.field.condition ? (\n <Condition path={name} condition={f.field.condition} key={f.name}>\n {b}\n </Condition>\n ) : (\n b\n )\n })}\n </VStack>\n )\n}\nconst ListFieldView = ({\n field,\n value,\n path,\n}: {\n field: ListField\n value: any[]\n path: string\n}) => {\n const { itemField, placeholder } = field\n const borderColor = useBorderColor()\n return (\n <Box w=\"100%\" p={1}>\n <Expandable\n border={`1px solid ${borderColor}`}\n borderRadius={4}\n initExpanded\n header={() => <Text py={1}>{placeholder}</Text>}>\n <Flex flexFlow=\"column\" bg=\"background.200\" gap={2} px={2} py={1}>\n {value?.length ? (\n value.map((item, index) => (\n <Box\n bg=\"background.100\"\n key={`${path}.${index}`}\n border={`1px solid ${borderColor}`}\n borderRadius={3}>\n <FormElementView\n path={`${path}.${index}`}\n field={{ ...itemField, placeholder: `${placeholder} ${index + 1}` }}\n value={item}\n />\n </Box>\n ))\n ) : (\n <Text fontSize=\"sm\" opacity={0.7} py={1} px={2}>\n No items\n </Text>\n )}\n </Flex>\n </Expandable>\n </Box>\n )\n}\n\nconst FormElementView = ({\n field,\n value,\n path,\n storagePath,\n}: {\n field: IFormElement\n value: any\n path: string\n storagePath?: string\n}) => {\n const { updateField } = useDataView()\n if (isField(field)) {\n return updateField ? (\n <Editable\n storagePath={storagePath}\n field={field}\n value={value}\n onSubmit={v => updateField(path, v)}\n />\n ) : (\n <FieldView field={field} value={value} />\n )\n }\n if (isListField(field)) {\n return <ListFieldView path={path} field={field} value={value} />\n }\n return (\n <DataView\n storagePath={storagePath ? `${storagePath}.${path}` : undefined}\n path={path}\n field={field}\n />\n )\n}\n\nexport const DataView = ({\n field,\n value,\n onClose,\n onDelete,\n onSubmit,\n itemName,\n storagePath,\n path = '',\n}: DataViewProps & { path?: string }) => {\n const { name: fieldName, children } = field\n const [isEditing, setIsEditing] = useState(false)\n return (\n <DataViewProvider value={value} onSubmit={onSubmit}>\n <Expandable\n alwaysExpanded\n header={() => (\n <Flex align=\"center\" px={2} w=\"100%\">\n <Text py={2} fontSize=\"lg\" fontFamily=\"fonts.heading\">\n {fieldName}\n </Text>\n <Flex gap={2} align=\"center\" ml=\"auto\">\n {onDelete ? <DeleteButton onDelete={onDelete} itemName={itemName ?? 'item'} /> : null}\n {onSubmit ? (\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n minW={0}\n w={7}\n h={7}\n ml=\"auto\"\n aria-label=\"edit\"\n icon={<EditIcon />}\n onClick={() => setIsEditing(true)}\n />\n ) : null}\n {onClose ? (\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n minW={0}\n w={7}\n h={7}\n variant=\"ghost\"\n aria-label=\"close\"\n icon={<CloseIcon opacity={0.8} w={3} h={3} />}\n onClick={onClose}\n />\n ) : null}\n </Flex>\n </Flex>\n )}>\n {isEditing && onSubmit ? (\n <Form\n storagePath={storagePath}\n field={field}\n value={value}\n onSubmit={onSubmit}\n onBack={() => setIsEditing(false)}\n />\n ) : (\n <Flex flexFlow=\"column\" px={4} py={2}>\n {Object.entries(children).map(([key, childField]) => (\n <FormElementView\n storagePath={storagePath ? `${storagePath}/${key}` : undefined}\n path={path ? `${path}.${key}` : key}\n key={key}\n field={childField}\n value={value?.[key]}\n />\n ))}\n </Flex>\n )}\n </Expandable>\n </DataViewProvider>\n )\n}\n\nexport const FieldMapForm = <F extends FieldMap>({\n onSubmit: submit,\n onBack,\n field,\n value,\n buttonText = 'SUBMIT',\n renderFooter,\n storagePath,\n}: FieldMapFormProps<F>) => {\n const submitDataProps = useMemo<UseFormSubmitProps<F>>(\n () => ({\n field,\n value,\n submit,\n storagePath,\n }),\n [field, value, submit, storagePath],\n )\n\n const { onSubmit, uploads } = useFormSubmit(submitDataProps)\n\n return (\n <Stack w=\"100%\" spacing={3}>\n <form>\n <Box pt={1} px={2} w=\"100%\">\n <FormElement name=\"\" field={field} />\n </Box>\n <FormFooter\n uploads={uploads}\n onSubmit={onSubmit}\n renderFooter={renderFooter}\n onBack={onBack}\n buttonText={buttonText}\n />\n </form>\n </Stack>\n )\n}\n\nexport const FieldForm = <F extends Field | ListField>({\n onSubmit,\n field,\n value,\n ...props\n}: FieldFormProps<F>) => {\n const fieldMap = useMemo<FieldMap>(() => ({ children: { value: field } }), [field])\n return (\n <FieldMapForm\n field={fieldMap}\n value={{ value }}\n onSubmit={data => onSubmit(data?.value)}\n {...props}\n />\n )\n}\n\nexport const Form = <F extends IFormElement>({ field, ...props }: FormProps<F>) => {\n const body =\n isField(field) || isListField(field) ? (\n <FieldForm field={field} {...props} />\n ) : (\n <FieldMapForm field={field} {...props} />\n )\n\n return <ChempoFormProvider>{body}</ChempoFormProvider>\n}\n","import { Flex, FlexProps } from '@chakra-ui/react'\nimport { useMounted } from '@chem-po/react'\nimport { FullSizeProvider } from '../box'\n\nexport const ListContainer = (props: FlexProps) => {\n const mounted = useMounted()\n return (\n <FullSizeProvider>\n <Flex\n overflow=\"hidden\"\n flexFlow=\"column\"\n h=\"100%\"\n w=\"100%\"\n opacity={mounted ? 1 : 0}\n transition=\"opacity 300ms\"\n {...props}\n />\n </FullSizeProvider>\n )\n}\n","import { Flex } from '@chakra-ui/react'\nimport { AnyObject, ColorMode, DBItem } from '@chem-po/core'\nimport { DataList, ListGridOptions } from '@chem-po/react'\nimport { GridChildComponentProps } from 'react-window'\n\nexport interface GridItemProps<T extends AnyObject> {\n list: DataList<T>\n grid: ListGridOptions<T>\n items: Array<DBItem<T>>\n colorMode: ColorMode\n numCols: number\n mobileLayout: boolean\n onSelect: (item: DBItem<T>) => void\n refetch?: (id: string) => Promise<void>\n}\nexport const ListCell = <T extends AnyObject>({\n data,\n rowIndex,\n columnIndex,\n style,\n}: GridChildComponentProps<GridItemProps<T>>) => {\n const { items, onSelect, refetch, grid, numCols, colorMode } = data || {}\n const { ItemPreview: Render } = grid\n\n const itemIdx = rowIndex * numCols + columnIndex\n const item = items[itemIdx]\n if (!item) return null\n return (\n <Flex\n display=\"flex\"\n cursor=\"pointer\"\n aria-label=\"list-item\"\n onClick={() => {\n onSelect(item)\n }}\n style={style}\n px={1}\n py={0.25}\n key={itemIdx}>\n {Render({\n index: itemIdx,\n item,\n refetch: refetch ? () => refetch(item._id) : undefined,\n colorMode,\n })}\n </Flex>\n )\n}\n","import { Flex, Text } from '@chakra-ui/react'\nimport { toPlural } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { Loading } from '../loading'\n\nexport const NoItemsRow = () => {\n const {\n list,\n search: { debounced, search },\n } = useDataList()\n const {\n data: { isLoading },\n } = usePaginatedList()\n const showLoading = useMemo(\n () => isLoading || debounced !== search,\n [isLoading, debounced, search],\n )\n const { itemName, pluralItemName, noItemsMessage, searchRequired } = list\n return (\n <Flex justify=\"center\" align=\"flex-start\" w=\"100%\" h=\"100%\">\n {showLoading ? (\n <Loading text={`Loading ${pluralItemName ?? toPlural(itemName)}`} />\n ) : (\n <Text textAlign=\"center\" flex={1} p={3} fontStyle=\"italic\" opacity={0.7}>\n {!debounced && searchRequired\n ? `Search ${pluralItemName ?? toPlural(itemName)}`\n : (noItemsMessage ?? `No ${pluralItemName ?? toPlural(itemName)}`)}\n </Text>\n )}\n </Flex>\n )\n}\n","import {\n AnyObject,\n arrayOperators,\n BaseQuery,\n QueryFilter,\n SearchPath,\n stringTransforms,\n} from '@chem-po/core'\nimport { FilterPreset } from '@chem-po/react'\nimport { Query, query, where } from 'firebase/firestore'\n\nexport const getIsDynamicSize = (itemHeight: number | ((item: any) => number)) =>\n typeof itemHeight === 'function'\n\nexport const getTextSearchQuery = <T extends AnyObject>(\n baseQuery: Query<T>,\n searchQuery: string,\n searchPath: SearchPath<T>,\n) => {\n let trimmed = searchQuery.trim()\n if (!trimmed) return baseQuery\n if (searchPath.transform) trimmed = stringTransforms[searchPath.transform](trimmed)\n return query(\n baseQuery,\n where(searchPath.prop, '>=', trimmed),\n where(searchPath.prop, '<=', `${trimmed}\\uf8ff`),\n )\n}\nexport const getSearchQueries = <T extends AnyObject>(\n baseQuery: Query<T>,\n searchData: BaseQuery<T>['search'],\n): Array<Query<T>> => {\n const { paths, query: search } = searchData\n if (!paths?.length || !search) return [baseQuery]\n return paths.map(path => getTextSearchQuery(baseQuery, search, path))\n}\nconst nativeFilterMatchesPreset = <T extends AnyObject>(\n nativeFilter: QueryFilter<T>,\n presetFilter: QueryFilter<T>,\n) => {\n if (nativeFilter.key !== presetFilter.key) return false\n if (nativeFilter.operator !== presetFilter.operator) return false\n if (arrayOperators.includes(nativeFilter.operator)) {\n const nativeValues = Array.isArray(nativeFilter.value)\n ? nativeFilter.value\n : [nativeFilter.value]\n const presetValues = Array.isArray(presetFilter.value)\n ? presetFilter.value\n : [presetFilter.value]\n if (presetValues.every(value => !nativeValues.includes(value))) return false\n return true\n }\n return nativeFilter.value === presetFilter.value\n}\n\nexport const filterMatchesPreset = <T extends AnyObject>(\n filter: QueryFilter<T>,\n { nativeFilter }: FilterPreset<T>,\n) => {\n const nativeFilters = Array.isArray(nativeFilter) ? nativeFilter : [nativeFilter]\n return nativeFilters.every(nativeFilter => nativeFilterMatchesPreset(nativeFilter, filter))\n}\n","import { AnyObject } from '@chem-po/core'\nimport { DataList, ListGridOptions, usePaginatedList } from '@chem-po/react'\nimport { useMemo } from 'react'\n\n// determine number of columns and rows based on data and grid options\n// if row height and column width are both variable, throw an error\n// if row height is variable, calculate dims based on data\n// if column width is variable, calculate dims based on data\ninterface CellDims {\n numRows: number\n numCols: number\n}\nconst getCellDims = <T extends AnyObject>(\n data: T[],\n grid: Required<DataList<T>>['grid'],\n gridWidth: number,\n): CellDims => {\n const { rowHeight, columnWidth } = grid\n if (typeof rowHeight !== 'number' && typeof columnWidth !== 'number') {\n throw new Error('Cannot have both variable row height and variable column width')\n }\n\n if (typeof columnWidth === 'function') {\n const numCols = Math.floor(gridWidth / columnWidth(data[0]))\n const numRows = Math.ceil(data.length / numCols)\n return { numRows, numCols }\n }\n const numCols = Math.max(1, Math.floor(gridWidth / columnWidth))\n const numRows = Math.ceil(data.length / numCols)\n return { numRows, numCols }\n}\n\ntype CellSize = CellDims & {\n rowHeight: number | ((idx: number) => number)\n colWidth: number | ((idx: number) => number)\n}\n\nconst getCellSize = <T extends AnyObject>(\n data: T[],\n grid: Required<DataList<T>>['grid'],\n gridWidth: number,\n): CellSize => {\n const { rowHeight: preferredHeight, columnWidth: preferredWidth } = grid\n const { numRows, numCols } = getCellDims(data, grid, gridWidth)\n\n const colWidths =\n typeof preferredWidth === 'number'\n ? gridWidth / numCols\n : Array.from({ length: numCols }, (_i, i) => {\n const col = data.filter((_j, j) => j % numCols === i)\n return col.reduce((acc, item) => {\n const itemWidth = preferredWidth(item)\n return Math.max(acc, itemWidth)\n }, 0)\n })\n\n const rowHeights =\n typeof preferredHeight === 'number'\n ? preferredHeight\n : Array.from({ length: numRows }, (_, i) => {\n const row = data.slice(i * numCols, (i + 1) * numCols)\n return row.reduce((acc, item) => {\n const itemHeight = preferredHeight(item)\n return Math.max(acc, itemHeight)\n }, 0)\n })\n\n const rowHeight = Array.isArray(rowHeights) ? (idx: number) => rowHeights[idx] : rowHeights\n const colWidth = Array.isArray(colWidths) ? (idx: number) => colWidths[idx] : colWidths\n\n return {\n rowHeight,\n colWidth,\n numCols,\n numRows,\n }\n}\n\nexport const useGridDims = <T extends AnyObject>(grid: ListGridOptions<T>, width: number) => {\n const {\n data: { data },\n } = usePaginatedList<T>()\n return useMemo(() => getCellSize(data, grid, width), [data, grid, width])\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { ListGridOptions, useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport {\n FixedSizeGrid,\n GridOnItemsRenderedProps,\n ListOnItemsRenderedProps,\n VariableSizeGrid,\n} from 'react-window'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { GridItemProps, ListCell } from '../ListItem/ListCell'\nimport { ListItemProps } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\nimport { useGridDims } from './hooks'\n\nexport const InfiniteScrollGridBody = <T extends AnyObject>({\n height,\n options,\n}: {\n height: number\n options: ListGridOptions<T>\n}) => {\n const {\n totalCount,\n data: { data: items },\n refetchItem,\n isItemLoaded,\n goNext: fetchMoreData,\n } = usePaginatedList<T>()\n const { list, onSelectItem, mobileLayout, query } = useDataList<T>()\n const { width } = useFullSize()\n const { numCols, numRows, rowHeight, colWidth } = useGridDims<T>(options, width)\n const { previewHeight, mobile } = list\n const { colorMode } = useColorMode()\n const itemData = useMemo<GridItemProps<T>>(\n () => ({\n list,\n items,\n mobileLayout,\n grid: options,\n colorMode,\n numCols,\n onSelect: (item: WithId<T>) => onSelectItem(item._id),\n refetch: refetchItem,\n }),\n [items, list, refetchItem, onSelectItem, mobileLayout, numCols, options, colorMode],\n )\n\n const varRef = useRef<VariableSizeGrid | null>(null)\n\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n useEffect(() => {\n const varGrid = varRef.current\n if (varGrid) {\n varGrid.resetAfterColumnIndex(0)\n varGrid.resetAfterRowIndex(0)\n }\n }, [query])\n\n const infiniteLoaderRef = useRef<InfiniteLoader>(null)\n useEffect(() => {\n if (infiniteLoaderRef.current) {\n infiniteLoaderRef.current.resetloadMoreItemsCache(true)\n }\n }, [totalCount])\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n const itemKey = useCallback(\n ({\n columnIndex,\n rowIndex,\n data,\n }: {\n columnIndex: number\n rowIndex: number\n data: ListItemProps<T>\n }) => {\n const index = rowIndex * numCols + columnIndex\n return data.items[index]?._id || `${index}`\n },\n [numCols],\n )\n\n const onRendered = useCallback(\n (\n {\n overscanColumnStartIndex,\n overscanColumnStopIndex,\n overscanRowStartIndex,\n overscanRowStopIndex,\n visibleColumnStartIndex,\n visibleColumnStopIndex,\n visibleRowStartIndex,\n visibleRowStopIndex,\n }: GridOnItemsRenderedProps,\n onItemsRendered: (p: ListOnItemsRenderedProps) => void,\n ) => {\n const start = visibleRowStartIndex * numCols + visibleColumnStartIndex\n const stop = visibleRowStopIndex * numCols + visibleColumnStopIndex\n const overscanStart = overscanRowStartIndex * numCols + overscanColumnStartIndex\n const overscanStop = overscanRowStopIndex * numCols + overscanColumnStopIndex\n onItemsRendered({\n overscanStartIndex: overscanStart,\n overscanStopIndex: overscanStop,\n visibleStartIndex: start,\n visibleStopIndex: stop,\n })\n },\n [numCols],\n )\n\n if (!items.length) {\n return <NoItemsRow />\n }\n\n return isDynamicHeight ? (\n <InfiniteLoader\n isItemLoaded={isItemLoaded}\n ref={infiniteLoaderRef}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <VariableSizeGrid<GridItemProps<T>>\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as (idx: number) => number}\n columnWidth={colWidth as (idx: number) => number}\n itemData={itemData}\n style={{ overflowX: 'hidden' }}\n itemKey={itemKey}\n onItemsRendered={i => onRendered(i, onItemsRendered)}\n ref={r => {\n ref(r)\n varRef.current = r\n }}>\n {ListCell}\n </VariableSizeGrid>\n )}\n </InfiniteLoader>\n ) : (\n <InfiniteLoader\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n ref={infiniteLoaderRef}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <FixedSizeGrid<GridItemProps<T>>\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as number}\n columnWidth={colWidth as number}\n itemData={itemData}\n onItemsRendered={i => onRendered(i, onItemsRendered)}\n style={{\n overflowX: 'hidden',\n }}\n ref={r => {\n ref(r)\n varRef.current = null\n }}>\n {ListCell}\n </FixedSizeGrid>\n )}\n </InfiniteLoader>\n )\n}\n","import { Flex } from '@chakra-ui/react'\nimport { AnyObject, ColorMode, DBItem } from '@chem-po/core'\nimport { DataList } from '@chem-po/react'\nimport { ListChildComponentProps } from 'react-window'\n\nexport interface ListItemProps<T extends AnyObject = AnyObject> {\n list: DataList<T>\n items: Array<DBItem<T>>\n mobileLayout: boolean\n onSelect: (item: DBItem<T>) => void\n colorMode: ColorMode\n refetch?: (id: string) => Promise<void>\n}\nexport const ListRow = <T extends AnyObject>({\n data,\n index,\n style,\n}: ListChildComponentProps<ListItemProps<T>>) => {\n const { list, items, onSelect, refetch, mobileLayout, colorMode } = data || {}\n const { ItemPreview: RenderItem, mobile } = list\n\n const Render = mobileLayout ? (mobile?.ItemPreview ?? RenderItem) : RenderItem\n const item = items[index]\n if (!item) return null\n return (\n <Flex\n display=\"flex\"\n cursor=\"pointer\"\n aria-label=\"list-item\"\n onClick={() => {\n onSelect(items[index])\n }}\n style={style}\n key={index}>\n {Render({ index, item, refetch: refetch ? () => refetch(item._id) : undefined, colorMode })}\n </Flex>\n )\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, WithId } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList, VariableSizeGrid, VariableSizeList } from 'react-window'\nimport InfiniteLoader from 'react-window-infinite-loader'\nimport { ListItemProps, ListRow } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\n\nexport const InfiniteScrollListBody = ({ height }: { height: number }) => {\n const {\n totalCount,\n data: { data: items },\n refetchItem,\n isItemLoaded,\n goNext: fetchMoreData,\n } = usePaginatedList()\n const { list, onSelectItem, mobileLayout, query } = useDataList()\n const { previewHeight, mobile } = list\n const { colorMode } = useColorMode()\n const { width } = useFullSize()\n const itemData = useMemo<ListItemProps>(\n () => ({\n list,\n items,\n mobileLayout,\n colorMode,\n onSelect: (item: WithId<AnyObject>) => onSelectItem(item._id),\n refetch: refetchItem,\n }),\n [items, list, refetchItem, onSelectItem, mobileLayout, colorMode],\n )\n\n const varRef = useRef<VariableSizeGrid | null>(null)\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n const infiniteLoaderRef = useRef<InfiniteLoader>(null)\n useEffect(() => {\n if (infiniteLoaderRef.current) {\n infiniteLoaderRef.current.resetloadMoreItemsCache(true)\n }\n }, [totalCount])\n\n useEffect(() => {\n const varGrid = varRef.current\n if (varGrid) {\n varGrid.resetAfterRowIndex(0)\n varGrid.resetAfterColumnIndex(0)\n }\n }, [query])\n\n const getItemSize = useCallback(\n (index: number) => (typeof itemHeight === 'function' ? itemHeight(items[index]) : itemHeight),\n [items, itemHeight],\n )\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n if (!items.length) {\n return <NoItemsRow />\n }\n\n return isDynamicHeight ? (\n <InfiniteLoader\n ref={infiniteLoaderRef}\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <VariableSizeList<ListItemProps>\n height={height}\n width={width}\n itemSize={getItemSize}\n itemCount={totalCount ?? 0}\n itemData={itemData}\n style={{ overflowX: 'hidden' }}\n itemKey={index => items[index]?._id || `${index}`}\n onItemsRendered={i => {\n onItemsRendered(i)\n }}\n ref={ref}>\n {ListRow}\n </VariableSizeList>\n )}\n </InfiniteLoader>\n ) : (\n <InfiniteLoader\n ref={infiniteLoaderRef}\n isItemLoaded={isItemLoaded}\n itemCount={totalCount ?? 0}\n loadMoreItems={fetchMoreData}>\n {({ onItemsRendered, ref }) => (\n <FixedSizeList<ListItemProps>\n height={height}\n width={width}\n itemSize={itemHeight as number}\n itemCount={totalCount ?? 0}\n itemData={itemData}\n itemKey={index => items[index]?._id || `${index}`}\n style={{\n overflowX: 'hidden',\n }}\n onItemsRendered={onItemsRendered}\n ref={ref}>\n {ListRow}\n </FixedSizeList>\n )}\n </InfiniteLoader>\n )\n}\n","import { useColorMode } from '@chakra-ui/react'\nimport { AnyObject, BaseComponent, ItemPreviewProps, ListGridOptions } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { memo, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeGrid, VariableSizeGrid } from 'react-window'\nimport { GridItemProps, ListCell } from '../ListItem/ListCell'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\nimport { useGridDims } from './hooks'\n\nconst BasePagedGridBody = <\n T extends AnyObject,\n ItemPreviewComponent extends BaseComponent<ItemPreviewProps<T>>,\n>({\n height,\n options,\n}: {\n height: number\n options: ListGridOptions<T, ItemPreviewComponent>\n}) => {\n const { list, onSelectItem, mobileLayout, query } = useDataList<T>()\n const {\n data: { data: items },\n pageIndex,\n } = usePaginatedList<T>()\n const variableRef = useRef<VariableSizeGrid>(null)\n const fixedRef = useRef<FixedSizeGrid>(null)\n const { width } = useFullSize()\n const { numCols, numRows, rowHeight, colWidth } = useGridDims<T>(options, width)\n const { colorMode } = useColorMode()\n const itemData = useMemo<GridItemProps<T>>(\n () => ({\n list,\n items,\n numCols,\n onSelect: item => onSelectItem(item._id),\n mobileLayout,\n colorMode,\n grid: options,\n }),\n [items, list, onSelectItem, mobileLayout, numCols, options, colorMode],\n )\n\n useEffect(() => {\n const varGrid = variableRef.current\n if (varGrid) {\n varGrid.resetAfterColumnIndex(0)\n varGrid.resetAfterRowIndex(0)\n }\n }, [query])\n\n // scroll to top when page or query changes\n useEffect(() => {\n const varGrid = variableRef.current\n const fixGrid = fixedRef.current\n if (varGrid) {\n varGrid.scrollTo({ scrollLeft: 0, scrollTop: 0 })\n }\n if (fixGrid) {\n fixGrid.scrollTo({ scrollLeft: 0, scrollTop: 0 })\n }\n }, [pageIndex, query])\n\n const isDynamicHeight = useMemo(\n () => getIsDynamicSize(options.rowHeight) || getIsDynamicSize(options.columnWidth),\n [options],\n )\n\n if (!items.length) return <NoItemsRow />\n\n return isDynamicHeight ? (\n <VariableSizeGrid<GridItemProps<T>>\n ref={variableRef}\n height={height}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as (idx: number) => number}\n columnWidth={colWidth as (idx: number) => number}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListCell}\n </VariableSizeGrid>\n ) : (\n <FixedSizeGrid<GridItemProps<T>>\n height={height}\n ref={fixedRef}\n width={width}\n rowCount={numRows}\n columnCount={numCols}\n rowHeight={rowHeight as number}\n columnWidth={colWidth as number}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListCell}\n </FixedSizeGrid>\n )\n}\n\nexport const PagedGridBody = memo(BasePagedGridBody) as typeof BasePagedGridBody\n","import { useColorMode } from '@chakra-ui/react'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { memo, useCallback, useEffect, useMemo, useRef } from 'react'\nimport { FixedSizeList, VariableSizeList } from 'react-window'\nimport { ListItemProps, ListRow } from '../ListItem/ListRow'\nimport { NoItemsRow } from '../NoItems'\nimport { getIsDynamicSize } from '../utils'\n\nconst BasePagedListBody = ({ height }: { height: number }) => {\n const { list, onSelectItem, mobileLayout, query } = useDataList()\n const {\n data: { data: items },\n pageIndex,\n } = usePaginatedList()\n const { width } = useFullSize()\n const { previewHeight, mobile } = list\n const varRef = useRef<VariableSizeList>(null)\n const fixedRef = useRef<FixedSizeList>(null)\n const { colorMode } = useColorMode()\n const itemData = useMemo<ListItemProps>(\n () => ({\n list,\n colorMode,\n items,\n onSelect: item => onSelectItem(item._id),\n mobileLayout,\n }),\n [items, list, onSelectItem, mobileLayout, colorMode],\n )\n\n const itemHeight = useMemo(\n () => (mobileLayout ? (mobile?.previewHeight ?? previewHeight) : previewHeight),\n [mobile, previewHeight, mobileLayout],\n )\n\n useEffect(() => {\n const varList = varRef.current\n if (varList) {\n varList.resetAfterIndex(0)\n }\n }, [query])\n\n // scroll to top when page or query changes\n useEffect(() => {\n const varList = varRef.current\n const fixList = fixedRef.current\n if (varList) {\n varList.scrollTo(0)\n }\n if (fixList) {\n fixList.scrollTo(0)\n }\n }, [query, pageIndex])\n\n const getItemSize = useCallback(\n (index: number) => (typeof itemHeight === 'function' ? itemHeight(items[index]) : itemHeight),\n [items, itemHeight],\n )\n\n const isDynamicHeight = useMemo(() => getIsDynamicSize(itemHeight), [itemHeight])\n\n if (!items.length) return <NoItemsRow />\n return isDynamicHeight ? (\n <FixedSizeList<ListItemProps>\n ref={fixedRef}\n height={height}\n width={width}\n itemSize={itemHeight as number}\n itemCount={items.length}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListRow}\n </FixedSizeList>\n ) : (\n <VariableSizeList<ListItemProps>\n ref={varRef}\n height={height}\n width={width}\n itemSize={getItemSize}\n itemCount={items.length}\n itemData={itemData}\n style={{\n overflowX: 'hidden',\n }}>\n {ListRow}\n </VariableSizeList>\n )\n}\n\nexport const PagedListBody = memo(BasePagedListBody) as typeof BasePagedListBody\n","import { useDataList } from '@chem-po/react'\nimport { InfiniteScrollGridBody } from './InfiniteScrollGridBody'\nimport { InfiniteScrollListBody } from './InfiniteScrollListBody'\nimport { PagedGridBody } from './PagedGridBody'\nimport { PagedListBody } from './PagedListBody'\n\nexport const ListBody = ({ height }: { height: number }) => {\n const { infiniteScroll, gridLayout, list } = useDataList()\n const { grid } = list\n\n if (gridLayout && grid) {\n return infiniteScroll ? (\n <InfiniteScrollGridBody options={grid} height={height} />\n ) : (\n <PagedGridBody options={grid} height={height} />\n )\n }\n return infiniteScroll ? (\n <InfiniteScrollListBody height={height} />\n ) : (\n <PagedListBody height={height} />\n )\n}\n","import { Box, Modal, ModalContent, ModalOverlay } from '@chakra-ui/react'\nimport { DefaultModalProps } from './type'\n\nexport const DesktopModal = ({ children, isOpen, contentProps, ...props }: DefaultModalProps) => (\n <Modal scrollBehavior=\"inside\" isCentered isOpen={isOpen} {...props}>\n <ModalOverlay />\n <ModalContent position=\"relative\" overflowY=\"auto\" bg=\"background.100\" {...contentProps}>\n <Box>{children}</Box>\n </ModalContent>\n </Modal>\n)\n","import { Flex, FlexProps, Portal } from '@chakra-ui/react'\nimport { useMobileFrame } from '@chem-po/react'\n\nexport const MobileOverlay = (props: FlexProps) => {\n const { overlayRef } = useMobileFrame()\n\n return (\n <Portal containerRef={overlayRef}>\n <Flex\n justify=\"center\"\n align=\"center\"\n transition=\"opacity 300ms\"\n position=\"absolute\"\n left={0}\n top={0}\n height=\"100%\"\n width=\"100%\"\n {...props}\n />\n </Portal>\n )\n}\n","import { Flex, useColorModeValue } from '@chakra-ui/react'\nimport { useMobileFrame } from '@chem-po/react'\nimport { useEffect, useRef, useState } from 'react'\nimport { MobileOverlay } from '../overlay/MobileOverlay'\nimport { DefaultModalProps } from './type'\n\nexport const MobileOverlayBackground = ({ onClick }: { onClick?: () => void }) => (\n <Flex\n onClick={onClick}\n w=\"100%\"\n h=\"100%\"\n position=\"absolute\"\n bg=\"blackAlpha.400\"\n transition=\"opacity 300ms\"\n />\n)\n\nexport const MobileModal = ({\n isOpen,\n onClose,\n children,\n contentProps,\n onContentMounted,\n closeOnOverlayClick,\n}: DefaultModalProps) => {\n const { height, width } = useMobileFrame()\n\n const bg = useColorModeValue('gray.100', '#454545')\n\n const [isMounted, setIsMounted] = useState(false)\n const [contentMounted, setContentMounted] = useState(false)\n\n const unmountTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n const contentMountTimeout = useRef<ReturnType<typeof setTimeout> | null>(null)\n useEffect(() => {\n if (unmountTimeout.current) {\n clearTimeout(unmountTimeout.current)\n unmountTimeout.current = null\n }\n\n if (contentMountTimeout.current) {\n clearTimeout(contentMountTimeout.current)\n contentMountTimeout.current = null\n }\n\n if (isOpen) {\n setIsMounted(true)\n contentMountTimeout.current = setTimeout(() => {\n setContentMounted(true)\n if (onContentMounted) onContentMounted(true)\n }, 50)\n } else {\n setContentMounted(false)\n if (onContentMounted) onContentMounted(false)\n unmountTimeout.current = setTimeout(() => {\n setIsMounted(false)\n }, 300)\n }\n return () => {\n if (unmountTimeout.current) {\n clearTimeout(unmountTimeout.current)\n unmountTimeout.current = null\n }\n if (contentMountTimeout.current) {\n clearTimeout(contentMountTimeout.current)\n contentMountTimeout.current = null\n }\n }\n }, [isOpen, onContentMounted])\n return isMounted ? (\n <MobileOverlay\n opacity={contentMounted ? 1 : 0}\n pointerEvents={contentMounted ? 'auto' : 'none'}>\n <MobileOverlayBackground onClick={closeOnOverlayClick !== false ? onClose : undefined} />\n <Flex\n width={`${width - 10}px`}\n maxH={`${height - 10}px`}\n overflowY=\"auto\"\n overflowX=\"hidden\"\n minH=\"100px\"\n bg={bg}\n borderRadius={6}\n position=\"relative\"\n {...contentProps}>\n {children}\n </Flex>\n </MobileOverlay>\n ) : null\n}\n","import { useScreen } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { DesktopModal } from './DesktopModal'\nimport { useForceMobile } from './ForceMobile'\nimport { MobileModal } from './MobileModal'\nimport { DefaultModalProps } from './type'\n\nexport const DefaultModal = (props: DefaultModalProps) => {\n const isMobile = useScreen(s => s.isMobile)\n\n const forceMobile = useForceMobile()\n const Component = useMemo(\n () => (isMobile || forceMobile ? MobileModal : DesktopModal),\n [isMobile, forceMobile],\n )\n\n return <Component {...props} />\n}\n","import { CloseIcon } from '@chakra-ui/icons'\nimport { Flex, IconButton, Text } from '@chakra-ui/react'\nimport { FieldMap, useBackendBase, useDataList, usePaginatedList } from '@chem-po/react'\nimport { useCallback } from 'react'\nimport { Form } from '../form'\nimport { DesktopModal } from '../modal'\n\nexport const ListCreate = ({ field }: { field: FieldMap }) => {\n const {\n list: { baseQuery, itemName },\n newItemOpen: isOpen,\n setNewItemOpen: setIsOpen,\n } = useDataList()\n const {\n adapter: { db },\n } = useBackendBase()\n const { refetch } = usePaginatedList()\n // const collectionRef = useMemo(() => collection(db, collectionPath), [collectionPath, db])\n // const newItemDoc = useMemo(() => (isOpen ? doc(collectionRef) : null), [collectionRef, isOpen])\n // const newItemStoragePath = useMemo(\n // () => (newItemDoc ? `${storagePath}/${newItemDoc.id}` : null),\n // [storagePath, newItemDoc],\n // )\n const handleSubmit = useCallback(\n async (data: object) => {\n // if (!newItemDoc) return { [FORM_ERROR]: 'No document reference' }\n // await setDoc(newItemDoc, data)\n await db.createItem(baseQuery.collection, data)\n setIsOpen(false)\n if (refetch) refetch()\n return undefined\n },\n [setIsOpen, refetch, db, baseQuery],\n )\n\n return (\n <DesktopModal isOpen={isOpen} onClose={() => setIsOpen(false)}>\n <Flex align=\"center\" pt={3} px={3} w=\"100%\">\n <Text pl={1} opacity={0.7} fontWeight={600}>\n NEW {itemName.toUpperCase()}\n </Text>\n <IconButton\n size=\"sm\"\n borderRadius=\"full\"\n ml=\"auto\"\n h={7}\n w={7}\n minW={0}\n onClick={() => setIsOpen(false)}\n aria-label=\"Close\"\n icon={<CloseIcon opacity={0.8} w={3} h={3} />}\n />\n </Flex>\n <Form field={field} onSubmit={handleSubmit} />\n </DesktopModal>\n )\n}\n","import { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Button,\n Collapse,\n Flex,\n IconButton,\n Popover,\n PopoverBody,\n PopoverContent,\n PopoverTrigger,\n Progress,\n Text,\n Tooltip,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { toPlural } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { useCallback, useMemo, useRef } from 'react'\nimport { useBorderColor } from '../../hooks'\nimport { ExpandOnMount } from '../box'\nimport { DataListFooterProps } from './types'\n\nconst NextButton = ({\n goNext,\n canGoNext,\n mobileLayout,\n}: {\n goNext?: () => void\n canGoNext: boolean\n mobileLayout?: boolean\n}) => (\n <Button\n opacity={canGoNext ? 1 : 0.6}\n pointerEvents={canGoNext ? 'auto' : 'none'}\n borderRadius=\"full\"\n onClick={goNext}\n aria-label=\"next\"\n variant=\"ghost\"\n size={mobileLayout ? 'xs' : 'sm'}\n pl={3}\n pr={1}\n gap={1}>\n <Text>Next</Text>\n <ChevronRightIcon w={5} h={5} />\n </Button>\n)\n\nconst PrevButton = ({\n goPrev,\n canGoPrev,\n mobileLayout,\n}: {\n goPrev?: () => void\n canGoPrev: boolean\n mobileLayout?: boolean\n}) => (\n <Button\n opacity={canGoPrev ? 1 : 0.5}\n pointerEvents={canGoPrev ? 'auto' : 'none'}\n onClick={goPrev}\n borderRadius=\"full\"\n aria-label=\"back\"\n variant=\"ghost\"\n pr={3}\n pl={1}\n gap={1}\n size={mobileLayout ? 'xs' : 'sm'}>\n <ChevronLeftIcon w={5} h={5} />\n <Text>Back</Text>\n </Button>\n)\n\nconst FooterLoadingAndError = ({\n progressBg,\n borderColor,\n}: {\n progressBg: string\n borderColor: string\n}) => {\n const {\n data: { isLoading, error },\n } = usePaginatedList()\n return (\n <Box position=\"absolute\" bottom=\"100%\" w=\"100%\" left={0}>\n <Collapse style={{ width: '100%' }} in={!!error} animateOpacity>\n <Box borderTopRadius={6} bg=\"red.600\" maxW=\"100%\" p={1}>\n <Tooltip placement=\"top\" hasArrow label={error?.message ?? ''} aria-label=\"error\">\n <Text\n textShadow=\"1px 1px 3px #00000077\"\n _dark={{ textShadow: 'none' }}\n px={1}\n fontWeight={600}\n isTruncated\n maxW=\"100%\"\n fontSize=\"sm\"\n color=\"white\">\n {error?.message}\n </Text>\n </Tooltip>\n </Box>\n </Collapse>\n <ExpandOnMount in={isLoading} animateOpacity>\n <Flex\n bg={progressBg}\n borderTop=\"1px solid\"\n borderBottom=\"1px solid\"\n borderColor={borderColor}\n w=\"100%\">\n <Progress borderRadius={0} w=\"100%\" height=\"8px\" isIndeterminate={isLoading} />\n </Flex>\n </ExpandOnMount>\n </Box>\n )\n}\n\ninterface PageIndicator {\n index: number\n isActive: boolean\n}\ninterface PageIndicatorGroup {\n indicators: PageIndicator[]\n collapsed: boolean\n}\n\n/* \npage nav groups: \n0 - first group - pages 1:3 if not in current group\n1 - second group (collapsed) - pages 4:i-1 if not in current group, where i is the selected page\n2 - current group - pages i:i+2\n3 - fourth group (collapsed) - pages i+3:n-3 if not in current group, where n is the last page\n4 - last group - pages n-2:n\n*/\nconst getGroupIndex = (index: number, selected: number, numPages: number) => {\n if (Math.abs(index - selected) <= 1) return 2\n if (index < 3) return selected === 0 ? 2 : 0\n if (index > numPages - 4) return selected > numPages - 3 ? 2 : 4\n return index < selected ? 1 : 3\n}\n\nconst NAV_BUTTON_SIZE = 28\nconst MOBILE_NAV_BUTTON_SIZE = 24\n\nconst PageNavButton = ({\n index,\n isActive,\n onClick,\n borderColor,\n isLoading,\n mobileLayout,\n}: {\n index: number\n isActive: boolean\n onClick: () => void\n borderColor: string\n isLoading: boolean\n mobileLayout: boolean\n}) => {\n return (\n <Button\n key={index}\n onClick={onClick}\n variant=\"unstyled\"\n display=\"flex\"\n border=\"1px solid\"\n borderColor={isActive ? 'transparent' : borderColor}\n justifyContent=\"center\"\n alignItems=\"center\"\n width={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n height={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n fontFamily=\"fonts.heading\"\n lineHeight={1}\n fontWeight={600}\n minW=\"0\"\n bg={isActive ? 'accent.400' : 'transparent'}\n _hover={{\n bg: isActive ? 'accent.500' : 'whiteAlpha.500',\n }}\n color={isActive ? 'white' : borderColor}\n textShadow={isActive ? '1px 1px 3px #00000088' : 'none'}\n size=\"sm\"\n disabled={isLoading}\n aria-label={`Go to page ${index + 1}`}>\n {index + 1}\n </Button>\n )\n}\n\nconst PageNavGroup = ({\n group: { indicators, collapsed },\n mobileLayout,\n}: {\n group: PageIndicatorGroup\n mobileLayout: boolean\n}) => {\n const {\n data: { isLoading },\n goToPage,\n } = usePaginatedList()\n const borderColor = useBorderColor()\n\n if (collapsed) {\n return (\n <Popover trigger=\"hover\" gutter={1} variant=\"fixed\">\n {({ onClose }) => (\n <>\n <PopoverTrigger>\n <IconButton\n variant=\"unstyled\"\n width={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n height={`${mobileLayout ? MOBILE_NAV_BUTTON_SIZE : NAV_BUTTON_SIZE}px`}\n minW=\"0\"\n opacity={0.7}\n _hover={{\n opacity: 1,\n }}\n aria-label=\"more pages\"\n icon={\n <Text fontSize=\"md\" position=\"relative\" bottom=\"2px\">\n ...\n </Text>\n }\n />\n </PopoverTrigger>\n <PopoverContent\n bg=\"background.200\"\n w=\"auto\"\n border=\"1px solid\"\n borderColor={borderColor}\n boxShadow=\"none\">\n <PopoverBody w=\"auto\" maxW=\"166px\" p={0.5}>\n <Flex align=\"center\" justify=\"center\" flexFlow=\"row wrap\">\n {indicators.map(({ index, isActive }) => (\n <Box key={`ind-${index}`} m={0.5}>\n <PageNavButton\n mobileLayout={mobileLayout}\n index={index}\n isActive={isActive}\n onClick={() => {\n goToPage(index)\n onClose()\n }}\n borderColor={borderColor}\n isLoading={isLoading}\n />\n </Box>\n ))}\n </Flex>\n </PopoverBody>\n </PopoverContent>\n </>\n )}\n </Popover>\n )\n }\n return (\n <>\n {indicators.map(({ index, isActive }) => (\n <PageNavButton\n mobileLayout={mobileLayout}\n key={index}\n index={index}\n isActive={isActive}\n onClick={() => goToPage(index)}\n borderColor={borderColor}\n isLoading={isLoading}\n />\n ))}\n </>\n )\n}\n\nconst PageNav = () => {\n const { pageIndex, numPages } = usePaginatedList()\n const { mobileLayout } = useDataList()\n const groups = useMemo<PageIndicatorGroup[]>(() => {\n const nPages = numPages ?? 0\n if (nPages <= 9)\n return [\n {\n indicators: Array.from({ length: nPages }, (_, i) => ({\n index: i,\n isActive: i === pageIndex,\n })),\n collapsed: false,\n },\n ]\n const g: PageIndicatorGroup[] = Array.from({ length: 5 }, (_, i) => ({\n indicators: [],\n collapsed: i % 2 === 1,\n }))\n\n for (let i = 0; i < nPages; i += 1) {\n const groupIndex = getGroupIndex(i, pageIndex, nPages)\n if (!g[groupIndex]) {\n g[groupIndex] = { indicators: [], collapsed: groupIndex !== 2 }\n }\n g[groupIndex].indicators.push({ index: i, isActive: i === pageIndex })\n }\n return g\n .filter(group => group.indicators.length)\n .map(g => ({ ...g, collapsed: g.collapsed && g.indicators.length > 1 }))\n }, [numPages, pageIndex])\n return (\n <Flex gap={1} align=\"center\">\n {groups.map((group, i) => (\n <PageNavGroup mobileLayout={mobileLayout} key={`group-${i}`} group={group} />\n ))}\n </Flex>\n )\n}\n\nconst FOOTER_TEXT_WIDTH = 120\nexport const ListFooter = ({ onResize, flexProps, noFooter }: DataListFooterProps) => {\n const borderColor = useColorModeValue('#cdcdcd', '#2d3748')\n\n const {\n list,\n mobileLayout,\n infiniteScroll,\n search: { search, debounced },\n } = useDataList()\n const {\n data: { data, isLoading },\n totalCount,\n pageIndex,\n limit,\n numFetched,\n goNext,\n goPrev,\n hasMoreData,\n } = usePaginatedList()\n const { itemName, pluralItemName, searchRequired } = list\n\n const { itemsText, pageText } = useMemo(() => {\n if (isLoading && !infiniteScroll)\n return { itemsText: mobileLayout ? 'Loading...' : '', pageText: '' }\n if (totalCount === null) return { itemsText: 'Loading...', pageText: '' }\n if (totalCount === 0 && !isLoading && search === debounced) {\n return {\n itemsText:\n !search && searchRequired\n ? `Search ${pluralItemName ?? toPlural(itemName)}`\n : `No ${pluralItemName ?? toPlural(itemName)} found`,\n pageText: '',\n }\n }\n const firstItemIndex = infiniteScroll ? 1 : (pageIndex || 0) * limit + 1\n // return `Displaying ${pluralItemName || toPlural(itemName)} ${firstItemIndex} - ${\n // infiniteScroll ? numFetched : pageIndex * limit + data.length\n // } of ${totalCount}`\n return {\n itemsText: `${firstItemIndex} - ${\n infiniteScroll ? numFetched : pageIndex * limit + data.length\n } of ${totalCount}`,\n pageText: `Page ${pageIndex + 1} of ${limit ? Math.ceil((totalCount ?? 0) / limit) : 0}`,\n }\n }, [\n totalCount,\n isLoading,\n itemName,\n pluralItemName,\n limit,\n pageIndex,\n search,\n searchRequired,\n mobileLayout,\n debounced,\n data,\n infiniteScroll,\n numFetched,\n ])\n const hasPrev = useMemo(() => !infiniteScroll && goPrev, [infiniteScroll, goPrev])\n const hasNext = useMemo(() => !infiniteScroll && goNext, [infiniteScroll, goNext])\n const progressBg = useColorModeValue('#efefef', '#212121')\n\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback(\n (e: ResizeObserverEntry) => {\n const height = e.borderBoxSize[0].blockSize\n const width = e.borderBoxSize[0].inlineSize\n onResize({ height, width })\n },\n [onResize],\n )\n useResizeObserver(ref, handleResize)\n\n return (\n <Flex\n ref={ref}\n py={noFooter ? 0 : 2}\n px={noFooter ? 0 : 3}\n borderTop={`1px solid ${borderColor}`}\n position=\"relative\"\n flexFlow={mobileLayout ? 'column' : 'row'}\n gap={mobileLayout ? 1 : 0}\n w=\"100%\"\n {...flexProps}>\n {noFooter || (mobileLayout && infiniteScroll) ? null : (\n <Flex\n align=\"center\"\n justify={mobileLayout ? 'center' : 'space-between'}\n position=\"relative\"\n w=\"100%\">\n {hasPrev && !mobileLayout ? (\n <PrevButton goPrev={goPrev} canGoPrev={!isLoading && !!pageIndex} />\n ) : null}\n <Flex gap={1} align=\"center\">\n {infiniteScroll ? null : (\n <>\n {!mobileLayout ? (\n <Text\n fontFamily=\"fonts.heading\"\n whiteSpace=\"nowrap\"\n textAlign=\"center\"\n w={`${FOOTER_TEXT_WIDTH}px`}\n fontSize=\"sm\">\n {pageText}\n </Text>\n ) : null}\n <PageNav />\n </>\n )}\n {!mobileLayout ? (\n <Text\n fontFamily=\"fonts.heading\"\n textAlign=\"center\"\n w={mobileLayout || infiniteScroll ? 'auto' : `${FOOTER_TEXT_WIDTH}px`}\n whiteSpace=\"nowrap\"\n fontSize=\"sm\">\n {itemsText}\n </Text>\n ) : null}\n </Flex>\n {hasNext && !mobileLayout ? (\n <NextButton goNext={goNext} canGoNext={!isLoading && hasMoreData} />\n ) : null}\n </Flex>\n )}\n {mobileLayout && !noFooter ? (\n <Flex gap={2} w=\"100%\" justify=\"space-between\" align=\"center\">\n {hasPrev ? <PrevButton mobileLayout goPrev={goPrev} canGoPrev={!!pageIndex} /> : null}\n <Text\n fontFamily=\"fonts.heading\"\n textAlign=\"center\"\n w={mobileLayout || infiniteScroll ? 'auto' : `${FOOTER_TEXT_WIDTH}px`}\n whiteSpace=\"nowrap\"\n fontSize=\"sm\">\n {itemsText}\n </Text>\n {hasNext ? <NextButton mobileLayout goNext={goNext} canGoNext={hasMoreData} /> : null}\n </Flex>\n ) : null}\n <FooterLoadingAndError progressBg={progressBg} borderColor={borderColor} />\n </Flex>\n )\n}\n","import { AddIcon, RepeatIcon, SearchIcon } from '@chakra-ui/icons'\nimport {\n Box,\n Flex,\n IconButton,\n Image,\n Input,\n InputGroup,\n InputLeftElement,\n Tooltip,\n useColorModeValue,\n} from '@chakra-ui/react'\nimport { getHasAccess, toPlural } from '@chem-po/core'\nimport { useAuth, useDataList } from '@chem-po/react'\nimport useResizeObserver from '@react-hook/resize-observer'\nimport { useCallback, useMemo, useRef } from 'react'\nimport { useBorderColor } from '../../hooks/ui/useBorderColor'\nimport { Toggle, ToggleOption } from '../button/Toggle'\nimport { PresetFilters } from './ListFilters'\nimport { ListSortView } from './ListSort'\nimport { DataListHeaderProps } from './types'\n\nconst ListSearch = () => {\n const {\n list,\n search: { search, update },\n } = useDataList()\n const { searchIcon, itemName, pluralItemName } = list\n const iconFilter = useColorModeValue('invert(0)', 'invert(1)')\n\n return (\n <Flex p={1} flex={1} minW=\"0\">\n <InputGroup>\n <InputLeftElement pointerEvents=\"none\">\n {searchIcon ? (\n <Image filter={iconFilter} src={searchIcon} w=\"24px\" />\n ) : (\n <SearchIcon w=\"24px\" opacity={0.5} />\n )}\n </InputLeftElement>\n <Input\n bg=\"whiteAlpha.700\"\n pl={9}\n borderRadius={6}\n _focus={{ boxShadow: 'none', outline: 'none' }}\n border=\"none\"\n _dark={{\n bg: 'blackAlpha.400',\n color: '#cdcdcd',\n _placeholder: {\n color: '#ababab',\n },\n border: 'none',\n }}\n value={search}\n placeholder={`Search for ${pluralItemName ?? toPlural(itemName)}`}\n onChange={e => update(e.target.value)}\n />\n </InputGroup>\n </Flex>\n )\n}\n\nconst HeaderButtons = ({ refetch }: { refetch?: () => void }) => {\n const { list, setNewItemOpen } = useDataList()\n const auth = useAuth()\n const { itemName, field, access } = list\n\n const canCreate = useMemo(() => getHasAccess(auth, access?.create, null), [access, auth])\n return (\n <Flex gap={2} ml=\"auto\" align=\"center\">\n {refetch ? (\n <Tooltip placement=\"left\" hasArrow label=\"Refresh\" aria-label=\"Refresh\">\n <IconButton size=\"xs\" icon={<RepeatIcon />} aria-label=\"Refresh\" onClick={refetch} />\n </Tooltip>\n ) : null}\n {field && canCreate ? (\n <Tooltip\n placement=\"left\"\n hasArrow\n label={`Create new ${itemName}`}\n aria-label={`Create new ${itemName}`}>\n <IconButton\n size=\"xs\"\n icon={<AddIcon />}\n aria-label={`Create new ${itemName}`}\n onClick={() => setNewItemOpen(true)}\n />\n </Tooltip>\n ) : null}\n </Flex>\n )\n}\n\nconst gridToggleOptions: ToggleOption<'grid' | 'list'>[] = [\n {\n id: 'grid',\n label: 'Grid View',\n Render: selected => <Image w={5} opacity={selected ? 1 : 0.7} src=\"/icons/grid_view.svg\" />,\n },\n {\n id: 'list',\n label: 'List View',\n Render: selected => <Image w={6} opacity={selected ? 1 : 0.7} src=\"/icons/list.svg\" />,\n },\n]\n\nconst GridViewToggle = () => {\n const { toggleGridLayout, gridLayout } = useDataList()\n if (!toggleGridLayout) return null\n return (\n <Toggle\n onChange={toggleGridLayout}\n options={gridToggleOptions}\n value={gridLayout ? 'grid' : 'list'}\n />\n )\n}\n\nexport const DataListHeader = ({ onResize, refetch, boxProps }: DataListHeaderProps) => {\n const { list, mobileLayout, toggleGridLayout } = useDataList()\n const { searchPath, sortPresets, filterPresets, Header } = list\n\n const borderColor = useBorderColor()\n const ref = useRef<HTMLDivElement>(null)\n const handleResize = useCallback(\n (entry: ResizeObserverEntry) => {\n onResize({ height: entry.contentRect.height, width: entry.contentRect.width })\n },\n [onResize],\n )\n const hasSearch = useMemo(() => !!Object.keys(searchPath ?? {}).length, [searchPath])\n\n useResizeObserver(ref, handleResize)\n\n return (\n <Box\n ref={ref}\n bg=\"background.200\"\n borderBottom={`1px solid ${borderColor}`}\n w=\"100%\"\n {...boxProps}>\n <Flex px={2} align=\"center\" w=\"100%\">\n {sortPresets?.length || filterPresets?.length || hasSearch ? (\n <Flex w=\"100%\" flexFlow={mobileLayout ? 'column' : 'row'}>\n {mobileLayout && !Header ? null : (\n <Flex flex={1} px={2} py={mobileLayout ? 0 : 1} gap={1} align=\"center\">\n {mobileLayout ? null : (\n <Flex flex={1} minW=\"0\" align=\"center\" gap={2}>\n {toggleGridLayout ? <GridViewToggle /> : null}\n <PresetFilters />\n <ListSortView />\n {hasSearch ? <ListSearch /> : null}\n </Flex>\n )}\n <Flex align=\"center\" minW=\"0\" gap={3} ml=\"auto\">\n {Header ? (\n <Box minW=\"0\" flex={1}>\n <Header />\n </Box>\n ) : null}\n {mobileLayout ? null : <HeaderButtons refetch={refetch} />}\n </Flex>\n </Flex>\n )}\n {hasSearch && mobileLayout ? <ListSearch /> : null}\n {mobileLayout && (sortPresets?.length || filterPresets?.length) ? (\n <Flex pl={1} py={1} gap={1.5} align=\"center\" w=\"100%\">\n {toggleGridLayout ? <GridViewToggle /> : null}\n <PresetFilters />\n <ListSortView />\n <HeaderButtons refetch={refetch} />\n </Flex>\n ) : null}\n </Flex>\n ) : null}\n </Flex>\n </Box>\n )\n}\n","import {\n Box,\n Button,\n Flex,\n HStack,\n IconButton,\n Image,\n Popover,\n PopoverArrow,\n PopoverBody,\n PopoverCloseButton,\n PopoverContent,\n PopoverTrigger,\n Portal,\n Text,\n useColorMode,\n useColorModeValue,\n} from '@chakra-ui/react'\n\nimport { AnyObject, isFilterGroup, QueryFilter } from '@chem-po/core'\nimport { FilterPreset, FilterPresetGroup, useDataList, useScreen } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { useBorderColor } from '../../hooks'\nimport { filterMatchesPreset } from './utils'\n\nconst FilterButton = <T extends AnyObject>({\n filter,\n filters,\n GroupRender,\n toggleFilter,\n}: {\n filter: FilterPreset<T>\n filters: QueryFilter<T>[]\n GroupRender?: FilterPresetGroup<T>['RenderFilter']\n toggleFilter: (toggled: FilterPreset<T>) => void\n}) => {\n const { label, Render } = filter\n const isActive = useMemo(\n () => filters.some(f => filterMatchesPreset(f, filter)),\n [filters, filter],\n )\n const { colorMode } = useColorMode()\n const borderColor = useBorderColor()\n const textColor = useColorModeValue('gray.700', 'gray.100')\n const CustomRender = Render ?? GroupRender\n return (\n <Box p={0.5}>\n <Button\n onClick={() => toggleFilter(filter)}\n variant=\"unstyled\"\n color={isActive && !CustomRender ? 'white' : textColor}\n bg={isActive && !CustomRender ? 'accent.400' : 'transparent'}\n px={CustomRender ? 0 : 2}\n py={CustomRender ? 0 : 1}\n transition=\"all 300ms\"\n border=\"none\"\n boxShadow={`0px 0px 1px 1px ${isActive ? 'transparent' : '#00000033'}`}\n w=\"auto\"\n _dark={{\n boxShadow: `0px 0px 1px 1px ${isActive ? 'transparent' : '#ffffff66'}`,\n }}\n h=\"auto\"\n minW=\"0\"\n minH=\"0\"\n alignItems=\"center\"\n justifyContent=\"center\"\n borderColor={isActive ? 'transparent' : borderColor}\n size=\"none\">\n {CustomRender ? (\n <CustomRender active={isActive} colorMode={colorMode} preset={filter} />\n ) : (\n <Text textShadow={isActive ? '0 0 3px rgba(0,0,0,0.8)' : 'none'} fontSize=\"xs\">\n {label}\n </Text>\n )}\n </Button>\n </Box>\n )\n}\n\nconst FilterGroup = <T extends AnyObject>({\n group,\n filters,\n toggleFilter,\n}: {\n group: FilterPresetGroup<T>\n filters: QueryFilter<T>[]\n toggleFilter: (toggled: FilterPreset<T>) => void\n}) => {\n const { label, filters: groupFilters } = group\n return (\n <Flex px={1} flexFlow=\"column\" w=\"100%\">\n <Text px={1} opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n {label}\n </Text>\n <Flex w=\"100%\" flexFlow=\"row wrap\">\n {groupFilters.map(filter => (\n <FilterButton\n toggleFilter={toggleFilter}\n GroupRender={group.RenderFilter}\n filters={filters}\n key={filter.label}\n filter={filter}\n />\n ))}\n </Flex>\n </Flex>\n )\n}\n\nexport const PresetFilters = () => {\n const { query, list, toggleFilter } = useDataList()\n const isMobile = useScreen(s => s.isMobile)\n const { filters: currentFilters = [] } = query || {}\n const { filterPresets } = list\n const borderColor = useBorderColor()\n return filterPresets?.length ? (\n <HStack spacing={1}>\n <Popover\n // closeOnBlur={false}\n placement=\"right-start\"\n trigger={isMobile ? 'click' : 'hover'}\n // trigger=\n strategy=\"fixed\">\n <PopoverTrigger>\n <IconButton\n size=\"sm\"\n variant=\"ghost\"\n aria-label=\"Filters\"\n icon={\n <Image\n width=\"24px\"\n filter={`grayscale(${currentFilters.length ? 0 : 100}%)`}\n src=\"/icons/tune.svg\"\n />\n }\n />\n </PopoverTrigger>\n <Portal>\n <PopoverContent borderRadius={6} w=\"auto\">\n <PopoverBody w=\"240px\" p={0}>\n <Flex flexFlow=\"column\" w=\"100%\">\n <HStack\n py={1.5}\n px={2}\n w=\"100%\"\n spacing={1}\n borderBottom={`1px solid ${borderColor}`}>\n <Image width=\"18px\" filter=\"grayscale(100%)\" src=\"/icons/tune.svg\" />\n <Text opacity={0.8} fontSize=\"sm\" fontWeight={600}>\n FILTERS\n </Text>\n </HStack>\n <Flex justify=\"center\" w=\"100%\" flexFlow=\"row wrap\" py={1} px={2}>\n {filterPresets.map(filter =>\n isFilterGroup(filter) ? (\n <FilterGroup\n toggleFilter={toggleFilter}\n filters={currentFilters}\n key={filter.label}\n group={filter}\n />\n ) : (\n <FilterButton\n toggleFilter={toggleFilter}\n filters={currentFilters}\n key={filter.label}\n filter={filter}\n />\n ),\n )}\n </Flex>\n </Flex>\n </PopoverBody>\n <PopoverArrow />\n <PopoverCloseButton />\n </PopoverContent>\n </Portal>\n </Popover>\n </HStack>\n ) : null\n}\n","import { ArrowDownIcon, ArrowUpIcon } from '@chakra-ui/icons'\nimport { Button, HStack, Text, useColorMode } from '@chakra-ui/react'\nimport { SortDirection } from '@chem-po/core'\nimport { SortPreset, useDataList } from '@chem-po/react'\nimport { useMemo } from 'react'\nimport { CollapseHorizontal } from '../box/CollapseHorizontal'\n\nconst SortButton = ({ preset }: { preset: SortPreset }) => {\n const { setSort: setSortFromPreset, query } = useDataList()\n const { sort } = query\n const { label, key, Render } = preset\n const active = useMemo<SortDirection | null>(\n () => (sort?.key === key ? sort.direction : null),\n [sort, key],\n )\n const { colorMode } = useColorMode()\n\n const color = useMemo(() => {\n if (active) return 'white'\n return colorMode === 'light' ? 'gray.500' : 'gray.400'\n }, [active, colorMode])\n const icon = useMemo(\n () => (sort?.direction === 'asc' ? <ArrowUpIcon w={4} h={4} /> : <ArrowDownIcon w={4} h={4} />),\n [sort],\n )\n\n return (\n <Button\n size=\"xs\"\n variant=\"outline\"\n bg={active ? 'accent.400' : 'transparent'}\n transition=\"all 300ms\"\n textShadow={active ? '0 0 2px rgba(0,0,0,0.7)' : 'none'}\n boxShadow={`0px 0px 1px 1px ${active ? 'transparent' : '#00000033'}`}\n border=\"none\"\n // borderColor={active ? 'transparent' : 'blackAlpha.200'}\n _dark={{\n // borderColor: active ? 'transparent' : 'whiteAlpha.300',\n boxShadow: `0px 0px 1px 1px ${active ? 'transparent' : '#ffffff66'}`,\n color,\n textShadow: active ? '0 0 2px rgba(0,0,0,0.7)' : 'none',\n }}\n aria-label={label}\n opacity={active ? 1 : 0.8}\n height={6}\n pl={active ? 3 : 2}\n pr={2}\n _hover={{ opacity: 1 }}\n gap={0}\n color={color}\n onClick={() =>\n setSortFromPreset({\n direction: active && sort?.direction === 'asc' ? 'desc' : 'asc',\n key,\n })\n }>\n {Render ? (\n <Render active={active} colorMode={colorMode} preset={preset} />\n ) : (\n <Text fontWeight={600} fontSize=\"sm\" color={color}>\n {label}\n </Text>\n )}\n <CollapseHorizontal active={!!active} h=\"16px\" width={20}>\n {icon}\n </CollapseHorizontal>\n </Button>\n )\n}\n\nexport const ListSortView = () => {\n const {\n list: { sortPresets },\n } = useDataList()\n\n if (!sortPresets) return null\n return (\n <HStack spacing={2}>\n {sortPresets.map(preset => (\n <SortButton key={preset.label} preset={preset} />\n ))}\n </HStack>\n )\n}\n","import { Text, useColorMode, useColorModeValue } from '@chakra-ui/react'\nimport { AnyObject, DBItem } from '@chem-po/core'\nimport { useDataList, usePaginatedList } from '@chem-po/react'\nimport { useEffect, useMemo, useState } from 'react'\nimport { DefaultModal } from '../modal'\n\nexport const ListItemView = () => {\n const { selectedItemId, deselectItem, list } = useDataList()\n const { ItemView, itemName } = list || {}\n const [contentOffset, setContentOffset] = useState({ x: 0, y: 0 })\n const {\n data: { data },\n // refetchItem,\n } = usePaginatedList()\n const item = useMemo(\n () => data.find(d => d._id === selectedItemId) ?? null,\n [data, selectedItemId],\n )\n const { colorMode } = useColorMode()\n const errorColor = useColorModeValue('red.600', 'red.300')\n const [prevItem, setPrevItem] = useState<DBItem<AnyObject> | null>(null)\n useEffect(() => {\n if (item) {\n setPrevItem(item)\n }\n }, [item])\n\n return (\n <DefaultModal\n contentProps={{\n p: 0,\n transition: 'all 300ms',\n transform: `translate(${contentOffset.x}px, ${contentOffset.y}px)`,\n }}\n scrollBehavior=\"inside\"\n onClose={deselectItem}\n isOpen={!!ItemView && !!selectedItemId}>\n {ItemView && prevItem ? (\n <ItemView\n item={prevItem}\n colorMode={colorMode}\n clearContentOffset={() => setContentOffset({ x: 0, y: 0 })}\n updateContentOffset={(x, y) => setContentOffset({ x, y })}\n // onEdited={onEdited}\n />\n ) : (\n <Text color={errorColor} p={4}>\n Error displaying {itemName}\n </Text>\n )}\n </DefaultModal>\n )\n}\n","import { Box } from '@chakra-ui/react'\nimport { AnyObject } from '@chem-po/core'\nimport { useDataList, useFullSize, usePaginatedList } from '@chem-po/react'\nimport { useCallback, useMemo, useState } from 'react'\nimport { LoadingOverlay } from '../loading'\nimport { ListBody } from './Body/ListBody'\nimport { ListCreate } from './ListCreate'\nimport { ListFooter } from './ListFooter'\nimport { DataListHeader } from './ListHeader'\nimport { ListItemView } from './ListItemView'\nimport { ListContentProps } from './types'\n\nexport const ListContent = <T extends AnyObject>({\n modals,\n noFooter,\n headerProps,\n footerProps,\n}: ListContentProps<T>) => {\n const {\n data: { isLoading, data },\n } = usePaginatedList()\n const { list } = useDataList<T>()\n const { height } = useFullSize()\n\n const [headerHeight, setHeaderHeight] = useState(0)\n const [footerHeight, setFooterHeight] = useState(0)\n const bodyHeight = useMemo(\n () => height - headerHeight - footerHeight,\n [height, headerHeight, footerHeight],\n )\n const handleHeaderResize = useCallback((updated: { height: number; width: number }) => {\n setHeaderHeight(updated.height)\n }, [])\n\n const handleFooterResize = useCallback((size: { width: number; height: number }) => {\n setFooterHeight(size.height)\n }, [])\n\n const { ItemView: ItemViewComponent, field: createField } = list\n\n return (\n <>\n <DataListHeader boxProps={headerProps} onResize={handleHeaderResize} />\n <Box h={`${bodyHeight}px`} position=\"relative\" w=\"100%\">\n <ListBody height={bodyHeight} />\n {noFooter ? <LoadingOverlay isLoading={!data.length && isLoading} /> : null}\n </Box>\n <ListFooter noFooter={noFooter} flexProps={footerProps} onResize={handleFooterResize} />\n {modals ?? null}\n {ItemViewComponent ? <ListItemView /> : null}\n {createField ? <ListCreate field={createField} /> : null}\n </>\n )\n}\n","import { AnyObject } from '@chem-po/core'\nimport {\n PaginatedListProvider,\n useBackendBase,\n useDataListData,\n usePaginatedQuery,\n} from '@chem-po/react'\nimport { ListContainer } from './ListContainer'\nimport { ListContent } from './ListContent'\nimport { ListViewProps } from './types'\n\nexport const DataList = <T extends AnyObject>({\n list,\n basePath,\n flexProps,\n infiniteScroll,\n ...rest\n}: ListViewProps<T>) => {\n const {\n adapter: { db },\n } = useBackendBase()\n const { baseQuery } = list\n const state = useDataListData(list, infiniteScroll, basePath)\n const data = usePaginatedQuery<T>(db, baseQuery, !!infiniteScroll)\n return (\n <PaginatedListProvider<T> state={state} data={data}>\n <ListContainer {...flexProps}>\n <ListContent {...rest} />\n </ListContainer>\n </PaginatedListProvider>\n )\n}\n","import { useEffect, useRef } from 'react'\n\nexport const NumberTicker = ({ value, duration = 30 }: { value: number; duration?: number }) => {\n const spanRef = useRef<HTMLSpanElement>(null)\n const helperValue = useRef(value)\n const intervalRef = useRef<ReturnType<typeof setInterval> | null>(null)\n useEffect(() => {\n intervalRef.current = setInterval(() => {\n if (spanRef.current) {\n if (helperValue.current === value && intervalRef.current)\n return clearInterval(intervalRef.current)\n if (helperValue.current < value) {\n helperValue.current += 1\n spanRef.current.innerText = helperValue.current.toString()\n } else if (helperValue.current > value) {\n helperValue.current -= 1\n spanRef.current.innerText = helperValue.current.toString()\n }\n }\n return () => {}\n }, duration)\n return () => {\n if (intervalRef.current) clearInterval(intervalRef.current)\n }\n }, [value, duration])\n\n return <span ref={spanRef}>{value}</span>\n}\n","import { MoonIcon, SunIcon } from '@chakra-ui/icons'\nimport { Flex, FlexProps, IconButton, useColorMode, useColorModeValue } from '@chakra-ui/react'\n\nexport const DarkModeToggle = () => {\n const { colorMode, toggleColorMode } = useColorMode()\n const bg = useColorModeValue('gray.200', 'whiteAlpha.200')\n const color = useColorModeValue('blackAlpha.700', 'whiteAlpha.800')\n const hoverBg = useColorModeValue('gray.300', 'whiteAlpha.300')\n const hoverColor = useColorModeValue('gray.800', 'whiteAlpha.800')\n return (\n <IconButton\n aria-label=\"Toggle dark mode\"\n bg={bg}\n color={color}\n borderRadius=\"full\"\n _hover={{\n bg: hoverBg,\n color: hoverColor,\n }}\n w={8}\n h={8}\n minW={0}\n icon={\n colorMode === 'light' ? (\n <SunIcon w={4} h={4} />\n ) : (\n <MoonIcon w={4} h={4} filter=\"drop-shadow(1px 1px 2px #000000aa)\" />\n )\n }\n onClick={toggleColorMode}\n variant=\"ghost\"\n />\n )\n}\n\nexport const AbsoluteDarkModeToggle = (props: FlexProps) => (\n <Flex position=\"absolute\" bottom={3} right={3} {...props}>\n <DarkModeToggle />\n </Flex>\n)\n","import { switchAnatomy } from '@chakra-ui/anatomy'\nimport { createMultiStyleConfigHelpers, extendTheme } from '@chakra-ui/react'\nimport { cssVar } from '@chakra-ui/theme-tools'\nimport { palette } from '@chem-po/core'\n\nconst { definePartsStyle, defineMultiStyleConfig } = createMultiStyleConfigHelpers(\n switchAnatomy.keys,\n)\n\nconst switchBaseTheme = definePartsStyle({\n // define the part you're going to style\n track: {\n _focusVisible: {\n boxShadow: 'none',\n },\n },\n})\n\nexport const switchTheme = defineMultiStyleConfig({ baseStyle: switchBaseTheme })\nconst $arrowBg = cssVar('popper-arrow-bg')\n\nexport const headingFont = 'Encode Sans'\nexport const bodyFont = 'Noto Sans'\n\nexport const baseTheme = extendTheme({\n semanticTokens: {\n colors: {\n background: {\n // 100: mode('gray.50', palette.gray.dark)(props),\n // 200: mode('gray.100', palette.gray.medium)(props),\n // 300: mode('gray.200', palette.gray.light)(props),\n // 400: mode('gray.300', palette.gray.lighter)(props),\n 50: {\n default: 'white',\n _dark: palette.gray.darker,\n },\n 100: {\n default: 'gray.100',\n _dark: palette.gray.dark,\n },\n 200: {\n default: '#efefef',\n _dark: palette.gray.medium,\n },\n },\n accent: {\n 50: {\n default: 'blue.50',\n _dark: 'blue.900',\n },\n 100: {\n default: 'blue.100',\n _dark: 'blue.800',\n },\n 200: {\n default: 'blue.200',\n _dark: 'blue.700',\n },\n 300: {\n default: 'blue.300',\n _dark: 'blue.600',\n },\n 400: {\n default: 'blue.400',\n _dark: 'blue.500',\n },\n 500: {\n default: 'blue.500',\n _dark: 'blue.400',\n },\n 600: {\n default: 'blue.600',\n _dark: 'blue.300',\n },\n 700: {\n default: 'blue.700',\n _dark: 'blue.200',\n },\n 800: {\n default: 'blue.800',\n _dark: 'blue.100',\n },\n 900: {\n default: 'blue.900',\n _dark: 'blue.50',\n },\n },\n error: {\n default: 'red.500',\n _dark: 'red.300',\n },\n },\n fonts: {\n body: bodyFont,\n heading: headingFont,\n },\n },\n components: {\n Badge: {\n baseStyle: {\n bg: '#9a9a9a',\n textShadow: 'none',\n color: 'white',\n boxShadow: '1px 1px 3px #00000077',\n _dark: {\n bg: '#555555',\n textShadow: '1px 1px 2px #00000077',\n color: '#efefef',\n },\n },\n },\n Tooltip: {\n baseStyle: {\n bg: '#ababab',\n textShadow: '0 0 3px rgba(0,0,0,0.5)',\n color: 'white',\n [$arrowBg.variable]: '#ababab',\n _dark: {\n bg: '#777777',\n textShadow: 'none',\n color: '#efefef',\n [$arrowBg.variable]: '#777777',\n },\n },\n },\n Button: {\n baseStyle: {\n fontFamily: headingFont,\n fontWeight: 500,\n _focus: { boxShadow: 'none' },\n },\n variants: {\n link: {\n color: '#444',\n _dark: { color: 'rgba(230,230,255,0.9)' },\n },\n ghost: {\n _hover: { bg: 'blackAlpha.500' },\n },\n solid: {\n textShadow: '1px 1px 3px #00000077',\n bg: 'blackAlpha.400',\n color: 'whiteAlpha.800',\n _hover: {\n bg: 'blackAlpha.500',\n },\n _dark: {\n bg: 'whiteAlpha.300',\n color: 'whiteAlpha.800',\n _hover: {\n bg: 'whiteAlpha.400',\n },\n },\n },\n outline: {\n border: '1px solid',\n borderColor: '#ababab',\n color: '#656565',\n _hover: {\n bg: 'blackAlpha.100',\n },\n _dark: {\n border: '1px solid #999',\n color: '#999',\n _hover: {\n bg: 'whiteAlpha.300',\n },\n },\n },\n },\n },\n Tabs: {\n baseStyle: {\n tab: { _focus: { boxShadow: 'none' } },\n },\n },\n Text: {\n baseStyle: {\n fontFamily: bodyFont,\n },\n },\n Popover: {\n baseStyle: {\n root: { _focus: { boxShadow: 'none' } },\n content: {\n bg: 'background.100',\n border: 'none',\n boxShadow: '0 0 4px rgba(0,0,0,0.5)',\n [$arrowBg.variable]: 'background.100',\n _dark: {\n bg: 'background.100',\n [$arrowBg.variable]: 'background.100',\n },\n },\n },\n },\n Checkbox: {\n baseStyle: {\n control: {\n _focus: { boxShadow: 'none' },\n border: '2px solid #ababab',\n borderColor: '#ababab',\n _checked: {\n bg: '#666666',\n color: '#efefef',\n border: 'none',\n },\n _hover: { bg: '#555', border: 'none' },\n _dark: {\n _checked: {\n bg: '#efefef',\n color: '#444444',\n border: 'none',\n },\n _hover: { bg: '#555', border: 'none' },\n },\n },\n label: {\n color: '#888',\n _dark: { color: '#999999' },\n _checked: {\n color: '#444444',\n _dark: { color: '#cdcdcd' },\n },\n },\n },\n variants: {\n noBox: {\n control: {\n bg: 'transparent',\n _hover: { bg: 'none' },\n },\n },\n },\n },\n Modal: {\n baseStyle: {\n dialog: {\n bg: 'background.100',\n boxShadow: '0 0 6px rgba(0,0,0,0.5)',\n _dark: {\n bg: 'background.100',\n },\n },\n },\n },\n Input: {\n baseStyle: {\n field: {\n _focus: {\n boxShadow: 'none',\n outline: 'none',\n border: '1px solid #bcbcbc',\n },\n },\n },\n variants: {\n text: {\n field: {\n borderRadius: 6,\n border: '1px solid #dedede',\n _focus: { boxShadow: 'none', borderColor: '#bcbcbc' },\n _active: { boxShadow: 'none' },\n _placeholder: { color: '#777' },\n _dark: {\n border: '1px solid #777',\n _focus: { borderColor: '#999', boxShadow: 'none' },\n _placeholder: { color: '#777' },\n },\n },\n },\n },\n defaultProps: {\n variant: 'text',\n },\n },\n Switch: switchTheme,\n Menu: {\n baseStyle: {\n list: {\n bg: 'background.100',\n border: 'none',\n boxShadow: '0 0 6px rgba(0,0,0,0.5)',\n _dark: {\n bg: 'background.100',\n },\n },\n item: {\n _hover: {\n bg: 'rgba(0,0,0,0.3)',\n },\n _focus: {\n bg: 'rgba(0,0,0,0.2)',\n },\n },\n },\n },\n Progress: {\n baseStyle: {\n track: {\n bg: 'blackAlpha.300',\n borderRadius: 'full',\n _dark: {\n bg: 'whiteAlpha.300',\n },\n },\n filledTrack: {\n bg: 'blackAlpha.400',\n _dark: {\n bg: 'whiteAlpha.500',\n },\n },\n },\n },\n },\n})\n","import { useScreen } from '@chem-po/react'\n\nexport const initializeScreen = () => {\n if (typeof window !== 'undefined') {\n const onResize = () => {\n const width = window.innerWidth\n const height = window.innerHeight\n useScreen.setState({\n width,\n height,\n isMobile: width < 769,\n isPortrait: width < height,\n })\n window.addEventListener('resize', onResize)\n }\n onResize()\n return () => {\n window.removeEventListener('resize', onResize)\n }\n }\n return () => {}\n}\n"]}