UNPKG

@empoleon/spotlight

Version:

Command center components for react and Empoleon

1 lines 5.54 kB
{"version":3,"file":"SpotlightSearch.cjs","sources":["../src/SpotlightSearch.tsx"],"sourcesContent":["import {\n BoxProps,\n CompoundStylesApiProps,\n ElementProps,\n factory,\n Factory,\n Input,\n InputProps,\n InputStylesNames,\n useProps,\n} from '@empoleon/core';\nimport { useSpotlightContext } from './Spotlight.context';\nimport { spotlightActions } from './spotlight.store';\nimport classes from './Spotlight.module.css';\nimport { createSignal, splitProps } from 'solid-js';\n\nexport type SpotlightSearchStylesNames = InputStylesNames;\n\nexport interface SpotlightSearchProps\n extends BoxProps,\n Omit<InputProps, 'classNames' | 'styles' | 'vars' | 'variant'>,\n CompoundStylesApiProps<SpotlightSearchFactory>,\n ElementProps<'input', 'size'> {}\n\nexport type SpotlightSearchFactory = Factory<{\n props: SpotlightSearchProps;\n ref: HTMLInputElement;\n stylesNames: SpotlightSearchStylesNames;\n compound: true;\n}>;\n\nconst defaultProps: Partial<SpotlightSearchProps> = {\n size: 'lg',\n};\n\nexport const SpotlightSearch = factory<SpotlightSearchFactory>(_props => {\n const props = useProps('SpotlightSearch', defaultProps, _props);\n const [local, others] = splitProps(props, [\n 'classNames',\n 'styles',\n 'onKeyDown',\n 'onChange',\n 'vars',\n 'value',\n 'ref'\n ]);\n const ctx = useSpotlightContext();\n const inputStyles = ctx.getStyles('search');\n const [isComposing, setIsComposing] = createSignal(false); // IME\n\n const handleKeyDown = (event: KeyboardEvent & { currentTarget: HTMLInputElement; target: Element; }) => {\n typeof local.onKeyDown === \"function\" && local.onKeyDown?.(event);\n if (isComposing()) {\n return;\n }\n\n if (event.code === 'ArrowDown') {\n event.preventDefault();\n spotlightActions.selectNextAction(ctx.store);\n }\n\n if (event.code === 'ArrowUp') {\n event.preventDefault();\n spotlightActions.selectPreviousAction(ctx.store);\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n event.preventDefault();\n spotlightActions.triggerSelectedAction(ctx.store);\n }\n };\n\n return (\n <Input\n ref={local.ref}\n classNames={[{ input: inputStyles.className }, local.classNames] as any}\n styles={[{ input: inputStyles.style }, local.styles] as any}\n {...others}\n value={local.value ?? ctx.query}\n onChange={(event) => {\n ctx.setQuery(event.currentTarget.value);\n typeof local.onChange === \"function\" && local.onChange?.(event);\n }}\n onKeyDown={handleKeyDown}\n onCompositionStart={() => setIsComposing(true)}\n onCompositionEnd={() => setIsComposing(false)}\n />\n );\n});\n\nSpotlightSearch.classes = classes;\nSpotlightSearch.displayName = '@empoleon/spotlight/SpotlightSearch';\n"],"names":["defaultProps","size","SpotlightSearch","factory","_props","props","useProps","local","others","splitProps","ctx","useSpotlightContext","inputStyles","getStyles","isComposing","setIsComposing","createSignal","handleKeyDown","event","onKeyDown","code","preventDefault","spotlightActions","selectNextAction","store","selectPreviousAction","triggerSelectedAction","_$createComponent","Input","_$mergeProps","ref","r$","_ref$","classNames","input","className","styles","style","value","query","onChange","setQuery","currentTarget","onCompositionStart","onCompositionEnd","classes","displayName"],"mappings":";;;;;;;;;AA+BA,MAAMA,YAAA,GAA8C;AAClDC,EAAAA,IAAA,EAAM;AACR,CAAA;MAEaC,eAAA,GAAkBC,aAAgCC,MAAA,IAAU;EACvE,MAAMC,KAAA,GAAQC,aAAA,CAAS,iBAAA,EAAmBN,YAAA,EAAcI,MAAM,CAAA;EAC9D,MAAM,CAACG,KAAA,EAAOC,MAAM,CAAA,GAAIC,mBAAWJ,KAAA,EAAO,CACxC,YAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,CACD,CAAA;AACD,EAAA,MAAMK,MAAMC,qCAAA,EAAoB;AAChC,EAAA,MAAMC,WAAA,GAAcF,GAAA,CAAIG,SAAA,CAAU,QAAQ,CAAA;EAC1C,MAAM,CAACC,WAAA,EAAaC,cAAc,CAAA,GAAIC,qBAAa,KAAK,CAAA;EAExD,MAAMC,aAAA,GAAiBC,KAAA,IAAiF;IACtG,OAAOX,KAAA,CAAMY,SAAA,KAAc,UAAA,IAAcZ,KAAA,CAAMY,YAAYD,KAAK,CAAA;IAChE,IAAIJ,aAAY,EAAG;AACjB,MAAA;AACF,IAAA;AAEA,IAAA,IAAII,KAAA,CAAME,SAAS,WAAA,EAAa;MAC9BF,KAAA,CAAMG,cAAA,EAAe;AACrBC,MAAAA,gCAAA,CAAiBC,gBAAA,CAAiBb,IAAIc,KAAK,CAAA;AAC7C,IAAA;AAEA,IAAA,IAAIN,KAAA,CAAME,SAAS,SAAA,EAAW;MAC5BF,KAAA,CAAMG,cAAA,EAAe;AACrBC,MAAAA,gCAAA,CAAiBG,oBAAA,CAAqBf,IAAIc,KAAK,CAAA;AACjD,IAAA;IAEA,IAAIN,KAAA,CAAME,IAAA,KAAS,OAAA,IAAWF,KAAA,CAAME,SAAS,aAAA,EAAe;MAC1DF,KAAA,CAAMG,cAAA,EAAe;AACrBC,MAAAA,gCAAA,CAAiBI,qBAAA,CAAsBhB,IAAIc,KAAK,CAAA;AAClD,IAAA;EACF,CAAA;AAEA,EAAA,OAAAG,mBAAA,CACGC,UAAA,EAAAC,cAAA,CAAA;AAAAC,IAAAA,GAAAA,CAAAC,EAAA,EAAA;AAAA,MAAA,IAAAC,KAAA,GACMzB,KAAA,CAAMuB,GAAA;MAAA,OAAAE,KAAA,KAAA,UAAA,GAAAA,KAAA,CAAAD,EAAA,IAANxB,KAAA,CAAMuB,GAAA,GAAAC,EAAA;AAAA,IAAA,CAAA;AAAA,IAAA,IACXE,UAAAA,GAAA;AAAA,MAAA,OAAY,CAAC;QAAEC,KAAA,EAAOtB,YAAYuB;AAAU,OAAA,EAAG5B,MAAM0B,UAAU,CAAA;AAAA,IAAA,CAAA;AAAA,IAAA,IAC/DG,MAAAA,GAAA;AAAA,MAAA,OAAQ,CAAC;QAAEF,KAAA,EAAOtB,YAAYyB;AAAM,OAAA,EAAG9B,MAAM6B,MAAM,CAAA;AAAA,IAAA;AAAA,GAAA,EAC/C5B,MAAA,EAAA;AAAA,IAAA,IACJ8B,KAAAA,GAAA;AAAA,MAAA,OAAO/B,KAAA,CAAM+B,KAAA,IAAS5B,GAAA,CAAI6B,KAAA;AAAA,IAAA,CAAA;IAC1BC,QAAA,EAAWtB,KAAA,IAAU;MACnBR,GAAA,CAAI+B,QAAA,CAASvB,KAAA,CAAMwB,aAAA,CAAcJ,KAAK,CAAA;MACtC,OAAO/B,KAAA,CAAMiC,QAAA,KAAa,UAAA,IAAcjC,KAAA,CAAMiC,WAAWtB,KAAK,CAAA;IAChE,CAAA;AACAC,IAAAA,SAAA,EAAWF,aAAA;AACX0B,IAAAA,kBAAA,EAAoBA,MAAM5B,cAAA,CAAe,IAAI,CAAA;AAC7C6B,IAAAA,gBAAA,EAAkBA,MAAM7B,cAAA,CAAe,KAAK;AAAA,GAAA,CAAA,CAAA;AAGlD,CAAC;AAEDb,eAAA,CAAgB2C,OAAA,GAAUA,gBAAA;AAC1B3C,eAAA,CAAgB4C,WAAA,GAAc,qCAAA;;;;"}