@dxos/plugin-presenter 0.8.4-main.9735255 → 0.8.4-main.abd8ff62ef
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/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +18 -50
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operations/index.mjs +30 -0
- package/dist/lib/browser/operations/index.mjs.map +7 -0
- package/dist/lib/browser/translations.mjs +19 -0
- package/dist/lib/browser/translations.mjs.map +7 -0
- package/dist/types/src/PresenterPlugin.d.ts +1 -0
- package/dist/types/src/PresenterPlugin.d.ts.map +1 -1
- package/dist/types/src/PresenterPlugin.node.d.ts +4 -0
- package/dist/types/src/PresenterPlugin.node.d.ts.map +1 -0
- package/dist/types/src/PresenterPlugin.test.d.ts +2 -0
- package/dist/types/src/PresenterPlugin.test.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +4 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +7 -0
- package/dist/types/src/capabilities/settings.d.ts.map +1 -0
- package/dist/types/src/components/Markdown/Panel.d.ts +8 -0
- package/dist/types/src/components/Markdown/Panel.d.ts.map +1 -0
- package/dist/types/src/components/Markdown/{Container.stories.d.ts → Panel.stories.d.ts} +1 -1
- package/dist/types/src/components/Markdown/Panel.stories.d.ts.map +1 -0
- package/dist/types/src/components/Markdown/Slide.d.ts +1 -1
- package/dist/types/src/components/Markdown/Slide.d.ts.map +1 -1
- package/dist/types/src/components/Markdown/Slide.stories.d.ts.map +1 -1
- package/dist/types/src/components/Markdown/index.d.ts +1 -1
- package/dist/types/src/components/Markdown/index.d.ts.map +1 -1
- package/dist/types/src/components/Markdown/theme.d.ts.map +1 -1
- package/dist/types/src/components/Presenter/Layout.d.ts +5 -5
- package/dist/types/src/components/Presenter/Layout.d.ts.map +1 -1
- package/dist/types/src/components/Presenter/Pager.d.ts.map +1 -1
- package/dist/types/src/components/Presenter/Pager.stories.d.ts.map +1 -1
- package/dist/types/src/components/PresenterSettings/PresenterSettings.d.ts +6 -0
- package/dist/types/src/components/PresenterSettings/PresenterSettings.d.ts.map +1 -0
- package/dist/types/src/components/PresenterSettings/PresenterSettings.stories.d.ts +23 -0
- package/dist/types/src/components/PresenterSettings/PresenterSettings.stories.d.ts.map +1 -0
- package/dist/types/src/components/PresenterSettings/index.d.ts +2 -0
- package/dist/types/src/components/PresenterSettings/index.d.ts.map +1 -0
- package/dist/types/src/components/RevealPlayer/RevealPlayer.d.ts +5 -4
- package/dist/types/src/components/RevealPlayer/RevealPlayer.d.ts.map +1 -1
- package/dist/types/src/components/RevealPlayer/RevealPlayer.stories.d.ts +7 -6
- package/dist/types/src/components/RevealPlayer/RevealPlayer.stories.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -28
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/CollectionPresenterContainer/CollectionPresenterContainer.d.ts +6 -0
- package/dist/types/src/containers/CollectionPresenterContainer/CollectionPresenterContainer.d.ts.map +1 -0
- package/dist/types/src/containers/CollectionPresenterContainer/index.d.ts +2 -0
- package/dist/types/src/containers/CollectionPresenterContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/DocumentPresenterContainer/DocumentPresenterContainer.d.ts +6 -0
- package/dist/types/src/containers/DocumentPresenterContainer/DocumentPresenterContainer.d.ts.map +1 -0
- package/dist/types/src/containers/DocumentPresenterContainer/index.d.ts +2 -0
- package/dist/types/src/containers/DocumentPresenterContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownSlide/MarkdownSlide.d.ts +8 -0
- package/dist/types/src/containers/MarkdownSlide/MarkdownSlide.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownSlide/index.d.ts +2 -0
- package/dist/types/src/containers/MarkdownSlide/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +5 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/operations/definitions.d.ts +17 -0
- package/dist/types/src/operations/definitions.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +2 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +4 -6
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Settings.d.ts +7 -0
- package/dist/types/src/types/Settings.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +15 -0
- package/dist/types/src/types/index.d.ts.map +1 -0
- package/dist/types/src/useExitPresenter.d.ts +1 -1
- package/dist/types/src/useExitPresenter.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +64 -38
- package/src/PresenterPlugin.node.ts +16 -0
- package/src/PresenterPlugin.test.ts +23 -0
- package/src/PresenterPlugin.tsx +11 -8
- package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +27 -28
- package/src/capabilities/index.ts +5 -3
- package/src/capabilities/react-surface.tsx +68 -0
- package/src/capabilities/{settings/settings.ts → settings.ts} +7 -6
- package/src/components/Markdown/{Container.stories.tsx → Panel.stories.tsx} +7 -7
- package/src/components/Markdown/{Container.tsx → Panel.tsx} +5 -5
- package/src/components/Markdown/Slide.stories.tsx +4 -4
- package/src/components/Markdown/Slide.tsx +2 -2
- package/src/components/Markdown/index.ts +1 -1
- package/src/components/Markdown/theme.ts +6 -6
- package/src/components/Presenter/Layout.tsx +24 -23
- package/src/components/Presenter/Pager.stories.tsx +2 -2
- package/src/components/PresenterSettings/PresenterSettings.stories.tsx +32 -0
- package/src/components/PresenterSettings/PresenterSettings.tsx +31 -0
- package/src/components/PresenterSettings/index.ts +5 -0
- package/src/components/RevealPlayer/RevealPlayer.stories.tsx +5 -5
- package/src/components/RevealPlayer/RevealPlayer.tsx +104 -105
- package/src/components/index.ts +5 -5
- package/src/containers/CollectionPresenterContainer/CollectionPresenterContainer.tsx +50 -0
- package/src/containers/CollectionPresenterContainer/index.ts +5 -0
- package/src/containers/DocumentPresenterContainer/DocumentPresenterContainer.tsx +24 -0
- package/src/containers/DocumentPresenterContainer/index.ts +5 -0
- package/src/{components → containers/MarkdownSlide}/MarkdownSlide.tsx +4 -6
- package/src/containers/MarkdownSlide/index.ts +5 -0
- package/src/containers/index.ts +9 -0
- package/src/index.ts +5 -2
- package/src/meta.ts +1 -1
- package/src/operations/definitions.ts +23 -0
- package/src/operations/index.ts +5 -0
- package/src/testing.ts +6 -6
- package/src/translations.ts +4 -5
- package/src/types/Settings.ts +20 -0
- package/src/types/index.ts +30 -0
- package/src/useExitPresenter.ts +11 -9
- package/dist/lib/browser/CollectionPresenterContainer-IHDZWP3U.mjs +0 -176
- package/dist/lib/browser/CollectionPresenterContainer-IHDZWP3U.mjs.map +0 -7
- package/dist/lib/browser/DocumentPresenterContainer-74M6XAAI.mjs +0 -173
- package/dist/lib/browser/DocumentPresenterContainer-74M6XAAI.mjs.map +0 -7
- package/dist/lib/browser/MarkdownSlide-GIYJABHE.mjs +0 -200
- package/dist/lib/browser/MarkdownSlide-GIYJABHE.mjs.map +0 -7
- package/dist/lib/browser/app-graph-builder-2QAQR34J.mjs +0 -112
- package/dist/lib/browser/app-graph-builder-2QAQR34J.mjs.map +0 -7
- package/dist/lib/browser/chunk-4PZXJXBO.mjs +0 -50
- package/dist/lib/browser/chunk-4PZXJXBO.mjs.map +0 -7
- package/dist/lib/browser/chunk-5MC4V23G.mjs +0 -38
- package/dist/lib/browser/chunk-5MC4V23G.mjs.map +0 -7
- package/dist/lib/browser/chunk-GM4KOXJY.mjs +0 -41
- package/dist/lib/browser/chunk-GM4KOXJY.mjs.map +0 -7
- package/dist/lib/browser/chunk-VQVZVXPJ.mjs +0 -18
- package/dist/lib/browser/chunk-VQVZVXPJ.mjs.map +0 -7
- package/dist/lib/browser/react-surface-2VP2M4Z7.mjs +0 -63
- package/dist/lib/browser/react-surface-2VP2M4Z7.mjs.map +0 -7
- package/dist/lib/browser/settings-RDHXCCT4.mjs +0 -31
- package/dist/lib/browser/settings-RDHXCCT4.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/index.d.ts +0 -7
- package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings/settings.d.ts +0 -9
- package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
- package/dist/types/src/components/CollectionPresenterContainer.d.ts +0 -7
- package/dist/types/src/components/CollectionPresenterContainer.d.ts.map +0 -1
- package/dist/types/src/components/DocumentPresenterContainer.d.ts +0 -7
- package/dist/types/src/components/DocumentPresenterContainer.d.ts.map +0 -1
- package/dist/types/src/components/Markdown/Container.d.ts +0 -8
- package/dist/types/src/components/Markdown/Container.d.ts.map +0 -1
- package/dist/types/src/components/Markdown/Container.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownSlide.d.ts +0 -8
- package/dist/types/src/components/MarkdownSlide.d.ts.map +0 -1
- package/dist/types/src/components/PresenterSettings.d.ts +0 -8
- package/dist/types/src/components/PresenterSettings.d.ts.map +0 -1
- package/dist/types/src/types.d.ts +0 -49
- package/dist/types/src/types.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder/index.ts +0 -7
- package/src/capabilities/react-surface/index.ts +0 -7
- package/src/capabilities/react-surface/react-surface.tsx +0 -70
- package/src/capabilities/settings/index.ts +0 -7
- package/src/components/CollectionPresenterContainer.tsx +0 -43
- package/src/components/DocumentPresenterContainer.tsx +0 -23
- package/src/components/PresenterSettings.tsx +0 -35
- package/src/types.ts +0 -54
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2023 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { type Atom } from '@effect-atom/atom-react';
|
|
6
|
+
import { type Context, createContext } from 'react';
|
|
7
|
+
|
|
8
|
+
import { Capability } from '@dxos/app-framework';
|
|
9
|
+
|
|
10
|
+
import { meta } from '#meta';
|
|
11
|
+
|
|
12
|
+
import * as Settings from './Settings';
|
|
13
|
+
|
|
14
|
+
export type PresenterContextType = {
|
|
15
|
+
running: boolean;
|
|
16
|
+
start: () => void;
|
|
17
|
+
stop: () => void;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const PresenterContext: Context<PresenterContextType> = createContext<PresenterContextType>({
|
|
21
|
+
running: false,
|
|
22
|
+
start: () => {},
|
|
23
|
+
stop: () => {},
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export * as Settings from './Settings';
|
|
27
|
+
|
|
28
|
+
export namespace PresenterCapabilities {
|
|
29
|
+
export const Settings = Capability.make<Atom.Writable<Settings.Settings>>(`${meta.id}.capability.settings`);
|
|
30
|
+
}
|
package/src/useExitPresenter.ts
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
import { useAtomValue } from '@effect-atom/atom-react';
|
|
6
6
|
import { useCallback, useMemo } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { useCapability, useOperationInvoker } from '@dxos/app-framework/ui';
|
|
9
|
+
import { LayoutOperation, getObjectPathFromObject, getSpacePath } from '@dxos/app-toolkit';
|
|
10
10
|
import { Obj } from '@dxos/echo';
|
|
11
11
|
import { DeckCapabilities } from '@dxos/plugin-deck';
|
|
12
|
-
import { DeckOperation } from '@dxos/plugin-deck/
|
|
12
|
+
import { DeckOperation } from '@dxos/plugin-deck/operations';
|
|
13
13
|
|
|
14
14
|
export const useExitPresenter = (object: any) => {
|
|
15
15
|
const { invokePromise } = useOperationInvoker();
|
|
@@ -20,16 +20,18 @@ export const useExitPresenter = (object: any) => {
|
|
|
20
20
|
const deck = useMemo(() => state.decks[state.activeDeck], [state.decks, state.activeDeck]);
|
|
21
21
|
|
|
22
22
|
return useCallback(() => {
|
|
23
|
-
const
|
|
23
|
+
const objectPath = getObjectPathFromObject(object);
|
|
24
|
+
const db = Obj.getDatabase(object);
|
|
24
25
|
if (deck?.fullscreen) {
|
|
25
26
|
void invokePromise(DeckOperation.Adjust, {
|
|
26
|
-
type: 'solo--fullscreen',
|
|
27
|
-
id:
|
|
27
|
+
type: 'solo--fullscreen' as const,
|
|
28
|
+
id: objectPath,
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
|
|
32
|
+
return invokePromise(LayoutOperation.Open, {
|
|
33
|
+
subject: [objectPath],
|
|
34
|
+
workspace: db ? getSpacePath(db.spaceId) : undefined,
|
|
33
35
|
});
|
|
34
36
|
}, [invokePromise, object, deck]);
|
|
35
37
|
};
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useExitPresenter
|
|
3
|
-
} from "./chunk-GM4KOXJY.mjs";
|
|
4
|
-
import {
|
|
5
|
-
PresenterContext
|
|
6
|
-
} from "./chunk-4PZXJXBO.mjs";
|
|
7
|
-
import "./chunk-VQVZVXPJ.mjs";
|
|
8
|
-
|
|
9
|
-
// src/components/CollectionPresenterContainer.tsx
|
|
10
|
-
import React3, { useContext, useState } from "react";
|
|
11
|
-
import { Surface } from "@dxos/app-framework/react";
|
|
12
|
-
import { Layout as Layout2 } from "@dxos/react-ui-mosaic";
|
|
13
|
-
|
|
14
|
-
// src/components/Presenter/Layout.tsx
|
|
15
|
-
import React from "react";
|
|
16
|
-
import { mx } from "@dxos/ui-theme";
|
|
17
|
-
var Layout = ({ children, classNames, topLeft, topRight, bottomLeft, bottomRight }) => {
|
|
18
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
19
|
-
className: mx("flex grow relative overflow-hidden bg-attention", classNames)
|
|
20
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
21
|
-
className: mx("flex flex-col grow overflow-hidden")
|
|
22
|
-
}, children), /* @__PURE__ */ React.createElement("div", {
|
|
23
|
-
className: "z-[200]"
|
|
24
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
25
|
-
className: "absolute top-4 left-4"
|
|
26
|
-
}, topLeft), /* @__PURE__ */ React.createElement("div", {
|
|
27
|
-
className: "absolute top-4 right-4"
|
|
28
|
-
}, topRight), /* @__PURE__ */ React.createElement("div", {
|
|
29
|
-
className: "absolute bottom-4 left-4"
|
|
30
|
-
}, bottomLeft), /* @__PURE__ */ React.createElement("div", {
|
|
31
|
-
className: "absolute bottom-4 right-4"
|
|
32
|
-
}, bottomRight)));
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
// src/components/Presenter/Pager.tsx
|
|
36
|
-
import React2, { useEffect } from "react";
|
|
37
|
-
import { IconButton, useControlledState } from "@dxos/react-ui";
|
|
38
|
-
var Pager = ({ index: indexProp = 0, count = 0, keys, onChange, onExit }) => {
|
|
39
|
-
const [index, setIndex] = useControlledState(indexProp);
|
|
40
|
-
useEffect(() => {
|
|
41
|
-
onChange?.(index);
|
|
42
|
-
}, [
|
|
43
|
-
index
|
|
44
|
-
]);
|
|
45
|
-
const handleChangeIndex = (dir) => {
|
|
46
|
-
setIndex((index2) => {
|
|
47
|
-
const next = index2 + dir;
|
|
48
|
-
return next >= 0 && next < count ? next : index2;
|
|
49
|
-
});
|
|
50
|
-
};
|
|
51
|
-
useEffect(() => {
|
|
52
|
-
if (!keys) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const keydownHandler = (event) => {
|
|
56
|
-
switch (event.key) {
|
|
57
|
-
case "Escape": {
|
|
58
|
-
onExit?.();
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
case "ArrowLeft": {
|
|
62
|
-
if (event.shiftKey) {
|
|
63
|
-
onChange?.(0);
|
|
64
|
-
} else {
|
|
65
|
-
handleChangeIndex(-1);
|
|
66
|
-
}
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
case "ArrowRight": {
|
|
70
|
-
if (event.shiftKey) {
|
|
71
|
-
onChange?.(count - 1);
|
|
72
|
-
} else {
|
|
73
|
-
handleChangeIndex(1);
|
|
74
|
-
}
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
case "ArrowUp": {
|
|
78
|
-
onChange?.(0);
|
|
79
|
-
break;
|
|
80
|
-
}
|
|
81
|
-
case "ArrowDown": {
|
|
82
|
-
onChange?.(count - 1);
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
window.addEventListener("keydown", keydownHandler);
|
|
88
|
-
return () => window.removeEventListener("keydown", keydownHandler);
|
|
89
|
-
}, [
|
|
90
|
-
keys,
|
|
91
|
-
count
|
|
92
|
-
]);
|
|
93
|
-
if (index === void 0 || !count) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
return /* @__PURE__ */ React2.createElement("div", {
|
|
97
|
-
className: "flex items-center text-neutral-500"
|
|
98
|
-
}, /* @__PURE__ */ React2.createElement(IconButton, {
|
|
99
|
-
icon: "ph--caret-double-left--regular",
|
|
100
|
-
size: 6,
|
|
101
|
-
label: "Jump to first",
|
|
102
|
-
iconOnly: true,
|
|
103
|
-
noTooltip: true,
|
|
104
|
-
variant: "ghost",
|
|
105
|
-
classNames: "p-0",
|
|
106
|
-
onClick: () => onChange?.(0)
|
|
107
|
-
}), /* @__PURE__ */ React2.createElement(IconButton, {
|
|
108
|
-
icon: "ph--caret-left--regular",
|
|
109
|
-
size: 6,
|
|
110
|
-
label: "Previous",
|
|
111
|
-
iconOnly: true,
|
|
112
|
-
noTooltip: true,
|
|
113
|
-
variant: "ghost",
|
|
114
|
-
classNames: "p-0",
|
|
115
|
-
onClick: () => handleChangeIndex(-1)
|
|
116
|
-
}), /* @__PURE__ */ React2.createElement(IconButton, {
|
|
117
|
-
icon: "ph--caret-right--regular",
|
|
118
|
-
size: 6,
|
|
119
|
-
label: "Next",
|
|
120
|
-
iconOnly: true,
|
|
121
|
-
noTooltip: true,
|
|
122
|
-
variant: "ghost",
|
|
123
|
-
classNames: "p-0",
|
|
124
|
-
onClick: () => handleChangeIndex(1)
|
|
125
|
-
}), /* @__PURE__ */ React2.createElement(IconButton, {
|
|
126
|
-
icon: "ph--caret-double-right--regular",
|
|
127
|
-
size: 6,
|
|
128
|
-
label: "Jump to last",
|
|
129
|
-
iconOnly: true,
|
|
130
|
-
noTooltip: true,
|
|
131
|
-
variant: "ghost",
|
|
132
|
-
classNames: "p-0",
|
|
133
|
-
onClick: () => onChange?.(count - 1)
|
|
134
|
-
}));
|
|
135
|
-
};
|
|
136
|
-
var PageNumber = ({ index = 0, count = 1 }) => {
|
|
137
|
-
if (index === void 0 || !count) {
|
|
138
|
-
return null;
|
|
139
|
-
}
|
|
140
|
-
return /* @__PURE__ */ React2.createElement("div", {
|
|
141
|
-
className: "flex items-center text-neutral-500 text-2xl"
|
|
142
|
-
}, /* @__PURE__ */ React2.createElement("div", null, index + 1, " / ", count));
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
// src/components/CollectionPresenterContainer.tsx
|
|
146
|
-
var CollectionPresenterContainer = ({ role, subject: collection }) => {
|
|
147
|
-
const [slide, setSlide] = useState(0);
|
|
148
|
-
const { running } = useContext(PresenterContext);
|
|
149
|
-
const handleExit = useExitPresenter(collection);
|
|
150
|
-
return /* @__PURE__ */ React3.createElement(Layout2.Main, {
|
|
151
|
-
role,
|
|
152
|
-
classNames: "relative"
|
|
153
|
-
}, /* @__PURE__ */ React3.createElement(Layout, {
|
|
154
|
-
bottomRight: /* @__PURE__ */ React3.createElement(PageNumber, {
|
|
155
|
-
index: slide,
|
|
156
|
-
count: collection.objects.length
|
|
157
|
-
}),
|
|
158
|
-
bottomLeft: /* @__PURE__ */ React3.createElement(Pager, {
|
|
159
|
-
index: slide,
|
|
160
|
-
count: collection.objects.length,
|
|
161
|
-
keys: running,
|
|
162
|
-
onChange: setSlide,
|
|
163
|
-
onExit: handleExit
|
|
164
|
-
})
|
|
165
|
-
}, /* @__PURE__ */ React3.createElement(Surface, {
|
|
166
|
-
role: "slide",
|
|
167
|
-
data: {
|
|
168
|
-
subject: collection.objects[slide]
|
|
169
|
-
}
|
|
170
|
-
})));
|
|
171
|
-
};
|
|
172
|
-
var CollectionPresenterContainer_default = CollectionPresenterContainer;
|
|
173
|
-
export {
|
|
174
|
-
CollectionPresenterContainer_default as default
|
|
175
|
-
};
|
|
176
|
-
//# sourceMappingURL=CollectionPresenterContainer-IHDZWP3U.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/CollectionPresenterContainer.tsx", "../../../src/components/Presenter/Layout.tsx", "../../../src/components/Presenter/Pager.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useContext, useState } from 'react';\n\nimport { Surface, type SurfaceComponentProps } from '@dxos/app-framework/react';\nimport { Layout } from '@dxos/react-ui-mosaic';\nimport { type Collection } from '@dxos/schema';\n\nimport { PresenterContext } from '../types';\nimport { useExitPresenter } from '../useExitPresenter';\n\nimport { PageNumber, Pager, Layout as PresenterLayout } from './Presenter';\n\ntype CollectionPresenterContainerProps = SurfaceComponentProps<Collection.Collection>;\n\nconst CollectionPresenterContainer = ({ role, subject: collection }: CollectionPresenterContainerProps) => {\n const [slide, setSlide] = useState(0);\n const { running } = useContext(PresenterContext);\n const handleExit = useExitPresenter(collection);\n\n return (\n <Layout.Main role={role} classNames='relative'>\n <PresenterLayout\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={handleExit}\n />\n }\n >\n <Surface role='slide' data={{ subject: collection.objects[slide] }} />\n </PresenterLayout>\n </Layout.Main>\n );\n};\n\nexport default CollectionPresenterContainer;\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/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 React, { useEffect } from 'react';\n\nimport { IconButton, useControlledState } from '@dxos/react-ui';\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: indexProp = 0, count = 0, keys, onChange, onExit }: PagerProps) => {\n const [index, setIndex] = useControlledState(indexProp);\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 <IconButton\n icon='ph--caret-double-left--regular'\n size={6}\n label='Jump to first'\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0'\n onClick={() => onChange?.(0)}\n />\n <IconButton\n icon='ph--caret-left--regular'\n size={6}\n label='Previous'\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0'\n onClick={() => handleChangeIndex(-1)}\n />\n <IconButton\n icon='ph--caret-right--regular'\n size={6}\n label='Next'\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0'\n onClick={() => handleChangeIndex(1)}\n />\n <IconButton\n icon='ph--caret-double-right--regular'\n size={6}\n label='Jump to last'\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0'\n onClick={() => onChange?.(count - 1)}\n />\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 = ({ running, onClick }: { running?: boolean; onClick?: (start: boolean) => void }) => {\n return (\n <IconButton\n icon={running ? 'ph--x--regular' : 'ph--play--regular'}\n size={6}\n label={running ? 'Stop' : 'Play'}\n iconOnly\n noTooltip\n variant='ghost'\n classNames='p-0'\n onClick={() => onClick?.(!running)}\n />\n );\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useContext", "useState", "Surface", "Layout", "React", "mx", "Layout", "children", "classNames", "topLeft", "topRight", "bottomLeft", "bottomRight", "div", "className", "mx", "React", "useEffect", "IconButton", "useControlledState", "Pager", "index", "indexProp", "count", "keys", "onChange", "onExit", "setIndex", "useControlledState", "useEffect", "handleChangeIndex", "dir", "next", "keydownHandler", "event", "key", "shiftKey", "window", "addEventListener", "removeEventListener", "undefined", "React", "div", "className", "IconButton", "icon", "size", "label", "iconOnly", "noTooltip", "variant", "classNames", "onClick", "PageNumber", "CollectionPresenterContainer", "role", "subject", "collection", "slide", "setSlide", "useState", "running", "useContext", "PresenterContext", "handleExit", "useExitPresenter", "React", "Layout", "Main", "classNames", "PresenterLayout", "bottomRight", "PageNumber", "index", "count", "objects", "length", "bottomLeft", "Pager", "keys", "onChange", "onExit", "Surface", "data"]
|
|
7
|
-
}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useExitPresenter
|
|
3
|
-
} from "./chunk-GM4KOXJY.mjs";
|
|
4
|
-
|
|
5
|
-
// src/components/DocumentPresenterContainer.tsx
|
|
6
|
-
import React2 from "react";
|
|
7
|
-
import { Layout } from "@dxos/react-ui-mosaic";
|
|
8
|
-
|
|
9
|
-
// src/components/RevealPlayer/RevealPlayer.tsx
|
|
10
|
-
import "reveal.js/dist/reveal.css";
|
|
11
|
-
import "reveal.js/dist/theme/black.css";
|
|
12
|
-
import "highlight.js/styles/tokyo-night-dark.css";
|
|
13
|
-
import hljs from "highlight.js";
|
|
14
|
-
import typescript from "highlight.js/lib/languages/typescript";
|
|
15
|
-
import React, { useRef } from "react";
|
|
16
|
-
import Reveal from "reveal.js";
|
|
17
|
-
import RevealHighlight from "reveal.js/plugin/highlight/highlight";
|
|
18
|
-
import RevealMarkdown from "reveal.js/plugin/markdown/plugin.js";
|
|
19
|
-
import { useAsyncEffect } from "@dxos/react-ui";
|
|
20
|
-
import { mx } from "@dxos/ui-theme";
|
|
21
|
-
var styles = `
|
|
22
|
-
<style type="text/css">
|
|
23
|
-
.reveal h1 {
|
|
24
|
-
font-weight: 100;
|
|
25
|
-
font-size: 60px;
|
|
26
|
-
opacity: 0.5;
|
|
27
|
-
}
|
|
28
|
-
.reveal h2 {
|
|
29
|
-
font-weight: 100;
|
|
30
|
-
padding-top: 60px;
|
|
31
|
-
padding-left: 40px;
|
|
32
|
-
font-size: 48px;
|
|
33
|
-
opacity: 0.3;
|
|
34
|
-
}
|
|
35
|
-
.reveal h1, h2, p {
|
|
36
|
-
font-family: "Raleway", sans-serif;
|
|
37
|
-
text-align: left;
|
|
38
|
-
font-weight: 200;
|
|
39
|
-
}
|
|
40
|
-
.reveal ul {
|
|
41
|
-
font-family: "Raleway", sans-serif;
|
|
42
|
-
display: block;
|
|
43
|
-
list-style: "- ";
|
|
44
|
-
}
|
|
45
|
-
.reveal blockquote p {
|
|
46
|
-
text-align: center;
|
|
47
|
-
font-weight: 100;
|
|
48
|
-
padding: 32px;
|
|
49
|
-
}
|
|
50
|
-
.reveal pre {
|
|
51
|
-
margin-left: 0;
|
|
52
|
-
}
|
|
53
|
-
.reveal code {
|
|
54
|
-
font-size: 20px;
|
|
55
|
-
background: #111111;
|
|
56
|
-
color: #eeeeee;
|
|
57
|
-
max-height: unset !important;
|
|
58
|
-
}
|
|
59
|
-
</style>
|
|
60
|
-
`;
|
|
61
|
-
var RevealPlayer = ({ classNames, content, slide, fullscreen = true, onExit }) => {
|
|
62
|
-
const deckDivRef = useRef(null);
|
|
63
|
-
const deckRef = useRef(null);
|
|
64
|
-
useAsyncEffect(async () => {
|
|
65
|
-
if (deckRef.current) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
hljs.registerLanguage("typescript", typescript);
|
|
69
|
-
deckRef.current = new Reveal(deckDivRef.current, {
|
|
70
|
-
// view: 'scroll',
|
|
71
|
-
progress: false,
|
|
72
|
-
transition: "none",
|
|
73
|
-
slideNumber: false,
|
|
74
|
-
embedded: true,
|
|
75
|
-
// Disable autoplay to prevent errors in headless environments (e.g., CI).
|
|
76
|
-
autoPlayMedia: false,
|
|
77
|
-
// TODO(burdon): Speaker view requires server to serve popout window.
|
|
78
|
-
// https://revealjs.com/speaker-view
|
|
79
|
-
showNotes: false,
|
|
80
|
-
// width: 1600,
|
|
81
|
-
// height: 900,
|
|
82
|
-
margin: 0.1,
|
|
83
|
-
// center: false,
|
|
84
|
-
// minScale: 0.1,
|
|
85
|
-
// maxScale: 1.4,
|
|
86
|
-
// https://revealjs.com/markdown
|
|
87
|
-
// TODO(burdon): Requires server to serve popout window.
|
|
88
|
-
plugins: [
|
|
89
|
-
RevealMarkdown,
|
|
90
|
-
RevealHighlight
|
|
91
|
-
],
|
|
92
|
-
// See https://marked.js.org/using_advanced#options
|
|
93
|
-
markdown: {
|
|
94
|
-
gfm: true,
|
|
95
|
-
smartypants: true,
|
|
96
|
-
highlight: (code, language) => {
|
|
97
|
-
if (language) {
|
|
98
|
-
return hljs.highlight(code, {
|
|
99
|
-
language
|
|
100
|
-
}).value;
|
|
101
|
-
}
|
|
102
|
-
return hljs.highlightAuto(code).value;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
await deckRef.current.initialize();
|
|
107
|
-
if (slide !== void 0) {
|
|
108
|
-
deckRef.current.slide(slide < 0 ? deckRef.current?.getTotalSlides() + slide : slide - 1);
|
|
109
|
-
}
|
|
110
|
-
deckRef.current.addKeyBinding({
|
|
111
|
-
keyCode: 27,
|
|
112
|
-
key: "Escape",
|
|
113
|
-
description: "Exit full screen"
|
|
114
|
-
}, () => {
|
|
115
|
-
onExit?.();
|
|
116
|
-
});
|
|
117
|
-
return () => {
|
|
118
|
-
try {
|
|
119
|
-
if (deckRef.current) {
|
|
120
|
-
deckRef.current.destroy();
|
|
121
|
-
deckRef.current = null;
|
|
122
|
-
}
|
|
123
|
-
} catch {
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
});
|
|
127
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
128
|
-
className: mx("grid place-items-center is-full bs-full overflow-hidden bg-black", fullscreen && "absolute inset-0", classNames)
|
|
129
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
130
|
-
className: "relative aspect-video is-full bs-full bs-auto max-bs-full overflow-hidden"
|
|
131
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
132
|
-
ref: deckDivRef,
|
|
133
|
-
className: "absolute inset-0 reveal"
|
|
134
|
-
}, /* @__PURE__ */ React.createElement("style", null, /* @__PURE__ */ React.createElement("link", {
|
|
135
|
-
rel: "preconnect",
|
|
136
|
-
href: "https://fonts.googleapis.com"
|
|
137
|
-
}), /* @__PURE__ */ React.createElement("link", {
|
|
138
|
-
rel: "preconnect",
|
|
139
|
-
href: "https://fonts.gstatic.com",
|
|
140
|
-
crossOrigin: ""
|
|
141
|
-
}), /* @__PURE__ */ React.createElement("link", {
|
|
142
|
-
rel: "stylesheet",
|
|
143
|
-
href: "https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"
|
|
144
|
-
})), /* @__PURE__ */ React.createElement("div", {
|
|
145
|
-
className: "slides"
|
|
146
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
147
|
-
className: "!text-center"
|
|
148
|
-
}), /* @__PURE__ */ React.createElement("section", {
|
|
149
|
-
"data-markdown": []
|
|
150
|
-
}, /* @__PURE__ */ React.createElement("textarea", {
|
|
151
|
-
"data-template": true,
|
|
152
|
-
defaultValue: [
|
|
153
|
-
styles,
|
|
154
|
-
content
|
|
155
|
-
].join("\n")
|
|
156
|
-
}))))));
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
// src/components/DocumentPresenterContainer.tsx
|
|
160
|
-
var DocumentPresenterContainer = ({ document }) => {
|
|
161
|
-
const handleExit = useExitPresenter(document);
|
|
162
|
-
return /* @__PURE__ */ React2.createElement(Layout.Main, {
|
|
163
|
-
classNames: "relative"
|
|
164
|
-
}, /* @__PURE__ */ React2.createElement(RevealPlayer, {
|
|
165
|
-
content: document.content.target?.content ?? "",
|
|
166
|
-
onExit: handleExit
|
|
167
|
-
}));
|
|
168
|
-
};
|
|
169
|
-
var DocumentPresenterContainer_default = DocumentPresenterContainer;
|
|
170
|
-
export {
|
|
171
|
-
DocumentPresenterContainer_default as default
|
|
172
|
-
};
|
|
173
|
-
//# sourceMappingURL=DocumentPresenterContainer-74M6XAAI.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/DocumentPresenterContainer.tsx", "../../../src/components/RevealPlayer/RevealPlayer.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\nimport React, { type FC } from 'react';\n\nimport { type Markdown } from '@dxos/plugin-markdown/types';\nimport { Layout } from '@dxos/react-ui-mosaic';\n\nimport { useExitPresenter } from '../useExitPresenter';\n\nimport { RevealPlayer } from './RevealPlayer';\n\nconst DocumentPresenterContainer: FC<{ document: Markdown.Document }> = ({ document }) => {\n const handleExit = useExitPresenter(document);\n\n return (\n <Layout.Main classNames='relative'>\n <RevealPlayer content={document.content.target?.content ?? ''} onExit={handleExit} />\n </Layout.Main>\n );\n};\n\nexport default DocumentPresenterContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport 'reveal.js/dist/reveal.css';\n\nimport 'reveal.js/dist/theme/black.css';\n\n// https://github.com/highlightjs/highlight.js/tree/main/src/styles\n// import 'highlight.js/styles/github-dark.css';\nimport 'highlight.js/styles/tokyo-night-dark.css';\n\nimport hljs from 'highlight.js';\nimport typescript from 'highlight.js/lib/languages/typescript';\nimport React, { useRef } from 'react';\nimport Reveal from 'reveal.js';\nimport RevealHighlight from 'reveal.js/plugin/highlight/highlight';\nimport RevealMarkdown from 'reveal.js/plugin/markdown/plugin.js';\n\nimport { type ThemedClassName, useAsyncEffect } from '@dxos/react-ui';\nimport { mx } from '@dxos/ui-theme';\n\nconst styles = `\n<style type=\"text/css\">\n .reveal h1 {\n font-weight: 100;\n font-size: 60px;\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 .reveal pre {\n margin-left: 0;\n }\n .reveal code {\n font-size: 20px;\n background: #111111;\n color: #eeeeee;\n max-height: unset !important;\n }\n</style>\n`;\n\nexport type RevealProps = ThemedClassName<{\n content: string;\n slide?: number;\n fullscreen?: boolean;\n onExit?: () => void;\n}>;\n\nexport const RevealPlayer = ({ classNames, content, slide, fullscreen = true, onExit }: RevealProps) => {\n const deckDivRef = useRef<HTMLDivElement>(null);\n const deckRef = useRef<Reveal.Api | null>(null);\n\n useAsyncEffect(async () => {\n if (deckRef.current) {\n return;\n }\n\n // Required for syntax highlighting.\n hljs.registerLanguage('typescript', typescript);\n\n // https://revealjs.com/react\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\n // Disable autoplay to prevent errors in headless environments (e.g., CI).\n autoPlayMedia: false,\n\n // TODO(burdon): Speaker view requires server to serve popout window.\n // https://revealjs.com/speaker-view\n showNotes: false,\n\n // width: 1600,\n // height: 900,\n margin: 0.1,\n // center: false,\n // minScale: 0.1,\n // maxScale: 1.4,\n\n // https://revealjs.com/markdown\n // TODO(burdon): Requires server to serve popout window.\n plugins: [RevealMarkdown, RevealHighlight],\n\n // See https://marked.js.org/using_advanced#options\n markdown: {\n gfm: true,\n smartypants: true,\n highlight: (code, language) => {\n if (language) {\n return hljs.highlight(code, { language }).value;\n }\n\n return hljs.highlightAuto(code).value;\n },\n },\n });\n\n await deckRef.current.initialize();\n\n if (slide !== undefined) {\n deckRef.current.slide(slide < 0 ? deckRef.current?.getTotalSlides() + slide : slide - 1);\n }\n\n deckRef.current.addKeyBinding({ keyCode: 27, key: 'Escape', description: 'Exit full screen' }, () => {\n onExit?.();\n });\n\n return () => {\n try {\n if (deckRef.current) {\n deckRef.current.destroy();\n deckRef.current = null;\n }\n } catch {\n // Ignore.\n }\n };\n });\n\n // TOOD(burdon): Trap cursor keys (otherwise tabster grabs focus.)\n return (\n <div\n className={mx(\n 'grid place-items-center is-full bs-full overflow-hidden bg-black',\n fullscreen && 'absolute inset-0',\n classNames,\n )}\n >\n <div className='relative aspect-video is-full bs-full bs-auto max-bs-full overflow-hidden'>\n <div ref={deckDivRef} className='absolute inset-0 reveal'>\n {/* NOTE: 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 rel='stylesheet'\n href='https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap'\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 </div>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;;;AAGA,OAAOA,YAAwB;AAG/B,SAASC,cAAc;;;ACFvB,OAAO;AAEP,OAAO;AAIP,OAAO;AAEP,OAAOC,UAAU;AACjB,OAAOC,gBAAgB;AACvB,OAAOC,SAASC,cAAc;AAC9B,OAAOC,YAAY;AACnB,OAAOC,qBAAqB;AAC5B,OAAOC,oBAAoB;AAE3B,SAA+BC,sBAAsB;AACrD,SAASC,UAAU;AAEnB,IAAMC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDR,IAAMC,eAAe,CAAC,EAAEC,YAAYC,SAASC,OAAOC,aAAa,MAAMC,OAAM,MAAe;AACjG,QAAMC,aAAaC,OAAuB,IAAA;AAC1C,QAAMC,UAAUD,OAA0B,IAAA;AAE1CE,iBAAe,YAAA;AACb,QAAID,QAAQE,SAAS;AACnB;IACF;AAGAC,SAAKC,iBAAiB,cAAcC,UAAAA;AAMpCL,YAAQE,UAAU,IAAII,OAAOR,WAAWI,SAAU;;MAEhDK,UAAU;MACVC,YAAY;MACZC,aAAa;MACbC,UAAU;;MAGVC,eAAe;;;MAIfC,WAAW;;;MAIXC,QAAQ;;;;;;MAORC,SAAS;QAACC;QAAgBC;;;MAG1BC,UAAU;QACRC,KAAK;QACLC,aAAa;QACbC,WAAW,CAACC,MAAMC,aAAAA;AAChB,cAAIA,UAAU;AACZ,mBAAOnB,KAAKiB,UAAUC,MAAM;cAAEC;YAAS,CAAA,EAAGC;UAC5C;AAEA,iBAAOpB,KAAKqB,cAAcH,IAAAA,EAAME;QAClC;MACF;IACF,CAAA;AAEA,UAAMvB,QAAQE,QAAQuB,WAAU;AAEhC,QAAI9B,UAAU+B,QAAW;AACvB1B,cAAQE,QAAQP,MAAMA,QAAQ,IAAIK,QAAQE,SAASyB,eAAAA,IAAmBhC,QAAQA,QAAQ,CAAA;IACxF;AAEAK,YAAQE,QAAQ0B,cAAc;MAAEC,SAAS;MAAIC,KAAK;MAAUC,aAAa;IAAmB,GAAG,MAAA;AAC7FlC,eAAAA;IACF,CAAA;AAEA,WAAO,MAAA;AACL,UAAI;AACF,YAAIG,QAAQE,SAAS;AACnBF,kBAAQE,QAAQ8B,QAAO;AACvBhC,kBAAQE,UAAU;QACpB;MACF,QAAQ;MAER;IACF;EACF,CAAA;AAGA,SACE,sBAAA,cAAC+B,OAAAA;IACCC,WAAWC,GACT,oEACAvC,cAAc,oBACdH,UAAAA;KAGF,sBAAA,cAACwC,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIG,KAAKtC;IAAYoC,WAAU;KAE9B,sBAAA,cAACG,SAAAA,MACC,sBAAA,cAACC,QAAAA;IAAKC,KAAI;IAAaC,MAAK;MAC5B,sBAAA,cAACF,QAAAA;IAAKC,KAAI;IAAaC,MAAK;IAAkCC,aAAa;MAC3E,sBAAA,cAACH,QAAAA;IACCC,KAAI;IACJC,MAAK;OAGT,sBAAA,cAACP,OAAAA;IAAIC,WAAU;KACb,sBAAA,cAACD,OAAAA;IAAIC,WAAU;MACf,sBAAA,cAACQ,WAAY;IAAE,iBAAiB,CAAA;EAAG,GACjC,sBAAA,cAACC,YAAAA;IAAe,iBAAiB;IAAQC,cAAc;MAACrD;MAAQG;MAASmD,KAAK,IAAA;;AAO5F;;;ADrKA,IAAMC,6BAAkE,CAAC,EAAEC,SAAQ,MAAE;AACnF,QAAMC,aAAaC,iBAAiBF,QAAAA;AAEpC,SACE,gBAAAG,OAAA,cAACC,OAAOC,MAAI;IAACC,YAAW;KACtB,gBAAAH,OAAA,cAACI,cAAAA;IAAaC,SAASR,SAASQ,QAAQC,QAAQD,WAAW;IAAIE,QAAQT;;AAG7E;AAEA,IAAA,qCAAeF;",
|
|
6
|
-
"names": ["React", "Layout", "hljs", "typescript", "React", "useRef", "Reveal", "RevealHighlight", "RevealMarkdown", "useAsyncEffect", "mx", "styles", "RevealPlayer", "classNames", "content", "slide", "fullscreen", "onExit", "deckDivRef", "useRef", "deckRef", "useAsyncEffect", "current", "hljs", "registerLanguage", "typescript", "Reveal", "progress", "transition", "slideNumber", "embedded", "autoPlayMedia", "showNotes", "margin", "plugins", "RevealMarkdown", "RevealHighlight", "markdown", "gfm", "smartypants", "highlight", "code", "language", "value", "highlightAuto", "initialize", "undefined", "getTotalSlides", "addKeyBinding", "keyCode", "key", "description", "destroy", "div", "className", "mx", "ref", "style", "link", "rel", "href", "crossOrigin", "section", "textarea", "defaultValue", "join", "DocumentPresenterContainer", "document", "handleExit", "useExitPresenter", "React", "Layout", "Main", "classNames", "RevealPlayer", "content", "target", "onExit"]
|
|
7
|
-
}
|