import type { Accessor, Component, Setter } from 'solid-js' import { EntityID_LENGTH, getHashID } from '@wovin/core' import { Logger } from 'besonders-logger' import classNames from 'classnames' import { createSignal } from 'solid-js' import { insertApplogs } from '../../data/ApplogDB' import { useSearchContext } from '../../data/search' import { useAtTags, useCurrentThread, useHashTags, usePlusTags } from '../../ui/reactive' import { FlexBetween } from '../mini-components' import { TagsList } from '../TagsList' const { WARN, LOG, DEBUG, VERBOSE, ERROR } = Logger.setup(Logger.INFO) // eslint-disable-line unused-imports/no-unused-vars export const Sidebar: Component<{ searchOpen: Accessor }> = function Sidebar(props) { // const parentContext = useBlockContext() const [search, setSearch] = useSearchContext() const [chosenTagString, setTagString] = createSignal('') const [settingsOpen, setTagSettingsOpen] = createSignal(false) const onClickTagSettings = (tagType: string, tag: string) => { // TODO avoid this code duplication (if possible: without terribly awkward signal prop passing) const tagWithPrefix = `${tagType}${tag}` LOG('onClickTagSettings', tagWithPrefix) setTagString(tagWithPrefix) setTagSettingsOpen(true) } function onClickTag(type: string, tag: string) { setSearch(type + tag) } return (
) } export const TagSettingsDialog: Component<{ open: Accessor, setOpen: Setter, tagString: Accessor }> = function TagSettingsDialog(props) { const [chosenColor, setChosenColor] = createSignal('') const [chosenBgColor, setChosenBgColor] = createSignal('') const { open, tagString, setOpen } = props const thread = useCurrentThread() const onHide = async (hideargs) => { const textHex = chosenColor() const bgHex = chosenBgColor() const logsToAdd = [] if (textHex) logsToAdd.push({ en: getHashID(tagString(), EntityID_LENGTH), at: 'style/text-color', vl: textHex }) if (bgHex) logsToAdd.push({ en: getHashID(tagString(), EntityID_LENGTH), at: 'style/bg-color', vl: bgHex }) // TODO schemify this into TagVM with style prop that extends GenericStyle DEBUG({ hideargs, hexa: textHex, logsToAdd }) insertApplogs(thread, logsToAdd) setOpen(false) } const setColorTemp = async (colorChangeEvent) => { const hexa = colorChangeEvent.target.getFormattedValue('hexa') DEBUG({ colorChangeEvent, hexa }) setChosenColor(hexa) } const setBgColorTemp = async (colorChangeEvent) => { const hexa = colorChangeEvent.target.getFormattedValue('hexa') DEBUG({ colorChangeEvent, hexa }) setChosenBgColor(hexa) } DEBUG('render TagSettingsDialog') return (

Select colors for {' '} {`${tagString()}`} :

Text: Background:
) }