├── docs ├── src │ ├── app │ │ ├── app-root.scss │ │ ├── pages │ │ │ └── docs │ │ │ │ ├── edit │ │ │ │ └── app-edit-fonts │ │ │ │ │ └── app-edit-fonts.scss │ │ │ │ ├── introduction │ │ │ │ ├── app-installation │ │ │ │ │ └── app-installation.scss │ │ │ │ ├── app-introduction │ │ │ │ │ └── app-introduction.scss │ │ │ │ └── app-remote-control │ │ │ │ │ └── app-remote-control.scss │ │ │ │ ├── slides │ │ │ │ ├── app-slide-gif │ │ │ │ │ └── app-slide-gif.scss │ │ │ │ ├── app-slide-author │ │ │ │ │ └── app-slide-author.scss │ │ │ │ ├── app-slide-chart │ │ │ │ │ └── app-slide-chart.scss │ │ │ │ ├── app-slide-code │ │ │ │ │ └── app-slide-code.scss │ │ │ │ ├── app-slide-poll │ │ │ │ │ └── app-slide-poll.scss │ │ │ │ ├── app-slide-qrcode │ │ │ │ │ └── app-slide-qrcode.scss │ │ │ │ ├── app-slide-split │ │ │ │ │ └── app-slide-split.scss │ │ │ │ ├── app-slide-title │ │ │ │ │ └── app-slide-title.scss │ │ │ │ ├── app-slide-video │ │ │ │ │ └── app-slide-video.scss │ │ │ │ ├── app-slide-big-img │ │ │ │ │ └── app-slide-big-img.scss │ │ │ │ ├── app-slide-content │ │ │ │ │ └── app-slide-content.scss │ │ │ │ ├── app-slide-youtube │ │ │ │ │ └── app-slide-youtube.scss │ │ │ │ ├── app-slides-concept │ │ │ │ │ └── app-slides-concept.scss │ │ │ │ ├── app-slide-countdown │ │ │ │ │ └── app-slide-countdown.scss │ │ │ │ └── app-slide-aspect-ratio │ │ │ │ │ └── app-slide-aspect-ratio.scss │ │ │ │ └── misc │ │ │ │ └── app-misc-open-source │ │ │ │ └── app-misc-open-source.scss │ │ └── components │ │ │ ├── app-theme-switcher │ │ │ └── app-theme-switcher.scss │ │ │ ├── app-logo │ │ │ ├── app-logo.tsx │ │ │ └── app-logo.scss │ │ │ └── app-menu-footer │ │ │ ├── app-menu-footer.tsx │ │ │ └── app-menu-footer.scss │ ├── interfaces.d.ts │ ├── robots.txt │ ├── assets │ │ ├── favicon │ │ │ ├── favicon.ico │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ └── browserconfig.xml │ │ ├── img │ │ │ ├── deckdeckgo.png │ │ │ └── screenshots │ │ │ │ └── remote-control │ │ │ │ └── deckdeckgo-remote-control-timer.png │ │ └── splash │ │ │ ├── launch-1125x2436.png │ │ │ ├── launch-1242x2148.png │ │ │ ├── launch-1536x2048.png │ │ │ ├── launch-1668x2224.png │ │ │ ├── launch-2048x2732.png │ │ │ ├── launch-640x1136.png │ │ │ └── launch-750x1294.png │ ├── global │ │ └── theme │ │ │ ├── toolbar.scss │ │ │ ├── code.scss │ │ │ └── theme.scss │ └── manifest.json ├── .firebaserc ├── docs │ ├── misc │ │ ├── app-misc-open-source │ │ │ └── app-misc-open-source.md │ │ └── app-misc-logo │ │ │ └── app-misc-logo.md │ └── edit │ │ ├── app-edit-rtl │ │ └── app-edit-rtl.md │ │ └── app-edit-default │ │ └── app-edit-default.md ├── .editorconfig ├── .prettierrc ├── tsconfig.json └── scripts │ └── tsconfig.json ├── studio ├── src │ ├── app │ │ ├── app-root.scss │ │ ├── popovers │ │ │ └── editor │ │ │ │ ├── app-get-help │ │ │ │ └── app-get-help.scss │ │ │ │ ├── app-reveal │ │ │ │ └── app-reveal.scss │ │ │ │ ├── app-deck-style │ │ │ │ └── app-deck-style.scss │ │ │ │ ├── slide │ │ │ │ └── app-edit-slide │ │ │ │ │ └── app-edit-slide.scss │ │ │ │ ├── actions │ │ │ │ ├── app-more-deck-actions │ │ │ │ │ └── app-more-deck-actions.scss │ │ │ │ └── app-more-element-actions │ │ │ │ │ └── app-more-element-actions.scss │ │ │ │ ├── app-color │ │ │ │ └── app-color.scss │ │ │ │ └── app-image-element │ │ │ │ └── app-image-element.scss │ │ ├── definitions │ │ │ ├── firebaseui.d.ts │ │ │ ├── merge-information.d.ts │ │ │ ├── input.d.ts │ │ │ ├── storage.d.ts │ │ │ └── resize-observer.d.ts │ │ ├── pages │ │ │ └── core │ │ │ │ ├── about │ │ │ │ ├── app-faq │ │ │ │ │ └── app-faq.scss │ │ │ │ ├── app-about │ │ │ │ │ └── app-about.scss │ │ │ │ ├── app-press │ │ │ │ │ └── app-press.scss │ │ │ │ ├── app-contact │ │ │ │ │ └── app-contact.scss │ │ │ │ ├── app-remote │ │ │ │ │ └── app-remote.scss │ │ │ │ ├── app-services │ │ │ │ │ └── app-services.scss │ │ │ │ ├── app-newsletter │ │ │ │ │ └── app-newsletter.scss │ │ │ │ ├── app-opensource │ │ │ │ │ └── app-opensource.scss │ │ │ │ ├── app-terms │ │ │ │ │ └── app-terms.scss │ │ │ │ ├── app-privacy │ │ │ │ │ └── app-privacy.scss │ │ │ │ └── app-developer │ │ │ │ │ └── app-developer.scss │ │ │ │ └── app-discover │ │ │ │ └── app-discover.tsx │ │ ├── models │ │ │ ├── api │ │ │ │ ├── api.presentation.tsx │ │ │ │ ├── api.slide.tsx │ │ │ │ ├── api.deck.tsx │ │ │ │ └── api.user.tsx │ │ │ ├── auth │ │ │ │ └── auth.user.tsx │ │ │ └── data │ │ │ │ └── user.tsx │ │ ├── components │ │ │ ├── editor │ │ │ │ ├── app-share-deck │ │ │ │ │ └── app-share-deck.scss │ │ │ │ ├── app-share-options │ │ │ │ │ └── app-share-options.scss │ │ │ │ ├── actions │ │ │ │ │ ├── deck │ │ │ │ │ │ └── app-action-busy │ │ │ │ │ │ │ └── app-action-busy.scss │ │ │ │ │ └── element │ │ │ │ │ │ └── app-actions-element │ │ │ │ │ │ └── app-actions-element.scss │ │ │ │ ├── color │ │ │ │ │ └── app-color-code │ │ │ │ │ │ └── app-color-code.scss │ │ │ │ └── app-image │ │ │ │ │ └── app-image.scss │ │ │ ├── core │ │ │ │ ├── app-avatar │ │ │ │ │ └── app-avatar.scss │ │ │ │ ├── app-menu │ │ │ │ │ └── app-menu.scss │ │ │ │ ├── app-logo │ │ │ │ │ ├── app-logo.tsx │ │ │ │ │ └── app-logo.scss │ │ │ │ └── app-random-gif │ │ │ │ │ └── app-random-gif.scss │ │ │ ├── feed │ │ │ │ └── app-popular │ │ │ │ │ └── app-popular.scss │ │ │ └── landing │ │ │ │ ├── app-landing-footer │ │ │ │ └── app-landing-footer.scss │ │ │ │ └── app-landing │ │ │ │ └── app-landing.tsx │ │ ├── modals │ │ │ ├── editor │ │ │ │ ├── app-embed │ │ │ │ │ └── app-embed.scss │ │ │ │ ├── app-custom-images │ │ │ │ │ └── app-custom-images.scss │ │ │ │ ├── app-publish │ │ │ │ │ └── app-publish.scss │ │ │ │ ├── app-slide-navigate │ │ │ │ │ └── app-slide-navigate.scss │ │ │ │ ├── app-youtube │ │ │ │ │ └── app-youtube.scss │ │ │ │ ├── app-poll-options │ │ │ │ │ └── app-poll-options.scss │ │ │ │ ├── app-code-languages │ │ │ │ │ └── app-code-languages.scss │ │ │ │ └── app-custom-data │ │ │ │ │ └── app-custom-data.scss │ │ │ └── core │ │ │ │ ├── app-deck-delete │ │ │ │ └── app-deck-delete.scss │ │ │ │ └── app-user-delete │ │ │ │ └── app-user-delete.scss │ │ ├── utils │ │ │ ├── editor │ │ │ │ ├── breadcrumbs-type.ts │ │ │ │ ├── image-action.tsx │ │ │ │ ├── more-action.tsx │ │ │ │ ├── edit-action.tsx │ │ │ │ ├── shape-action.tsx │ │ │ │ ├── target-element.tsx │ │ │ │ └── slot-type.tsx │ │ │ └── core │ │ │ │ └── resources.tsx │ │ └── services │ │ │ └── api │ │ │ └── photo │ │ │ └── api.photo.service.tsx │ ├── interfaces.d.ts │ ├── robots.txt │ ├── global │ │ └── theme │ │ │ ├── list.scss │ │ │ ├── theme.scss │ │ │ ├── tappable.scss │ │ │ ├── alert.scss │ │ │ ├── content-editable.scss │ │ │ ├── modal.scss │ │ │ ├── editor │ │ │ ├── editor-deck-img.scss │ │ │ ├── editor-deck-transition.scss │ │ │ └── editor-info.scss │ │ │ ├── loading.scss │ │ │ ├── select.scss │ │ │ ├── content.scss │ │ │ ├── toolbar.scss │ │ │ ├── searchbar.scss │ │ │ └── header.scss │ ├── assets │ │ ├── favicon │ │ │ ├── favicon.ico │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ └── browserconfig.xml │ │ ├── meta │ │ │ └── deckdeckgo-meta.png │ │ ├── splash │ │ │ ├── launch-1125x2436.png │ │ │ ├── launch-1242x2148.png │ │ │ ├── launch-1536x2048.png │ │ │ ├── launch-1668x2224.png │ │ │ ├── launch-2048x2732.png │ │ │ ├── launch-640x1136.png │ │ │ └── launch-750x1294.png │ │ ├── img │ │ │ ├── screenshot-not-found.png │ │ │ ├── shapes │ │ │ │ ├── square-full-solid.svg │ │ │ │ ├── circle-solid.svg │ │ │ │ ├── bookmark-solid.svg │ │ │ │ ├── play-solid.svg │ │ │ │ ├── square-solid.svg │ │ │ │ ├── minus-solid.svg │ │ │ │ ├── folder-solid.svg │ │ │ │ ├── circle-regular.svg │ │ │ │ ├── bookmark-regular.svg │ │ │ │ ├── map-marker-solid.svg │ │ │ │ ├── mobile-solid.svg │ │ │ │ ├── tablet-solid.svg │ │ │ │ ├── file-solid.svg │ │ │ │ ├── minus-circle-solid.svg │ │ │ │ ├── square-regular.svg │ │ │ │ ├── angle-left-solid.svg │ │ │ │ ├── angle-right-solid.svg │ │ │ │ ├── heart-solid.svg │ │ │ │ ├── lock-solid.svg │ │ │ │ ├── clock-solid.svg │ │ │ │ ├── file-regular.svg │ │ │ │ ├── minus-square-solid.svg │ │ │ │ ├── folder-regular.svg │ │ │ │ ├── desktop-solid.svg │ │ │ │ ├── plus-solid.svg │ │ │ │ ├── cloud-solid.svg │ │ │ │ ├── star-solid.svg │ │ │ │ ├── user-solid.svg │ │ │ │ ├── chevron-left-solid.svg │ │ │ │ ├── arrow-left-solid.svg │ │ │ │ ├── laptop-solid.svg │ │ │ │ ├── arrow-right-solid.svg │ │ │ │ ├── long-arrow-alt-left-solid.svg │ │ │ │ ├── long-arrow-alt-right-solid.svg │ │ │ │ ├── check-solid.svg │ │ │ │ ├── calendar-regular.svg │ │ │ │ ├── unlock-solid.svg │ │ │ │ ├── arrow-alt-circle-right-solid.svg │ │ │ │ ├── tag-solid.svg │ │ │ │ ├── arrow-alt-circle-left-solid.svg │ │ │ │ ├── plus-circle-solid.svg │ │ │ │ ├── chevron-right-solid.svg │ │ │ │ ├── info-solid.svg │ │ │ │ ├── ban-solid.svg │ │ │ │ ├── calendar-solid.svg │ │ │ │ ├── minus-square-regular.svg │ │ │ │ ├── clock-regular.svg │ │ │ │ ├── plus-square-solid.svg │ │ │ │ ├── clipboard-solid.svg │ │ │ │ ├── credit-card-solid.svg │ │ │ │ ├── redo-solid.svg │ │ │ │ ├── camera-solid.svg │ │ │ │ ├── arrow-alt-circle-left-regular.svg │ │ │ │ ├── copy-solid.svg │ │ │ │ ├── arrows-alt-h-solid.svg │ │ │ │ ├── arrows-alt-v-solid.svg │ │ │ │ ├── arrow-alt-circle-right-regular.svg │ │ │ │ └── star-regular.svg │ │ │ └── landing │ │ │ │ ├── wave-audience.svg │ │ │ │ ├── wave-introducing.svg │ │ │ │ ├── mobile-light.svg │ │ │ │ ├── tablet-light.svg │ │ │ │ ├── desktop-light.svg │ │ │ │ └── wave-remote.svg │ │ └── icons │ │ │ └── ionicons │ │ │ ├── add.svg │ │ │ ├── md-add.svg │ │ │ ├── md-list.svg │ │ │ ├── ellipsis-vertical.svg │ │ │ ├── close.svg │ │ │ ├── clipboard.svg │ │ │ ├── phone-portrait.svg │ │ │ └── person.svg │ └── manifest.json ├── .firebaserc ├── .prettierrc └── tsconfig.json ├── .prettierignore ├── infra ├── shell.nix ├── sqs.tf ├── .gitignore ├── firebase-login │ ├── script │ │ ├── test │ │ ├── update │ │ └── upload │ ├── default.nix │ ├── shell.nix │ └── nix │ │ ├── packages.nix │ │ └── default.nix ├── script │ ├── test │ ├── postgres-password │ ├── unsplash-client-id │ └── build-unsplash-proxy ├── index.html ├── handler │ ├── src │ │ └── DeckGo │ │ │ └── Prelude.hs │ └── README.md ├── versions.tf ├── token ├── unsplash-proxy │ └── package.yaml ├── bootstrap │ └── main.tf └── google-key-updater │ └── package.yaml ├── remote ├── src │ ├── app │ │ ├── components │ │ │ ├── app-header │ │ │ │ └── app-header.scss │ │ │ ├── app-stopwatch-time │ │ │ │ └── app-stopwatch-time.scss │ │ │ ├── app-logo │ │ │ │ ├── app-logo.tsx │ │ │ │ └── app-logo.scss │ │ │ └── app-draw │ │ │ │ └── app-draw.scss │ │ ├── modals │ │ │ ├── app-remote-connect │ │ │ │ └── app-remote-connect.scss │ │ │ └── app-remote-slide-picker │ │ │ │ └── app-remote-slide-picker.scss │ │ ├── pages │ │ │ ├── app-settings │ │ │ │ └── app-settings.scss │ │ │ └── app-timer │ │ │ │ └── app-timer.scss │ │ └── app-root.scss │ ├── robots.txt │ ├── global │ │ └── theme │ │ │ ├── shadow.scss │ │ │ ├── main.scss │ │ │ ├── fonts.scss │ │ │ ├── segment.scss │ │ │ ├── alert.scss │ │ │ ├── toolbar.scss │ │ │ └── list.scss │ ├── assets │ │ ├── favicon │ │ │ ├── favicon.ico │ │ │ ├── favicon-16x16.png │ │ │ ├── favicon-32x32.png │ │ │ ├── mstile-150x150.png │ │ │ ├── apple-touch-icon.png │ │ │ ├── android-chrome-192x192.png │ │ │ ├── android-chrome-512x512.png │ │ │ └── browserconfig.xml │ │ └── splash │ │ │ ├── launch-1125x2436.png │ │ │ ├── launch-1242x2148.png │ │ │ ├── launch-1536x2048.png │ │ │ ├── launch-1668x2224.png │ │ │ ├── launch-2048x2732.png │ │ │ ├── launch-640x1136.png │ │ │ └── launch-750x1294.png │ └── manifest.json ├── .firebaserc ├── .prettierrc └── tsconfig.json ├── webcomponents ├── charts │ ├── src │ │ └── index.ts │ ├── showcase │ │ ├── data-line-chart-no-dates.csv │ │ ├── data-line-chart.csv │ │ ├── data-line-chart-to-compare.csv │ │ ├── data-bar-chart-to-compare.csv │ │ ├── data-pie-chart.csv │ │ ├── data-line-multiple.csv │ │ └── data-bar-chart-to-compare-with-titles.csv │ ├── .editorconfig │ ├── .prettierrc │ ├── stencil.config.ts │ └── tsconfig.json ├── core │ ├── src │ │ ├── index.ts │ │ └── components │ │ │ └── reveal │ │ │ ├── deckdeckgo-reveal │ │ │ └── deckdeckgo-reveal.scss │ │ │ └── deckdeckgo-reveal-utils.tsx │ ├── .editorconfig │ ├── .prettierrc │ ├── stencil.config.ts │ └── tsconfig.json ├── qrcode │ ├── src │ │ └── index.ts │ ├── .editorconfig │ ├── .prettierrc │ └── tsconfig.json ├── remote │ ├── src │ │ ├── index.ts │ │ ├── components │ │ │ └── deckdeckgo-remote │ │ │ │ └── deckdeckgo-remote.scss │ │ └── index.html │ ├── .editorconfig │ ├── .prettierrc │ └── tsconfig.json ├── social │ ├── src │ │ ├── index.ts │ │ └── components │ │ │ └── deckdeckgo-social.scss │ ├── .editorconfig │ ├── .prettierrc │ ├── .gitignore │ ├── tsconfig.json │ └── stencil.config.ts ├── youtube │ ├── src │ │ └── index.ts │ ├── .editorconfig │ ├── .prettierrc │ ├── .gitignore │ ├── CHANGELOG.md │ └── tsconfig.json ├── lazy-img │ ├── src │ │ ├── index.ts │ │ ├── interface.d.ts │ │ └── components │ │ │ └── interfaces │ │ │ └── custom-load.ts │ ├── .editorconfig │ ├── .prettierrc │ ├── .gitignore │ ├── stencil.config.ts │ └── tsconfig.json ├── slides │ ├── chart │ │ ├── src │ │ │ ├── index.ts │ │ │ └── components │ │ │ │ └── slide │ │ │ │ └── deckdeckgo-slide-chart.scss │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── code │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── gif │ │ ├── src │ │ │ └── index.ts │ │ ├── CHANGELOG.md │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── poll │ │ ├── src │ │ │ ├── index.ts │ │ │ └── utils │ │ │ │ └── deckdeckgo-slide-poll.answer.utils.tsx │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── split │ │ ├── src │ │ │ └── index.ts │ │ ├── CHANGELOG.md │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── title │ │ ├── src │ │ │ ├── index.ts │ │ │ └── components │ │ │ │ └── slide │ │ │ │ └── deckdeckgo-slide-title.scss │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── video │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── CHANGELOG.md │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── author │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── big-img │ │ ├── src │ │ │ ├── index.ts │ │ │ └── components │ │ │ │ └── slide │ │ │ │ └── deckdeckgo-slide-big-img.scss │ │ ├── showcase │ │ │ ├── big-deckdeckgo-h.jpg │ │ │ └── big-deckdeckgo.jpg │ │ ├── CHANGELOG.md │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── content │ │ ├── src │ │ │ ├── index.ts │ │ │ └── components │ │ │ │ └── slide │ │ │ │ └── deckdeckgo-slide-content.scss │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── countdown │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ ├── qrcode │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ ├── CHANGELOG.md │ │ └── tsconfig.json │ ├── youtube │ │ ├── src │ │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ └── tsconfig.json │ └── aspect-ratio │ │ ├── src │ │ └── index.ts │ │ ├── .editorconfig │ │ ├── .prettierrc │ │ ├── tsconfig.json │ │ └── CHANGELOG.md ├── highlight-code │ ├── src │ │ ├── index.ts │ │ └── components │ │ │ └── declarations │ │ │ └── deckdeckgo-highlight-code-anchor.tsx │ ├── .editorconfig │ ├── .prettierrc │ ├── stencil.config.ts │ └── tsconfig.json ├── drag-resize-rotate │ ├── src │ │ └── index.ts │ ├── .editorconfig │ ├── .prettierrc │ ├── .gitignore │ ├── tsconfig.json │ └── CHANGELOG.md ├── color │ ├── src │ │ ├── index.ts │ │ ├── interface.d.ts │ │ └── index.html │ ├── .editorconfig │ ├── .prettierrc │ ├── .gitignore │ ├── tsconfig.json │ └── stencil.config.ts └── inline-editor │ ├── src │ ├── index.ts │ ├── utils │ │ └── enums.ts │ └── components │ │ └── inline-editor │ │ └── deckdeckgo-inline-editor.interface.ts │ ├── .editorconfig │ ├── .prettierrc │ ├── stencil.config.ts │ └── tsconfig.json ├── utils ├── types │ ├── src │ │ ├── index.ts │ │ ├── poll.ts │ │ └── chart.ts │ ├── tsconfig.json │ └── .prettierrc ├── slide │ ├── src │ │ ├── interfaces │ │ │ ├── deckdeckgo-component.ts │ │ │ ├── deckdeckgo-slide-resize.ts │ │ │ ├── deckdeckgo-slide-play.ts │ │ │ └── deckdeckgo-slide.ts │ │ └── index.ts │ ├── .prettierrc │ ├── tsconfig.json │ └── rollup.config.js ├── utils │ ├── src │ │ └── index.ts │ ├── tsconfig.json │ ├── .prettierrc │ └── rollup.config.js ├── deck │ ├── src │ │ └── index.ts │ ├── styles │ │ └── deckdeckgo-deck-rtl.css │ ├── .prettierrc │ ├── tsconfig.json │ └── rollup.config.js └── remote │ ├── src │ ├── index.ts │ └── drawable │ │ └── drawable.ts │ ├── CHANGELOG.md │ ├── tsconfig.json │ ├── .prettierrc │ └── rollup.config.js ├── cli ├── src │ └── version.js ├── tslint.json ├── README.md └── tsconfig.json ├── cloud ├── .firebaserc ├── functions │ ├── src │ │ ├── model │ │ │ ├── user.ts │ │ │ └── slide.ts │ │ └── utils │ │ │ └── resources.ts │ ├── .gitignore │ └── tsconfig.json ├── firebase.json ├── config │ ├── cors-studio-prod.json │ └── cors-studio-beta.json └── CHANGELOG.md ├── webpack ├── src │ ├── index.ts │ ├── notes │ │ └── deckdeckgo-remove-notes-resources.ts │ └── info │ │ └── deckdeckgo-info-plugin.ts └── tsconfig.json ├── backend └── CHANGELOG.md ├── .github └── ISSUE_TEMPLATE │ └── docs.md └── .gitignore /docs/src/app/app-root.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/interfaces.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/app/app-root.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/interfaces.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/src/components.d.ts 2 | -------------------------------------------------------------------------------- /infra/shell.nix: -------------------------------------------------------------------------------- 1 | (import ./default.nix).devshell 2 | -------------------------------------------------------------------------------- /remote/src/app/components/app-header/app-header.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/edit/app-edit-fonts/app-edit-fonts.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/app-get-help/app-get-help.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /remote/src/app/components/app-stopwatch-time/app-stopwatch-time.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /remote/src/app/modals/app-remote-connect/app-remote-connect.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webcomponents/charts/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/core/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/qrcode/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/remote/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/social/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/youtube/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /studio/src/app/definitions/firebaseui.d.ts: -------------------------------------------------------------------------------- 1 | declare var firebaseui; 2 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/chart/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/code/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/gif/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/poll/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/split/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/title/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/video/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/introduction/app-installation/app-installation.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/introduction/app-introduction/app-introduction.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org/ 2 | 3 | User-agent: * 4 | Disallow: 5 | -------------------------------------------------------------------------------- /infra/sqs.tf: -------------------------------------------------------------------------------- 1 | resource "aws_sqs_queue" "dirty" { 2 | name = "dirty" 3 | } 4 | -------------------------------------------------------------------------------- /remote/src/app/modals/app-remote-slide-picker/app-remote-slide-picker.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/author/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/content/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/countdown/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/qrcode/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/youtube/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /remote/src/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org/ 2 | 3 | User-agent: * 4 | Disallow: 5 | -------------------------------------------------------------------------------- /studio/src/robots.txt: -------------------------------------------------------------------------------- 1 | # robotstxt.org/ 2 | 3 | User-agent: * 4 | Disallow: 5 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /webcomponents/slides/aspect-ratio/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | -------------------------------------------------------------------------------- /docs/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "deckdeckgo-docs" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-gif/app-slide-gif.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /infra/.gitignore: -------------------------------------------------------------------------------- 1 | .pgdata 2 | .dynamodb.pid 3 | .s3.pid 4 | .sqs.pid 5 | shared-local-instance.db 6 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-author/app-slide-author.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-chart/app-slide-chart.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-code/app-slide-code.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-poll/app-slide-poll.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-qrcode/app-slide-qrcode.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-split/app-slide-split.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-title/app-slide-title.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-video/app-slide-video.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /infra/firebase-login/script/test: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # vim: filetype=sh 3 | 4 | nix-build --no-link 5 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-big-img/app-slide-big-img.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-content/app-slide-content.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-youtube/app-slide-youtube.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slides-concept/app-slides-concept.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /remote/src/global/theme/shadow.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --remote-box-shadow: 0 4px 4px rgba(0, 0, 0, 0.12); 3 | } 4 | -------------------------------------------------------------------------------- /studio/src/global/theme/list.scss: -------------------------------------------------------------------------------- 1 | // Fix pre-rendering 2 | ion-list.ion-no-padding { 3 | padding: 0; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/global/theme/theme.scss: -------------------------------------------------------------------------------- 1 | ul { 2 | list-style-type: none; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | -------------------------------------------------------------------------------- /utils/types/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './remote'; 2 | export * from './chart'; 3 | export * from './poll'; 4 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-line-chart-no-dates.csv: -------------------------------------------------------------------------------- 1 | 1;5;0 2 | 2;10;6 3 | 3;8;14 4 | 4;14;8 5 | 5;18;4 6 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-countdown/app-slide-countdown.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /infra/script/test: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # vim: filetype=sh 3 | 4 | nix-build --no-link --sandbox --max-jobs 20 5 | -------------------------------------------------------------------------------- /webcomponents/color/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | 3 | export * from './utils/deckdeckgo-palette'; -------------------------------------------------------------------------------- /docs/src/app/pages/docs/slides/app-slide-aspect-ratio/app-slide-aspect-ratio.scss: -------------------------------------------------------------------------------- 1 | @import "../app-slides-container"; 2 | -------------------------------------------------------------------------------- /docs/src/assets/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/favicon.ico -------------------------------------------------------------------------------- /docs/src/assets/img/deckdeckgo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/img/deckdeckgo.png -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-faq/app-faq.scss: -------------------------------------------------------------------------------- 1 | app-faq { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /webcomponents/color/src/interface.d.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | 3 | export * from './utils/deckdeckgo-palette'; -------------------------------------------------------------------------------- /remote/src/assets/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/favicon.ico -------------------------------------------------------------------------------- /remote/src/global/theme/main.scss: -------------------------------------------------------------------------------- 1 | main { 2 | max-width: 1024px; 3 | margin-left: auto; 4 | margin-right: auto; 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/app/models/api/api.presentation.tsx: -------------------------------------------------------------------------------- 1 | export interface ApiPresentation { 2 | id: string; 3 | url: string; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-about/app-about.scss: -------------------------------------------------------------------------------- 1 | app-about { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-press/app-press.scss: -------------------------------------------------------------------------------- 1 | app-press { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/favicon.ico -------------------------------------------------------------------------------- /studio/src/global/theme/tappable.scss: -------------------------------------------------------------------------------- 1 | *[custom-tappable] { 2 | touch-action: manipulation; 3 | cursor: pointer; 4 | } 5 | -------------------------------------------------------------------------------- /remote/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "deckdeckgo-app", 4 | "staging": "deckdeckgo-app-beta" 5 | } 6 | } -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-contact/app-contact.scss: -------------------------------------------------------------------------------- 1 | app-contact { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-remote/app-remote.scss: -------------------------------------------------------------------------------- 1 | app-remote { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /cli/src/version.js: -------------------------------------------------------------------------------- 1 | export function getPkgVersion() { 2 | const pkg = require('../package.json'); 3 | return pkg.version; 4 | } 5 | -------------------------------------------------------------------------------- /docs/src/assets/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /docs/src/assets/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /docs/src/assets/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-1125x2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-1125x2436.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-1242x2148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-1242x2148.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-1536x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-1536x2048.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-1668x2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-1668x2224.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-2048x2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-2048x2732.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-640x1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-640x1136.png -------------------------------------------------------------------------------- /docs/src/assets/splash/launch-750x1294.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/splash/launch-750x1294.png -------------------------------------------------------------------------------- /remote/src/assets/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /remote/src/assets/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /studio/src/app/components/editor/app-share-deck/app-share-deck.scss: -------------------------------------------------------------------------------- 1 | web-social-share { 2 | --web-social-share-zindex: 200000; 3 | } 4 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-services/app-services.scss: -------------------------------------------------------------------------------- 1 | app-services { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /studio/src/assets/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /studio/src/assets/meta/deckdeckgo-meta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/meta/deckdeckgo-meta.png -------------------------------------------------------------------------------- /studio/src/global/theme/alert.scss: -------------------------------------------------------------------------------- 1 | ion-alert.custom-info { 2 | button[class*="sc-ion-alert"] { 3 | color: black; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/global/theme/content-editable.scss: -------------------------------------------------------------------------------- 1 | *[contenteditable] { 2 | -webkit-user-select: text; 3 | user-select: text; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/global/theme/modal.scss: -------------------------------------------------------------------------------- 1 | ion-modal.fullscreen { 2 | --width: 100%; 3 | --height: 100%; 4 | --border-radius: 0; 5 | } 6 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-line-chart.csv: -------------------------------------------------------------------------------- 1 | 01.01.2018;5 2 | 01.03.2018;10 3 | 01.06.2018;8 4 | 01.09.2018;14 5 | 01.12.2018;18 6 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/src/interface.d.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | 3 | export * from './components/interfaces/custom-load'; 4 | -------------------------------------------------------------------------------- /docs/src/assets/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /infra/index.html: -------------------------------------------------------------------------------- 1 | 2 |
This is title
3 | 4 |

