├── test
├── e2e.spec.js
├── setup.ts
├── .eslintrc
├── reducers
│ └── slides
│ │ ├── actions
│ │ ├── openFile-spec.ts
│ │ ├── openNewDeck-spec.ts
│ │ ├── moveSlideUp-spec.ts
│ │ ├── moveSlideDown-spec.ts
│ │ ├── duplicateSlide-spec.ts
│ │ ├── deleteSlide-spec.ts
│ │ ├── addPluginToCurrentSlide-spec.ts
│ │ ├── deleteCurrentPlugin-spec.ts
│ │ ├── updateCurrentPlugin-spec.ts
│ │ └── addSlide-spec.ts
│ │ └── slidesReducer.spec.ts
└── components
│ ├── ControlPanel.spec.tsx
│ └── SmartSlide-spec.tsx
├── app
├── theme
│ ├── _mixins.scss
│ ├── _variables.scss
│ ├── toolbar.scss
│ ├── mixins
│ │ └── _toolbar.scss
│ ├── _reset.scss
│ ├── _global.scss
│ └── _utils.scss
├── modules
│ ├── App
│ │ ├── EditView
│ │ │ ├── SettingsMenu
│ │ │ │ ├── settings-menu.scss
│ │ │ │ └── SettingsMenu.tsx
│ │ │ ├── edit-view.scss
│ │ │ └── EditView.tsx
│ │ ├── FullscreenView
│ │ │ ├── fullscreen-view.scss
│ │ │ └── FullscreenView.tsx
│ │ └── App.tsx
│ ├── ToolBar
│ │ ├── toolbar.scss
│ │ └── ToolBar.tsx
│ ├── ControlPanel
│ │ ├── control-panel.scss
│ │ └── ControlPanel.tsx
│ ├── UtilitiesMenu
│ │ ├── DefaultOptions
│ │ │ ├── options.scss
│ │ │ ├── Options
│ │ │ │ ├── DuplicateSlide.tsx
│ │ │ │ ├── MoveSlide.tsx
│ │ │ │ ├── BackgroundColor.tsx
│ │ │ │ └── SelectTransitions.tsx
│ │ │ └── DefaultOptions.tsx
│ │ ├── utilities-menu.scss
│ │ └── UtilitiesMenu.tsx
│ ├── SmartSlide
│ │ ├── smart-slide.scss
│ │ └── SmartSlide.tsx
│ ├── index.ts
│ ├── Scale
│ │ └── Scale.tsx
│ ├── MiniSlidesPanel
│ │ ├── mini-slide-panel.scss
│ │ └── MiniSlidesPanel.tsx
│ └── DummySlide
│ │ └── DummySlide.tsx
├── app.icns
├── constants
│ ├── slides.enums.ts
│ ├── app.constants.ts
│ └── slides.constants.ts
├── reducers
│ ├── index.ts
│ ├── slides.reducer.ts
│ └── app.reducer.ts
├── plugins
│ └── node_modules
│ │ ├── devdecks-textbox
│ │ ├── fonts
│ │ │ ├── Coda.ttf
│ │ │ ├── Exo.ttf
│ │ │ ├── Hind.ttf
│ │ │ ├── Lobster.ttf
│ │ │ ├── Oxygen.ttf
│ │ │ ├── Raleway.ttf
│ │ │ ├── Roboto.ttf
│ │ │ ├── Satisfy.ttf
│ │ │ ├── Ubuntu.ttf
│ │ │ ├── Droid Sans.ttf
│ │ │ ├── Orbitron.ttf
│ │ │ ├── Tangerine.ttf
│ │ │ ├── Electrolize.ttf
│ │ │ └── _index.scss
│ │ ├── text-box.scss
│ │ ├── index.ts
│ │ ├── options
│ │ │ ├── FontSize.tsx
│ │ │ ├── FontFamily.tsx
│ │ │ ├── Utils.tsx
│ │ │ ├── FontColor.tsx
│ │ │ ├── FontBackgroundColor.tsx
│ │ │ └── FontStyles.tsx
│ │ ├── TextBox.tsx
│ │ └── OptionsMenu.tsx
│ │ ├── devdecks-image
│ │ ├── add-image.scss
│ │ ├── index.ts
│ │ ├── AddImageDialog.tsx
│ │ ├── OptionsMenu.tsx
│ │ └── AddImage.tsx
│ │ └── devdecks-code-editor
│ │ ├── Options
│ │ ├── lanuages.ts
│ │ ├── ToggleConsole.tsx
│ │ ├── CodeRun.tsx
│ │ ├── CodeLang.tsx
│ │ ├── CodeTheme.tsx
│ │ ├── CodeImportExport.tsx
│ │ ├── CodeEdit.tsx
│ │ └── CodeHighlightSubmit.tsx
│ │ ├── index.ts
│ │ ├── code-editor.scss
│ │ ├── OptionsMenu.tsx
│ │ └── CodeEditor.tsx
├── app.global.scss
├── store
│ ├── configureStore.js
│ ├── configureStore.production.js
│ ├── reducers.js
│ └── configureStore.development.js
├── index.tsx
├── utils
│ └── requireContext.ts
├── package.json
├── app.html
├── actions
│ ├── app.actions.ts
│ └── slides.actions.ts
└── main.development.js
├── .gitattributes
├── resources
├── icon.icns
├── icon.ico
├── icon.png
└── icons
│ ├── 128x128.png
│ ├── 16x16.png
│ ├── 24x24.png
│ ├── 256x256.png
│ ├── 32x32.png
│ ├── 48x48.png
│ ├── 512x512.png
│ ├── 64x64.png
│ ├── 96x96.png
│ └── 1024x1024.png
├── webpack.config.eslint.js
├── docs
├── README.md
├── Create_Plugin.md
├── API.md
└── Example.md
├── .travis.yml
├── tslint.json
├── webpack.config.test.js
├── tsconfig.json
├── .babelrc
├── .gitignore
├── .eslintrc
├── LICENSE
├── server.js
├── webpack.config.electron.js
├── webpack.config.base.js
├── webpack.config.production.js
├── webpack.config.development.js
├── README.md
└── package.json
/test/e2e.spec.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/theme/_mixins.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/theme/_variables.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/theme/toolbar.scss:
--------------------------------------------------------------------------------
1 | @import './mixins/_toolbar';
--------------------------------------------------------------------------------
/app/modules/App/EditView/SettingsMenu/settings-menu.scss:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/app.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/app.icns
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # * text eol=lf
2 | *.png binary
3 | *.ico binary
4 | *.icns binary
5 |
--------------------------------------------------------------------------------
/app/constants/slides.enums.ts:
--------------------------------------------------------------------------------
1 | export enum EDirection {
2 | RIGHT,
3 | LEFT,
4 | }
5 |
--------------------------------------------------------------------------------
/resources/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icon.icns
--------------------------------------------------------------------------------
/resources/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icon.ico
--------------------------------------------------------------------------------
/resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icon.png
--------------------------------------------------------------------------------
/app/reducers/index.ts:
--------------------------------------------------------------------------------
1 | export * from './app.reducer';
2 | export * from './slides.reducer';
3 |
4 |
--------------------------------------------------------------------------------
/resources/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/128x128.png
--------------------------------------------------------------------------------
/resources/icons/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/16x16.png
--------------------------------------------------------------------------------
/resources/icons/24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/24x24.png
--------------------------------------------------------------------------------
/resources/icons/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/256x256.png
--------------------------------------------------------------------------------
/resources/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/32x32.png
--------------------------------------------------------------------------------
/resources/icons/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/48x48.png
--------------------------------------------------------------------------------
/resources/icons/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/512x512.png
--------------------------------------------------------------------------------
/resources/icons/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/64x64.png
--------------------------------------------------------------------------------
/resources/icons/96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/96x96.png
--------------------------------------------------------------------------------
/resources/icons/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/resources/icons/1024x1024.png
--------------------------------------------------------------------------------
/app/modules/ToolBar/toolbar.scss:
--------------------------------------------------------------------------------
1 | @import '../../theme/toolbar.scss';
2 |
3 | #toolbar {
4 | flex: 1 0 70%;
5 | }
--------------------------------------------------------------------------------
/app/theme/mixins/_toolbar.scss:
--------------------------------------------------------------------------------
1 | @mixin toolbar-border {
2 | border: 1px #000 solid;
3 | border-radius: 0px;
4 | }
--------------------------------------------------------------------------------
/webpack.config.eslint.js:
--------------------------------------------------------------------------------
1 | require('babel-register');
2 |
3 | module.exports = require('./webpack.config.development');
4 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Table of Contents
2 |
3 | * [Creating a plugin](Create_Plugin.md)
4 | * [API](API.md)
5 | * [Example](Example.md)
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Coda.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Coda.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Exo.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Exo.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Hind.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Hind.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Lobster.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Lobster.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Oxygen.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Oxygen.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Raleway.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Raleway.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Roboto.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Roboto.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Satisfy.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Satisfy.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Ubuntu.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Ubuntu.ttf
--------------------------------------------------------------------------------
/app/app.global.scss:
--------------------------------------------------------------------------------
1 | @import './theme/_global';
2 | @import './theme/_mixins';
3 | @import './theme/_reset';
4 | @import './theme/_variables';
5 | @import './theme/_utils';
6 |
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Droid Sans.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Droid Sans.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Orbitron.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Orbitron.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Tangerine.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Tangerine.ttf
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/fonts/Electrolize.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Team-CHAD/DevDecks/HEAD/app/plugins/node_modules/devdecks-textbox/fonts/Electrolize.ttf
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 |
3 | node_js:
4 | - 7
5 | - 6
6 | - "node"
7 |
8 | cache:
9 | directories:
10 | - node_modules
11 |
12 | script:
13 | - npm test
14 | - npm run package
15 |
--------------------------------------------------------------------------------
/app/modules/App/FullscreenView/fullscreen-view.scss:
--------------------------------------------------------------------------------
1 | #fullscreen-view {
2 | display: flex;
3 | align-items: center;
4 | justify-content: center;
5 | height: 100vh;
6 | background-color: #000;
7 | overflow: hidden;
8 | }
9 |
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-image/add-image.scss:
--------------------------------------------------------------------------------
1 | #devdeck-add-image {
2 | #add-image-button {
3 | width: 100%;
4 | }
5 |
6 | .add-image-url {
7 | display: flex;
8 | justify-content: flex-start;
9 | }
10 | }
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["tslint:latest", "tslint-react"],
3 | "rules": {
4 | "curly": true,
5 | "jsx-no-lambda": true,
6 | "no-var-requires": false
7 | },
8 | "jsRules": {
9 | "curly": true
10 | }
11 | }
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-textbox/text-box.scss:
--------------------------------------------------------------------------------
1 | .devdecks-textbox-container {
2 | .editable-content-editable {
3 | outline: 0px solid transparent;
4 | }
5 |
6 | span, b, i, u {
7 | font-size: 1em !important;
8 | }
9 | }
--------------------------------------------------------------------------------
/app/store/configureStore.js:
--------------------------------------------------------------------------------
1 | if (process.env.NODE_ENV === 'production') {
2 | module.exports = require('./configureStore.production'); // eslint-disable-line global-require
3 | } else {
4 | module.exports = require('./configureStore.development'); // eslint-disable-line global-require
5 | }
6 |
--------------------------------------------------------------------------------
/app/store/configureStore.production.js:
--------------------------------------------------------------------------------
1 | import { createStore, applyMiddleware } from 'redux';
2 | import rootReducer from './reducers';
3 |
4 | const enhancer = applyMiddleware();
5 |
6 | export default function configureStore(initialState) {
7 | return createStore(rootReducer, initialState, enhancer);
8 | }
9 |
--------------------------------------------------------------------------------
/app/store/reducers.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 |
3 | import {
4 | undoableAppReducer as app,
5 | undoableSlidesReducer as slides,
6 | } from '../reducers/index.ts';
7 |
8 | const rootReducer = combineReducers({
9 | app,
10 | slides,
11 | });
12 |
13 | export default rootReducer;
14 |
--------------------------------------------------------------------------------
/app/modules/ControlPanel/control-panel.scss:
--------------------------------------------------------------------------------
1 | #control-panel-container {
2 | width: 100%;
3 | background-color: #000;
4 | text-align: center;
5 | margin-bottom: 20px;
6 | padding: 6px 0;
7 |
8 | .pt-button {
9 | margin: 0 5px;
10 | opacity: 0.6;
11 |
12 | &:hover {
13 | opacity: 1.0;
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/app/modules/UtilitiesMenu/DefaultOptions/options.scss:
--------------------------------------------------------------------------------
1 | #utilities-menu-default-options {
2 | #move-slide-container {
3 | display: flex;
4 | list-style-type: none;
5 | justify-content: center;
6 |
7 | li {
8 | margin: 0 5px;
9 | }
10 | }
11 |
12 | .sketch-picker {
13 | margin: 5px auto 0;
14 | }
15 | }
--------------------------------------------------------------------------------
/app/modules/SmartSlide/smart-slide.scss:
--------------------------------------------------------------------------------
1 | #current-slide-view {
2 | height: calc(100vh - 200px);
3 | width: calc(100vw - 275px);
4 | border: 1px solid black;
5 | margin-right: 1em;
6 | }
7 |
8 | .rnd {
9 | &.editing {
10 | border: 1px solid #1baee1;
11 | }
12 |
13 | &.force-dynamic-height {
14 | height: 100% !important;
15 | }
16 | }
--------------------------------------------------------------------------------
/app/modules/index.ts:
--------------------------------------------------------------------------------
1 | export * from './App/App';
2 | export * from './ControlPanel/ControlPanel';
3 | export * from './DummySlide/DummySlide';
4 | export * from './MiniSlidesPanel/MiniSlidesPanel';
5 | export * from './UtilitiesMenu/UtilitiesMenu';
6 | export * from './Scale/Scale';
7 | export * from './SmartSlide/SmartSlide';
8 | export * from './ToolBar/ToolBar';
9 |
--------------------------------------------------------------------------------
/app/modules/UtilitiesMenu/utilities-menu.scss:
--------------------------------------------------------------------------------
1 | #utilities-menu-container {
2 | background-color: #293742;
3 | max-height: 100vh;
4 | overflow-x: hidden;
5 | overflow-y: auto;
6 | text-align: center;
7 | }
8 |
9 | #options-list {
10 | margin-left: 10px;
11 | margin-right: 10px;
12 | }
13 |
14 | #delete-button-devdecks {
15 | width: 100%;
16 | margin: 0 auto 15px;
17 | }
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-image/index.ts:
--------------------------------------------------------------------------------
1 | import Image from './AddImage';
2 | import ImageOptions from './OptionsMenu';
3 |
4 | export default {
5 | component: Image,
6 | icon: 'media',
7 | moduleName: 'devdecks-image',
8 | tooltip: 'Image',
9 | optionsMenuComponent: ImageOptions,
10 | state: {
11 | height: 200,
12 | lockAspectRatio: false,
13 | value: '',
14 | },
15 | };
16 |
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-code-editor/Options/lanuages.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | 'Clojure',
3 | 'CPP',
4 | 'CSS',
5 | 'Djanjo',
6 | 'Go',
7 | 'Haskell',
8 | 'HTMLBars',
9 | 'Java',
10 | 'JavaScript',
11 | 'JSON',
12 | 'LESS',
13 | 'ObjectiveC',
14 | 'Perl',
15 | 'PHP',
16 | 'Python',
17 | 'Ruby',
18 | 'Scala',
19 | 'SCSS',
20 | 'SQL',
21 | 'Swift',
22 | 'TypeScript',
23 | ];
24 |
--------------------------------------------------------------------------------
/app/index.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { render } from 'react-dom';
3 | import { Provider } from 'react-redux';
4 | import './app.global.scss';
5 |
6 | import {
7 | App
8 | } from './modules';
9 |
10 | const configureStore = require('./store/configureStore');
11 | const store = configureStore();
12 |
13 | render(
14 |
15 |
16 | ,
17 | document.getElementById('root')
18 | );
19 |
--------------------------------------------------------------------------------
/app/modules/Scale/Scale.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 |
3 | interface ScaleProps {
4 | children?: any;
5 | isFullScreen: boolean;
6 | scale: number;
7 | }
8 |
9 | const Scale = ({ children, isFullScreen, scale }: ScaleProps) => {
10 | return (
11 |
12 | { children }
13 |
14 | );
15 | };
16 |
17 | export { Scale };
18 |
--------------------------------------------------------------------------------
/test/setup.ts:
--------------------------------------------------------------------------------
1 | // Issue with Windows 10 pathing so types could not be set in tsconfig.json
2 | // so we need to specify absolute paths
3 | ///
4 | ///
5 | ///
6 |
7 | import { jsdom } from 'jsdom';
8 |
9 | declare var global: any;
10 |
11 | global.document = jsdom('');
12 |
--------------------------------------------------------------------------------
/webpack.config.test.js:
--------------------------------------------------------------------------------
1 | /** Used in .babelrc for 'test' environment */
2 |
3 | // for babel-plugin-webpack-loaders
4 | require('babel-register');
5 | const validate = require('webpack-validator');
6 | const devConfig = require('./webpack.config.development');
7 |
8 | module.exports = validate({
9 | output: {
10 | libraryTarget: 'commonjs2'
11 | },
12 | module: {
13 | // Use base + development loaders, but exclude 'babel-loader'
14 | loaders: devConfig.module.loaders.slice(1)
15 | }
16 | });
17 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "allowSyntheticDefaultImports": true,
4 | "baseUrl": "app",
5 | "experimentalDecorators": true,
6 | "jsx": "react",
7 | "module": "commonjs",
8 | "moduleResolution": "node",
9 | "noImplicitAny": true,
10 | "outDir": "./build/",
11 | "preserveConstEnums": true,
12 | "removeComments": true,
13 | "target": "ES6"
14 | },
15 | "include": [
16 | "app/**/*"
17 | ],
18 | "exclude": [
19 | "node_modules",
20 | "app/plugins/**/*"
21 | ]
22 | }
--------------------------------------------------------------------------------
/app/utils/requireContext.ts:
--------------------------------------------------------------------------------
1 | // Pre-load all of our plugins so we can dynamically require
2 | // them later. Use req instead of require when trying to
3 | // access those modules.
4 |
5 | // Fix:
6 | // ERROR in ./app/utils/requireContext.ts
7 | // (4,21): error TS2339: Property 'context' does not exist on type 'NodeRequire'.
8 | declare const require: any;
9 |
10 | const req = require.context('../plugins/node_modules', true);
11 |
12 | export default function(moduleName: string) {
13 | return req(`./${moduleName}/index`).default;
14 | }
15 |
--------------------------------------------------------------------------------
/app/plugins/node_modules/devdecks-code-editor/index.ts:
--------------------------------------------------------------------------------
1 | import CodeEditor from './CodeEditor';
2 | import CodeEditorOptions from './OptionsMenu';
3 |
4 | export default {
5 | component: CodeEditor,
6 | icon: 'code',
7 | moduleName: 'devdecks-code-editor',
8 | tooltip: 'Code Editor',
9 | optionsMenuComponent: CodeEditorOptions,
10 | state: {
11 | highlightedItems: [],
12 | language: 'JavaScript',
13 | showLineNumbers: true,
14 | snippet: '',
15 | theme: 'monokai',
16 | width: 1279,
17 | height: 600,
18 | },
19 | };
20 |
--------------------------------------------------------------------------------
/app/theme/_reset.scss:
--------------------------------------------------------------------------------
1 | // blueprintjs
2 | ul, ol {
3 | margin: 0 !important;
4 | padding: 0 !important;
5 | }
6 |
7 | .pt-menu {
8 | min-width: 0 !important;
9 | padding: 0 !important;
10 | background: none !important;
11 | }
12 |
13 | .pt-large .pt-menu-item::before {
14 | margin: 0 5px !important;
15 | }
16 |
17 | .pt-transition-container {
18 | z-index: 100 !important;
19 | }
20 |
21 | .pt-popover-content {
22 | padding: 5px !important;
23 | }
24 |
25 | .pt-menu-item::before, .pt-menu-item::after {
26 | color: #ffe39f !important;
27 | }
28 |
--------------------------------------------------------------------------------
/app/theme/_global.scss:
--------------------------------------------------------------------------------
1 | // Enforces the scrollbar view
2 | ::-webkit-scrollbar {
3 | -webkit-appearance: none;
4 | width: 10px;
5 | }
6 | ::-webkit-scrollbar-thumb {
7 | border-radius: 4px;
8 | background-color: rgba(0,0,0,.5);
9 | box-shadow: 0 0 1px rgba(255,255,255,.5);
10 | }
11 |
12 | * {
13 | background: transparent;
14 | box-sizing: border-box;
15 | margin: 0;
16 | padding: 0;
17 | }
18 |
19 | html, body {
20 | width: 100%;
21 | height: 100%;
22 | }
23 |
24 | a:link visited {
25 | border-color: black;
26 | }
27 |
28 | a:hover {
29 | border-width: 4px;
30 | }
--------------------------------------------------------------------------------
/app/constants/app.constants.ts:
--------------------------------------------------------------------------------
1 | export const ADD_THEME_COLOR = 'ADD_THEME_COLOR';
2 | export const GO_TO_SLIDE = 'GO_TO_SLIDE';
3 | export const LEFT_ARROW_PREV = 'LEFT_ARROW_PREV';
4 | export const RIGHT_ARROW_NEXT = 'RIGHT_ARROW_NEXT';
5 | export const SAVE_LAST_SLIDE_DIMENSION = 'SAVE_LAST_SLIDE_DIMENSION';
6 | export const SET_ACTIVE_PLUGIN = 'SET_ACTIVE_PLUGIN';
7 | export const TOGGLE_FULLSCREEN = 'TOGGLE_FULLSCREEN';
8 | export const TOGGLE_GUIDELINES = 'TOGGLE_GUIDELINES';
9 | export const UPDATE_DEVICE_DIMENSION = 'UPDATE_DEVICE_DIMENSION';
10 | export const UPDATE_SLIDES_DIMENSION = 'UPDATE_SLIDES_DIMENSION';
11 |
--------------------------------------------------------------------------------
/app/constants/slides.constants.ts:
--------------------------------------------------------------------------------
1 | export const ADD_PLUGIN_TO_CURRENT_SLIDE = 'ADD_PLUGIN_TO_CURRENT_SLIDE';
2 | export const ADD_SLIDE = 'ADD_SLIDE';
3 | export const DELETE_CURRENT_PLUGIN = 'DELETE_CURRENT_PLUGIN';
4 | export const DELETE_SLIDE = 'DELETE_SLIDE';
5 | export const DUPLICATE_SLIDE = 'DUPLICATE_SLIDE';
6 | export const MOVE_SLIDE_DOWN = 'MOVE_SLIDE_DOWN';
7 | export const MOVE_SLIDE_UP = 'MOVE_SLIDE_UP';
8 | export const OPEN_FILE = 'OPEN_FILE';
9 | export const OPEN_NEW_DECK = 'OPEN_NEW_DECK';
10 | export const UPDATE_CURRENT_PLUGIN = 'UPDATE_CURRENT_PLUGIN';
11 | export const UPDATE_CURRENT_SLIDE = 'UPDATE_CURRENT_SLIDE';
12 |
--------------------------------------------------------------------------------
/test/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "mocha": true
4 | },
5 | "plugins": [
6 | "mocha"
7 | ],
8 | "rules": {
9 | "mocha/no-exclusive-tests": 2,
10 | "mocha/no-skipped-tests": 0,
11 | "mocha/no-pending-tests": 2,
12 | "mocha/handle-done-callback": 2,
13 | "mocha/no-synchronous-tests": 0,
14 | "mocha/no-global-tests": 2,
15 | "mocha/valid-test-description": 2,
16 | "mocha/valid-suite-description": 2,
17 | "mocha/no-sibling-hooks": 0,
18 | "mocha/no-mocha-arrows": 0,
19 | "mocha/no-hooks": 0,
20 | "mocha/no-top-level-hooks": 0,
21 | "no-unused-expressions": 0
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/test/reducers/slides/actions/openFile-spec.ts:
--------------------------------------------------------------------------------
1 | import * as fs from 'fs';
2 | import * as path from 'path';
3 | import { expect } from 'chai';
4 | import { OPEN_FILE } from '../../../../app/constants/slides.constants';
5 |
6 | export default function(initialState: any, reducer: any, slide: any) {
7 | const file = fs.readFileSync(path.join(__dirname, '../test.dd'));
8 | describe('OPEN_FILE', () => {
9 | it('should set slide state to the new file', () => {
10 | const slides = JSON.parse(file.toString());
11 | expect(reducer(initialState, {
12 | type: OPEN_FILE,
13 | buffer_data: file
14 | })).to.deep.equal(slides);
15 | });
16 | });
17 | }
18 |
--------------------------------------------------------------------------------
/app/modules/MiniSlidesPanel/mini-slide-panel.scss:
--------------------------------------------------------------------------------
1 | $mini-slides-padding: 10px 0px;
2 | $mini-slide-border: 2px solid #106BA3;
3 |
4 | #mini-slide-panel {
5 | list-style-type: none;
6 | overflow-y: auto;
7 |
8 | .mini-slide-item {
9 | padding: $mini-slides-padding;
10 |
11 | &.active {
12 | background-color: #5C7080;
13 | }
14 | }
15 |
16 | .mini-slide-content {
17 | position: relative;
18 | background-color: white;
19 | box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
20 | box-sizing: initial;
21 | margin: 0 auto;
22 | }
23 |
24 | .mini-slide-counter {
25 | float: left;
26 | font-weight: 600;
27 | margin-left: 5px;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/modules/UtilitiesMenu/DefaultOptions/Options/DuplicateSlide.tsx:
--------------------------------------------------------------------------------
1 | import * as React from 'react';
2 | import { Button } from '@blueprintjs/core';
3 |
4 | interface DuplicateSlideProps {
5 | currentSlideNumber: number;
6 | maxSlides: number;
7 | goToSlide: Function;
8 | duplicateSlide: Function;
9 | }
10 |
11 | const DuplicateSlide = ({ currentSlideNumber, maxSlides, duplicateSlide, goToSlide }: DuplicateSlideProps) => {
12 | return (
13 |