@dxos/plugin-presenter 0.7.5-main.9d2a38b → 0.7.5-main.ff8607b
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/lib/browser/{PresenterMain-2RSALOUX.mjs → PresenterMain-O6SKQTTD.mjs} +4 -4
- package/dist/lib/browser/PresenterMain-O6SKQTTD.mjs.map +7 -0
- package/dist/lib/browser/{RevealMain-SWCWANYN.mjs → RevealMain-YFG5E6JB.mjs} +4 -4
- package/dist/lib/browser/RevealMain-YFG5E6JB.mjs.map +7 -0
- package/dist/lib/browser/{chunk-P2BIPL4V.mjs → chunk-3KYTF5X3.mjs} +5 -5
- package/dist/lib/browser/chunk-3KYTF5X3.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +7 -13
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/intent-resolver-27OZKSSE.mjs +46 -0
- package/dist/lib/browser/intent-resolver-27OZKSSE.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-U7AXT65E.mjs → react-surface-DZEZSJT4.mjs} +28 -15
- package/dist/lib/browser/react-surface-DZEZSJT4.mjs.map +7 -0
- package/dist/types/src/PresenterPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +22 -22
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +28 -33
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/package.json +21 -20
- package/src/PresenterPlugin.tsx +2 -14
- package/src/capabilities/index.ts +0 -1
- package/src/capabilities/intent-resolver.ts +21 -19
- package/src/capabilities/react-surface.tsx +24 -12
- package/src/components/PresenterMain.tsx +3 -3
- package/src/components/PresenterSettings.tsx +3 -3
- package/src/components/RevealMain.tsx +3 -3
- package/dist/lib/browser/PresenterMain-2RSALOUX.mjs.map +0 -7
- package/dist/lib/browser/RevealMain-SWCWANYN.mjs.map +0 -7
- package/dist/lib/browser/chunk-P2BIPL4V.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-CAYS4SCJ.mjs +0 -46
- package/dist/lib/browser/intent-resolver-CAYS4SCJ.mjs.map +0 -7
- package/dist/lib/browser/react-context-A3AXJRTF.mjs +0 -30
- package/dist/lib/browser/react-context-A3AXJRTF.mjs.map +0 -7
- package/dist/lib/browser/react-surface-U7AXT65E.mjs.map +0 -7
- package/dist/types/src/capabilities/react-context.d.ts +0 -8
- package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
- package/src/capabilities/react-context.tsx +0 -31
|
@@ -5,28 +5,44 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { SettingsStore } from '@dxos/local-storage';
|
|
8
9
|
import { DocumentType } from '@dxos/plugin-markdown/types';
|
|
9
10
|
import { CollectionType } from '@dxos/plugin-space/types';
|
|
10
11
|
|
|
12
|
+
import { PresenterCapabilities } from './capabilities';
|
|
11
13
|
import { MarkdownSlide, PresenterSettings, PresenterMain, RevealMain } from '../components';
|
|
12
14
|
import { PRESENTER_PLUGIN } from '../meta';
|
|
13
|
-
import { type PresenterSettingsProps } from '../types';
|
|
15
|
+
import { PresenterContext, type PresenterSettingsProps } from '../types';
|
|
14
16
|
|
|
15
17
|
export default () =>
|
|
16
18
|
contributes(Capabilities.ReactSurface, [
|
|
17
19
|
createSurface({
|
|
18
20
|
id: `${PRESENTER_PLUGIN}/document`,
|
|
19
21
|
role: 'main',
|
|
20
|
-
|
|
22
|
+
position: 'hoist',
|
|
21
23
|
filter: (data): data is { subject: DocumentType } => data.subject instanceof DocumentType,
|
|
22
24
|
component: ({ data }) => <RevealMain document={data.subject} />,
|
|
23
25
|
}),
|
|
24
26
|
createSurface({
|
|
25
27
|
id: `${PRESENTER_PLUGIN}/collection`,
|
|
26
28
|
role: 'main',
|
|
27
|
-
|
|
29
|
+
position: 'hoist',
|
|
28
30
|
filter: (data): data is { subject: CollectionType } => data.subject instanceof CollectionType,
|
|
29
|
-
component: ({ data }) =>
|
|
31
|
+
component: ({ data }) => {
|
|
32
|
+
const state = useCapability(PresenterCapabilities.MutableState);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<PresenterContext.Provider
|
|
36
|
+
value={{
|
|
37
|
+
running: state.presenting,
|
|
38
|
+
start: () => (state.presenting = true),
|
|
39
|
+
stop: () => (state.presenting = false),
|
|
40
|
+
}}
|
|
41
|
+
>
|
|
42
|
+
<PresenterMain collection={data.subject} />
|
|
43
|
+
</PresenterContext.Provider>
|
|
44
|
+
);
|
|
45
|
+
},
|
|
30
46
|
}),
|
|
31
47
|
createSurface({
|
|
32
48
|
id: `${PRESENTER_PLUGIN}/slide`,
|
|
@@ -36,13 +52,9 @@ export default () =>
|
|
|
36
52
|
}),
|
|
37
53
|
createSurface({
|
|
38
54
|
id: `${PRESENTER_PLUGIN}/settings`,
|
|
39
|
-
role: '
|
|
40
|
-
filter: (data): data is
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
PRESENTER_PLUGIN,
|
|
44
|
-
)!.value;
|
|
45
|
-
return <PresenterSettings settings={settings} />;
|
|
46
|
-
},
|
|
55
|
+
role: 'article',
|
|
56
|
+
filter: (data): data is { subject: SettingsStore<PresenterSettingsProps> } =>
|
|
57
|
+
data.subject instanceof SettingsStore && data.subject.prefix === PRESENTER_PLUGIN,
|
|
58
|
+
component: ({ data: { subject } }) => <PresenterSettings settings={subject.value} />,
|
|
47
59
|
}),
|
|
48
60
|
]);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type FC, useContext, useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import { Surface,
|
|
7
|
+
import { Surface, createIntent, useLayout, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
8
|
import { type CollectionType } from '@dxos/plugin-space/types';
|
|
9
9
|
import { Main } from '@dxos/react-ui';
|
|
10
10
|
import {
|
|
@@ -21,8 +21,8 @@ const PresenterMain: FC<{ collection: CollectionType }> = ({ collection }) => {
|
|
|
21
21
|
const [slide, setSlide] = useState(0);
|
|
22
22
|
|
|
23
23
|
// TODO(burdon): Should not depend on split screen.
|
|
24
|
-
const layout =
|
|
25
|
-
const fullscreen = layout.
|
|
24
|
+
const layout = useLayout();
|
|
25
|
+
const fullscreen = layout.mode === 'fullscreen';
|
|
26
26
|
const { running } = useContext(PresenterContext);
|
|
27
27
|
|
|
28
28
|
// TODO(burdon): Currently conflates fullscreen and running.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
7
|
import { Input, useTranslation } from '@dxos/react-ui';
|
|
8
|
-
import { DeprecatedFormInput } from '@dxos/react-ui-form';
|
|
8
|
+
import { DeprecatedFormContainer, DeprecatedFormInput } from '@dxos/react-ui-form';
|
|
9
9
|
|
|
10
10
|
import { PRESENTER_PLUGIN } from '../meta';
|
|
11
11
|
import { type PresenterSettingsProps } from '../types';
|
|
@@ -14,13 +14,13 @@ export const PresenterSettings = ({ settings }: { settings: PresenterSettingsPro
|
|
|
14
14
|
const { t } = useTranslation(PRESENTER_PLUGIN);
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
|
-
|
|
17
|
+
<DeprecatedFormContainer>
|
|
18
18
|
<DeprecatedFormInput label={t('present collections label')}>
|
|
19
19
|
<Input.Switch
|
|
20
20
|
checked={settings.presentCollections}
|
|
21
21
|
onCheckedChange={(checked) => (settings.presentCollections = !!checked)}
|
|
22
22
|
/>
|
|
23
23
|
</DeprecatedFormInput>
|
|
24
|
-
|
|
24
|
+
</DeprecatedFormContainer>
|
|
25
25
|
);
|
|
26
26
|
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type FC } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { createIntent, useLayout, useIntentDispatcher } from '@dxos/app-framework';
|
|
8
8
|
import { type DocumentType } from '@dxos/plugin-markdown/types';
|
|
9
9
|
import { Main } from '@dxos/react-ui';
|
|
10
10
|
import { topbarBlockPaddingStart, fixedInsetFlexLayout, bottombarBlockPaddingEnd } from '@dxos/react-ui-theme';
|
|
@@ -13,8 +13,8 @@ import { RevealPlayer } from './Reveal';
|
|
|
13
13
|
import { PresenterAction } from '../types';
|
|
14
14
|
|
|
15
15
|
const PresenterMain: FC<{ document: DocumentType }> = ({ document }) => {
|
|
16
|
-
const layout =
|
|
17
|
-
const fullscreen = layout.
|
|
16
|
+
const layout = useLayout();
|
|
17
|
+
const fullscreen = layout.mode === 'fullscreen';
|
|
18
18
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
19
19
|
|
|
20
20
|
return (
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/PresenterMain.tsx", "../../../src/components/Presenter/Layout.tsx", "../../../src/components/Presenter/Pager.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC, useContext, useState } from 'react';\n\nimport { Surface, useIntentDispatcher, createIntent, Capabilities, useCapability } from '@dxos/app-framework';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { Main } from '@dxos/react-ui';\nimport {\n baseSurface,\n topbarBlockPaddingStart,\n fixedInsetFlexLayout,\n bottombarBlockPaddingEnd,\n} from '@dxos/react-ui-theme';\n\nimport { Layout, PageNumber, Pager, StartButton } from './Presenter';\nimport { PresenterContext, PresenterAction } from '../types';\n\nconst PresenterMain: FC<{ collection: CollectionType }> = ({ collection }) => {\n const [slide, setSlide] = useState(0);\n\n // TODO(burdon): Should not depend on split screen.\n const layout = useCapability(Capabilities.Layout);\n const fullscreen = layout.layoutMode === 'fullscreen';\n const { running } = useContext(PresenterContext);\n\n // TODO(burdon): Currently conflates fullscreen and running.\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const handleSetRunning = (running: boolean) => {\n void dispatch(createIntent(PresenterAction.TogglePresentation, { object: collection, state: running }));\n };\n\n return (\n <Main.Content\n classNames={[\n baseSurface,\n fixedInsetFlexLayout,\n !fullscreen && topbarBlockPaddingStart,\n !fullscreen && bottombarBlockPaddingEnd,\n ]}\n >\n <Layout\n topRight={<StartButton running={running} onClick={(running) => handleSetRunning(running)} />}\n bottomRight={<PageNumber index={slide} count={collection.objects.length} />}\n bottomLeft={\n <Pager\n index={slide}\n count={collection.objects.length}\n keys={running}\n onChange={setSlide}\n onExit={() => handleSetRunning(false)}\n />\n }\n >\n {/* TODO(wittjosiah): Better slide placeholder. */}\n <Surface role='slide' data={{ subject: collection.objects[slide] }} placeholder={<></>} />\n </Layout>\n </Main.Content>\n );\n};\n\nexport default PresenterMain;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type PropsWithChildren, type ReactNode } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type LayoutProps = ThemedClassName<\n PropsWithChildren<{\n className?: string;\n topLeft?: ReactNode;\n topRight?: ReactNode;\n bottomLeft?: ReactNode;\n bottomRight?: ReactNode;\n }>\n>;\n\nexport const Layout = ({ children, classNames, topLeft, topRight, bottomLeft, bottomRight }: LayoutProps) => {\n return (\n <div className={mx('flex grow relative overflow-hidden bg-attention', classNames)}>\n <div className={mx('flex flex-col grow overflow-hidden')}>{children}</div>\n\n <div className='z-[200]'>\n <div className='absolute top-4 left-4'>{topLeft}</div>\n <div className='absolute top-4 right-4'>{topRight}</div>\n <div className='absolute bottom-4 left-4'>{bottomLeft}</div>\n <div className='absolute bottom-4 right-4'>{bottomRight}</div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Play, X, CaretDoubleLeft, CaretDoubleRight, CaretLeft, CaretRight } from '@phosphor-icons/react';\nimport React, { type FC, useEffect } from 'react';\n\nimport { Button, useControlledValue } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nexport type PagerProps = {\n index?: number;\n count?: number;\n keys?: boolean; // TODO(burdon): Rename.\n onChange?: (index: number) => void;\n onExit?: () => void;\n};\n\nexport const Pager = ({ index: controlledIndex = 0, count = 0, keys, onChange, onExit }: PagerProps) => {\n const [index, setIndex] = useControlledValue(controlledIndex);\n useEffect(() => {\n onChange?.(index);\n }, [index]);\n\n const handleChangeIndex = (dir: number) => {\n setIndex((index) => {\n const next = index + dir;\n return next >= 0 && next < count ? next : index;\n });\n };\n\n // TODO(burdon): Standardize via system key binding.\n useEffect(() => {\n if (!keys) {\n return;\n }\n\n const keydownHandler = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Escape': {\n onExit?.();\n break;\n }\n case 'ArrowLeft': {\n if (event.shiftKey) {\n onChange?.(0);\n } else {\n handleChangeIndex(-1);\n }\n break;\n }\n case 'ArrowRight': {\n if (event.shiftKey) {\n onChange?.(count - 1);\n } else {\n handleChangeIndex(1);\n }\n break;\n }\n case 'ArrowUp': {\n onChange?.(0);\n break;\n }\n case 'ArrowDown': {\n onChange?.(count - 1);\n break;\n }\n }\n };\n\n window.addEventListener('keydown', keydownHandler);\n return () => window.removeEventListener('keydown', keydownHandler);\n }, [keys, count]);\n\n if (index === undefined || !count) {\n return null;\n }\n\n return (\n <div className='flex items-center text-neutral-500'>\n <Button variant='ghost' classNames='p-0' onClick={() => onChange?.(0)}>\n <CaretDoubleLeft className={mx(getSize(6))} />\n </Button>\n <Button variant='ghost' classNames='p-0' onClick={() => handleChangeIndex(-1)}>\n <CaretLeft className={mx(getSize(6))} />\n </Button>\n <Button variant='ghost' classNames='p-0' onClick={() => handleChangeIndex(1)}>\n <CaretRight className={mx(getSize(6))} />\n </Button>\n <Button variant='ghost' classNames='p-0' onClick={() => onChange?.(count - 1)}>\n <CaretDoubleRight className={mx(getSize(6))} />\n </Button>\n </div>\n );\n};\n\nexport type PageNumberProps = {\n index?: number;\n count?: number;\n};\n\nexport const PageNumber = ({ index = 0, count = 1 }: PageNumberProps) => {\n if (index === undefined || !count) {\n return null;\n }\n\n return (\n <div className='flex items-center text-neutral-500 text-2xl'>\n <div>\n {index + 1} / {count}\n </div>\n </div>\n );\n};\n\nexport const StartButton: FC<{ running?: boolean; onClick?: (start: boolean) => void }> = ({ running, onClick }) => {\n return (\n <Button variant='ghost' classNames='p-0' onClick={() => onClick?.(!running)}>\n {(running && <X className={mx(getSize(6))} />) || <Play className={mx(getSize(6))} />}\n </Button>\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useContext", "useState", "Surface", "useIntentDispatcher", "createIntent", "Capabilities", "useCapability", "Main", "baseSurface", "topbarBlockPaddingStart", "fixedInsetFlexLayout", "bottombarBlockPaddingEnd", "React", "mx", "Layout", "children", "classNames", "topLeft", "topRight", "bottomLeft", "bottomRight", "div", "className", "mx", "Play", "X", "CaretDoubleLeft", "CaretDoubleRight", "CaretLeft", "CaretRight", "React", "useEffect", "Button", "useControlledValue", "getSize", "mx", "Pager", "index", "controlledIndex", "count", "keys", "onChange", "onExit", "setIndex", "useControlledValue", "useEffect", "handleChangeIndex", "dir", "next", "keydownHandler", "event", "key", "shiftKey", "window", "addEventListener", "removeEventListener", "undefined", "React", "div", "className", "Button", "variant", "classNames", "onClick", "CaretDoubleLeft", "mx", "getSize", "CaretLeft", "CaretRight", "CaretDoubleRight", "PageNumber", "StartButton", "running", "X", "Play", "PresenterMain", "collection", "slide", "setSlide", "useState", "layout", "useCapability", "Capabilities", "Layout", "fullscreen", "layoutMode", "running", "useContext", "PresenterContext", "dispatchPromise", "dispatch", "useIntentDispatcher", "handleSetRunning", "createIntent", "PresenterAction", "TogglePresentation", "object", "state", "React", "Main", "Content", "classNames", "baseSurface", "fixedInsetFlexLayout", "topbarBlockPaddingStart", "bottombarBlockPaddingEnd", "topRight", "StartButton", "onClick", "bottomRight", "PageNumber", "index", "count", "objects", "length", "bottomLeft", "Pager", "keys", "onChange", "onExit", "Surface", "role", "data", "subject", "placeholder"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/RevealMain.tsx", "../../../src/components/Reveal/Reveal.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { type FC } from 'react';\n\nimport { useIntentDispatcher, createIntent, useCapability, Capabilities } from '@dxos/app-framework';\nimport { type DocumentType } from '@dxos/plugin-markdown/types';\nimport { Main } from '@dxos/react-ui';\nimport { topbarBlockPaddingStart, fixedInsetFlexLayout, bottombarBlockPaddingEnd } from '@dxos/react-ui-theme';\n\nimport { RevealPlayer } from './Reveal';\nimport { PresenterAction } from '../types';\n\nconst PresenterMain: FC<{ document: DocumentType }> = ({ document }) => {\n const layout = useCapability(Capabilities.Layout);\n const fullscreen = layout.layoutMode === 'fullscreen';\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n return (\n <Main.Content\n classNames={[\n fixedInsetFlexLayout,\n !fullscreen && topbarBlockPaddingStart,\n !fullscreen && bottombarBlockPaddingEnd,\n ]}\n >\n <RevealPlayer\n content={document.content.target?.content ?? ''}\n onExit={() => {\n void dispatch(createIntent(PresenterAction.TogglePresentation, { object: document, state: false }));\n }}\n />\n </Main.Content>\n );\n};\n\nexport default PresenterMain;\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// eslint-disable-next-line no-restricted-imports\nimport 'reveal.js/dist/reveal.css';\n// eslint-disable-next-line no-restricted-imports\nimport 'reveal.js/dist/theme/black.css';\n\nimport React, { useEffect, useRef } from 'react';\nimport Reveal from 'reveal.js';\nimport Markdown from 'reveal.js/plugin/markdown/plugin.js';\n// import Notes from 'reveal.js/plugin/notes/notes.js';\n\nconst styles = `\n<style type=\"text/css\">\n .reveal h1 {\n font-weight: 100;\n padding-left: 36px;\n opacity: 0.5;\n }\n .reveal h2 {\n font-weight: 100;\n padding-top: 60px;\n padding-left: 40px;\n font-size: 48px;\n opacity: 0.3;\n }\n .reveal h1, h2, p {\n font-family: \"Raleway\", sans-serif;\n text-align: left;\n font-weight: 200;\n }\n .reveal ul {\n font-family: \"Raleway\", sans-serif;\n display: block;\n list-style: \"- \";\n }\n .reveal blockquote p {\n text-align: center;\n font-weight: 100;\n padding: 32px;\n }\n</style>\n`;\n\nexport type RevealProps = {\n content: string;\n slide?: number;\n onExit?: () => void;\n};\n\n// https://revealjs.com/react\nexport const RevealPlayer = ({ content, slide, onExit }: RevealProps) => {\n const deckDivRef = useRef<HTMLDivElement>(null);\n const deckRef = useRef<Reveal.Api | null>(null);\n useEffect(() => {\n if (deckRef.current) {\n return;\n }\n\n setTimeout(async () => {\n // https://revealjs.com/config\n // https://github.com/hakimel/reveal.js\n // TODO(burdon): Fragments and scroll view steps 2 at a time (safe mode?)\n deckRef.current = new Reveal(deckDivRef.current!, {\n // view: 'scroll',\n progress: false,\n transition: 'none',\n slideNumber: false,\n embedded: true,\n // https://revealjs.com/speaker-view\n showNotes: false,\n\n center: true,\n margin: 0.01,\n minScale: 0.2,\n maxScale: 1.4,\n\n // https://revealjs.com/markdown\n plugins: [\n Markdown,\n // TODO(burdon): Requires server to serve popout window.\n // Notes\n ],\n\n // See https://marked.js.org/using_advanced#options\n markdown: {\n gfm: true,\n },\n });\n\n await deckRef.current.initialize();\n if (slide !== undefined) {\n deckRef.current.slide(slide < 0 ? deckRef.current?.getTotalSlides() + slide : slide - 1);\n }\n // TODO(burdon): Translation.\n deckRef.current.addKeyBinding({ keyCode: 27, key: 'Escape', description: 'Exit full screen' }, () => {\n onExit?.();\n });\n });\n\n return () => {\n try {\n if (deckRef.current) {\n deckRef.current.destroy();\n deckRef.current = null;\n }\n } catch (err) {\n // Ignore.\n }\n };\n });\n\n return (\n <div className='absolute inset-0 h-full'>\n <div ref={deckDivRef} className='reveal'>\n {/* TODO(burdon): Must be in head. */}\n <style>\n <link rel='preconnect' href='https://fonts.googleapis.com' />\n <link rel='preconnect' href='https://fonts.gstatic.com' {...{ crossOrigin: '' }} />\n <link\n href='https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap'\n rel='stylesheet'\n />\n </style>\n <div className='slides'>\n <div className='!text-center' />\n <section {...{ 'data-markdown': [] }}>\n <textarea {...{ 'data-template': true }} defaultValue={[styles, content].join('\\n')}></textarea>\n </section>\n </div>\n </div>\n </div>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,OAAOA,YAAwB;AAE/B,SAASC,qBAAqBC,cAAcC,eAAeC,oBAAoB;AAE/E,SAASC,YAAY;AACrB,SAASC,yBAAyBC,sBAAsBC,gCAAgC;;;ACJxF,OAAO;AAEP,OAAO;AAEP,OAAOC,SAASC,WAAWC,cAAc;AACzC,OAAOC,YAAY;AACnB,OAAOC,cAAc;AAGrB,IAAMC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCR,IAAMC,eAAe,CAAC,EAAEC,SAASC,OAAOC,OAAM,MAAe;AAClE,QAAMC,aAAaC,OAAuB,IAAA;AAC1C,QAAMC,UAAUD,OAA0B,IAAA;AAC1CE,YAAU,MAAA;AACR,QAAID,QAAQE,SAAS;AACnB;IACF;AAEAC,eAAW,YAAA;AAITH,cAAQE,UAAU,IAAIE,OAAON,WAAWI,SAAU;;QAEhDG,UAAU;QACVC,YAAY;QACZC,aAAa;QACbC,UAAU;;QAEVC,WAAW;QAEXC,QAAQ;QACRC,QAAQ;QACRC,UAAU;QACVC,UAAU;;QAGVC,SAAS;UACPC;;;QAMFC,UAAU;UACRC,KAAK;QACP;MACF,CAAA;AAEA,YAAMjB,QAAQE,QAAQgB,WAAU;AAChC,UAAItB,UAAUuB,QAAW;AACvBnB,gBAAQE,QAAQN,MAAMA,QAAQ,IAAII,QAAQE,SAASkB,eAAAA,IAAmBxB,QAAQA,QAAQ,CAAA;MACxF;AAEAI,cAAQE,QAAQmB,cAAc;QAAEC,SAAS;QAAIC,KAAK;QAAUC,aAAa;MAAmB,GAAG,MAAA;AAC7F3B,iBAAAA;MACF,CAAA;IACF,CAAA;AAEA,WAAO,MAAA;AACL,UAAI;AACF,YAAIG,QAAQE,SAAS;AACnBF,kBAAQE,QAAQuB,QAAO;AACvBzB,kBAAQE,UAAU;QACpB;MACF,SAASwB,KAAK;MAEd;IACF;EACF,CAAA;AAEA,SACE,sBAAA,cAACC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIE,KAAK/B;IAAY8B,WAAU;KAE9B,sBAAA,cAACE,SAAAA,MACC,sBAAA,cAACC,QAAAA;IAAKC,KAAI;IAAaC,MAAK;MAC5B,sBAAA,cAACF,QAAAA;IAAKC,KAAI;IAAaC,MAAK;IAAkCC,aAAa;MAC3E,sBAAA,cAACH,QAAAA;IACCE,MAAK;IACLD,KAAI;OAGR,sBAAA,cAACL,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;MACf,sBAAA,cAACO,WAAY;IAAE,iBAAiB,CAAA;EAAG,GACjC,sBAAA,cAACC,YAAAA;IAAe,iBAAiB;IAAQC,cAAc;MAAC5C;MAAQE;MAAS2C,KAAK,IAAA;;AAM1F;;;ADzHA,IAAMC,gBAAgD,CAAC,EAAEC,SAAQ,MAAE;AACjE,QAAMC,SAASC,cAAcC,aAAaC,MAAM;AAChD,QAAMC,aAAaJ,OAAOK,eAAe;AACzC,QAAM,EAAEC,iBAAiBC,SAAQ,IAAKC,oBAAAA;AAEtC,SACE,gBAAAC,OAAA,cAACC,KAAKC,SAAO;IACXC,YAAY;MACVC;MACA,CAACT,cAAcU;MACf,CAACV,cAAcW;;KAGjB,gBAAAN,OAAA,cAACO,cAAAA;IACCC,SAASlB,SAASkB,QAAQC,QAAQD,WAAW;IAC7CE,QAAQ,MAAA;AACN,WAAKZ,SAASa,aAAaC,gBAAgBC,oBAAoB;QAAEC,QAAQxB;QAAUyB,OAAO;MAAM,CAAA,CAAA;IAClG;;AAIR;AAEA,IAAA,qBAAe1B;",
|
|
6
|
-
"names": ["React", "useIntentDispatcher", "createIntent", "useCapability", "Capabilities", "Main", "topbarBlockPaddingStart", "fixedInsetFlexLayout", "bottombarBlockPaddingEnd", "React", "useEffect", "useRef", "Reveal", "Markdown", "styles", "RevealPlayer", "content", "slide", "onExit", "deckDivRef", "useRef", "deckRef", "useEffect", "current", "setTimeout", "Reveal", "progress", "transition", "slideNumber", "embedded", "showNotes", "center", "margin", "minScale", "maxScale", "plugins", "Markdown", "markdown", "gfm", "initialize", "undefined", "getTotalSlides", "addKeyBinding", "keyCode", "key", "description", "destroy", "err", "div", "className", "ref", "style", "link", "rel", "href", "crossOrigin", "section", "textarea", "defaultValue", "join", "PresenterMain", "document", "layout", "useCapability", "Capabilities", "Layout", "fullscreen", "layoutMode", "dispatchPromise", "dispatch", "useIntentDispatcher", "React", "Main", "Content", "classNames", "fixedInsetFlexLayout", "topbarBlockPaddingStart", "bottombarBlockPaddingEnd", "RevealPlayer", "content", "target", "onExit", "createIntent", "PresenterAction", "TogglePresentation", "object", "state"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/PresenterSettings.tsx", "../../../src/components/index.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Input, useTranslation } from '@dxos/react-ui';\nimport { DeprecatedFormInput } from '@dxos/react-ui-form';\n\nimport { PRESENTER_PLUGIN } from '../meta';\nimport { type PresenterSettingsProps } from '../types';\n\nexport const PresenterSettings = ({ settings }: { settings: PresenterSettingsProps }) => {\n const { t } = useTranslation(PRESENTER_PLUGIN);\n\n return (\n <>\n <DeprecatedFormInput label={t('present collections label')}>\n <Input.Switch\n checked={settings.presentCollections}\n onCheckedChange={(checked) => (settings.presentCollections = !!checked)}\n />\n </DeprecatedFormInput>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './PresenterSettings';\n\nexport const RevealMain = lazy(() => import('./RevealMain'));\nexport const PresenterMain = lazy(() => import('./PresenterMain'));\nexport const MarkdownSlide = lazy(() => import('./MarkdownSlide'));\n"],
|
|
5
|
-
"mappings": ";;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,OAAOC,sBAAsB;AACtC,SAASC,2BAA2B;AAK7B,IAAMC,oBAAoB,CAAC,EAAEC,SAAQ,MAAwC;AAClF,QAAM,EAAEC,EAAC,IAAKC,eAAeC,gBAAAA;AAE7B,SACE,sBAAA,cAAA,MAAA,UAAA,MACE,sBAAA,cAACC,qBAAAA;IAAoBC,OAAOJ,EAAE,2BAAA;KAC5B,sBAAA,cAACK,MAAMC,QAAM;IACXC,SAASR,SAASS;IAClBC,iBAAiB,CAACF,YAAaR,SAASS,qBAAqB,CAAC,CAACD;;AAKzE;;;ACrBA,SAASG,YAAY;AAId,IAAMC,aAAaC,KAAK,MAAM,OAAO,2BAAA,CAAA;AACrC,IAAMC,gBAAgBD,KAAK,MAAM,OAAO,8BAAA,CAAA;AACxC,IAAME,gBAAgBF,KAAK,MAAM,OAAO,8BAAA,CAAA;",
|
|
6
|
-
"names": ["React", "Input", "useTranslation", "DeprecatedFormInput", "PresenterSettings", "settings", "t", "useTranslation", "PRESENTER_PLUGIN", "DeprecatedFormInput", "label", "Input", "Switch", "checked", "presentCollections", "onCheckedChange", "lazy", "RevealMain", "lazy", "PresenterMain", "MarkdownSlide"]
|
|
7
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PresenterCapabilities
|
|
3
|
-
} from "./chunk-MSAMS5TA.mjs";
|
|
4
|
-
import {
|
|
5
|
-
PresenterAction
|
|
6
|
-
} from "./chunk-SFMK6EE3.mjs";
|
|
7
|
-
import "./chunk-Q5U3VOZB.mjs";
|
|
8
|
-
|
|
9
|
-
// packages/plugins/plugin-presenter/src/capabilities/intent-resolver.ts
|
|
10
|
-
import { Capabilities, contributes, createIntent, createResolver, LayoutAction, NavigationAction } from "@dxos/app-framework";
|
|
11
|
-
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
12
|
-
var intent_resolver_default = (context) => contributes(Capabilities.IntentResolver, createResolver(PresenterAction.TogglePresentation, ({ object, state: next }) => {
|
|
13
|
-
const state = context.requestCapability(PresenterCapabilities.MutableState);
|
|
14
|
-
state.presenting = next ?? !state.presenting;
|
|
15
|
-
if (state.presenting) {
|
|
16
|
-
return {
|
|
17
|
-
intents: [
|
|
18
|
-
createIntent(LayoutAction.SetLayoutMode, {
|
|
19
|
-
layoutMode: "fullscreen"
|
|
20
|
-
}),
|
|
21
|
-
createIntent(NavigationAction.Open, {
|
|
22
|
-
activeParts: {
|
|
23
|
-
fullScreen: fullyQualifiedId(object)
|
|
24
|
-
}
|
|
25
|
-
})
|
|
26
|
-
]
|
|
27
|
-
};
|
|
28
|
-
} else {
|
|
29
|
-
return {
|
|
30
|
-
intents: [
|
|
31
|
-
createIntent(LayoutAction.SetLayoutMode, {
|
|
32
|
-
revert: true
|
|
33
|
-
}),
|
|
34
|
-
createIntent(NavigationAction.Close, {
|
|
35
|
-
activeParts: {
|
|
36
|
-
fullScreen: fullyQualifiedId(object)
|
|
37
|
-
}
|
|
38
|
-
})
|
|
39
|
-
]
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
}));
|
|
43
|
-
export {
|
|
44
|
-
intent_resolver_default as default
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=intent-resolver-CAYS4SCJ.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/intent-resolver.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport {\n Capabilities,\n contributes,\n createIntent,\n createResolver,\n LayoutAction,\n NavigationAction,\n type PluginsContext,\n} from '@dxos/app-framework';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { PresenterCapabilities } from './capabilities';\nimport { PresenterAction } from '../types';\n\nexport default (context: PluginsContext) =>\n contributes(\n Capabilities.IntentResolver,\n createResolver(PresenterAction.TogglePresentation, ({ object, state: next }) => {\n const state = context.requestCapability(PresenterCapabilities.MutableState);\n state.presenting = next ?? !state.presenting;\n\n if (state.presenting) {\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, { layoutMode: 'fullscreen' }),\n createIntent(NavigationAction.Open, { activeParts: { fullScreen: fullyQualifiedId(object) } }),\n ],\n };\n } else {\n return {\n intents: [\n createIntent(LayoutAction.SetLayoutMode, { revert: true }),\n createIntent(NavigationAction.Close, { activeParts: { fullScreen: fullyQualifiedId(object) } }),\n ],\n };\n }\n }),\n );\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;AAIA,SACEA,cACAC,aACAC,cACAC,gBACAC,cACAC,wBAEK;AACP,SAASC,wBAAwB;AAKjC,IAAA,0BAAe,CAACC,YACdC,YACEC,aAAaC,gBACbC,eAAeC,gBAAgBC,oBAAoB,CAAC,EAAEC,QAAQC,OAAOC,KAAI,MAAE;AACzE,QAAMD,QAAQR,QAAQU,kBAAkBC,sBAAsBC,YAAY;AAC1EJ,QAAMK,aAAaJ,QAAQ,CAACD,MAAMK;AAElC,MAAIL,MAAMK,YAAY;AACpB,WAAO;MACLC,SAAS;QACPC,aAAaC,aAAaC,eAAe;UAAEC,YAAY;QAAa,CAAA;QACpEH,aAAaI,iBAAiBC,MAAM;UAAEC,aAAa;YAAEC,YAAYC,iBAAiBhB,MAAAA;UAAQ;QAAE,CAAA;;IAEhG;EACF,OAAO;AACL,WAAO;MACLO,SAAS;QACPC,aAAaC,aAAaC,eAAe;UAAEO,QAAQ;QAAK,CAAA;QACxDT,aAAaI,iBAAiBM,OAAO;UAAEJ,aAAa;YAAEC,YAAYC,iBAAiBhB,MAAAA;UAAQ;QAAE,CAAA;;IAEjG;EACF;AACF,CAAA,CAAA;",
|
|
6
|
-
"names": ["Capabilities", "contributes", "createIntent", "createResolver", "LayoutAction", "NavigationAction", "fullyQualifiedId", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "PresenterAction", "TogglePresentation", "object", "state", "next", "requestCapability", "PresenterCapabilities", "MutableState", "presenting", "intents", "createIntent", "LayoutAction", "SetLayoutMode", "layoutMode", "NavigationAction", "Open", "activeParts", "fullScreen", "fullyQualifiedId", "revert", "Close"]
|
|
7
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PresenterCapabilities
|
|
3
|
-
} from "./chunk-MSAMS5TA.mjs";
|
|
4
|
-
import {
|
|
5
|
-
PresenterContext
|
|
6
|
-
} from "./chunk-SFMK6EE3.mjs";
|
|
7
|
-
import {
|
|
8
|
-
PRESENTER_PLUGIN
|
|
9
|
-
} from "./chunk-Q5U3VOZB.mjs";
|
|
10
|
-
|
|
11
|
-
// packages/plugins/plugin-presenter/src/capabilities/react-context.tsx
|
|
12
|
-
import React from "react";
|
|
13
|
-
import { Capabilities, contributes, useCapability } from "@dxos/app-framework";
|
|
14
|
-
var react_context_default = () => contributes(Capabilities.ReactContext, {
|
|
15
|
-
id: PRESENTER_PLUGIN,
|
|
16
|
-
context: ({ children }) => {
|
|
17
|
-
const state = useCapability(PresenterCapabilities.MutableState);
|
|
18
|
-
return /* @__PURE__ */ React.createElement(PresenterContext.Provider, {
|
|
19
|
-
value: {
|
|
20
|
-
running: state.presenting,
|
|
21
|
-
start: () => state.presenting = true,
|
|
22
|
-
stop: () => state.presenting = false
|
|
23
|
-
}
|
|
24
|
-
}, children);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
export {
|
|
28
|
-
react_context_default as default
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=react-context-A3AXJRTF.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-context.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, useCapability } from '@dxos/app-framework';\n\nimport { PresenterCapabilities } from './capabilities';\nimport { PRESENTER_PLUGIN } from '../meta';\nimport { PresenterContext } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactContext, {\n id: PRESENTER_PLUGIN,\n context: ({ children }) => {\n const state = useCapability(PresenterCapabilities.MutableState);\n\n return (\n <PresenterContext.Provider\n value={{\n running: state.presenting,\n start: () => (state.presenting = true),\n stop: () => (state.presenting = false),\n }}\n >\n {children}\n </PresenterContext.Provider>\n );\n },\n });\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,qBAAqB;AAMzD,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,IAAIC;EACJC,SAAS,CAAC,EAAEC,SAAQ,MAAE;AACpB,UAAMC,QAAQC,cAAcC,sBAAsBC,YAAY;AAE9D,WACE,sBAAA,cAACC,iBAAiBC,UAAQ;MACxBC,OAAO;QACLC,SAASP,MAAMQ;QACfC,OAAO,MAAOT,MAAMQ,aAAa;QACjCE,MAAM,MAAOV,MAAMQ,aAAa;MAClC;OAECT,QAAAA;EAGP;AACF,CAAA;",
|
|
6
|
-
"names": ["React", "Capabilities", "contributes", "useCapability", "contributes", "Capabilities", "ReactContext", "id", "PRESENTER_PLUGIN", "context", "children", "state", "useCapability", "PresenterCapabilities", "MutableState", "PresenterContext", "Provider", "value", "running", "presenting", "start", "stop"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/react-surface.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { DocumentType } from '@dxos/plugin-markdown/types';\nimport { CollectionType } from '@dxos/plugin-space/types';\n\nimport { MarkdownSlide, PresenterSettings, PresenterMain, RevealMain } from '../components';\nimport { PRESENTER_PLUGIN } from '../meta';\nimport { type PresenterSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${PRESENTER_PLUGIN}/document`,\n role: 'main',\n disposition: 'hoist',\n filter: (data): data is { subject: DocumentType } => data.subject instanceof DocumentType,\n component: ({ data }) => <RevealMain document={data.subject} />,\n }),\n createSurface({\n id: `${PRESENTER_PLUGIN}/collection`,\n role: 'main',\n disposition: 'hoist',\n filter: (data): data is { subject: CollectionType } => data.subject instanceof CollectionType,\n component: ({ data }) => <PresenterMain collection={data.subject} />,\n }),\n createSurface({\n id: `${PRESENTER_PLUGIN}/slide`,\n role: 'slide',\n filter: (data): data is { subject: DocumentType } => data.subject instanceof DocumentType,\n component: ({ data }) => <MarkdownSlide document={data.subject} />,\n }),\n createSurface({\n id: `${PRESENTER_PLUGIN}/settings`,\n role: 'settings',\n filter: (data): data is any => data.subject === PRESENTER_PLUGIN,\n component: () => {\n const settings = useCapability(Capabilities.SettingsStore).getStore<PresenterSettingsProps>(\n PRESENTER_PLUGIN,\n )!.value;\n return <PresenterSettings settings={settings} />;\n },\n }),\n ]);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,eAAeC,qBAAqB;AACxE,SAASC,oBAAoB;AAC7B,SAASC,sBAAsB;AAM/B,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,aAAa;IACbC,QAAQ,CAACC,SAA4CA,KAAKC,mBAAmBC;IAC7EC,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACI,YAAAA;MAAWC,UAAUL,KAAKC;;EACtD,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNC,aAAa;IACbC,QAAQ,CAACC,SAA8CA,KAAKC,mBAAmBK;IAC/EH,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACO,eAAAA;MAAcC,YAAYR,KAAKC;;EAC3D,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNE,QAAQ,CAACC,SAA4CA,KAAKC,mBAAmBC;IAC7EC,WAAW,CAAC,EAAEH,KAAI,MAAO,sBAAA,cAACS,eAAAA;MAAcJ,UAAUL,KAAKC;;EACzD,CAAA;EACAP,cAAc;IACZC,IAAI,GAAGC,gBAAAA;IACPC,MAAM;IACNE,QAAQ,CAACC,SAAsBA,KAAKC,YAAYL;IAChDO,WAAW,MAAA;AACT,YAAMO,WAAWC,cAAcnB,aAAaoB,aAAa,EAAEC,SACzDjB,gBAAAA,EACCkB;AACH,aAAO,sBAAA,cAACC,mBAAAA;QAAkBL;;IAC5B;EACF,CAAA;CACD;",
|
|
6
|
-
"names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "DocumentType", "CollectionType", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "PRESENTER_PLUGIN", "role", "disposition", "filter", "data", "subject", "DocumentType", "component", "RevealMain", "document", "CollectionType", "PresenterMain", "collection", "MarkdownSlide", "settings", "useCapability", "SettingsStore", "getStore", "value", "PresenterSettings"]
|
|
7
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
declare const _default: () => import("@dxos/app-framework").Capability<Readonly<{
|
|
3
|
-
id: string;
|
|
4
|
-
dependsOn?: string[];
|
|
5
|
-
context: React.FC<React.PropsWithChildren>;
|
|
6
|
-
}>>;
|
|
7
|
-
export default _default;
|
|
8
|
-
//# sourceMappingURL=react-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-context.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/react-context.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;;;;;;AAQ1B,wBAkBK"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2025 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React from 'react';
|
|
6
|
-
|
|
7
|
-
import { Capabilities, contributes, useCapability } from '@dxos/app-framework';
|
|
8
|
-
|
|
9
|
-
import { PresenterCapabilities } from './capabilities';
|
|
10
|
-
import { PRESENTER_PLUGIN } from '../meta';
|
|
11
|
-
import { PresenterContext } from '../types';
|
|
12
|
-
|
|
13
|
-
export default () =>
|
|
14
|
-
contributes(Capabilities.ReactContext, {
|
|
15
|
-
id: PRESENTER_PLUGIN,
|
|
16
|
-
context: ({ children }) => {
|
|
17
|
-
const state = useCapability(PresenterCapabilities.MutableState);
|
|
18
|
-
|
|
19
|
-
return (
|
|
20
|
-
<PresenterContext.Provider
|
|
21
|
-
value={{
|
|
22
|
-
running: state.presenting,
|
|
23
|
-
start: () => (state.presenting = true),
|
|
24
|
-
stop: () => (state.presenting = false),
|
|
25
|
-
}}
|
|
26
|
-
>
|
|
27
|
-
{children}
|
|
28
|
-
</PresenterContext.Provider>
|
|
29
|
-
);
|
|
30
|
-
},
|
|
31
|
-
});
|