@docsearch/react 4.0.1 → 4.2.0
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.
- package/button.js +1 -1
- package/dist/esm/DocSearchButton.d.ts +32 -0
- package/dist/esm/DocSearchButton.js +1 -0
- package/dist/esm/DocSearchModal.d.ts +391 -0
- package/dist/esm/DocSearchModal.js +3 -0
- package/dist/esm/index.d.ts +31 -7
- package/dist/esm/index.js +3 -1
- package/dist/esm/useDocSearchKeyboardEvents.d.ts +31 -0
- package/dist/esm/useDocSearchKeyboardEvents.js +1 -0
- package/dist/esm/useTheme.d.ts +9 -0
- package/dist/esm/useTheme.js +1 -0
- package/dist/esm/version.d.ts +3 -0
- package/dist/esm/version.js +1 -0
- package/dist/umd/DocSearchModal.js +5 -0
- package/dist/umd/DocSearchModal.js.map +1 -0
- package/dist/umd/DocsearchButton.js +3 -0
- package/dist/umd/DocsearchButton.js.map +1 -0
- package/dist/umd/index.js +4 -2
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/useDocSearchKeyboardEvents.js +3 -0
- package/dist/umd/useDocSearchKeyboardEvents.js.map +1 -0
- package/dist/umd/useTheme.js +3 -0
- package/dist/umd/useTheme.js.map +1 -0
- package/dist/umd/version.js +3 -0
- package/dist/umd/version.js.map +1 -0
- package/modal.js +1 -1
- package/package.json +17 -5
- package/useDocSearchKeyboardEvents.js +1 -0
- package/useTheme.js +1 -0
- package/version.js +1 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @docsearch/react 4.2.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@docsearch/react"]={},e.React)}(this,function(e,t){"use strict";function r(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach(function(t){r(e,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))})}return e}var i={"Ctrl/Cmd+K":!0,"/":!0};e.useDocSearchKeyboardEvents=function(e){var r,n=e.isOpen,c=e.onOpen,a=e.onClose,u=e.onInput,f=e.isAskAiActive,s=e.onAskAiToggle,d=e.searchButtonRef,l=e.keyboardShortcuts,p=(r=l,o(o({},i),r));t.useEffect(function(){function e(e){var t;if(n&&"Escape"===e.code&&f)s(!1);else{var r=p["Ctrl/Cmd+K"]&&"k"===(null===(t=e.key)||void 0===t?void 0:t.toLowerCase())&&(e.metaKey||e.ctrlKey),o=p["/"]&&"/"===e.key;if("Escape"===e.code&&n||r||!function(e){var t=e.composedPath()[0],r=t.tagName;return t.isContentEditable||"INPUT"===r||"SELECT"===r||"TEXTAREA"===r}(e)&&o&&!n)return e.preventDefault(),void(n?a():document.body.classList.contains("DocSearch--active")||c());d&&d.current===document.activeElement&&u&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&u(e)}}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}},[n,c,a,u,d,f,s,p])}});
|
|
3
|
+
//# sourceMappingURL=useDocSearchKeyboardEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDocSearchKeyboardEvents.js","sources":["../../src/constants/keyboardShortcuts.ts","../../src/useDocSearchKeyboardEvents.ts"],"sourcesContent":["import type { KeyboardShortcuts } from '../types';\n\n/**\n * Default keyboard shortcuts configuration for DocSearch.\n * These values are used when no keyboardShortcuts prop is provided\n * or when specific shortcuts are not configured.\n */\nexport const DEFAULT_KEYBOARD_SHORTCUTS: Required<KeyboardShortcuts> = {\n 'Ctrl/Cmd+K': true,\n '/': true,\n} as const;\n\n/**\n * Merges user-provided keyboard shortcuts with defaults.\n *\n * @param userShortcuts - Optional user configuration.\n * @returns Complete keyboard shortcuts configuration with defaults applied.\n */\nexport function getKeyboardShortcuts(userShortcuts?: KeyboardShortcuts): Required<KeyboardShortcuts> {\n return {\n ...DEFAULT_KEYBOARD_SHORTCUTS,\n ...userShortcuts,\n };\n}\n","import React from 'react';\n\nimport { getKeyboardShortcuts } from './constants/keyboardShortcuts';\nimport type { KeyboardShortcuts } from './types';\n\nexport interface UseDocSearchKeyboardEventsProps {\n isOpen: boolean;\n onOpen: () => void;\n onClose: () => void;\n onInput?: (event: KeyboardEvent) => void;\n searchButtonRef: React.RefObject<HTMLButtonElement | null>;\n isAskAiActive: boolean;\n onAskAiToggle: (toggle: boolean) => void;\n keyboardShortcuts?: KeyboardShortcuts;\n}\n\nfunction isEditingContent(event: KeyboardEvent): boolean {\n const element = event.composedPath()[0] as HTMLElement;\n const tagName = element.tagName;\n\n return element.isContentEditable || tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA';\n}\n\nexport function useDocSearchKeyboardEvents({\n isOpen,\n onOpen,\n onClose,\n onInput,\n isAskAiActive,\n onAskAiToggle,\n searchButtonRef,\n keyboardShortcuts,\n}: UseDocSearchKeyboardEventsProps): void {\n const resolvedShortcuts = getKeyboardShortcuts(keyboardShortcuts);\n\n React.useEffect(() => {\n function onKeyDown(event: KeyboardEvent): void {\n if (isOpen && event.code === 'Escape' && isAskAiActive) {\n onAskAiToggle(false);\n return;\n }\n\n const isCmdK =\n resolvedShortcuts['Ctrl/Cmd+K'] && event.key?.toLowerCase() === 'k' && (event.metaKey || event.ctrlKey);\n const isSlash = resolvedShortcuts['/'] && event.key === '/';\n\n if (\n (event.code === 'Escape' && isOpen) ||\n // The `Cmd+K` shortcut both opens and closes the modal.\n // We need to check for `event.key` because it can be `undefined` with\n // Chrome's autofill feature.\n // See https://github.com/paperjs/paper.js/issues/1398\n isCmdK ||\n // The `/` shortcut opens but doesn't close the modal because it's\n // a character.\n (!isEditingContent(event) && isSlash && !isOpen)\n ) {\n event.preventDefault();\n\n if (isOpen) {\n onClose();\n } else if (!document.body.classList.contains('DocSearch--active')) {\n // We check that no other DocSearch modal is showing before opening\n // another one.\n onOpen();\n }\n\n return;\n }\n\n if (searchButtonRef && searchButtonRef.current === document.activeElement && onInput) {\n if (/[a-zA-Z0-9]/.test(String.fromCharCode(event.keyCode))) {\n onInput(event);\n }\n }\n }\n\n window.addEventListener('keydown', onKeyDown);\n\n return (): void => {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [isOpen, onOpen, onClose, onInput, searchButtonRef, isAskAiActive, onAskAiToggle, resolvedShortcuts]);\n}\n"],"names":["DEFAULT_KEYBOARD_SHORTCUTS","_ref","userShortcuts","isOpen","onOpen","onClose","onInput","isAskAiActive","onAskAiToggle","searchButtonRef","keyboardShortcuts","resolvedShortcuts","_objectSpread","React","useEffect","onKeyDown","event","_event$key","code","isCmdK","key","toLowerCase","metaKey","ctrlKey","isSlash","element","composedPath","tagName","isContentEditable","isEditingContent","preventDefault","document","body","classList","contains","current","activeElement","test","String","fromCharCode","keyCode","window","addEventListener","removeEventListener"],"mappings":";mxCAOO,IAAMA,EAA0D,CACrE,cAAc,EACd,KAAK,gCCcA,SAAmCC,GASA,IDdLC,ECMnCC,EAAMF,EAANE,OACAC,EAAMH,EAANG,OACAC,EAAOJ,EAAPI,QACAC,EAAOL,EAAPK,QACAC,EAAaN,EAAbM,cACAC,EAAaP,EAAbO,cACAC,EAAeR,EAAfQ,gBACAC,EAAiBT,EAAjBS,kBAEMC,GDf6BT,ECeYQ,EDd/CE,EAAAA,EACKZ,CAAAA,EAAAA,GACAE,ICcLW,EAAMC,UAAU,WACd,SAASC,EAAUC,GAA4B,IAAAC,EAC7C,GAAId,GAAyB,WAAfa,EAAME,MAAqBX,EACvCC,GAAc,OADhB,CAKA,IAAMW,EACJR,EAAkB,eAA8C,OAApBM,QAATA,EAAAD,EAAMI,WAANH,IAASA,OAATA,EAAAA,EAAWI,iBAA0BL,EAAMM,SAAWN,EAAMO,SAC3FC,EAAUb,EAAkB,MAAsB,MAAdK,EAAMI,IAEhD,GACkB,WAAfJ,EAAME,MAAqBf,GAK5BgB,IApCR,SAA0BH,GACxB,IAAMS,EAAUT,EAAMU,eAAe,GAC/BC,EAAUF,EAAQE,QAExB,OAAOF,EAAQG,mBAAiC,UAAZD,GAAmC,WAAZA,GAAoC,aAAZA,CACrF,CAkCUE,CAAiBb,IAAUQ,IAAYrB,EAYzC,OAVAa,EAAMc,sBAEF3B,EACFE,IACU0B,SAASC,KAAKC,UAAUC,SAAS,sBAG3C9B,KAMAK,GAAmBA,EAAgB0B,UAAYJ,SAASK,eAAiB9B,GACvE,cAAc+B,KAAKC,OAAOC,aAAavB,EAAMwB,WAC/ClC,EAAQU,EAhCZ,CAmCF,CAIA,OAFAyB,OAAOC,iBAAiB,UAAW3B,GAE5B,WACL0B,OAAOE,oBAAoB,UAAW5B,EACvC,CACH,EAAG,CAACZ,EAAQC,EAAQC,EAASC,EAASG,EAAiBF,EAAeC,EAAeG,GACvF"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @docsearch/react 4.2.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */
|
|
2
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@docsearch/react"]={},e.React)}(this,function(e,t){"use strict";e.useTheme=function(e){var n=e.theme;t.useEffect(function(){if(n){var e=document.documentElement.dataset.theme;if(n!==e)return document.documentElement.dataset.theme=n,function(){void 0===e?delete document.documentElement.dataset.theme:document.documentElement.dataset.theme=e}}},[n])}});
|
|
3
|
+
//# sourceMappingURL=useTheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.js","sources":["../../src/useTheme.tsx"],"sourcesContent":["import { useEffect } from 'react';\n\nimport type { DocSearchTheme } from './types';\n\nexport interface UseThemeProps {\n theme?: DocSearchTheme;\n}\n\nexport const useTheme = ({ theme }: UseThemeProps): void => {\n useEffect(() => {\n if (theme) {\n const previousTheme = document.documentElement.dataset.theme;\n if (theme !== previousTheme) {\n document.documentElement.dataset.theme = theme;\n return (): void => {\n if (previousTheme === undefined) delete document.documentElement.dataset.theme;\n else document.documentElement.dataset.theme = previousTheme;\n };\n }\n }\n return undefined;\n }, [theme]);\n};\n"],"names":["_ref","theme","useEffect","previousTheme","document","documentElement","dataset","undefined"],"mappings":";wSAQwB,SAAHA,GAAuC,IAAjCC,EAAKD,EAALC,MACzBC,EAAAA,UAAU,WACR,GAAID,EAAO,CACT,IAAME,EAAgBC,SAASC,gBAAgBC,QAAQL,MACvD,GAAIA,IAAUE,EAEZ,OADAC,SAASC,gBAAgBC,QAAQL,MAAQA,EAClC,gBACiBM,IAAlBJ,SAAoCC,SAASC,gBAAgBC,QAAQL,MACpEG,SAASC,gBAAgBC,QAAQL,MAAQE,CAC/C,CAEL,CAEF,EAAG,CAACF,GACN"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @docsearch/react 4.2.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */
|
|
2
|
+
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self)["@docsearch/react"]={})}(this,function(e){"use strict";e.version="4.2.0"});
|
|
3
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../../src/version.ts"],"sourcesContent":["export const version = '4.2.0';\n"],"names":[],"mappings":";oQAAuB"}
|
package/modal.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { DocSearchModal } from './dist/esm';
|
|
1
|
+
export { DocSearchModal } from './dist/esm/DocSearchModal.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docsearch/react",
|
|
3
3
|
"description": "React package for DocSearch, the best search experience for docs.",
|
|
4
|
-
"version": "4.0
|
|
4
|
+
"version": "4.2.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://docsearch.algolia.com",
|
|
7
7
|
"repository": {
|
|
@@ -16,10 +16,22 @@
|
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"files": [
|
|
18
18
|
"dist/",
|
|
19
|
-
"style/",
|
|
20
19
|
"button.js",
|
|
21
|
-
"modal.js"
|
|
20
|
+
"modal.js",
|
|
21
|
+
"useTheme.js",
|
|
22
|
+
"useDocSearchKeyboardEvents.js",
|
|
23
|
+
"version.js",
|
|
24
|
+
"style/"
|
|
22
25
|
],
|
|
26
|
+
"exports": {
|
|
27
|
+
".": "./dist/esm/index.js",
|
|
28
|
+
"./button": "./dist/esm/DocSearchButton.js",
|
|
29
|
+
"./modal": "./dist/esm/DocSearchModal.js",
|
|
30
|
+
"./style": "./style/index.js",
|
|
31
|
+
"./useDocSearchKeyboardEvents": "./dist/esm/useDocSearchKeyboardEvents.js",
|
|
32
|
+
"./useTheme": "./dist/esm/useTheme.js",
|
|
33
|
+
"./version": "./dist/esm/version.js"
|
|
34
|
+
},
|
|
23
35
|
"source": "src/index.ts",
|
|
24
36
|
"types": "dist/esm/index.d.ts",
|
|
25
37
|
"module": "dist/esm/index.js",
|
|
@@ -38,10 +50,10 @@
|
|
|
38
50
|
"dependencies": {
|
|
39
51
|
"@ai-sdk/react": "^2.0.30",
|
|
40
52
|
"@algolia/autocomplete-core": "1.19.2",
|
|
41
|
-
"@docsearch/css": "4.0
|
|
53
|
+
"@docsearch/css": "4.2.0",
|
|
42
54
|
"ai": "^5.0.30",
|
|
43
55
|
"algoliasearch": "^5.28.0",
|
|
44
|
-
"marked": "^
|
|
56
|
+
"marked": "^16.3.0",
|
|
45
57
|
"zod": "^4.1.8"
|
|
46
58
|
},
|
|
47
59
|
"devDependencies": {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useDocSearchKeyboardEvents } from './dist/esm/useDocSearchKeyboardEvents.js';
|
package/useTheme.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTheme } from './dist/esm/useTheme.js';
|
package/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { version } from './dist/esm/version.js';
|