fromsrc 0.0.2 → 0.0.22
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/dist/access.d.ts +7 -7
- package/dist/access.js +12 -5
- package/dist/adapter.js +8 -16
- package/dist/adapterbrowser.js +6 -10
- package/dist/adapternext.js +7 -18
- package/dist/adapterreactrouter.js +5 -9
- package/dist/adapterremix.js +8 -17
- package/dist/adaptertanstack.js +6 -10
- package/dist/algolia.js +43 -21
- package/dist/analytics.d.ts +1 -1
- package/dist/analytics.js +16 -10
- package/dist/ansi.js +76 -37
- package/dist/api.d.ts +10 -10
- package/dist/api.js +14 -11
- package/dist/audit.d.ts +6 -6
- package/dist/audit.js +29 -10
- package/dist/autotype.js +20 -10
- package/dist/batch.d.ts +6 -6
- package/dist/batch.js +16 -9
- package/dist/changelog.js +28 -14
- package/dist/changelogutil.d.ts +4 -4
- package/dist/changelogutil.js +33 -13
- package/dist/cli.d.ts +6 -6
- package/dist/cli.js +7 -3
- package/dist/client.d.ts +1 -1
- package/dist/codesample.d.ts +4 -4
- package/dist/codesample.js +63 -24
- package/dist/collapse.js +31 -13
- package/dist/collections.js +36 -16
- package/dist/components/accordion.d.ts +1 -1
- package/dist/components/accordion.js +5 -1
- package/dist/components/alert.d.ts +1 -1
- package/dist/components/alert.js +24 -13
- package/dist/components/announce.js +40 -17
- package/dist/components/autofill.js +18 -8
- package/dist/components/avatar.js +4 -4
- package/dist/components/avatarstack.js +2 -2
- package/dist/components/backtotop.d.ts +1 -1
- package/dist/components/backtotop.js +18 -5
- package/dist/components/badge.js +9 -4
- package/dist/components/banner.js +22 -5
- package/dist/components/breadcrumb.js +11 -4
- package/dist/components/breadcrumbnav.js +37 -21
- package/dist/components/button.js +23 -8
- package/dist/components/callout.d.ts +1 -1
- package/dist/components/callout.js +35 -31
- package/dist/components/changelog.js +21 -8
- package/dist/components/checkbox.js +32 -19
- package/dist/components/code.d.ts +1 -1
- package/dist/components/code.js +6 -3
- package/dist/components/codeblock.js +157 -39
- package/dist/components/codecopy.d.ts +1 -1
- package/dist/components/codecopy.js +36 -13
- package/dist/components/codegroup.js +87 -25
- package/dist/components/collapsible.d.ts +1 -1
- package/dist/components/collapsible.js +5 -1
- package/dist/components/command.d.ts +1 -1
- package/dist/components/command.js +42 -15
- package/dist/components/compare.js +20 -8
- package/dist/components/content.js +121 -79
- package/dist/components/copybutton.d.ts +1 -1
- package/dist/components/copybutton.js +14 -7
- package/dist/components/countdown.js +9 -3
- package/dist/components/create.js +34 -24
- package/dist/components/definition.js +11 -4
- package/dist/components/diffview.js +63 -29
- package/dist/components/divider.js +5 -1
- package/dist/components/docheader.js +8 -1
- package/dist/components/doclinkcard.js +27 -3
- package/dist/components/dropdown.d.ts +1 -1
- package/dist/components/dropdown.js +32 -11
- package/dist/components/dynamiccode.js +5 -3
- package/dist/components/editlink.js +35 -23
- package/dist/components/embed.js +15 -7
- package/dist/components/endpoint.d.ts +3 -3
- package/dist/components/endpoint.js +24 -9
- package/dist/components/errormessage.d.ts +1 -1
- package/dist/components/errormessage.js +4 -1
- package/dist/components/expandcode.d.ts +1 -1
- package/dist/components/expandcode.js +6 -2
- package/dist/components/feature.js +8 -1
- package/dist/components/featuregrid.d.ts +4 -4
- package/dist/components/featuregrid.js +7 -1
- package/dist/components/feedback.js +11 -7
- package/dist/components/feedbackwidget.js +18 -12
- package/dist/components/files.d.ts +1 -1
- package/dist/components/files.js +52 -18
- package/dist/components/folder.d.ts +1 -1
- package/dist/components/folder.js +21 -4
- package/dist/components/footer.js +5 -1
- package/dist/components/formlabel.d.ts +1 -1
- package/dist/components/formlabel.js +31 -18
- package/dist/components/github.js +43 -14
- package/dist/components/graph.js +38 -14
- package/dist/components/heading.js +36 -29
- package/dist/components/headingcopy.js +13 -5
- package/dist/components/hero.js +20 -14
- package/dist/components/highlight.d.ts +2 -2
- package/dist/components/highlight.js +14 -8
- package/dist/components/hover.d.ts +2 -2
- package/dist/components/hover.js +11 -4
- package/dist/components/icons.js +4 -1
- package/dist/components/inlinetoc.js +3 -1
- package/dist/components/input.js +13 -3
- package/dist/components/install.js +34 -24
- package/dist/components/kbd.js +19 -11
- package/dist/components/langicon.d.ts +1 -1
- package/dist/components/langicon.js +32 -24
- package/dist/components/language.d.ts +1 -1
- package/dist/components/language.js +12 -4
- package/dist/components/lastupdated.d.ts +2 -2
- package/dist/components/lastupdated.js +36 -12
- package/dist/components/link.d.ts +1 -1
- package/dist/components/linkcard.js +3 -1
- package/dist/components/list.d.ts +1 -1
- package/dist/components/list.js +4 -1
- package/dist/components/math.js +33 -8
- package/dist/components/mermaid.js +3 -3
- package/dist/components/mobilenav.d.ts +2 -1
- package/dist/components/mobilenav.js +116 -47
- package/dist/components/modal.d.ts +1 -1
- package/dist/components/modal.js +9 -2
- package/dist/components/navlink.js +17 -3
- package/dist/components/openapi.d.ts +1 -1
- package/dist/components/openapi.js +102 -32
- package/dist/components/openapischema.d.ts +1 -1
- package/dist/components/openapischema.js +29 -9
- package/dist/components/openapitags.js +6 -2
- package/dist/components/pagetransition.js +5 -3
- package/dist/components/pagination.js +5 -4
- package/dist/components/panel.js +92 -16
- package/dist/components/playground.d.ts +1 -1
- package/dist/components/playground.js +153 -50
- package/dist/components/popover.js +9 -7
- package/dist/components/prelink.js +40 -9
- package/dist/components/prevnext.d.ts +1 -1
- package/dist/components/prevnext.js +36 -16
- package/dist/components/progress.js +2 -2
- package/dist/components/property.js +4 -2
- package/dist/components/quote.d.ts +2 -2
- package/dist/components/quote.js +32 -4
- package/dist/components/radio.js +36 -18
- package/dist/components/rating.js +14 -3
- package/dist/components/recent.d.ts +1 -1
- package/dist/components/recent.js +26 -10
- package/dist/components/responsive.js +21 -13
- package/dist/components/results.js +8 -4
- package/dist/components/screenshot.js +61 -21
- package/dist/components/scrollprogress.js +9 -5
- package/dist/components/scrollspy.d.ts +2 -2
- package/dist/components/scrollspy.js +9 -3
- package/dist/components/search.js +47 -18
- package/dist/components/searchbutton.js +3 -1
- package/dist/components/searchdialog.js +36 -23
- package/dist/components/searcher.d.ts +1 -1
- package/dist/components/searcher.js +51 -26
- package/dist/components/select.js +27 -13
- package/dist/components/shortcuts.d.ts +1 -1
- package/dist/components/shortcuts.js +57 -38
- package/dist/components/sidebar.d.ts +2 -1
- package/dist/components/sidebar.js +209 -64
- package/dist/components/sidebarfilter.d.ts +1 -1
- package/dist/components/sidebarfilter.js +33 -9
- package/dist/components/sidebarscript.d.ts +5 -0
- package/dist/components/sidebarscript.js +5 -0
- package/dist/components/skeleton.js +15 -3
- package/dist/components/spinner.js +13 -3
- package/dist/components/status.js +20 -8
- package/dist/components/steps.js +3 -1
- package/dist/components/switch.js +4 -4
- package/dist/components/table.js +37 -12
- package/dist/components/tabnav.d.ts +1 -1
- package/dist/components/tabnav.js +48 -36
- package/dist/components/tabs.d.ts +1 -1
- package/dist/components/tabs.js +56 -40
- package/dist/components/tag.js +8 -3
- package/dist/components/terminal.js +14 -4
- package/dist/components/textarea.js +96 -82
- package/dist/components/theme.d.ts +1 -1
- package/dist/components/theme.js +26 -4
- package/dist/components/themeprovider.d.ts +4 -4
- package/dist/components/themeprovider.js +16 -5
- package/dist/components/toast.d.ts +1 -1
- package/dist/components/toast.js +23 -14
- package/dist/components/toc/default.d.ts +1 -1
- package/dist/components/toc/default.js +28 -13
- package/dist/components/toc/hook.js +28 -14
- package/dist/components/toc/index.js +8 -4
- package/dist/components/toc/inline.js +12 -2
- package/dist/components/toc/minimal.js +11 -5
- package/dist/components/toc/zigzag.d.ts +1 -1
- package/dist/components/toc/zigzag.js +37 -17
- package/dist/components/tocprogress.d.ts +1 -1
- package/dist/components/tocprogress.js +66 -34
- package/dist/components/tooltip.d.ts +1 -1
- package/dist/components/tooltip.js +20 -8
- package/dist/components/trigger.js +13 -5
- package/dist/components/twoslash.js +49 -26
- package/dist/components/typetable.js +23 -4
- package/dist/components/typewriter.js +6 -2
- package/dist/components/version.js +40 -14
- package/dist/components/video.js +25 -15
- package/dist/components/zoom.js +6 -2
- package/dist/config.d.ts +2 -2
- package/dist/config.js +56 -30
- package/dist/content.d.ts +5 -5
- package/dist/content.js +121 -57
- package/dist/contentcache.d.ts +10 -10
- package/dist/contentcache.js +9 -5
- package/dist/contentdiff.d.ts +4 -4
- package/dist/contentdiff.js +16 -8
- package/dist/contributors.d.ts +4 -4
- package/dist/contributors.js +49 -19
- package/dist/diff.d.ts +6 -6
- package/dist/diff.js +37 -16
- package/dist/draft.d.ts +11 -11
- package/dist/draft.js +9 -5
- package/dist/env.js +21 -7
- package/dist/export.js +4 -4
- package/dist/frontmatter.js +11 -9
- package/dist/github.js +60 -30
- package/dist/gitsource.d.ts +1 -1
- package/dist/gitsource.js +16 -9
- package/dist/hash.d.ts +6 -6
- package/dist/hash.js +19 -7
- package/dist/highlight.d.ts +4 -4
- package/dist/highlight.js +34 -14
- package/dist/hooks/anchor.js +26 -14
- package/dist/hooks/arrownav.js +25 -7
- package/dist/hooks/async.js +3 -3
- package/dist/hooks/battery.js +11 -3
- package/dist/hooks/breakpoint.js +10 -2
- package/dist/hooks/clickoutside.js +10 -3
- package/dist/hooks/clipboard-paste.js +7 -3
- package/dist/hooks/clipboard.d.ts +2 -2
- package/dist/hooks/clipboard.js +21 -15
- package/dist/hooks/copy.js +11 -6
- package/dist/hooks/countdown.js +1 -1
- package/dist/hooks/counter.js +1 -1
- package/dist/hooks/escapekey.js +6 -1
- package/dist/hooks/eventlistener.js +3 -1
- package/dist/hooks/eventsource.js +4 -2
- package/dist/hooks/eyedropper.js +7 -3
- package/dist/hooks/favicon.js +1 -1
- package/dist/hooks/fetch.js +12 -4
- package/dist/hooks/focustrap.js +20 -8
- package/dist/hooks/focuswithin.js +6 -2
- package/dist/hooks/form.d.ts +2 -2
- package/dist/hooks/form.js +15 -2
- package/dist/hooks/fullscreen.js +1 -1
- package/dist/hooks/geolocation.js +8 -8
- package/dist/hooks/hotkeys.js +19 -7
- package/dist/hooks/hover.d.ts +4 -1
- package/dist/hooks/hover.js +3 -1
- package/dist/hooks/idle.js +13 -3
- package/dist/hooks/infinitescroll.js +4 -2
- package/dist/hooks/interval.js +3 -1
- package/dist/hooks/inview.js +7 -3
- package/dist/hooks/keyboard.js +36 -12
- package/dist/hooks/keypress.js +6 -2
- package/dist/hooks/list.js +11 -1
- package/dist/hooks/longpress.js +3 -3
- package/dist/hooks/map.js +1 -1
- package/dist/hooks/measure.js +16 -7
- package/dist/hooks/mediarecorder.js +7 -3
- package/dist/hooks/networkstate.js +4 -2
- package/dist/hooks/os.js +12 -4
- package/dist/hooks/pagination.js +6 -4
- package/dist/hooks/permission.js +6 -2
- package/dist/hooks/queue.js +4 -2
- package/dist/hooks/readprogress.js +6 -2
- package/dist/hooks/resizeobserver.js +6 -4
- package/dist/hooks/script.js +1 -1
- package/dist/hooks/scrolllock.js +6 -2
- package/dist/hooks/scrollspy.js +4 -2
- package/dist/hooks/selection.js +6 -3
- package/dist/hooks/share.js +18 -9
- package/dist/hooks/speechrecognition.js +7 -3
- package/dist/hooks/stepper.js +4 -4
- package/dist/hooks/storage.js +9 -3
- package/dist/hooks/stylesheet.js +4 -2
- package/dist/hooks/textselection.js +6 -3
- package/dist/hooks/throttle.js +6 -2
- package/dist/hooks/undoredo.js +19 -11
- package/dist/hooks/vibrate.js +3 -1
- package/dist/hooks/viewtransition.js +8 -4
- package/dist/hooks/wakelock.js +12 -7
- package/dist/hooks/websocket.js +4 -2
- package/dist/hooks/windowsize.js +2 -2
- package/dist/i18n.d.ts +2 -2
- package/dist/i18n.js +27 -14
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/lastmodified.js +11 -5
- package/dist/linkcheck.d.ts +6 -6
- package/dist/linkcheck.js +55 -14
- package/dist/llms.js +20 -4
- package/dist/manifest.js +7 -7
- package/dist/mcp.js +28 -22
- package/dist/mdtoc.d.ts +4 -4
- package/dist/mdtoc.js +11 -5
- package/dist/mdxscope.d.ts +2 -2
- package/dist/mdxscope.js +3 -1
- package/dist/meta.js +19 -7
- package/dist/migrate.js +35 -25
- package/dist/navgen.d.ts +8 -8
- package/dist/navgen.js +73 -30
- package/dist/navtree.d.ts +1 -1
- package/dist/navtree.js +39 -19
- package/dist/oembed.d.ts +4 -4
- package/dist/oembed.js +24 -18
- package/dist/ogimage.d.ts +11 -11
- package/dist/ogimage.js +24 -24
- package/dist/openapi.js +60 -33
- package/dist/openapiguard.js +21 -11
- package/dist/openapiutil.js +66 -20
- package/dist/orama.js +52 -34
- package/dist/pipeline.d.ts +4 -4
- package/dist/pipeline.js +4 -4
- package/dist/preload.d.ts +2 -2
- package/dist/preload.js +4 -4
- package/dist/ranking.d.ts +6 -6
- package/dist/ranking.js +39 -13
- package/dist/readtime.js +3 -1
- package/dist/redirects.d.ts +2 -2
- package/dist/redirects.js +20 -12
- package/dist/rehype.js +16 -9
- package/dist/rehypeautolink.d.ts +2 -2
- package/dist/rehypeautolink.js +25 -23
- package/dist/rehypecode.js +38 -28
- package/dist/rehypecopy.js +17 -13
- package/dist/rehypeinline.js +33 -27
- package/dist/rehypelinks.js +28 -20
- package/dist/rehyperaw.js +9 -3
- package/dist/rehypeslug.d.ts +1 -1
- package/dist/rehypeslug.js +23 -19
- package/dist/rehypetablewrap.d.ts +2 -2
- package/dist/rehypetablewrap.js +9 -5
- package/dist/rehypetoc.d.ts +1 -1
- package/dist/rehypetoc.js +15 -7
- package/dist/remark.js +28 -13
- package/dist/remarkadmonition.js +40 -14
- package/dist/remarkannotation.d.ts +2 -2
- package/dist/remarkannotation.js +26 -10
- package/dist/remarkbadge.js +43 -31
- package/dist/remarkblockmath.js +29 -15
- package/dist/remarkcallout.js +32 -14
- package/dist/remarkcaption.js +28 -16
- package/dist/remarkcodetitle.js +29 -13
- package/dist/remarkcolumns.js +22 -10
- package/dist/remarkdetails.js +34 -14
- package/dist/remarkdirective.js +47 -20
- package/dist/remarkembed.js +38 -22
- package/dist/remarkfiletree.js +29 -19
- package/dist/remarkfootnote.js +46 -18
- package/dist/remarkgfm.js +13 -8
- package/dist/remarkheadingid.js +16 -6
- package/dist/remarkimage.js +54 -34
- package/dist/remarkinclude.js +20 -8
- package/dist/remarkinstall.js +20 -12
- package/dist/remarklinkcard.js +33 -14
- package/dist/remarkmath.js +34 -15
- package/dist/remarkmermaid.js +10 -6
- package/dist/remarkmeta.d.ts +2 -2
- package/dist/remarkmeta.js +15 -5
- package/dist/remarkreadingtime.d.ts +2 -2
- package/dist/remarkreadingtime.js +3 -1
- package/dist/remarksteps.js +26 -14
- package/dist/remarkstructure.js +16 -10
- package/dist/remarktabs.js +31 -14
- package/dist/remarktoc.js +40 -24
- package/dist/remarkts2js.js +51 -40
- package/dist/remarktwoslash.d.ts +4 -4
- package/dist/remarktwoslash.js +24 -14
- package/dist/remarkvideo.d.ts +4 -4
- package/dist/remarkvideo.js +42 -16
- package/dist/schema.d.ts +14 -14
- package/dist/schema.js +2 -2
- package/dist/search.js +106 -48
- package/dist/searchindex.js +86 -34
- package/dist/searchpolicy.js +1 -1
- package/dist/searchscore.js +5 -5
- package/dist/searchtypo.js +30 -10
- package/dist/seo.d.ts +2 -2
- package/dist/seo.js +14 -14
- package/dist/shortcodes.d.ts +4 -4
- package/dist/shortcodes.js +25 -20
- package/dist/sitemap.js +18 -8
- package/dist/snippets.js +26 -18
- package/dist/source.js +75 -41
- package/dist/stats.d.ts +4 -4
- package/dist/stats.js +18 -12
- package/dist/testing.d.ts +7 -7
- package/dist/testing.js +74 -29
- package/dist/themeutil.d.ts +6 -6
- package/dist/themeutil.js +145 -27
- package/dist/typegen.js +31 -12
- package/dist/validate.js +19 -7
- package/dist/validator.d.ts +11 -11
- package/dist/validator.js +68 -19
- package/dist/versioning.d.ts +7 -7
- package/dist/versioning.js +27 -11
- package/dist/watcher.js +39 -15
- package/dist/webhook.d.ts +6 -6
- package/dist/webhook.js +34 -12
- package/dist/workspace.js +26 -12
- package/package.json +137 -137
- package/styles/reset.css +1 -1
package/dist/hooks/longpress.js
CHANGED
|
@@ -14,10 +14,10 @@ function useLongPress(callback, delay = 500) {
|
|
|
14
14
|
}, []);
|
|
15
15
|
return {
|
|
16
16
|
onMouseDown: start,
|
|
17
|
-
onMouseUp: cancel,
|
|
18
17
|
onMouseLeave: cancel,
|
|
19
|
-
|
|
20
|
-
onTouchEnd: cancel
|
|
18
|
+
onMouseUp: cancel,
|
|
19
|
+
onTouchEnd: cancel,
|
|
20
|
+
onTouchStart: start
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
23
|
|
package/dist/hooks/map.js
CHANGED
|
@@ -17,7 +17,7 @@ function useMap(initial) {
|
|
|
17
17
|
const get = useCallback((key) => map.get(key), [map]);
|
|
18
18
|
const clear = useCallback(() => setMap(/* @__PURE__ */ new Map()), []);
|
|
19
19
|
const reset = useCallback(() => setMap(new Map(initial)), [initial]);
|
|
20
|
-
return {
|
|
20
|
+
return { clear, get, has, map, remove, reset, set };
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export { useMap };
|
package/dist/hooks/measure.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useState, useRef, useCallback } from 'react';
|
|
3
3
|
|
|
4
|
-
const empty = {
|
|
4
|
+
const empty = {
|
|
5
|
+
bottom: 0,
|
|
6
|
+
height: 0,
|
|
7
|
+
left: 0,
|
|
8
|
+
right: 0,
|
|
9
|
+
top: 0,
|
|
10
|
+
width: 0,
|
|
11
|
+
x: 0,
|
|
12
|
+
y: 0
|
|
13
|
+
};
|
|
5
14
|
function useMeasure() {
|
|
6
15
|
const [rect, setRect] = useState(empty);
|
|
7
16
|
const observerRef = useRef(null);
|
|
@@ -14,14 +23,14 @@ function useMeasure() {
|
|
|
14
23
|
const observer = new ResizeObserver(() => {
|
|
15
24
|
const r = node.getBoundingClientRect();
|
|
16
25
|
setRect({
|
|
17
|
-
|
|
18
|
-
y: r.y,
|
|
19
|
-
width: r.width,
|
|
26
|
+
bottom: r.bottom,
|
|
20
27
|
height: r.height,
|
|
21
|
-
|
|
28
|
+
left: r.left,
|
|
22
29
|
right: r.right,
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
top: r.top,
|
|
31
|
+
width: r.width,
|
|
32
|
+
x: r.x,
|
|
33
|
+
y: r.y
|
|
25
34
|
});
|
|
26
35
|
});
|
|
27
36
|
observer.observe(node);
|
|
@@ -10,11 +10,15 @@ function useMediaRecorder(mimeType = "audio/webm") {
|
|
|
10
10
|
const supported = typeof window !== "undefined" && "MediaRecorder" in window;
|
|
11
11
|
const start = useCallback(
|
|
12
12
|
(stream) => {
|
|
13
|
-
if (!supported)
|
|
13
|
+
if (!supported) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
14
16
|
chunksRef.current = [];
|
|
15
17
|
const recorder = new MediaRecorder(stream, { mimeType });
|
|
16
18
|
recorder.ondataavailable = (e) => {
|
|
17
|
-
if (e.data.size > 0)
|
|
19
|
+
if (e.data.size > 0) {
|
|
20
|
+
chunksRef.current.push(e.data);
|
|
21
|
+
}
|
|
18
22
|
};
|
|
19
23
|
recorder.onstop = () => {
|
|
20
24
|
const b = new Blob(chunksRef.current, { type: mimeType });
|
|
@@ -31,7 +35,7 @@ function useMediaRecorder(mimeType = "audio/webm") {
|
|
|
31
35
|
const stop = useCallback(() => {
|
|
32
36
|
recorderRef.current?.stop();
|
|
33
37
|
}, []);
|
|
34
|
-
return { recording,
|
|
38
|
+
return { blob, recording, start, stop, supported, url };
|
|
35
39
|
}
|
|
36
40
|
|
|
37
41
|
export { useMediaRecorder };
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
|
|
4
4
|
function getState() {
|
|
5
|
-
if (typeof navigator === "undefined")
|
|
5
|
+
if (typeof navigator === "undefined") {
|
|
6
|
+
return { online: true };
|
|
7
|
+
}
|
|
6
8
|
const conn = navigator.connection;
|
|
7
9
|
return {
|
|
8
|
-
online: navigator.onLine,
|
|
9
10
|
downlink: conn?.downlink,
|
|
10
11
|
effectiveType: conn?.effectiveType,
|
|
12
|
+
online: navigator.onLine,
|
|
11
13
|
rtt: conn?.rtt,
|
|
12
14
|
saveData: conn?.saveData
|
|
13
15
|
};
|
package/dist/hooks/os.js
CHANGED
|
@@ -3,11 +3,19 @@ import { useMemo } from 'react';
|
|
|
3
3
|
|
|
4
4
|
function useOs() {
|
|
5
5
|
return useMemo(() => {
|
|
6
|
-
if (typeof navigator === "undefined")
|
|
6
|
+
if (typeof navigator === "undefined") {
|
|
7
|
+
return "unknown";
|
|
8
|
+
}
|
|
7
9
|
const ua = navigator.userAgent.toLowerCase();
|
|
8
|
-
if (ua.includes("mac"))
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
if (ua.includes("mac")) {
|
|
11
|
+
return "mac";
|
|
12
|
+
}
|
|
13
|
+
if (ua.includes("win")) {
|
|
14
|
+
return "windows";
|
|
15
|
+
}
|
|
16
|
+
if (ua.includes("linux")) {
|
|
17
|
+
return "linux";
|
|
18
|
+
}
|
|
11
19
|
return "unknown";
|
|
12
20
|
}, []);
|
|
13
21
|
}
|
package/dist/hooks/pagination.js
CHANGED
|
@@ -3,9 +3,11 @@ import { useMemo } from 'react';
|
|
|
3
3
|
|
|
4
4
|
const cache = /* @__PURE__ */ new Map();
|
|
5
5
|
function flatten(sections, basePath) {
|
|
6
|
-
const key = JSON.stringify({
|
|
6
|
+
const key = JSON.stringify({ basePath, sections });
|
|
7
7
|
const cached = cache.get(key);
|
|
8
|
-
if (cached)
|
|
8
|
+
if (cached) {
|
|
9
|
+
return cached;
|
|
10
|
+
}
|
|
9
11
|
const pages = [];
|
|
10
12
|
function walk(items) {
|
|
11
13
|
for (const item of items) {
|
|
@@ -41,8 +43,8 @@ function usePagination(navigation, pathname, basePath = "/docs") {
|
|
|
41
43
|
const pages = flatten(navigation, basePath);
|
|
42
44
|
const index = pages.findIndex((p) => p.href === pathname);
|
|
43
45
|
const prev = index > 0 ? pages[index - 1] ?? null : null;
|
|
44
|
-
const next = index
|
|
45
|
-
return {
|
|
46
|
+
const next = index !== -1 && index < pages.length - 1 ? pages[index + 1] ?? null : null;
|
|
47
|
+
return { index, next, pages, prev };
|
|
46
48
|
}, [navigation, pathname, basePath]);
|
|
47
49
|
}
|
|
48
50
|
|
package/dist/hooks/permission.js
CHANGED
|
@@ -12,10 +12,14 @@ function usePermission(name) {
|
|
|
12
12
|
}
|
|
13
13
|
let mounted = true;
|
|
14
14
|
navigator.permissions.query({ name }).then((status) => {
|
|
15
|
-
if (!mounted)
|
|
15
|
+
if (!mounted) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
16
18
|
setState(tostate(status.state));
|
|
17
19
|
status.addEventListener("change", () => {
|
|
18
|
-
if (mounted)
|
|
20
|
+
if (mounted) {
|
|
21
|
+
setState(tostate(status.state));
|
|
22
|
+
}
|
|
19
23
|
});
|
|
20
24
|
}).catch(() => {
|
|
21
25
|
});
|
package/dist/hooks/queue.js
CHANGED
|
@@ -9,7 +9,9 @@ function useQueue(initial = []) {
|
|
|
9
9
|
const dequeue = useCallback(() => {
|
|
10
10
|
let removed;
|
|
11
11
|
setItems((prev) => {
|
|
12
|
-
if (prev.length === 0)
|
|
12
|
+
if (prev.length === 0) {
|
|
13
|
+
return prev;
|
|
14
|
+
}
|
|
13
15
|
removed = prev[0];
|
|
14
16
|
return prev.slice(1);
|
|
15
17
|
});
|
|
@@ -17,7 +19,7 @@ function useQueue(initial = []) {
|
|
|
17
19
|
}, []);
|
|
18
20
|
const peek = useCallback(() => items[0], [items]);
|
|
19
21
|
const clear = useCallback(() => setItems([]), []);
|
|
20
|
-
return {
|
|
22
|
+
return { clear, dequeue, enqueue, items, peek, size: items.length };
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export { useQueue };
|
|
@@ -5,7 +5,9 @@ function useReadProgress(options) {
|
|
|
5
5
|
const [progress, setProgress] = useState(0);
|
|
6
6
|
const rafRef = useRef(0);
|
|
7
7
|
const handleScroll = useCallback(() => {
|
|
8
|
-
if (rafRef.current)
|
|
8
|
+
if (rafRef.current) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
9
11
|
rafRef.current = requestAnimationFrame(() => {
|
|
10
12
|
const container = options?.containerRef?.current;
|
|
11
13
|
const element = container || document.documentElement;
|
|
@@ -23,7 +25,9 @@ function useReadProgress(options) {
|
|
|
23
25
|
target.addEventListener("scroll", handleScroll, { passive: true });
|
|
24
26
|
return () => {
|
|
25
27
|
target.removeEventListener("scroll", handleScroll);
|
|
26
|
-
if (rafRef.current)
|
|
28
|
+
if (rafRef.current) {
|
|
29
|
+
cancelAnimationFrame(rafRef.current);
|
|
30
|
+
}
|
|
27
31
|
};
|
|
28
32
|
}, [handleScroll, options?.containerRef]);
|
|
29
33
|
return progress;
|
|
@@ -3,16 +3,18 @@ import { useRef, useState, useEffect } from 'react';
|
|
|
3
3
|
|
|
4
4
|
function useResizeObserver() {
|
|
5
5
|
const ref = useRef(null);
|
|
6
|
-
const [size, setSize] = useState({
|
|
6
|
+
const [size, setSize] = useState({ height: 0, width: 0 });
|
|
7
7
|
useEffect(() => {
|
|
8
8
|
const el = ref.current;
|
|
9
|
-
if (!el)
|
|
9
|
+
if (!el) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
10
12
|
const observer = new ResizeObserver((entries) => {
|
|
11
13
|
const entry = entries[0];
|
|
12
14
|
if (entry) {
|
|
13
15
|
setSize({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
height: entry.contentRect.height,
|
|
17
|
+
width: entry.contentRect.width
|
|
16
18
|
});
|
|
17
19
|
}
|
|
18
20
|
});
|
package/dist/hooks/script.js
CHANGED
|
@@ -18,7 +18,7 @@ function useScript(src) {
|
|
|
18
18
|
script.async = true;
|
|
19
19
|
script.onload = () => setStatus("ready");
|
|
20
20
|
script.onerror = () => setStatus("error");
|
|
21
|
-
document.body.
|
|
21
|
+
document.body.append(script);
|
|
22
22
|
setStatus("loading");
|
|
23
23
|
return () => {
|
|
24
24
|
document.body.removeChild(script);
|
package/dist/hooks/scrolllock.js
CHANGED
|
@@ -19,7 +19,9 @@ function lock() {
|
|
|
19
19
|
}
|
|
20
20
|
function unlock() {
|
|
21
21
|
const count = getcount();
|
|
22
|
-
if (count === 0)
|
|
22
|
+
if (count === 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
23
25
|
const next = count - 1;
|
|
24
26
|
setcount(next);
|
|
25
27
|
if (next === 0) {
|
|
@@ -29,7 +31,9 @@ function unlock() {
|
|
|
29
31
|
}
|
|
30
32
|
function useScrollLock(locked) {
|
|
31
33
|
useEffect(() => {
|
|
32
|
-
if (!locked)
|
|
34
|
+
if (!locked) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
33
37
|
lock();
|
|
34
38
|
return () => unlock();
|
|
35
39
|
}, [locked]);
|
package/dist/hooks/scrollspy.js
CHANGED
|
@@ -5,8 +5,10 @@ function useScrollSpy(ids, options = {}) {
|
|
|
5
5
|
const { offset = 100, threshold = 0.5 } = options;
|
|
6
6
|
const [activeId, setActiveId] = useState(null);
|
|
7
7
|
useEffect(() => {
|
|
8
|
-
const elements = ids.map((id) => document.
|
|
9
|
-
if (elements.length === 0)
|
|
8
|
+
const elements = ids.map((id) => document.querySelector(`#${id}`)).filter((el) => el !== null);
|
|
9
|
+
if (elements.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
10
12
|
function handleScroll() {
|
|
11
13
|
const scrollTop = window.scrollY + offset;
|
|
12
14
|
const viewport = window.innerHeight * threshold;
|
package/dist/hooks/selection.js
CHANGED
|
@@ -6,8 +6,11 @@ function useSelection(initial = []) {
|
|
|
6
6
|
const toggle = useCallback((item) => {
|
|
7
7
|
setSelected((prev) => {
|
|
8
8
|
const next = new Set(prev);
|
|
9
|
-
if (next.has(item))
|
|
10
|
-
|
|
9
|
+
if (next.has(item)) {
|
|
10
|
+
next.delete(item);
|
|
11
|
+
} else {
|
|
12
|
+
next.add(item);
|
|
13
|
+
}
|
|
11
14
|
return next;
|
|
12
15
|
});
|
|
13
16
|
}, []);
|
|
@@ -26,7 +29,7 @@ function useSelection(initial = []) {
|
|
|
26
29
|
setSelected(new Set(items));
|
|
27
30
|
}, []);
|
|
28
31
|
const isSelected = useCallback((item) => selected.has(item), [selected]);
|
|
29
|
-
return {
|
|
32
|
+
return { clear, deselect, isSelected, select, selectAll, selected, toggle };
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
export { useSelection };
|
package/dist/hooks/share.js
CHANGED
|
@@ -3,26 +3,35 @@ import { useState, useRef, useEffect, useCallback } from 'react';
|
|
|
3
3
|
|
|
4
4
|
function useShare(duration = 1500) {
|
|
5
5
|
const [shared, setShared] = useState(false);
|
|
6
|
-
const [canShare] = useState(
|
|
6
|
+
const [canShare] = useState(
|
|
7
|
+
() => typeof navigator !== "undefined" && !!navigator.share
|
|
8
|
+
);
|
|
7
9
|
const timeoutRef = useRef(null);
|
|
8
|
-
useEffect(
|
|
9
|
-
|
|
10
|
-
if (timeoutRef.current)
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
useEffect(
|
|
11
|
+
() => () => {
|
|
12
|
+
if (timeoutRef.current) {
|
|
13
|
+
clearTimeout(timeoutRef.current);
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
[]
|
|
17
|
+
);
|
|
13
18
|
const share = useCallback(
|
|
14
19
|
async (data) => {
|
|
15
20
|
try {
|
|
16
21
|
if (canShare && navigator.share) {
|
|
17
22
|
await navigator.share(data);
|
|
18
23
|
setShared(true);
|
|
19
|
-
if (timeoutRef.current)
|
|
24
|
+
if (timeoutRef.current) {
|
|
25
|
+
clearTimeout(timeoutRef.current);
|
|
26
|
+
}
|
|
20
27
|
timeoutRef.current = setTimeout(() => setShared(false), duration);
|
|
21
28
|
} else {
|
|
22
29
|
const fallback = data.url || data.text || "";
|
|
23
30
|
await navigator.clipboard.writeText(fallback);
|
|
24
31
|
setShared(true);
|
|
25
|
-
if (timeoutRef.current)
|
|
32
|
+
if (timeoutRef.current) {
|
|
33
|
+
clearTimeout(timeoutRef.current);
|
|
34
|
+
}
|
|
26
35
|
timeoutRef.current = setTimeout(() => setShared(false), duration);
|
|
27
36
|
}
|
|
28
37
|
} catch {
|
|
@@ -31,7 +40,7 @@ function useShare(duration = 1500) {
|
|
|
31
40
|
},
|
|
32
41
|
[canShare, duration]
|
|
33
42
|
);
|
|
34
|
-
return {
|
|
43
|
+
return { canShare, share, shared };
|
|
35
44
|
}
|
|
36
45
|
|
|
37
46
|
export { useShare };
|
|
@@ -7,10 +7,14 @@ function useSpeechRecognition(lang = "en-US") {
|
|
|
7
7
|
const supported = typeof window !== "undefined" && ("SpeechRecognition" in window || "webkitSpeechRecognition" in window);
|
|
8
8
|
const recognitionRef = useRef(null);
|
|
9
9
|
const start = useCallback(() => {
|
|
10
|
-
if (!supported)
|
|
10
|
+
if (!supported) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
11
13
|
const win = window;
|
|
12
14
|
const SR = win.SpeechRecognition || win.webkitSpeechRecognition;
|
|
13
|
-
if (!SR)
|
|
15
|
+
if (!SR) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
14
18
|
const recognition = new SR();
|
|
15
19
|
recognition.lang = lang;
|
|
16
20
|
recognition.continuous = true;
|
|
@@ -28,7 +32,7 @@ function useSpeechRecognition(lang = "en-US") {
|
|
|
28
32
|
recognitionRef.current?.stop();
|
|
29
33
|
setListening(false);
|
|
30
34
|
}, []);
|
|
31
|
-
return {
|
|
35
|
+
return { listening, start, stop, supported, text };
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
export { useSpeechRecognition };
|
package/dist/hooks/stepper.js
CHANGED
|
@@ -17,14 +17,14 @@ function useStepper(total, initial = 0) {
|
|
|
17
17
|
);
|
|
18
18
|
const reset = useCallback(() => setStep(initial), [initial]);
|
|
19
19
|
return {
|
|
20
|
-
step,
|
|
21
|
-
total,
|
|
22
20
|
first: step === 0,
|
|
21
|
+
goTo,
|
|
23
22
|
last: step === total - 1,
|
|
24
23
|
next,
|
|
25
24
|
prev,
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
reset,
|
|
26
|
+
step,
|
|
27
|
+
total
|
|
28
28
|
};
|
|
29
29
|
}
|
|
30
30
|
|
package/dist/hooks/storage.js
CHANGED
|
@@ -4,8 +4,12 @@ import { useState, useEffect, useCallback } from 'react';
|
|
|
4
4
|
const local = () => localStorage;
|
|
5
5
|
const session = () => sessionStorage;
|
|
6
6
|
function issamekind(value, sample) {
|
|
7
|
-
if (sample === null)
|
|
8
|
-
|
|
7
|
+
if (sample === null) {
|
|
8
|
+
return value === null;
|
|
9
|
+
}
|
|
10
|
+
if (Array.isArray(sample)) {
|
|
11
|
+
return Array.isArray(value);
|
|
12
|
+
}
|
|
9
13
|
const kind = typeof sample;
|
|
10
14
|
if (kind === "object") {
|
|
11
15
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -27,7 +31,9 @@ function useStorage(getStorage, key, defaultValue) {
|
|
|
27
31
|
const stored = getStorage().getItem(key);
|
|
28
32
|
if (stored !== null) {
|
|
29
33
|
const parsed = parsestored(stored, defaultValue);
|
|
30
|
-
if (parsed !== null)
|
|
34
|
+
if (parsed !== null) {
|
|
35
|
+
setValue(parsed);
|
|
36
|
+
}
|
|
31
37
|
}
|
|
32
38
|
} catch {
|
|
33
39
|
}
|
package/dist/hooks/stylesheet.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
|
|
4
4
|
function useStylesheet(href) {
|
|
5
|
-
const [status, setStatus] = useState(
|
|
5
|
+
const [status, setStatus] = useState(
|
|
6
|
+
href ? "loading" : "idle"
|
|
7
|
+
);
|
|
6
8
|
useEffect(() => {
|
|
7
9
|
if (!href) {
|
|
8
10
|
setStatus("idle");
|
|
@@ -18,7 +20,7 @@ function useStylesheet(href) {
|
|
|
18
20
|
link.href = href;
|
|
19
21
|
link.onload = () => setStatus("ready");
|
|
20
22
|
link.onerror = () => setStatus("error");
|
|
21
|
-
document.head.
|
|
23
|
+
document.head.append(link);
|
|
22
24
|
setStatus("loading");
|
|
23
25
|
return () => {
|
|
24
26
|
document.head.removeChild(link);
|
|
@@ -2,18 +2,21 @@
|
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
|
|
4
4
|
function useTextSelection() {
|
|
5
|
-
const [selection, setSelection] = useState({
|
|
5
|
+
const [selection, setSelection] = useState({
|
|
6
|
+
rect: null,
|
|
7
|
+
text: ""
|
|
8
|
+
});
|
|
6
9
|
useEffect(() => {
|
|
7
10
|
function handler() {
|
|
8
11
|
const sel = window.getSelection();
|
|
9
12
|
const text = sel?.toString() ?? "";
|
|
10
13
|
if (!text) {
|
|
11
|
-
setSelection({
|
|
14
|
+
setSelection({ rect: null, text: "" });
|
|
12
15
|
return;
|
|
13
16
|
}
|
|
14
17
|
const range = sel?.getRangeAt(0);
|
|
15
18
|
const rect = range?.getBoundingClientRect() ?? null;
|
|
16
|
-
setSelection({
|
|
19
|
+
setSelection({ rect, text });
|
|
17
20
|
}
|
|
18
21
|
document.addEventListener("selectionchange", handler);
|
|
19
22
|
return () => document.removeEventListener("selectionchange", handler);
|
package/dist/hooks/throttle.js
CHANGED
|
@@ -12,14 +12,18 @@ function useThrottle(value, ms) {
|
|
|
12
12
|
lastRef.current = now;
|
|
13
13
|
setThrottled(value);
|
|
14
14
|
} else {
|
|
15
|
-
if (timerRef.current)
|
|
15
|
+
if (timerRef.current) {
|
|
16
|
+
clearTimeout(timerRef.current);
|
|
17
|
+
}
|
|
16
18
|
timerRef.current = setTimeout(() => {
|
|
17
19
|
lastRef.current = Date.now();
|
|
18
20
|
setThrottled(value);
|
|
19
21
|
}, ms - elapsed);
|
|
20
22
|
}
|
|
21
23
|
return () => {
|
|
22
|
-
if (timerRef.current)
|
|
24
|
+
if (timerRef.current) {
|
|
25
|
+
clearTimeout(timerRef.current);
|
|
26
|
+
}
|
|
23
27
|
};
|
|
24
28
|
}, [value, ms]);
|
|
25
29
|
return throttled;
|
package/dist/hooks/undoredo.js
CHANGED
|
@@ -15,18 +15,26 @@ function useUndoRedo(initial) {
|
|
|
15
15
|
);
|
|
16
16
|
const undo = useCallback(() => {
|
|
17
17
|
const past = pastRef.current;
|
|
18
|
-
if (past.length === 0)
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
if (past.length === 0) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const prev = past.at(-1);
|
|
22
|
+
if (prev === void 0) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
21
25
|
pastRef.current = past.slice(0, -1);
|
|
22
26
|
futureRef.current = [state, ...futureRef.current];
|
|
23
27
|
setState(prev);
|
|
24
28
|
}, [state]);
|
|
25
29
|
const redo = useCallback(() => {
|
|
26
30
|
const future = futureRef.current;
|
|
27
|
-
if (future.length === 0)
|
|
31
|
+
if (future.length === 0) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
28
34
|
const next = future[0];
|
|
29
|
-
if (next === void 0)
|
|
35
|
+
if (next === void 0) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
30
38
|
futureRef.current = future.slice(1);
|
|
31
39
|
pastRef.current = [...pastRef.current, state];
|
|
32
40
|
setState(next);
|
|
@@ -37,13 +45,13 @@ function useUndoRedo(initial) {
|
|
|
37
45
|
setState(value);
|
|
38
46
|
}, []);
|
|
39
47
|
return {
|
|
40
|
-
state,
|
|
41
|
-
set,
|
|
42
|
-
undo,
|
|
43
|
-
redo,
|
|
44
|
-
canUndo: pastRef.current.length > 0,
|
|
45
48
|
canRedo: futureRef.current.length > 0,
|
|
46
|
-
|
|
49
|
+
canUndo: pastRef.current.length > 0,
|
|
50
|
+
redo,
|
|
51
|
+
reset,
|
|
52
|
+
set,
|
|
53
|
+
state,
|
|
54
|
+
undo
|
|
47
55
|
};
|
|
48
56
|
}
|
|
49
57
|
|
package/dist/hooks/vibrate.js
CHANGED
|
@@ -5,7 +5,9 @@ function useVibrate() {
|
|
|
5
5
|
const supported = typeof navigator !== "undefined" && "vibrate" in navigator;
|
|
6
6
|
const vibrate = useCallback(
|
|
7
7
|
(pattern = 200) => {
|
|
8
|
-
if (supported)
|
|
8
|
+
if (supported) {
|
|
9
|
+
navigator.vibrate(pattern);
|
|
10
|
+
}
|
|
9
11
|
},
|
|
10
12
|
[supported]
|
|
11
13
|
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
3
2
|
import { usePathname } from 'next/navigation';
|
|
3
|
+
import { useState, useCallback, useRef, useEffect } from 'react';
|
|
4
4
|
|
|
5
5
|
function useViewTransition() {
|
|
6
6
|
const [isTransitioning, setIsTransitioning] = useState(false);
|
|
@@ -12,7 +12,9 @@ function useViewTransition() {
|
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
setIsTransitioning(true);
|
|
15
|
-
const transition = document.startViewTransition?.(
|
|
15
|
+
const transition = document.startViewTransition?.(
|
|
16
|
+
callback
|
|
17
|
+
);
|
|
16
18
|
if (!transition) {
|
|
17
19
|
setIsTransitioning(false);
|
|
18
20
|
return;
|
|
@@ -21,14 +23,16 @@ function useViewTransition() {
|
|
|
21
23
|
},
|
|
22
24
|
[supported]
|
|
23
25
|
);
|
|
24
|
-
return {
|
|
26
|
+
return { isTransitioning, startTransition, supported };
|
|
25
27
|
}
|
|
26
28
|
function usePageTransition() {
|
|
27
29
|
const pathname = usePathname();
|
|
28
30
|
const previous = useRef(pathname);
|
|
29
31
|
const supported = typeof document !== "undefined" && typeof document.startViewTransition === "function";
|
|
30
32
|
useEffect(() => {
|
|
31
|
-
if (!supported || pathname === previous.current)
|
|
33
|
+
if (!supported || pathname === previous.current) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
32
36
|
previous.current = pathname;
|
|
33
37
|
document.startViewTransition?.(() => {
|
|
34
38
|
});
|
package/dist/hooks/wakelock.js
CHANGED
|
@@ -6,10 +6,14 @@ function useWakeLock() {
|
|
|
6
6
|
const supported = typeof navigator !== "undefined" && "wakeLock" in navigator;
|
|
7
7
|
const sentinelRef = useRef(null);
|
|
8
8
|
const request = useCallback(async () => {
|
|
9
|
-
if (!supported)
|
|
9
|
+
if (!supported) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
10
12
|
try {
|
|
11
13
|
const lock = navigator.wakeLock;
|
|
12
|
-
if (!lock)
|
|
14
|
+
if (!lock) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
13
17
|
sentinelRef.current = await lock.request("screen");
|
|
14
18
|
sentinelRef.current.addEventListener("release", () => setActive(false));
|
|
15
19
|
setActive(true);
|
|
@@ -21,12 +25,13 @@ function useWakeLock() {
|
|
|
21
25
|
sentinelRef.current = null;
|
|
22
26
|
setActive(false);
|
|
23
27
|
}, []);
|
|
24
|
-
useEffect(
|
|
25
|
-
|
|
28
|
+
useEffect(
|
|
29
|
+
() => () => {
|
|
26
30
|
sentinelRef.current?.release();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
31
|
+
},
|
|
32
|
+
[]
|
|
33
|
+
);
|
|
34
|
+
return { active, release, request, supported };
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
export { useWakeLock };
|
package/dist/hooks/websocket.js
CHANGED
|
@@ -12,7 +12,9 @@ function useWebSocket(url) {
|
|
|
12
12
|
wsRef.current?.close();
|
|
13
13
|
}, []);
|
|
14
14
|
useEffect(() => {
|
|
15
|
-
if (!url)
|
|
15
|
+
if (!url) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
16
18
|
setStatus("connecting");
|
|
17
19
|
const ws = new WebSocket(url);
|
|
18
20
|
wsRef.current = ws;
|
|
@@ -24,7 +26,7 @@ function useWebSocket(url) {
|
|
|
24
26
|
ws.close();
|
|
25
27
|
};
|
|
26
28
|
}, [url]);
|
|
27
|
-
return {
|
|
29
|
+
return { close, lastMessage, send, status };
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
export { useWebSocket };
|