Presentations!

5 | 6 | 7 | -------------------------------------------------------------------------------- /remote/src/assets/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-1125x2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-1125x2436.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-1242x2148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-1242x2148.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-1536x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-1536x2048.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-1668x2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-1668x2224.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-2048x2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-2048x2732.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-640x1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-640x1136.png -------------------------------------------------------------------------------- /remote/src/assets/splash/launch-750x1294.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/splash/launch-750x1294.png -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-newsletter/app-newsletter.scss: -------------------------------------------------------------------------------- 1 | app-newsletter { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-opensource/app-opensource.scss: -------------------------------------------------------------------------------- 1 | app-opensource { 2 | main { 3 | background: white; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/mstile-150x150.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-1125x2436.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-1125x2436.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-1242x2148.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-1242x2148.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-1536x2048.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-1536x2048.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-1668x2224.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-1668x2224.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-2048x2732.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-2048x2732.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-640x1136.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-640x1136.png -------------------------------------------------------------------------------- /studio/src/assets/splash/launch-750x1294.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/splash/launch-750x1294.png -------------------------------------------------------------------------------- /utils/slide/src/interfaces/deckdeckgo-component.ts: -------------------------------------------------------------------------------- 1 | export interface DeckdeckgoComponent { 2 | lazyLoadContent(): Promise; 3 | } 4 | -------------------------------------------------------------------------------- /utils/utils/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './utils/utils'; 2 | export * from './utils/image-utils'; 3 | export * from './utils/inject-utils'; 4 | -------------------------------------------------------------------------------- /cloud/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "deckdeckgo-studio-prod", 4 | "staging": "deckdeckgo-studio-beta" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /remote/src/assets/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /remote/src/global/theme/fonts.scss: -------------------------------------------------------------------------------- 1 | :root { 2 | --font-size-small: 1.4rem; 3 | --font-size-normal: 1.8rem; 4 | --font-size-big: 2rem; 5 | } 6 | -------------------------------------------------------------------------------- /remote/src/global/theme/segment.scss: -------------------------------------------------------------------------------- 1 | body.dark { 2 | ion-segment { 3 | --ion-text-color-rgb: var(--ion-color-light-rgb); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /studio/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "deckdeckgo-studio-prod", 4 | "staging": "deckdeckgo-studio-beta" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/app-reveal/app-reveal.scss: -------------------------------------------------------------------------------- 1 | app-reveal { 2 | @import "../../../../global/theme/editor/editor-popover"; 3 | } 4 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /studio/src/assets/img/screenshot-not-found.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/img/screenshot-not-found.png -------------------------------------------------------------------------------- /cloud/functions/src/model/user.ts: -------------------------------------------------------------------------------- 1 | export interface UserData { 2 | anonymous: boolean; 3 | email?: string; 4 | newsletter?: boolean; 5 | } 6 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/misc/app-misc-open-source/app-misc-open-source.scss: -------------------------------------------------------------------------------- 1 | div.github-links { 2 | ion-badge { 3 | margin: 4px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /docs/src/assets/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /docs/src/assets/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-embed/app-embed.scss: -------------------------------------------------------------------------------- 1 | app-embed { 2 | ion-list[class*="list"].inputs-list { 3 | padding-top: 0; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /remote/src/assets/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /remote/src/assets/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/remote/src/assets/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /studio/src/app/utils/editor/breadcrumbs-type.ts: -------------------------------------------------------------------------------- 1 | export enum BreadcrumbsStep { 2 | DECK = 'deck', 3 | SLIDE = 'slide', 4 | ELEMENT = 'element' 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/android-chrome-192x192.png -------------------------------------------------------------------------------- /studio/src/assets/favicon/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/studio/src/assets/favicon/android-chrome-512x512.png -------------------------------------------------------------------------------- /webcomponents/inline-editor/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | export * from './components/inline-editor/deckdeckgo-inline-editor.interface'; 3 | -------------------------------------------------------------------------------- /cloud/functions/.gitignore: -------------------------------------------------------------------------------- 1 | ## Compiled JavaScript files 2 | **/*.js 3 | **/*.js.map 4 | 5 | # Typescript v1 declaration files 6 | typings/ 7 | 8 | node_modules/ -------------------------------------------------------------------------------- /infra/handler/src/DeckGo/Prelude.hs: -------------------------------------------------------------------------------- 1 | module DeckGo.Prelude where 2 | 3 | import Data.Function 4 | 5 | xif :: b -> ((b -> c) -> b -> c) -> c 6 | xif = flip fix 7 | -------------------------------------------------------------------------------- /studio/src/global/theme/editor/editor-deck-img.scss: -------------------------------------------------------------------------------- 1 | main { 2 | deckgo-deck { 3 | deckgo-social { 4 | pointer-events: none; 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /utils/deck/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './utils/parse-style.utils'; 2 | export * from './utils/parse-content.utils'; 3 | export * from './utils/slides.utils'; 4 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-line-chart-to-compare.csv: -------------------------------------------------------------------------------- 1 | 01.01.2018;5;0 2 | 01.03.2018;10;6 3 | 01.06.2018;8;14 4 | 01.09.2018;14;8 5 | 01.12.2018;18;4 6 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/showcase/big-deckdeckgo-h.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/webcomponents/slides/big-img/showcase/big-deckdeckgo-h.jpg -------------------------------------------------------------------------------- /webcomponents/slides/big-img/showcase/big-deckdeckgo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/webcomponents/slides/big-img/showcase/big-deckdeckgo.jpg -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-bar-chart-to-compare.csv: -------------------------------------------------------------------------------- 1 | 01.01.2018;5;0;10 2 | 01.03.2018;10;6;12 3 | 01.06.2018;8;14;8 4 | 01.09.2018;14;8;16 5 | 01.12.2018;18;4;5 6 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-pie-chart.csv: -------------------------------------------------------------------------------- 1 | Wind;53.13% 2 | Solar:1.96% 3 | Geothermal;7.52% 4 | Landfill Gas;15.67% 5 | Biomass;14.79% 6 | Qualified Hydropower;6.93% 7 | -------------------------------------------------------------------------------- /docs/src/app/components/app-theme-switcher/app-theme-switcher.scss: -------------------------------------------------------------------------------- 1 | app-dark-light-switcher { 2 | display: flex; 3 | justify-content: center; 4 | align-items: center; 5 | } 6 | -------------------------------------------------------------------------------- /infra/firebase-login/script/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nix-shell 2 | #!nix-shell -I nixpkgs=./nix 3 | #!nix-shell -i bash -p niv nix --pure 4 | # vim: filetype=sh 5 | 6 | niv update 7 | -------------------------------------------------------------------------------- /studio/src/app/definitions/merge-information.d.ts: -------------------------------------------------------------------------------- 1 | interface MergeInformation { 2 | deckId: string; 3 | userId: string; 4 | userToken: string; 5 | anonymous: boolean; 6 | } 7 | -------------------------------------------------------------------------------- /utils/remote/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './drawable/drawable'; 2 | export * from './drawable/pencil'; 3 | export * from './drawable/circle'; 4 | export * from './drawable/arrow'; 5 | -------------------------------------------------------------------------------- /remote/src/app/pages/app-settings/app-settings.scss: -------------------------------------------------------------------------------- 1 | app-settings { 2 | ion-list { 3 | ion-range { 4 | padding-top: 0; 5 | padding-bottom: 0; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /remote/src/global/theme/alert.scss: -------------------------------------------------------------------------------- 1 | body.dark { 2 | ion-alert { 3 | --ion-text-color: var(--ion-color-light); 4 | --ion-color-step-550: var(--ion-color-light); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /studio/src/global/theme/loading.scss: -------------------------------------------------------------------------------- 1 | ion-loading[class*="sc-ion-loading"] { 2 | --background: transparent; 3 | 4 | div.loading-wrapper { 5 | box-shadow: none; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-line-multiple.csv: -------------------------------------------------------------------------------- 1 | 01.01.2018;5;0;8;1;9 2 | 01.03.2018;10;6;22;2;10 3 | 01.06.2018;8;14;4;3;12 4 | 01.09.2018;14;8;5;4;9 5 | 01.12.2018;18;4;8;6;18 6 | -------------------------------------------------------------------------------- /infra/firebase-login/default.nix: -------------------------------------------------------------------------------- 1 | # TODO: port tests 2 | # TODO: fix sources 3 | # TODO: drop nix/packages 4 | with { pkgs = import ./nix {}; }; 5 | pkgs.callPackage ./nix/packages.nix {} 6 | -------------------------------------------------------------------------------- /utils/remote/src/drawable/drawable.ts: -------------------------------------------------------------------------------- 1 | export interface Point { 2 | x: number; 3 | y: number; 4 | } 5 | 6 | export interface Drawable { 7 | draw(ctx: CanvasRenderingContext2D): void; 8 | } 9 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/src/components/interfaces/custom-load.ts: -------------------------------------------------------------------------------- 1 | export interface DeckDeckGoCustomLoad { 2 | imgElement: HTMLImageElement; 3 | imgSrc?: string; 4 | imgSrcSet?: string; 5 | } 6 | -------------------------------------------------------------------------------- /cloud/firebase.json: -------------------------------------------------------------------------------- 1 | { 2 | "functions": { 3 | "predeploy": [ 4 | "npm --prefix \"$RESOURCE_DIR\" run lint", 5 | "npm --prefix \"$RESOURCE_DIR\" run build" 6 | ] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /remote/src/app/app-root.scss: -------------------------------------------------------------------------------- 1 | .dark { 2 | --ion-background-color: black; 3 | --ion-text-color: #ffffff; 4 | --ion-item-background: #1a1b1e; 5 | --ion-item-background-activated: #313131; 6 | } 7 | -------------------------------------------------------------------------------- /studio/src/app/components/editor/app-share-options/app-share-options.scss: -------------------------------------------------------------------------------- 1 | a { 2 | color: inherit; 3 | cursor: pointer; 4 | 5 | &:hover { 6 | color: var(--ion-color-tertiary); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /studio/src/app/definitions/input.d.ts: -------------------------------------------------------------------------------- 1 | interface InputTargetEvent extends EventTarget { 2 | value: string; 3 | } 4 | 5 | interface InputUIEvent extends UIEvent { 6 | target: HTMLElement; 7 | } 8 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-terms/app-terms.scss: -------------------------------------------------------------------------------- 1 | app-terms { 2 | main { 3 | background: white; 4 | 5 | ul { 6 | list-style-type: circle; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.1 (2019-09-14) 3 | 4 | ### Features 5 | 6 | * initial version. kudos to [Noël Macé](https://github.com/noelmace) 7 | -------------------------------------------------------------------------------- /docs/src/app/pages/docs/introduction/app-remote-control/app-remote-control.scss: -------------------------------------------------------------------------------- 1 | img { 2 | width: 10rem; 3 | } 4 | 5 | ul li { 6 | list-style-type: initial; 7 | list-style-position: inside; 8 | } 9 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-privacy/app-privacy.scss: -------------------------------------------------------------------------------- 1 | app-privacy { 2 | main { 3 | background: white; 4 | 5 | ul { 6 | list-style-type: circle; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/src/components/declarations/deckdeckgo-highlight-code-anchor.tsx: -------------------------------------------------------------------------------- 1 | export interface DeckdeckgoHighlightCodeAnchor { 2 | offsetTop: number; 3 | hasLineZoom: boolean; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/app/components/editor/actions/deck/app-action-busy/app-action-busy.scss: -------------------------------------------------------------------------------- 1 | app-action-busy { 2 | ion-button.button-solid { 3 | --padding-start: 16px; 4 | --padding-end: 16px; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/md-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/src/assets/img/screenshots/remote-control/deckdeckgo-remote-control-timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ble/deckdeckgo/master/docs/src/assets/img/screenshots/remote-control/deckdeckgo-remote-control-timer.png -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/app-deck-style/app-deck-style.scss: -------------------------------------------------------------------------------- 1 | app-deck-style { 2 | @import "../../../../global/theme/editor/editor-info"; 3 | @import "../../../../global/theme/editor/editor-popover"; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/app/utils/editor/image-action.tsx: -------------------------------------------------------------------------------- 1 | import {EditAction} from './edit-action'; 2 | 3 | export interface ImageAction { 4 | action: EditAction; 5 | image?: UnsplashPhoto | TenorGif | StorageFile; 6 | } 7 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/md-list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webcomponents/charts/showcase/data-bar-chart-to-compare-with-titles.csv: -------------------------------------------------------------------------------- 1 | ;Salami;Pastrami;Prosciutto 2 | 01.01.2018;5;0;10 3 | 01.03.2018;10;6;12 4 | 01.06.2018;8;14;8 5 | 01.09.2018;14;8;16 6 | 01.12.2018;18;4;5 7 | -------------------------------------------------------------------------------- /webcomponents/slides/gif/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.1-1 (2019-09-09) 3 | 4 | ### Fix 5 | 6 | * gif height since slide default height has been modified to percent (core v1.0.0-rc.1-1) 7 | -------------------------------------------------------------------------------- /docs/src/global/theme/toolbar.scss: -------------------------------------------------------------------------------- 1 | ion-header { 2 | ion-toolbar { 3 | --ion-toolbar-background: transparent; 4 | } 5 | 6 | &[class*="header"]::after { 7 | background-image: none; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /remote/src/global/theme/toolbar.scss: -------------------------------------------------------------------------------- 1 | ion-header { 2 | ion-toolbar { 3 | --ion-toolbar-background: transparent; 4 | } 5 | 6 | &[class*="header"]::after { 7 | background-image: none; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /studio/src/global/theme/select.scss: -------------------------------------------------------------------------------- 1 | ion-item.item-select { 2 | ion-select { 3 | padding: 8px; 4 | background: var(--ion-color-light); 5 | border: 1px solid #dedede; 6 | border-radius: 4px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /utils/slide/src/interfaces/deckdeckgo-slide-resize.ts: -------------------------------------------------------------------------------- 1 | import {DeckdeckgoSlide} from './deckdeckgo-slide'; 2 | 3 | export interface DeckdeckgoSlideResize extends DeckdeckgoSlide { 4 | resizeContent(): Promise; 5 | } 6 | -------------------------------------------------------------------------------- /infra/firebase-login/shell.nix: -------------------------------------------------------------------------------- 1 | with { pkgs = import ./nix {}; }; 2 | pkgs.haskellPackages.developPackage 3 | { root = ./.; 4 | modifier = drv: drv // { buildInputs = drv.buildInputs ++ [ pkgs.cabal-install ]; } ; 5 | } 6 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/slide/app-edit-slide/app-edit-slide.scss: -------------------------------------------------------------------------------- 1 | app-edit-slide { 2 | @import "../../../../../global/theme/editor/editor-info"; 3 | @import "../../../../../global/theme/editor/editor-popover"; 4 | } 5 | -------------------------------------------------------------------------------- /studio/src/app/utils/editor/more-action.tsx: -------------------------------------------------------------------------------- 1 | export enum MoreAction { 2 | FULLSCREEN, 3 | JUMP_TO, 4 | REMOTE, 5 | SHARE, 6 | PUBLISH, 7 | STYLE, 8 | EMBED, 9 | COPY, 10 | NOTES, 11 | DELETE 12 | } 13 | -------------------------------------------------------------------------------- /studio/src/app/models/api/api.slide.tsx: -------------------------------------------------------------------------------- 1 | import {SlideAttributes, SlideTemplate} from '../data/slide'; 2 | 3 | export interface ApiSlide { 4 | content?: string; 5 | template: SlideTemplate; 6 | attributes?: SlideAttributes; 7 | } 8 | -------------------------------------------------------------------------------- /webcomponents/slides/content/src/components/slide/deckdeckgo-slide-content.scss: -------------------------------------------------------------------------------- 1 | @import "./deckdeckgo-slide"; 2 | 3 | div.deckgo-slide { 4 | flex-direction: column; 5 | align-items: flex-start; 6 | justify-content: flex-start; 7 | } 8 | -------------------------------------------------------------------------------- /docs/docs/misc/app-misc-open-source/app-misc-open-source.md: -------------------------------------------------------------------------------- 1 | # Open source 2 | 3 | [DeckDeckGo] is **open source** and its source code could be found on [Github](https://github.com/deckgo/deckdeckgo). 4 | 5 | [DeckDeckGo]: https://deckdeckgo.com -------------------------------------------------------------------------------- /remote/src/global/theme/list.scss: -------------------------------------------------------------------------------- 1 | ion-list { 2 | ion-list-header { 3 | --color: inherit; 4 | } 5 | 6 | --ion-background-color: transparent; 7 | --ion-item-background: transparent; 8 | --border-color: transparent; 9 | } 10 | -------------------------------------------------------------------------------- /studio/src/app/utils/editor/edit-action.tsx: -------------------------------------------------------------------------------- 1 | export enum EditAction { 2 | OPEN_PHOTOS, 3 | OPEN_GIFS, 4 | OPEN_CUSTOM, 5 | DELETE_BACKGROUND, 6 | ADD_IMAGE, 7 | OPEN_CUSTOM_LOGO, 8 | DELETE_LOGO, 9 | OPEN_DATA 10 | } 11 | -------------------------------------------------------------------------------- /docs/src/global/theme/code.scss: -------------------------------------------------------------------------------- 1 | deckgo-highlight-code { 2 | font-size: var(--font-size-normal); 3 | } 4 | 5 | @media screen and (max-width: 720px) { 6 | deckgo-highlight-code { 7 | font-size: var(--font-size-small); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /infra/script/postgres-password: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # vim: filetype=sh 3 | 4 | set -euo pipefail 5 | 6 | out=$(pass deckdeckgo/postgres | head -n 1 | tr -d '\n') 7 | 8 | cat < 2 | 3 | # 1.0.0-rc.1 (2020-02-22) 4 | 5 | ### Features 6 | 7 | - initial release to expose common utils for the DeckDeckGo remote control (app, emitter) and receiver (web component deployed in the decks) 8 | -------------------------------------------------------------------------------- /cloud/config/cors-studio-prod.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "origin": ["https://deckdeckgo.com", "https://beta.deckdeckgo.io", "https://deckdeckgo.app"], 4 | "responseHeader": ["Content-Type"], 5 | "method": ["GET"], 6 | "maxAgeSeconds": 3600 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /studio/src/app/models/auth/auth.user.tsx: -------------------------------------------------------------------------------- 1 | export interface AuthUser { 2 | uid: string; 3 | token: string; 4 | 5 | anonymous: boolean; 6 | 7 | name?: string; 8 | email?: string; 9 | email_verified?: boolean; 10 | photo_url?: string; 11 | } 12 | -------------------------------------------------------------------------------- /infra/script/unsplash-client-id: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # vim: filetype=sh 3 | 4 | set -euo pipefail 5 | 6 | out=$(pass deckdeckgo/unsplash-client-id | head -n 1 | tr -d '\n') 7 | 8 | cat <ionicons-v5-f -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-custom-images/app-custom-images.scss: -------------------------------------------------------------------------------- 1 | app-custom-images { 2 | @import "../../../../global/theme/editor/editor-modal"; 3 | 4 | app-image-columns { 5 | --deckgo-images-min-height: 5rem; 6 | --deckgo-images-padding: 16px; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-publish/app-publish.scss: -------------------------------------------------------------------------------- 1 | app-publish { 2 | main { 3 | background: white; 4 | 5 | &.published { 6 | height: 100%; 7 | } 8 | 9 | strong { 10 | color: var(--ion-color-tertiary); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-slide-navigate/app-slide-navigate.scss: -------------------------------------------------------------------------------- 1 | app-slide-navigate { 2 | ion-reorder-group { 3 | ion-item { 4 | --border-color: transparent; 5 | } 6 | } 7 | 8 | p { 9 | font-size: var(--font-size-very-small); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/actions/app-more-element-actions/app-more-element-actions.scss: -------------------------------------------------------------------------------- 1 | app-more-element-actions { 2 | a { 3 | color: inherit; 4 | cursor: pointer; 5 | 6 | &:hover { 7 | color: var(--ion-color-tertiary); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /utils/deck/styles/deckdeckgo-deck-rtl.css: -------------------------------------------------------------------------------- 1 | deckgo-deck h1 div[style*="direction"] span, 2 | deckgo-deck h2 div[style*="direction"] span, 3 | deckgo-deck h3 div[style*="direction"] span, 4 | deckgo-deck section div[style*="direction"] span { 5 | font-size: inherit !important; 6 | } 7 | -------------------------------------------------------------------------------- /webcomponents/slides/split/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.2 (2019-10-13) 3 | 4 | ### Features 5 | 6 | * add option `vertical` to use this template either vertically or (per default) horizontally split ([#372](https://github.com/deckgo/deckdeckgo/issues/372)) 7 | -------------------------------------------------------------------------------- /cloud/functions/src/model/slide.ts: -------------------------------------------------------------------------------- 1 | import {firestore} from 'firebase-admin'; 2 | 3 | export interface Slide { 4 | id: string; 5 | ref: firestore.DocumentReference; 6 | // For simplicity reason cast to any as we don't want to redefine them as in studio 7 | data: any; 8 | } 9 | -------------------------------------------------------------------------------- /studio/src/app/components/editor/color/app-color-code/app-color-code.scss: -------------------------------------------------------------------------------- 1 | app-color-code { 2 | div.disabled { 3 | cursor: default; 4 | opacity: 0.3; 5 | pointer-events: none; 6 | } 7 | 8 | ion-item.action-button { 9 | padding-bottom: 8px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /utils/types/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "module": "esnext", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "removeComments": true 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ] 13 | } -------------------------------------------------------------------------------- /webpack/src/index.ts: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | DeckDeckGoMarkdownPlugin: require('./markdown/deckdeckgo-markdown-plugin'), 3 | DeckDeckGoInfoPlugin: require('./info/deckdeckgo-info-plugin'), 4 | DeckDeckGoRemoveNotesPlugin: require('./notes/deckdeckgo-remove-notes-plugin') 5 | }; 6 | -------------------------------------------------------------------------------- /docs/src/app/components/app-logo/app-logo.tsx: -------------------------------------------------------------------------------- 1 | import {Component, h} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-logo', 5 | styleUrl: 'app-logo.scss', 6 | shadow: true 7 | }) 8 | export class AppLogo { 9 | render() { 10 | return
; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /remote/src/app/components/app-logo/app-logo.tsx: -------------------------------------------------------------------------------- 1 | import {Component, h} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-logo', 5 | styleUrl: 'app-logo.scss', 6 | shadow: true 7 | }) 8 | export class AppLogo { 9 | render() { 10 | return
; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /studio/src/global/theme/editor/editor-deck-transition.scss: -------------------------------------------------------------------------------- 1 | main { 2 | &.ready { 3 | deckgo-deck { 4 | --slide-transition: background 300ms, color 300ms; 5 | 6 | [slot] { 7 | transition: background 300ms, color 300ms; 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /webcomponents/core/src/components/reveal/deckdeckgo-reveal/deckdeckgo-reveal.scss: -------------------------------------------------------------------------------- 1 | ::slotted(*) { 2 | visibility: hidden; 3 | opacity: 0; 4 | transform: var(--reveal-transform, translateX(-4px)); 5 | transition: all var(--reveal-duration, 200ms) cubic-bezier(0.23, 1, 0.32, 1); 6 | } 7 | -------------------------------------------------------------------------------- /webpack/src/notes/deckdeckgo-remove-notes-resources.ts: -------------------------------------------------------------------------------- 1 | class DeckdeckGoRemoveNotesResources { 2 | 3 | static get Constants(): any { 4 | return { 5 | SRC: './dist/index.html' 6 | }; 7 | } 8 | 9 | } 10 | 11 | module.exports = DeckdeckGoRemoveNotesResources; 12 | -------------------------------------------------------------------------------- /infra/script/build-unsplash-proxy: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # vim: filetype=sh 3 | # TODO: rename to build-handler 4 | 5 | set -euo pipefail 6 | 7 | out=$(nix-build --no-out-link -A function-unsplash) 8 | 9 | cat <; 5 | 6 | pause(): Promise; 7 | 8 | toggle(): Promise; 9 | } 10 | -------------------------------------------------------------------------------- /studio/src/global/theme/content.scss: -------------------------------------------------------------------------------- 1 | ion-nav, 2 | ion-modal.fullscreen { 3 | ion-content { 4 | --background: var(--ion-color-light); 5 | background: var(--ion-color-light); 6 | 7 | main { 8 | max-width: 1400px; 9 | margin-left: auto; 10 | margin-right: auto; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /docs/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /studio/src/app/definitions/resize-observer.d.ts: -------------------------------------------------------------------------------- 1 | interface ResizeObserverConstructor { 2 | new (callback: any); 3 | 4 | observe: (target: HTMLElement) => void; 5 | 6 | unobserve: (target: HTMLElement) => void; 7 | 8 | disconnect: () => void; 9 | } 10 | 11 | declare var ResizeObserver: ResizeObserverConstructor; 12 | -------------------------------------------------------------------------------- /utils/utils/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "module": "esnext", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "removeComments": true 9 | }, 10 | "include": [ 11 | "src/**/*" 12 | ], 13 | "exclude": ["node_modules"] 14 | } 15 | -------------------------------------------------------------------------------- /utils/slide/src/interfaces/deckdeckgo-slide.ts: -------------------------------------------------------------------------------- 1 | export interface DeckdeckgoSlide { 2 | beforeSwipe(enter: boolean, _reveal: boolean): Promise; 3 | 4 | afterSwipe(): Promise; 5 | 6 | lazyLoadContent(): Promise; 7 | 8 | revealContent(): Promise; 9 | 10 | hideContent(): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /docs/src/assets/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/square-full-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/slides/title/src/components/slide/deckdeckgo-slide-title.scss: -------------------------------------------------------------------------------- 1 | @import "./deckdeckgo-slide"; 2 | 3 | div.deckgo-slide { 4 | flex-direction: column; 5 | align-items: center; 6 | justify-content: center; 7 | } 8 | 9 | ::slotted([slot="title"]), 10 | ::slotted([slot="content"]) { 11 | text-align: center; 12 | } 13 | -------------------------------------------------------------------------------- /docs/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /infra/versions.tf: -------------------------------------------------------------------------------- 1 | 2 | terraform { 3 | required_version = ">= 0.12" 4 | 5 | backend "s3" { 6 | region = "us-east-1" 7 | bucket = "deckgo-beta-terraform-state" 8 | key = "terraform.tfstate" 9 | dynamodb_table = "deckgo-beta-terraform-state-lock" 10 | encrypt = true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /remote/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /remote/src/assets/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /studio/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /studio/src/assets/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /studio/src/assets/img/landing/wave-audience.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webcomponents/color/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/core/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/inline-editor/src/utils/enums.ts: -------------------------------------------------------------------------------- 1 | export enum ToolbarActions { 2 | SELECTION, 3 | LINK, 4 | IMAGE, 5 | COLOR 6 | } 7 | 8 | export enum ImageSize { 9 | SMALL = '25%', 10 | MEDIUM = '50%', 11 | LARGE = '75%', 12 | ORIGINAL = '100%' 13 | } 14 | 15 | export enum ImageAlign { 16 | STANDARD, 17 | START 18 | } 19 | -------------------------------------------------------------------------------- /studio/src/assets/img/landing/wave-introducing.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /utils/deck/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utils/remote/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utils/slide/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utils/types/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utils/utils/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/charts/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/qrcode/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/remote/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/gif/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/social/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/youtube/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webpack/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2015", 4 | "module": "es2015", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "removeComments": true, 9 | "strictNullChecks": false, 10 | "noImplicitAny": false 11 | }, 12 | "include": [ 13 | "src/**/*" 14 | ] 15 | } -------------------------------------------------------------------------------- /cloud/functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "noImplicitReturns": true, 5 | "noUnusedLocals": true, 6 | "outDir": "lib", 7 | "sourceMap": true, 8 | "strict": true, 9 | "target": "es2017" 10 | }, 11 | "compileOnSave": true, 12 | "include": [ 13 | "src" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /docs/docs/misc/app-misc-logo/app-misc-logo.md: -------------------------------------------------------------------------------- 1 | # Logo 2 | 3 | The [DeckDeckGo] logo was designed and offered by [Anita](mailto:hello@skinque.com) from [Skinque.com](http://skinque.com), a great online marketplace for tattoos 🤘 4 | 5 | Reach her out if you are looking for a cool custom tattoo or a nice logo 😃 6 | 7 | [DeckDeckGo]: https://deckdeckgo.com 8 | -------------------------------------------------------------------------------- /studio/src/app/components/editor/actions/element/app-actions-element/app-actions-element.scss: -------------------------------------------------------------------------------- 1 | app-actions-element { 2 | ion-tab-button { 3 | width: 100%; 4 | opacity: 1; 5 | 6 | transition: opacity 0.25s ease-out; 7 | 8 | &.hidden { 9 | width: 0; 10 | max-width: 0; 11 | opacity: 0; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /webcomponents/core/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/inline-editor/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/author/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/chart/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/code/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/content/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/poll/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/qrcode/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/split/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/title/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/video/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/video/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.1-1 (2019-10-07) 3 | 4 | ### Features 5 | 6 | * implement new interface `DeckdeckgoSlideResize` 7 | 8 | 9 | # 1.0.0-rc.1 (2019-09-14) 10 | 11 | ### Features 12 | 13 | * initial version. kudos to [Noël Macé](https://github.com/noelmace) 14 | -------------------------------------------------------------------------------- /webcomponents/slides/youtube/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /studio/src/app/components/core/app-avatar/app-avatar.scss: -------------------------------------------------------------------------------- 1 | ion-avatar { 2 | width: var(--deckgo-avatar-size, 2rem); 3 | height: var(--deckgo-avatar-size, 2rem); 4 | 5 | display: flex; 6 | justify-items: center; 7 | align-items: center; 8 | 9 | ion-icon { 10 | font-size: 2rem; 11 | color: var(--deckgo-avatar-color); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /webcomponents/charts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/color/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/qrcode/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/remote/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/remote/src/components/deckdeckgo-remote/deckdeckgo-remote.scss: -------------------------------------------------------------------------------- 1 | canvas { 2 | position: absolute; 3 | top: 0; 4 | 5 | transition-duration: var(--left-offset-transition, 0ms); 6 | transform: translate3d(var(--left-offset, 0px), 0px, 0px); 7 | 8 | user-select: none; 9 | touch-action: none; 10 | pointer-events: none; 11 | } 12 | -------------------------------------------------------------------------------- /webcomponents/slides/aspect-ratio/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/slides/countdown/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /webcomponents/social/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/youtube/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /utils/deck/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "module": "esnext", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "removeComments": true, 9 | "moduleResolution": "node" 10 | }, 11 | "include": [ 12 | "src/**/*" 13 | ], 14 | "exclude": ["node_modules"] 15 | } 16 | -------------------------------------------------------------------------------- /utils/slide/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2017", 4 | "module": "esnext", 5 | "declaration": true, 6 | "outDir": "lib", 7 | "strict": true, 8 | "removeComments": true, 9 | "moduleResolution": "node" 10 | }, 11 | "include": [ 12 | "src/**/*" 13 | ], 14 | "exclude": ["node_modules"] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/inline-editor/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/author/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/chart/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/code/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/content/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/gif/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/poll/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/qrcode/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/split/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/title/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/video/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/youtube/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /cloud/functions/src/utils/resources.ts: -------------------------------------------------------------------------------- 1 | export class Resources { 2 | 3 | static get Constants(): any { 4 | return { 5 | PRESENTATION: { 6 | URL: 'https://beta.deckdeckgo.io', 7 | FOLDER: 'presentations', 8 | IMAGE: 'deckdeckgo.png' 9 | } 10 | }; 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/circle-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/slide/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './interfaces/deckdeckgo-slide'; 2 | export * from './interfaces/deckdeckgo-slide-resize'; 3 | export * from './interfaces/deckdeckgo-slide-play'; 4 | export * from './interfaces/deckdeckgo-component'; 5 | 6 | export * from './utils/component-utils'; 7 | export * from './utils/images-utils'; 8 | export * from './utils/slide-utils'; 9 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/aspect-ratio/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /webcomponents/slides/countdown/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 160, 3 | "singleQuote": true, 4 | "arrowParens": "always", 5 | "bracketSpacing": false, 6 | "jsxBracketSameLine": true, 7 | "overrides": [ 8 | { 9 | "files": ["*.scss", "*.css"], 10 | "options": { 11 | "singleQuote": false 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /backend/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.1-1 (2019-12-01) 3 | 4 | ### Features 5 | 6 | * broadcast poll after update 7 | 8 | 9 | # 1.0.0-rc.1 (2019-11-30) 10 | 11 | ### Features 12 | 13 | * interact with your audience with the new live `poll` slide template ([#471](https://github.com/deckgo/deckdeckgo/issues/471)) 14 | -------------------------------------------------------------------------------- /studio/src/app/components/core/app-menu/app-menu.scss: -------------------------------------------------------------------------------- 1 | ion-menu { 2 | ion-content { 3 | ion-list { 4 | ion-item { 5 | --detail-icon-opacity: 0; 6 | 7 | --deckgo-user-info-padding: 0; 8 | --deckgo-user-info-margin: 0; 9 | 10 | &.user { 11 | min-height: 32px; 12 | } 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/global/theme/toolbar.scss: -------------------------------------------------------------------------------- 1 | ion-footer { 2 | ion-toolbar { 3 | --ion-toolbar-border-color: transparent; 4 | --ion-toolbar-background: var(--ion-color-light); 5 | } 6 | 7 | &[class*="footer"]::before { 8 | background-image: none; 9 | background: var(--ion-color-light); 10 | border: 1px solid var(--ion-color-light); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /utils/types/src/poll.ts: -------------------------------------------------------------------------------- 1 | export interface DeckdeckgoPollAnswer { 2 | key: number | string; 3 | label: string; 4 | } 5 | 6 | export interface DeckdeckgoPollQuestion { 7 | label: string; 8 | values: DeckdeckgoPollAnswer[]; 9 | answered: boolean; 10 | } 11 | 12 | export interface DeckdeckgoPoll { 13 | key: string; 14 | poll: DeckdeckgoPollQuestion; 15 | } 16 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-youtube/app-youtube.scss: -------------------------------------------------------------------------------- 1 | app-youtube { 2 | ion-content { 3 | --background: var(--ion-color-light); 4 | 5 | ion-item.item-input ion-input[class*="sc-ion-input"] { 6 | --background: white; 7 | background: white; 8 | } 9 | 10 | ion-list { 11 | --ion-item-background: transparent; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /studio/src/app/models/api/api.deck.tsx: -------------------------------------------------------------------------------- 1 | import {DeckAttributes} from '../data/deck'; 2 | import {ApiSlide} from './api.slide'; 3 | 4 | export interface ApiDeck { 5 | id?: string; 6 | slides: ApiSlide[]; 7 | name: string; 8 | description: string; 9 | owner_id: string; 10 | attributes?: DeckAttributes; 11 | background?: string; 12 | head_extra?: string; 13 | } 14 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/bookmark-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | 4 | *~ 5 | *.sw[mnpcod] 6 | *.log 7 | *.lock 8 | *.tmp 9 | *.tmp.* 10 | log.txt 11 | *.sublime-project 12 | *.sublime-workspace 13 | 14 | .stencil/ 15 | .idea/ 16 | .vscode/ 17 | .sass-cache/ 18 | .versions/ 19 | node_modules/ 20 | $RECYCLE.BIN/ 21 | 22 | .DS_Store 23 | Thumbs.db 24 | UserInterfaceState.xcuserstate 25 | .env 26 | -------------------------------------------------------------------------------- /studio/src/app/utils/editor/target-element.tsx: -------------------------------------------------------------------------------- 1 | export enum TargetElement { 2 | QR_CODE = 'qr_code', 3 | CHART = 'chart', 4 | SLIDE = 'slide', 5 | SECTION = 'section', 6 | CODE = 'code', 7 | COLOR = 'color', 8 | BACKGROUND = 'background', 9 | TRANSITION = 'transition', 10 | SIDES = 'sides', 11 | FONTS = 'fonts', 12 | SHAPES = 'shapes', 13 | IMAGES = 'shape' 14 | } 15 | -------------------------------------------------------------------------------- /cli/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "tslint-ionic-rules", 3 | "rules": { 4 | "no-conditional-assignment": false, 5 | "no-non-null-assertion": false, 6 | "no-unnecessary-type-assertion": false, 7 | "prefer-for-of": false, 8 | "no-import-side-effect": false, 9 | "ordered-imports": [true, { 10 | "named-imports-order": "lowercase-last" 11 | }] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/about/app-developer/app-developer.scss: -------------------------------------------------------------------------------- 1 | app-developer { 2 | main { 3 | background: white; 4 | 5 | deckgo-highlight-code { 6 | --deckgo-highlight-code-font-size: var(--font-size-h1); 7 | --deckgo-highlight-code-text-align: center; 8 | } 9 | 10 | a { 11 | border-bottom-color: var(--ion-color-primary); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /webcomponents/color/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | loader/ 4 | 5 | *~ 6 | *.sw[mnpcod] 7 | *.log 8 | *.lock 9 | *.tmp 10 | *.tmp.* 11 | log.txt 12 | *.sublime-project 13 | *.sublime-workspace 14 | 15 | .stencil/ 16 | .idea/ 17 | .vscode/ 18 | .sass-cache/ 19 | .versions/ 20 | node_modules/ 21 | $RECYCLE.BIN/ 22 | 23 | .DS_Store 24 | Thumbs.db 25 | UserInterfaceState.xcuserstate 26 | .env 27 | -------------------------------------------------------------------------------- /webcomponents/social/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | loader/ 4 | 5 | *~ 6 | *.sw[mnpcod] 7 | *.log 8 | *.lock 9 | *.tmp 10 | *.tmp.* 11 | log.txt 12 | *.sublime-project 13 | *.sublime-workspace 14 | 15 | .stencil/ 16 | .idea/ 17 | .vscode/ 18 | .sass-cache/ 19 | .versions/ 20 | node_modules/ 21 | $RECYCLE.BIN/ 22 | 23 | .DS_Store 24 | Thumbs.db 25 | UserInterfaceState.xcuserstate 26 | .env 27 | -------------------------------------------------------------------------------- /webcomponents/youtube/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | loader/ 4 | 5 | *~ 6 | *.sw[mnpcod] 7 | *.log 8 | *.lock 9 | *.tmp 10 | *.tmp.* 11 | log.txt 12 | *.sublime-project 13 | *.sublime-workspace 14 | 15 | .stencil/ 16 | .idea/ 17 | .vscode/ 18 | .sass-cache/ 19 | .versions/ 20 | node_modules/ 21 | $RECYCLE.BIN/ 22 | 23 | .DS_Store 24 | Thumbs.db 25 | UserInterfaceState.xcuserstate 26 | .env 27 | -------------------------------------------------------------------------------- /studio/src/app/components/core/app-logo/app-logo.tsx: -------------------------------------------------------------------------------- 1 | import {Component, h} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-logo', 5 | styleUrl: 'app-logo.scss', 6 | shadow: true 7 | }) 8 | export class AppLogo { 9 | render() { 10 | return ( 11 |
12 | 13 |
14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/app-color/app-color.scss: -------------------------------------------------------------------------------- 1 | app-color { 2 | @import "../../../../global/theme/editor/editor-info"; 3 | @import "../../../../global/theme/editor/editor-popover"; 4 | 5 | ion-icon.more { 6 | font-size: 1.4rem; 7 | padding-top: 2px; 8 | color: var(--ion-color-medium); 9 | } 10 | 11 | ion-item.item-opacity { 12 | --padding-start: 8px; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /studio/src/app/utils/editor/slot-type.tsx: -------------------------------------------------------------------------------- 1 | export enum SlotType { 2 | SECTION = 'section', 3 | H1 = 'h1', 4 | H2 = 'h2', 5 | H3 = 'h3', 6 | OL = 'ol', 7 | UL = 'ul', 8 | IMG = 'deckgo-lazy-img', 9 | CODE = 'deckgo-highlight-code', 10 | SOCIAL = 'deckgo-social', 11 | REVEAL = 'deckgo-reveal', 12 | REVEAL_LIST = 'deckgo-reveal-list', 13 | DRAG_RESIZE_ROTATE = 'deckgo-drr' 14 | } 15 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/play-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/square-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/minus-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | loader/ 4 | 5 | *~ 6 | *.sw[mnpcod] 7 | *.log 8 | *.lock 9 | *.tmp 10 | *.tmp.* 11 | log.txt 12 | *.sublime-project 13 | *.sublime-workspace 14 | 15 | .stencil/ 16 | .idea/ 17 | .vscode/ 18 | .sass-cache/ 19 | .versions/ 20 | node_modules/ 21 | $RECYCLE.BIN/ 22 | 23 | .DS_Store 24 | Thumbs.db 25 | UserInterfaceState.xcuserstate 26 | .env 27 | -------------------------------------------------------------------------------- /docs/src/app/components/app-menu-footer/app-menu-footer.tsx: -------------------------------------------------------------------------------- 1 | import {Component, h} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-menu-footer', 5 | styleUrl: 'app-menu-footer.scss', 6 | shadow: true 7 | }) 8 | export class AppMenuFooter { 9 | render() { 10 | return ( 11 |
12 |

Created with passion in Zürich🇨🇭

13 |
14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/app/modals/core/app-deck-delete/app-deck-delete.scss: -------------------------------------------------------------------------------- 1 | app-deck-delete { 2 | strong { 3 | color: var(--ion-color-danger); 4 | } 5 | 6 | p { 7 | a { 8 | color: black; 9 | cursor: pointer; 10 | 11 | &:hover { 12 | border-bottom-color: black; 13 | } 14 | } 15 | 16 | &.note { 17 | font-size: var(--font-size-small); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /studio/src/app/modals/core/app-user-delete/app-user-delete.scss: -------------------------------------------------------------------------------- 1 | app-user-delete { 2 | strong { 3 | color: var(--ion-color-danger); 4 | } 5 | 6 | p { 7 | a { 8 | color: black; 9 | cursor: pointer; 10 | 11 | &:hover { 12 | border-bottom-color: black; 13 | } 14 | } 15 | 16 | &.note { 17 | font-size: var(--font-size-small); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /studio/src/global/theme/editor/editor-info.scss: -------------------------------------------------------------------------------- 1 | ion-item-divider { 2 | button.info { 3 | background: var(--ion-color-light); 4 | border: 1px solid #dedede; 5 | border-radius: 50%; 6 | height: 1.5rem; 7 | width: 1.5rem; 8 | margin: 16px 16px 0; 9 | padding: 0; 10 | outline: 0; 11 | 12 | ion-icon { 13 | color: var(--ion-color-light-contrast); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/app/components/editor/app-image/app-image.scss: -------------------------------------------------------------------------------- 1 | app-image { 2 | ion-item { 3 | &.history-empty { 4 | --color: var(--ion-color-medium); 5 | } 6 | 7 | &.action-button-margin { 8 | margin-top: 8px; 9 | } 10 | } 11 | 12 | app-image-columns { 13 | --deckgo-images-padding: 4px; 14 | --deckgo-images-font-size: calc(var(--font-size-very-small) - 4px); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/app/pages/core/app-discover/app-discover.tsx: -------------------------------------------------------------------------------- 1 | import {Component, h} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-discover' 5 | }) 6 | export class AppDiscover { 7 | render() { 8 | return [ 9 | , 10 | 11 | 12 | 13 | ]; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/close.svg: -------------------------------------------------------------------------------- 1 | ionicons-v5-l -------------------------------------------------------------------------------- /webcomponents/inline-editor/src/components/inline-editor/deckdeckgo-inline-editor.interface.ts: -------------------------------------------------------------------------------- 1 | export interface AnchorLink { 2 | range: Range; 3 | text: string; 4 | element: Element; 5 | } 6 | 7 | export interface InputTargetEvent extends EventTarget { 8 | value: string; 9 | } 10 | 11 | export interface InlineAction { 12 | action: string; 13 | selection: Selection; 14 | anchorLink: AnchorLink; 15 | } 16 | -------------------------------------------------------------------------------- /cloud/config/cors-studio-beta.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "origin": ["http://localhost:3333", "http://localhost:3334", "https://deckdeckgo.app", "https://deckdeckgo-studio-beta.web.app", "https://deckdeckgo-studio-beta.firebaseapp.com", "https://deckdeckgo-app-beta.web.app", "https://deckdeckgo-app-beta.firebaseapp.com"], 4 | "responseHeader": ["Content-Type"], 5 | "method": ["GET"], 6 | "maxAgeSeconds": 3600 7 | } 8 | ] 9 | -------------------------------------------------------------------------------- /remote/src/app/pages/app-timer/app-timer.scss: -------------------------------------------------------------------------------- 1 | app-timer { 2 | @import "../../../global/theme/button"; 3 | 4 | div.content { 5 | width: 100%; 6 | height: 100%; 7 | justify-content: center; 8 | align-items: center; 9 | display: flex; 10 | } 11 | 12 | ion-datetime { 13 | display: none; 14 | } 15 | 16 | a.link-to-timer { 17 | color: inherit; 18 | cursor: pointer; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/folder-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/app/components/core/app-logo/app-logo.scss: -------------------------------------------------------------------------------- 1 | div { 2 | color: transparent; 3 | 4 | margin-right: var(--deckgo-logo-margin-end); 5 | 6 | border-radius: 50%; 7 | border: 1px solid white; 8 | 9 | display: flex; 10 | justify-content: center; 11 | align-items: center; 12 | 13 | background: var(--ion-color-primary); 14 | 15 | ion-icon { 16 | font-size: var(--deckgo-logo-size, 2rem); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /studio/src/app/models/api/api.user.tsx: -------------------------------------------------------------------------------- 1 | // The user information we use to authenticate the user with our backend 2 | export interface ApiUserInfo { 3 | anonymous: boolean; 4 | firebase_uid: string; 5 | email: string; 6 | } 7 | 8 | // The representation of the user saved in our database 9 | export interface ApiUser { 10 | id: string; 11 | anonymous: boolean; 12 | firebase_uid: string; 13 | username?: string; 14 | } 15 | -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | # DeckDeckGo - CLI 2 | 3 | This project is the CLI of [DeckDeckGo]. 4 | 5 | This CLI reuse many features of the [Stencil CLI](https://github.com/ionic-team/create-stencil). 6 | 7 | ## Table of contents 8 | 9 | - [License](#license) 10 | 11 | ## License 12 | 13 | MIT © [David Dal Busco](mailto:david.dalbusco@outlook.com) and [Nicolas Mattia](mailto:nicolas@nmattia.com) 14 | 15 | [DeckDeckGo]: https://deckdeckgo.com 16 | -------------------------------------------------------------------------------- /webcomponents/core/src/components/reveal/deckdeckgo-reveal-utils.tsx: -------------------------------------------------------------------------------- 1 | export class DeckdeckgoRevealUtils { 2 | static findChildren(el: HTMLElement): Promise { 3 | return new Promise((resolve) => { 4 | const elements: Node[] = Array.from(el.childNodes).filter((node: Node) => { 5 | return node && node.nodeType !== node.TEXT_NODE; 6 | }); 7 | 8 | resolve(elements); 9 | }); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /infra/token: -------------------------------------------------------------------------------- 1 | eyJhbGciOiJSUzI1NiIsImtpZCI6ImtleTEifQ.eyJleHAiOjE5MDMxMTk2MzAsInN1YiI6InRoZS11aWQiLCJuYW1lIjoiSm9obiBEb2UiLCJhZG1pbiI6dHJ1ZSwiaXNzIjoiaHR0cHM6Ly9zZWN1cmV0b2tlbi5nb29nbGUuY29tL215LXByb2plY3QtaWQiLCJpYXQiOjE1MTYyMzkwMjIsImF1ZCI6Im15LXByb2plY3QtaWQiLCJhdXRoX3RpbWUiOjE1NTM4MDQ1NzN9.IwJ_qdtKwnxukFX8ylNZyUyAaN_ODzUf841LLsmTd22qM6kCSRHDY5JJdIN3ZDajH-Rk8O2kCzmRZ2HwfhBtpSyn7E8dKt0Ajw8VtW8d_hmj5LWv0doUiiEhtRtADA9AFJYmv_jFmNoL6cX6HqSQr2ZD53GC0WSA46A0lD3K4KE -------------------------------------------------------------------------------- /infra/unsplash-proxy/package.yaml: -------------------------------------------------------------------------------- 1 | name: unsplash-proxy 2 | license: AGPL-3 3 | 4 | executable: 5 | main: Main.hs 6 | 7 | dependencies: 8 | - aeson 9 | - base 10 | - bytestring 11 | - http-client 12 | - http-client-tls 13 | - http-conduit 14 | - http-types 15 | - servant 16 | - servant-client 17 | - servant-server 18 | - text 19 | - wai 20 | - wai-cors 21 | - wai-lambda 22 | - warp 23 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/circle-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /infra/firebase-login/script/upload: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env nix-shell 2 | #!nix-shell -I nixpkgs=./nix 3 | #!nix-shell -i bash -p cabal-install -p nix -p curl --pure 4 | # vim: filetype=sh 5 | 6 | set -euo pipefail 7 | 8 | sdistVersion=$(cat $(nix-build -A firebase-login-version-file)) 9 | sdistTarball=$(nix-build -A firebase-login-sdist)/firebase-login-$sdistVersion.tar.gz 10 | 11 | echo "Tarball: $sdistTarball" 12 | 13 | cabal upload "$@" $sdistTarball 14 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/bookmark-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/app/components/app-menu-footer/app-menu-footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | --deckgo-logo-vertical-align: bottom; 3 | --deckgo-logo-margin-end: 2px; 4 | --deckgo-logo-size: 12px; 5 | 6 | padding: 0 15px; 7 | 8 | a { 9 | text-decoration: none; 10 | } 11 | 12 | a, 13 | p { 14 | margin-top: 0; 15 | margin-bottom: 0; 16 | color: var(--deckgo-menu-footer-color, inherit); 17 | font-size: var(--font-size-very-small); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/map-marker-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/types/src/chart.ts: -------------------------------------------------------------------------------- 1 | // A bar 2 | export interface DeckdeckgoBarChartDataValue { 3 | // The key of a bar, use for the style 4 | key: number | string; 5 | // A title for the bar 6 | label: string; 7 | // Its value 8 | value: number; 9 | } 10 | 11 | // A chart 12 | export interface DeckdeckgoBarChartData { 13 | // The chart label 14 | label: string | Date | number; 15 | // 1 or multiple bars 16 | values: DeckdeckgoBarChartDataValue[]; 17 | } 18 | -------------------------------------------------------------------------------- /infra/bootstrap/main.tf: -------------------------------------------------------------------------------- 1 | terraform { 2 | required_version = "~> 0.12" 3 | } 4 | 5 | provider "aws" { 6 | version = ">= 2.6.0" 7 | region = "us-east-1" 8 | } 9 | 10 | module "terraform_state_backend" { 11 | source = "git::https://github.com/cloudposse/terraform-aws-tfstate-backend.git?ref=tags/0.9.0" 12 | stage = "beta" 13 | namespace = "deckgo" 14 | name = "terraform" 15 | attributes = ["state"] 16 | region = "us-east-1" 17 | } 18 | -------------------------------------------------------------------------------- /studio/src/app/components/feed/app-popular/app-popular.scss: -------------------------------------------------------------------------------- 1 | app-popular { 2 | ion-card { 3 | --background: white; 4 | color: black; 5 | padding: 16px; 6 | 7 | width: calc(100% - 16px); 8 | max-width: 380px; 9 | } 10 | 11 | ion-card.demo { 12 | padding: 16px; 13 | --background: white; 14 | min-height: 340px; 15 | } 16 | } 17 | 18 | body.dark { 19 | app-popular { 20 | h1 { 21 | color: black; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/clipboard.svg: -------------------------------------------------------------------------------- 1 | ionicons-v5-l -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/mobile-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/tablet-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/global/theme/searchbar.scss: -------------------------------------------------------------------------------- 1 | ion-searchbar[class*="sc-ion-searchbar"] { 2 | > div[class*="sc-ion-searchbar-md"] { 3 | padding-left: 8px; 4 | padding-right: 8px; 5 | } 6 | 7 | input.searchbar-input[class*="sc-ion-searchbar"] { 8 | box-shadow: none; 9 | 10 | -webkit-padding-start: 48px; 11 | padding-inline-start: 48px; 12 | } 13 | } 14 | 15 | ion-footer ion-searchbar[class*="sc-ion-searchbar-ios"] { 16 | margin-top: 8px; 17 | } 18 | -------------------------------------------------------------------------------- /webcomponents/youtube/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.1-2 (2020-01-09) 3 | 4 | ### Features 5 | 6 | * remove `console.log` 🙈 7 | 8 | 9 | # 1.0.0-rc.1-1 (2020-01-09) 10 | 11 | ### Features 12 | 13 | * if Youtube video is provided as embed link, add enablejsapi=1 to be able to play and pause the video 14 | 15 | 16 | # 1.0.0-rc.1 (2020-01-08) 17 | 18 | ### Features 19 | 20 | * initial version -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/file-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/minus-circle-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/app/components/app-logo/app-logo.scss: -------------------------------------------------------------------------------- 1 | div { 2 | color: transparent; 3 | 4 | vertical-align: var(--deckgo-logo-vertical-align); 5 | margin-right: var(--deckgo-logo-margin-end); 6 | 7 | background-color: transparent; 8 | background-image: var(--deckgo-logo-url, url("/assets/img/deckdeckgo-logo.svg")); 9 | background-repeat: no-repeat; 10 | 11 | width: var(--deckgo-logo-size); 12 | height: var(--deckgo-logo-size); 13 | 14 | display: inline-block; 15 | } 16 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/square-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/angle-left-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/deck/rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript'; 2 | import commonjs from 'rollup-plugin-commonjs'; 3 | import resolve from 'rollup-plugin-node-resolve'; 4 | 5 | import pkg from './package.json'; 6 | 7 | export default { 8 | input: './src/index.ts', 9 | plugins: [ 10 | typescript(), 11 | resolve(), 12 | commonjs() 13 | ], 14 | output: { 15 | format: 'cjs', 16 | file: pkg.main 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /utils/slide/rollup.config.js: -------------------------------------------------------------------------------- 1 | import typescript from 'rollup-plugin-typescript'; 2 | import commonjs from 'rollup-plugin-commonjs'; 3 | import resolve from 'rollup-plugin-node-resolve'; 4 | 5 | import pkg from './package.json'; 6 | 7 | export default { 8 | input: './src/index.ts', 9 | plugins: [ 10 | typescript(), 11 | resolve(), 12 | commonjs() 13 | ], 14 | output: { 15 | format: 'cjs', 16 | file: pkg.main 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /webpack/src/info/deckdeckgo-info-plugin.ts: -------------------------------------------------------------------------------- 1 | const {magenta} = require('colorette'); 2 | 3 | class DeckDeckGoInfoPlugin { 4 | constructor() { 5 | } 6 | 7 | apply(compiler) { 8 | compiler.hooks.beforeRun.tap('DeckDeckGoInfoPlugin', () => { 9 | console.log('\nDon\'t forget to edit your ' + magenta('meta information and favicon') + ' before publishing your talk online 🚀\n'); 10 | }); 11 | } 12 | } 13 | 14 | module.exports = DeckDeckGoInfoPlugin; 15 | -------------------------------------------------------------------------------- /remote/src/app/components/app-draw/app-draw.scss: -------------------------------------------------------------------------------- 1 | app-draw { 2 | canvas { 3 | position: absolute; 4 | 5 | transition-duration: var(--left-offset-transition, 0ms); 6 | transform: translate3d(var(--left-offset, 0px), 0px, 0px); 7 | 8 | pointer-events: none; 9 | } 10 | 11 | ion-fab { 12 | opacity: 1; 13 | 14 | transition: opacity 0.25s ease-in-out; 15 | 16 | &.hidden { 17 | opacity: 0; 18 | 19 | pointer-events: none; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/phone-portrait.svg: -------------------------------------------------------------------------------- 1 | ionicons-v5-k -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/angle-right-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/heart-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/docs/edit/app-edit-rtl/app-edit-rtl.md: -------------------------------------------------------------------------------- 1 | # RTL Support 2 | 3 | [DeckDeckGo] offers full LTR and RTL support. The deck inherits its parent text direction. 4 | 5 | Commonly, if you wish to use RTL for all of your pages in the presentation, you could set the attribute `dir` of the root `html` tag to `rtl`. 6 | 7 | ``` 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ``` 16 | 17 | [DeckDeckGo]: https://deckdeckgo.com 18 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/lock-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/slides/chart/src/components/slide/deckdeckgo-slide-chart.scss: -------------------------------------------------------------------------------- 1 | @import "./deckdeckgo-slide"; 2 | 3 | div.deckgo-slide { 4 | flex-direction: column; 5 | align-items: flex-start; 6 | justify-content: flex-start; 7 | } 8 | 9 | div.deckgo-chart-container { 10 | height: 100%; 11 | width: 100%; 12 | 13 | display: flex; 14 | align-items: flex-start; 15 | justify-content: center; 16 | 17 | align-self: center; 18 | 19 | overflow: var(--slide-chart-overflow, hidden); 20 | } 21 | -------------------------------------------------------------------------------- /webcomponents/social/src/components/deckdeckgo-social.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | justify-content: flex-start; 4 | align-items: center; 5 | } 6 | 7 | a { 8 | color: inherit; 9 | text-decoration: inherit; 10 | 11 | display: flex; 12 | align-items: center; 13 | 14 | max-width: 100%; 15 | 16 | span { 17 | text-overflow: ellipsis; 18 | white-space: nowrap; 19 | overflow: hidden; 20 | } 21 | } 22 | 23 | ::slotted([slot="icon"]) { 24 | margin-right: 8px; 25 | } 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/docs.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation 3 | about: Suggest an improvement to our documentation at DeckDeckGo 4 | labels: docs 5 | --- 6 | 7 | ### Documentation Feedback 8 | 9 | 11 | 12 | Feel free to provide any suggestions of content or examples you’d like us to include. 13 | 14 | **Affected documentation page:** 15 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/clock-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/file-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/minus-square-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/folder-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /remote/src/app/components/app-logo/app-logo.scss: -------------------------------------------------------------------------------- 1 | :host { 2 | display: flex; 3 | } 4 | 5 | div { 6 | color: transparent; 7 | 8 | vertical-align: var(--deckgo-logo-vertical-align); 9 | margin: var(--deckgo-logo-margin); 10 | 11 | background-color: transparent; 12 | background-image: var(--deckgo-logo-url, url("/assets/img/deckdeckgo-logo.svg")); 13 | background-repeat: no-repeat; 14 | 15 | width: var(--deckgo-logo-size); 16 | height: var(--deckgo-logo-size); 17 | 18 | display: inline-block; 19 | } 20 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/desktop-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/plus-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/remote/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | DeckDeckGo - Remote 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /studio/src/app/components/landing/app-landing-footer/app-landing-footer.scss: -------------------------------------------------------------------------------- 1 | app-landing-footer { 2 | main { 3 | display: flex; 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | 8 | ion-button { 9 | text-transform: none; 10 | } 11 | 12 | section.links { 13 | margin-top: 48px; 14 | max-width: 768px; 15 | } 16 | 17 | @media (max-width: 768px) { 18 | section.links { 19 | margin-top: 16px; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /studio/src/app/services/api/photo/api.photo.service.tsx: -------------------------------------------------------------------------------- 1 | import {ErrorService} from '../../core/error/error.service'; 2 | 3 | export abstract class ApiPhotoService { 4 | protected errorService: ErrorService; 5 | 6 | public constructor() { 7 | // Private constructor, singleton 8 | this.errorService = ErrorService.getInstance(); 9 | } 10 | 11 | abstract getPhotos(searchTerm: string, next: string | number): Promise; 12 | 13 | abstract registerDownload(photoId: string): Promise; 14 | } 15 | -------------------------------------------------------------------------------- /studio/src/assets/img/landing/mobile-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /infra/google-key-updater/package.yaml: -------------------------------------------------------------------------------- 1 | name: google-key-updater 2 | license: AGPL-3 3 | 4 | executable: 5 | main: Main.hs 6 | 7 | dependencies: 8 | - aeson 9 | - base 10 | - bytestring 11 | - http-client 12 | - http-client-tls 13 | - http-conduit 14 | - http-types 15 | - servant 16 | - servant-client 17 | - servant-server 18 | - text 19 | - wai 20 | - wai-cors 21 | - unliftio 22 | - wai-lambda 23 | - warp 24 | - amazonka 25 | - amazonka-core 26 | - amazonka-s3 27 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-poll-options/app-poll-options.scss: -------------------------------------------------------------------------------- 1 | app-poll-options { 2 | ion-content { 3 | --background: var(--ion-color-light); 4 | 5 | ion-item.item-input ion-input[class*="sc-ion-input"] { 6 | --background: white; 7 | background: white; 8 | } 9 | 10 | div.add-answer { 11 | display: inline-flex; 12 | width: 100%; 13 | justify-content: center; 14 | } 15 | 16 | ion-list { 17 | h2:first-of-type { 18 | margin-top: 0; 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /studio/src/assets/icons/ionicons/person.svg: -------------------------------------------------------------------------------- 1 | ionicons-v5-j -------------------------------------------------------------------------------- /studio/src/assets/img/landing/tablet-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/cloud-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/star-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/user-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/chevron-left-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-left-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/laptop-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeckDeckGo", 3 | "short_name": "DeckDeckGo", 4 | "display": "standalone", 5 | "theme_color": "#ffffff", 6 | "background_color": "#ffffff", 7 | "scope": "/", 8 | "start_url": "/", 9 | "icons": [ 10 | { 11 | "src": "/assets/favicon/android-chrome-192x192.png", 12 | "sizes": "192x192", 13 | "type": "image/png" 14 | }, 15 | { 16 | "src": "/assets/favicon/android-chrome-512x512.png", 17 | "sizes": "512x512", 18 | "type": "image/png" 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /studio/src/app/components/core/app-random-gif/app-random-gif.scss: -------------------------------------------------------------------------------- 1 | app-random-gif { 2 | div.gif-container { 3 | border-radius: 50%; 4 | overflow: hidden; 5 | --deckgo-lazy-img-width: 10rem; 6 | --deckgo-lazy-img-height: 10rem; 7 | width: 10rem; 8 | height: 10rem; 9 | min-width: 10rem; 10 | min-height: 10rem; 11 | 12 | border: 1px solid var(--ion-color-tertiary); 13 | background: rgba(var(--ion-color-tertiary-rgb), 0.4); 14 | box-shadow: 1px 2px 8px 2px rgba(var(--ion-color-tertiary-rgb), 0.2); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-right-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/long-arrow-alt-left-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/long-arrow-alt-right-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/core/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo', 9 | outputTargets:[ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'www', 15 | serviceWorker: null 16 | } 17 | ], 18 | plugins: [ 19 | sass(), 20 | postcss({ 21 | plugins: [autoprefixer()] 22 | }) 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /cli/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "target": "es2015", 5 | "allowJs": true, 6 | "module": "es2015", 7 | "lib": ["es2015"], 8 | "strict": true, 9 | "noEmitOnError": false, 10 | "sourceMap": false, 11 | "declaration": false, 12 | "allowSyntheticDefaultImports": true, 13 | "experimentalDecorators": true, 14 | "emitDecoratorMetadata": true, 15 | "outDir": "dist/src", 16 | "strictNullChecks": false 17 | }, 18 | "files": [ 19 | "src/index.ts" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/check-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/global/theme/header.scss: -------------------------------------------------------------------------------- 1 | ion-header { 2 | &[class*="header"]::after { 3 | background-image: none; 4 | } 5 | } 6 | 7 | ion-header { 8 | ion-title { 9 | --deckgo-logo-margin-end: 6px; 10 | --deckgo-logo-size: 2rem; 11 | } 12 | 13 | ion-toolbar { 14 | ion-buttons { 15 | min-height: 46px; 16 | } 17 | 18 | --ion-toolbar-color: var(--ion-color-dark); 19 | } 20 | } 21 | 22 | body.dark { 23 | ion-header { 24 | ion-toolbar { 25 | --ion-toolbar-color: var(--ion-color-light); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /studio/src/app/popovers/editor/app-image-element/app-image-element.scss: -------------------------------------------------------------------------------- 1 | app-image-element { 2 | @import "../../../../global/theme/editor/editor-info"; 3 | @import "../../../../global/theme/editor/editor-popover"; 4 | 5 | ion-item { 6 | &.history-empty { 7 | --color: var(--ion-color-medium); 8 | } 9 | 10 | &.action-button-margin { 11 | margin-top: 8px; 12 | } 13 | } 14 | 15 | app-image-columns { 16 | --deckgo-images-padding: 4px; 17 | --deckgo-images-font-size: calc(var(--font-size-very-small) - 4px); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/calendar-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/unlock-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /utils/remote/rollup.config.js: -------------------------------------------------------------------------------- 1 | // Source to setup the build 2 | // https://github.com/rollup/rollup-starter-lib 3 | // https://buzut.net/configurer-rollup-bundles-esm-cjs/ 4 | // https://dev.to/proticm/how-to-setup-rollup-config-45mk 5 | 6 | import typescript from 'rollup-plugin-typescript'; 7 | import commonjs from 'rollup-plugin-commonjs'; 8 | 9 | import pkg from './package.json'; 10 | 11 | export default { 12 | input: './src/index.ts', 13 | plugins: [commonjs(), typescript()], 14 | output: { 15 | format: 'cjs', 16 | file: pkg.main 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /webcomponents/charts/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-charts', 9 | outputTargets:[ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'www', 15 | serviceWorker: null 16 | } 17 | ], 18 | plugins: [ 19 | sass(), 20 | postcss({ 21 | plugins: [autoprefixer()] 22 | }) 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /infra/firebase-login/nix/packages.nix: -------------------------------------------------------------------------------- 1 | { haskell 2 | , haskellPackages 3 | , lib 4 | , runCommand 5 | , writeText 6 | , zip 7 | }: 8 | rec 9 | { firebase-login-sdist = haskell.lib.sdistTarball firebase-login; 10 | firebase-login = haskellPackages.callCabal2nix "firebase-login" firebase-login-source {}; 11 | firebase-login-source = lib.sourceByRegex ../. 12 | [ "^package.yaml$" 13 | "^src.*" 14 | "^examples.*" 15 | "^README.md$" 16 | "^LICENSE$" 17 | ]; 18 | firebase-login-version-file = writeText "version" firebase-login.version; 19 | } 20 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-alt-circle-right-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/tag-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": ["dom", "es2017"], 8 | "moduleResolution": "node", 9 | "module": "esnext", 10 | "target": "es2017", 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "jsx": "react", 14 | "jsxFactory": "h" 15 | }, 16 | "include": ["src", "types/jsx.d.ts"], 17 | "exclude": ["node_modules"] 18 | } 19 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-lazy-img', 9 | outputTargets:[ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'www', 15 | serviceWorker: null 16 | } 17 | ], 18 | plugins: [ 19 | sass(), 20 | postcss({ 21 | plugins: [autoprefixer()] 22 | }) 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /webcomponents/slides/aspect-ratio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": ["dom", "es2017"], 8 | "moduleResolution": "node", 9 | "module": "esnext", 10 | "target": "es2017", 11 | "noUnusedLocals": true, 12 | "noUnusedParameters": true, 13 | "jsx": "react", 14 | "jsxFactory": "h" 15 | }, 16 | "include": ["src", "types/jsx.d.ts"], 17 | "exclude": ["node_modules"] 18 | } 19 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-alt-circle-left-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/plus-circle-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | www/ 3 | 4 | *~ 5 | *.sw[mnpcod] 6 | *.log 7 | *.lock 8 | *.tmp 9 | *.tmp.* 10 | log.txt 11 | *.sublime-project 12 | *.sublime-workspace 13 | 14 | .stencil/ 15 | .idea/ 16 | .vscode/ 17 | .sass-cache/ 18 | .versions/ 19 | node_modules/ 20 | $RECYCLE.BIN/ 21 | 22 | .DS_Store 23 | Thumbs.db 24 | UserInterfaceState.xcuserstate 25 | .env 26 | 27 | .deckgo/ 28 | 29 | lib/ 30 | 31 | .firebase/ 32 | 33 | .terraform 34 | 35 | *.tfstate 36 | *.tfstate.backup 37 | *.tfstate.lock* 38 | 39 | result 40 | result-* 41 | 42 | config.staging.json 43 | config.prod.json 44 | -------------------------------------------------------------------------------- /docs/src/global/theme/theme.scss: -------------------------------------------------------------------------------- 1 | ul { 2 | list-style-type: none; 3 | margin: 0; 4 | padding: 0; 5 | } 6 | 7 | main { 8 | max-width: calc(1200px - 28% - 64px); 9 | margin-left: auto; 10 | margin-right: auto; 11 | 12 | h1:not(:first-of-type) { 13 | margin-top: 48px; 14 | } 15 | 16 | h2, 17 | h3 { 18 | margin-top: 32px; 19 | } 20 | 21 | ul { 22 | font-size: var(--font-size-small); 23 | li { 24 | padding-left: 8px; 25 | font-size: var(--font-size-small); 26 | } 27 | } 28 | } 29 | 30 | a { 31 | text-decoration: none; 32 | } 33 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-highlight-code', 9 | outputTargets:[ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'www', 15 | serviceWorker: null 16 | } 17 | ], 18 | plugins: [ 19 | sass(), 20 | postcss({ 21 | plugins: [autoprefixer()] 22 | }) 23 | ] 24 | }; 25 | -------------------------------------------------------------------------------- /remote/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeckDeckGo", 3 | "short_name": "DeckDeckGo", 4 | "display": "standalone", 5 | "theme_color": "#ffffff", 6 | "background_color": "#ffffff", 7 | "scope": "/", 8 | "start_url": "/", 9 | "orientation": "any", 10 | "icons": [ 11 | { 12 | "src": "/assets/favicon/android-chrome-192x192.png", 13 | "sizes": "192x192", 14 | "type": "image/png" 15 | }, 16 | { 17 | "src": "/assets/favicon/android-chrome-512x512.png", 18 | "sizes": "512x512", 19 | "type": "image/png" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /studio/src/assets/img/landing/desktop-light.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /webcomponents/inline-editor/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-inline-editor', 9 | outputTargets:[ 10 | { type: 'dist' }, 11 | { 12 | type: 'www', 13 | serviceWorker: null // disable service workers 14 | } 15 | ], 16 | plugins: [ 17 | sass(), 18 | postcss({ 19 | plugins: [autoprefixer()] 20 | }) 21 | ] 22 | }; 23 | -------------------------------------------------------------------------------- /webcomponents/slides/qrcode/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.2-1 (2019-10-12) 3 | 4 | ### Fix 5 | 6 | * don't set a default 100% value as it might be to wide depending on the slide format 7 | 8 | 9 | # 1.0.0-rc.2 (2019-10-07) 10 | 11 | ### Features 12 | 13 | * `--slide-qrcode-title-display` default set to `block` 14 | * reflect to attribute thee property `content` 15 | * implement new interface `DeckdeckgoSlideResize` 16 | * add a new property to display a logo over the QR code 17 | * on `componentDidUpdate()` lazy load the logo too 18 | -------------------------------------------------------------------------------- /docs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/chevron-right-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/info-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeckDeckGo", 3 | "short_name": "DeckDeckGo", 4 | "display": "standalone", 5 | "theme_color": "#ffffff", 6 | "background_color": "#ffffff", 7 | "scope": "/", 8 | "start_url": "/", 9 | "orientation": "portrait", 10 | "icons": [ 11 | { 12 | "src": "/assets/favicon/android-chrome-192x192.png", 13 | "sizes": "192x192", 14 | "type": "image/png" 15 | }, 16 | { 17 | "src": "/assets/favicon/android-chrome-512x512.png", 18 | "sizes": "512x512", 19 | "type": "image/png" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /remote/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /studio/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src" 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/ban-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /cloud/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | # 1.0.0-rc.3-1 (2019-12-18) 3 | 4 | ### Fix 5 | 6 | * screen shot not generated anymore ([#548](https://github.com/deckgo/deckdeckgo/issues/548)) 7 | 8 | 9 | # 1.0.0-rc.3 (2019-12-16) 10 | 11 | ### Features 12 | 13 | * send an information per email when a new deck is published 14 | 15 | 16 | # 1.0.0-rc.2 (2019-11-10) 17 | 18 | ### Features 19 | 20 | * Mailchimp integration 21 | 22 | 23 | # 1.0.0-rc.1 (2019-09-08) 24 | 25 | ### Features 26 | 27 | * first stable release 28 | -------------------------------------------------------------------------------- /infra/firebase-login/nix/default.nix: -------------------------------------------------------------------------------- 1 | { sources ? import ./sources.nix }: 2 | with 3 | { overlay = _: pkgs: rec 4 | { inherit (import sources.niv {}) niv; 5 | haskellPackages = pkgs.haskellPackages.override 6 | { overrides = _: super: 7 | { jose = super.callCabal2nix "jose" sources.hs-jose {}; }; 8 | }; 9 | 10 | packages = import ./packages.nix 11 | { inherit (pkgs) haskell lib ; 12 | inherit haskellPackages; 13 | }; 14 | }; 15 | }; 16 | import sources.nixpkgs 17 | { overlays = [ overlay ] ; config = {}; } 18 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/calendar-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/minus-square-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/src/components/slide/deckdeckgo-slide-big-img.scss: -------------------------------------------------------------------------------- 1 | @import "./deckdeckgo-slide"; 2 | 3 | div.deckgo-slide { 4 | flex-direction: column; 5 | justify-content: center; 6 | align-items: center; 7 | margin: 0 0; 8 | 9 | .deckgo-big-img-container { 10 | overflow: hidden; 11 | text-align: center; 12 | 13 | img { 14 | max-width: var(--slide-img-max-width); 15 | 16 | &:not(.cropped) { 17 | max-width: 100%; 18 | max-height: 100%; 19 | } 20 | } 21 | } 22 | } 23 | 24 | ::slotted([slot="title"]) { 25 | display: none; 26 | } 27 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/clock-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/plus-square-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/scripts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "esModuleInterop": true, 5 | "allowUnreachableCode": false, 6 | "declaration": false, 7 | "experimentalDecorators": true, 8 | "lib": [ 9 | "dom", 10 | "es2015" 11 | ], 12 | "moduleResolution": "node", 13 | "module": "commonjs", 14 | "target": "es2015", 15 | "noUnusedLocals": true, 16 | "noUnusedParameters": true, 17 | "outDir": "../.deckgo" 18 | }, 19 | "include": [ 20 | "." 21 | ], 22 | "exclude": [ 23 | "node_modules" 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/clipboard-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/drag-resize-rotate/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 1.0.0-beta.3 (2020-02-25) 4 | 5 | ### Fix 6 | 7 | - content sizing fit in Firefox 8 | - resize component in Safari ("no jump") 9 | 10 | 11 | 12 | # 1.0.0-beta.2 (2020-02-25) 13 | 14 | ### Features 15 | 16 | - sticky opposite corner on resizing (credits to @nmattia maths) 17 | 18 | 19 | 20 | # 1.0.0-beta.1 (2020-02-19) 21 | 22 | ### Features 23 | 24 | - a new Web Component to drag, resize and rotate any element ([#610](https://github.com/deckgo/deckdeckgo/issues/610)) 25 | -------------------------------------------------------------------------------- /webcomponents/slides/poll/src/utils/deckdeckgo-slide-poll.answer.utils.tsx: -------------------------------------------------------------------------------- 1 | export function initAnswerSlotsList(el: HTMLElement): Promise { 2 | return new Promise((resolve) => { 3 | const slots: NodeListOf = el.querySelectorAll(":scope > [slot^='answer']"); 4 | 5 | if (!slots || slots.length <= 0) { 6 | resolve(undefined); 7 | return; 8 | } 9 | 10 | const answers: string[] = Array.from(slots).map((slot: HTMLElement) => { 11 | return slot.getAttribute('slot'); 12 | }); 13 | 14 | resolve(answers); 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-code-languages/app-code-languages.scss: -------------------------------------------------------------------------------- 1 | app-code-languages { 2 | ion-content { 3 | --background: var(--ion-color-light); 4 | 5 | main { 6 | background: white; 7 | } 8 | } 9 | 10 | ion-list[class*="list"] { 11 | margin-bottom: 0; 12 | 13 | ion-item.item { 14 | --ripple-color: var(--ion-color-primary); 15 | --border-color: var(--ion-color-light); 16 | 17 | &:last-of-type { 18 | --border-color: transparent; 19 | } 20 | 21 | --background-hover: white; 22 | --background-actived: white; 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /utils/utils/rollup.config.js: -------------------------------------------------------------------------------- 1 | // Source to setup the build 2 | // https://github.com/rollup/rollup-starter-lib 3 | // https://buzut.net/configurer-rollup-bundles-esm-cjs/ 4 | // https://dev.to/proticm/how-to-setup-rollup-config-45mk 5 | 6 | import typescript from 'rollup-plugin-typescript'; 7 | import commonjs from 'rollup-plugin-commonjs'; 8 | 9 | import pkg from './package.json'; 10 | 11 | export default { 12 | input: './src/index.ts', 13 | plugins: [ 14 | commonjs(), 15 | typescript() 16 | ], 17 | output: { 18 | format: 'cjs', 19 | file: pkg.main 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/credit-card-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/redo-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/slides/aspect-ratio/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # 1.0.0-beta.1-2 (2020-02-27) 4 | 5 | ### Features 6 | 7 | - rollback max-height in order to preserve ratio 8 | 9 | 10 | 11 | # 1.0.0-beta.1-1 (2020-02-27) 12 | 13 | ### Features 14 | 15 | - max height 100% for the aspect ratio content 16 | 17 | 18 | 19 | # 1.0.0-beta.1 (2020-02-19) 20 | 21 | ### Features 22 | 23 | - use this template to display a slide which preserves the same aspect ratio regardless of the devices ([#610](https://github.com/deckgo/deckdeckgo/issues/610)) 24 | -------------------------------------------------------------------------------- /docs/docs/edit/app-edit-default/app-edit-default.md: -------------------------------------------------------------------------------- 1 | # HTML 2 | 3 | To edit your [DeckDeckGo] presentation you could either use **HTML** or **Markdown**. 4 | 5 | The default language is **HTML**. It's also the recommended language as it offers you more flexibility specially in terms of styling. 6 | 7 | If you have chosen to edit your presentation using HTML, begin by editing the `index.html` of your project as suggested in the chapter [Concept](/slides/concept). 8 | 9 | Whereas if you prefer to edit your talk using **Markdown**, have a look at [the next chapter](/edit/markdown). 10 | 11 | [DeckDeckGo]: https://deckdeckgo.com 12 | -------------------------------------------------------------------------------- /studio/src/app/models/data/user.tsx: -------------------------------------------------------------------------------- 1 | export interface UserSocial { 2 | twitter?: string; 3 | linkedin?: string; 4 | dev?: string; 5 | medium?: string; 6 | github?: string; 7 | custom?: string; 8 | } 9 | 10 | export interface UserData { 11 | anonymous: boolean; 12 | 13 | name?: string; 14 | email?: string; 15 | newsletter?: boolean; 16 | photo_url?: string; 17 | 18 | social?: UserSocial; 19 | 20 | bio?: string; 21 | 22 | created_at: firebase.firestore.Timestamp; 23 | updated_at: firebase.firestore.Timestamp; 24 | } 25 | 26 | export interface User { 27 | id: string; 28 | data: UserData; 29 | } 30 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/camera-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/app/components/landing/app-landing/app-landing.tsx: -------------------------------------------------------------------------------- 1 | import {Component, Element, h, Host} from '@stencil/core'; 2 | 3 | @Component({ 4 | tag: 'app-landing', 5 | styleUrl: 'app-landing.scss', 6 | shadow: false 7 | }) 8 | export class AppLanding { 9 | @Element() el: HTMLElement; 10 | 11 | render() { 12 | return ( 13 | 14 |
15 | 16 |
17 | 18 | 19 | 20 | 21 |
22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /studio/src/assets/img/landing/wave-remote.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-alt-circle-left-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/copy-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/charts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/color/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | DeckDeckGo - Color 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | ... 17 | 18 |
19 | 20 | 21 | -------------------------------------------------------------------------------- /webcomponents/color/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/lazy-img/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/qrcode/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/remote/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/social/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/youtube/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /studio/src/app/modals/editor/app-custom-data/app-custom-data.scss: -------------------------------------------------------------------------------- 1 | app-custom-data { 2 | @import "../../../../global/theme/editor/editor-modal"; 3 | 4 | div.data-container { 5 | display: flex; 6 | flex-wrap: wrap; 7 | 8 | div.data { 9 | display: flex; 10 | flex-direction: column; 11 | justify-content: flex-start; 12 | align-items: center; 13 | 14 | max-width: 25%; 15 | 16 | ion-icon { 17 | font-size: 7rem; 18 | } 19 | 20 | ion-label { 21 | max-width: 100%; 22 | text-align: center; 23 | padding-top: 4px; 24 | } 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrows-alt-h-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrows-alt-v-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/inline-editor/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/author/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/chart/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/code/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/gif/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/poll/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/qrcode/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/split/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/title/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/video/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/arrow-alt-circle-right-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/color/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-color', 9 | outputTargets: [ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'docs-readme' 15 | }, 16 | { 17 | type: 'www', 18 | serviceWorker: null // disable service workers 19 | } 20 | ], 21 | plugins: [ 22 | sass(), 23 | postcss({ 24 | plugins: [autoprefixer()] 25 | }) 26 | ] 27 | }; 28 | -------------------------------------------------------------------------------- /webcomponents/highlight-code/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/big-img/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/content/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/countdown/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /webcomponents/slides/youtube/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "allowUnreachableCode": false, 5 | "declaration": false, 6 | "experimentalDecorators": true, 7 | "lib": [ 8 | "dom", 9 | "es2017" 10 | ], 11 | "moduleResolution": "node", 12 | "module": "esnext", 13 | "target": "es2017", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "jsx": "react", 17 | "jsxFactory": "h" 18 | }, 19 | "include": [ 20 | "src", 21 | "types/jsx.d.ts" 22 | ], 23 | "exclude": [ 24 | "node_modules" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /infra/handler/README.md: -------------------------------------------------------------------------------- 1 | # DeckDeckGo - Handler 2 | 3 | This project is the request handler of [DeckDeckGo]. 4 | 5 | ## Table of contents 6 | 7 | - [License](#license) 8 | 9 | ## License 10 | 11 | This request handler is released under the GNU Affero General Public License. 12 | Copyright [David Dal Busco](mailto:david.dalbusco@outlook.com) and [Nicolas 13 | Mattia](mailto:nicolas@nmattia.com), Zürich, Switzerland. See COPYING for more 14 | details. 15 | 16 | [DeckDeckGo] is developed by [David Dal 17 | Busco](mailto:david.dalbusco@outlook.com) and [Nicolas 18 | Mattia](mailto:nicolas@nmattia.com). 19 | 20 | [DeckDeckGo]: https://deckdeckgo.com 21 | -------------------------------------------------------------------------------- /studio/src/assets/img/shapes/star-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /webcomponents/social/stencil.config.ts: -------------------------------------------------------------------------------- 1 | import { Config } from '@stencil/core'; 2 | 3 | import { sass } from '@stencil/sass'; 4 | import { postcss } from '@stencil/postcss'; 5 | import autoprefixer from 'autoprefixer'; 6 | 7 | export const config: Config = { 8 | namespace: 'deckdeckgo-social', 9 | outputTargets: [ 10 | { 11 | type: 'dist' 12 | }, 13 | { 14 | type: 'docs-readme' 15 | }, 16 | { 17 | type: 'www', 18 | serviceWorker: null // disable service workers 19 | } 20 | ], 21 | plugins: [ 22 | sass(), 23 | postcss({ 24 | plugins: [autoprefixer()] 25 | }) 26 | ] 27 | }; 28 | --------------------------------------------------------------------------------