Compare commits

..
Author SHA1 Message Date
Laurent Cozic 2bfbeb002d Merge branch 'release-1.4' into spellchecking 2020-10-31 23:50:08 +00:00
Laurent Cozic d0c8693c26 Added answser to question that will surely come 2020-10-29 18:38:42 +00:00
Laurent Cozic 8a461a66e6 Merge branch 'dev' into spellchecking 2020-10-29 17:29:18 +00:00
Laurent Cozic 8e783b78fe Merge branch 'dev' into spellchecking 2020-10-26 23:21:17 +00:00
Laurent Cozic 9077bb13d5 Merge branch 'dev' into spellchecking 2020-10-24 00:15:09 +01:00
Laurent Cozic d45f7ae523 Fixed context menu logic when CodeMirror is open 2020-10-23 17:27:18 +01:00
Laurent Cozic 5dd619a766 Merge branch 'release-1.3' into spellchecking 2020-10-23 17:12:07 +01:00
Laurent Cozic 0c8708a363 Clean up 2020-10-23 13:09:15 +01:00
Laurent Cozic 28c1676ed9 Allow enabling-disabling spell checking 2020-10-23 13:04:07 +01:00
Laurent Cozic 421ef885cd Added support for title input field 2020-10-23 12:02:46 +01:00
Laurent Cozic 3582aeaec8 Fixed path resolve in Windows 2020-10-23 11:29:47 +01:00
Laurent Cozic d07b2d4469 Moved title bar to separate component and converted time-utils to TypeScript 2020-10-23 11:06:47 +01:00
Laurent Cozic e50e548e25 Support for custom dic 2020-10-23 10:07:14 +01:00
Laurent Cozic 84a87c10f7 Integration 2020-10-22 22:16:31 +01:00
Laurent Cozic 559e88e35d Move context menu setup to separate file 2020-10-22 18:01:55 +01:00
Laurent Cozic da8469a81b Use native context menu in TinyMCE so that dictionary suggestions can be accessed 2020-10-22 17:53:31 +01:00
4792 changed files with 365947 additions and 620686 deletions

No files matched your search

-10
View File
@@ -1,10 +0,0 @@
**/node_modules
Assets/
.git/
_releases/
packages/app-desktop
packages/app-cli
packages/app-mobile
packages/app-clipper
packages/generator-joplin
packages/plugin-repo-cli
-26
View File
@@ -1,26 +0,0 @@
# =============================================================================
# PRODUCTION CONFIG EXAMPLE
# -----------------------------------------------------------------------------
# By default it will use SQLite, but that's mostly to test and evaluate the
# server. So you'll want to specify db connection settings to use Postgres.
# =============================================================================
#
# APP_BASE_URL=https://example.com/joplin
# APP_PORT=22300
#
# DB_CLIENT=pg
# POSTGRES_PASSWORD=joplin
# POSTGRES_DATABASE=joplin
# POSTGRES_USER=joplin
# POSTGRES_PORT=5432
# POSTGRES_HOST=localhost
# =============================================================================
# DEV CONFIG EXAMPLE
# -----------------------------------------------------------------------------
# Example of local config, for development. In dev mode, you would usually use
# SQLite so database settings are not needed.
# =============================================================================
#
# APP_BASE_URL=http://localhost:22300
# APP_PORT=22300
+354 -1708
View File
File diff suppressed because it is too large. Load diff
+4 -45
View File
@@ -1,5 +1,4 @@
module.exports = {
'root': true,
'env': {
'browser': true,
'es6': true,
@@ -16,8 +15,7 @@ module.exports = {
'Atomics': 'readonly',
'SharedArrayBuffer': 'readonly',
// Jest variables
'test': 'readonly',
// Jasmine variables
'expect': 'readonly',
'describe': 'readonly',
'it': 'readonly',
@@ -25,7 +23,7 @@ module.exports = {
'afterAll': 'readonly',
'beforeEach': 'readonly',
'afterEach': 'readonly',
'jest': 'readonly',
'jasmine': 'readonly',
// React Native variables
'__DEV__': 'readonly',
@@ -35,12 +33,6 @@ module.exports = {
'chrome': 'readonly',
'browser': 'readonly',
// Server admin UI global variables
'onDocumentReady': 'readonly',
'setupPasswordStrengthHandler': 'readonly',
'$': 'readonly',
'zxcvbn': 'readonly',
'tinymce': 'readonly',
},
'parserOptions': {
@@ -68,18 +60,13 @@ module.exports = {
'no-var': ['error'],
'no-new-func': ['error'],
'import/prefer-default-export': ['error'],
// This rule should not be enabled since it matters in what order
// imports are done, in particular in relation to the shim.setReact
// call, which should be done first, but this rule might move it down.
// 'import/first': ['error'],
'import/first': ['error'],
'no-array-constructor': ['error'],
'radix': ['error'],
// Warn only for now because fixing everything would take too much
// refactoring, but new code should try to stick to it.
// 'complexity': ['warn', { max: 10 }],
'complexity': ['warn', { max: 10 }],
// Checks rules of Hooks
'react-hooks/rules-of-hooks': 'error',
@@ -128,7 +115,6 @@ module.exports = {
'space-before-blocks': 'error',
'spaced-comment': ['error', 'always'],
'keyword-spacing': ['error', { 'before': true, 'after': true }],
'no-multi-spaces': ['error'],
},
'plugins': [
'react',
@@ -140,37 +126,10 @@ module.exports = {
{
// enable the rule specifically for TypeScript files
'files': ['*.ts', '*.tsx'],
'parserOptions': {
// Required for @typescript-eslint/no-floating-promises
'project': './tsconfig.eslint.json',
},
'rules': {
// Warn only because it would make it difficult to convert JS classes to TypeScript, unless we
// make everything public which is not great. New code however should specify member accessibility.
'@typescript-eslint/explicit-member-accessibility': ['warn'],
'@typescript-eslint/type-annotation-spacing': ['error', { 'before': false, 'after': true }],
'@typescript-eslint/comma-dangle': ['error', {
'arrays': 'always-multiline',
'objects': 'always-multiline',
'imports': 'always-multiline',
'exports': 'always-multiline',
'enums': 'always-multiline',
'generics': 'always-multiline',
'tuples': 'always-multiline',
'functions': 'never',
}],
'@typescript-eslint/semi': ['error', 'always'],
'@typescript-eslint/member-delimiter-style': ['error', {
'multiline': {
'delimiter': 'semi',
'requireLast': true,
},
'singleline': {
'delimiter': 'semi',
'requireLast': false,
},
}],
'@typescript-eslint/no-floating-promises': ['error'],
},
},
],
@@ -0,0 +1,15 @@
---
name: "\U0001F914 Feature requests and support"
about: 'For non-bug issues we recommend using the forum, where you''ll be more likely
to get an answer: https://discourse.joplinapp.org/'
title: ''
labels: ''
assignees: ''
---
If this is a feature request or a support query, please note that you'll not get an answer here.
Instead we recommend using the forum where you'll are a lot more likely to get an answer: https://discourse.joplinapp.org/
The forum is also the right place to submit a feature request so that it can be discussed by other users.
-5
View File
@@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: "\U0001F914 Feature requests and support"
url: https://discourse.joplinapp.org/
about: I have a question or feature request …
-141
View File
@@ -1,141 +0,0 @@
#!/bin/bash
# =============================================================================
# Setup environment variables
# =============================================================================
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
ROOT_DIR="$SCRIPT_DIR/../.."
IS_PULL_REQUEST=0
IS_DEV_BRANCH=0
IS_LINUX=0
IS_MACOS=0
if [ "$GITHUB_EVENT_NAME" == "pull_request" ]; then
IS_PULL_REQUEST=1
fi
if [ "$GITHUB_REF" == "refs/heads/dev" ]; then
IS_DEV_BRANCH=1
fi
if [ "$RUNNER_OS" == "Linux" ]; then
IS_LINUX=1
IS_MACOS=0
else
IS_LINUX=0
IS_MACOS=1
fi
# =============================================================================
# Print environment
# =============================================================================
echo "GITHUB_WORKFLOW=$GITHUB_WORKFLOW"
echo "GITHUB_EVENT_NAME=$GITHUB_EVENT_NAME"
echo "GITHUB_REF=$GITHUB_REF"
echo "RUNNER_OS=$RUNNER_OS"
echo "GIT_TAG_NAME=$GIT_TAG_NAME"
echo "IS_CONTINUOUS_INTEGRATION=$IS_CONTINUOUS_INTEGRATION"
echo "IS_PULL_REQUEST=$IS_PULL_REQUEST"
echo "IS_DEV_BRANCH=$IS_DEV_BRANCH"
echo "IS_LINUX=$IS_LINUX"
echo "IS_MACOS=$IS_MACOS"
echo "Node $( node -v )"
echo "Npm $( npm -v )"
# =============================================================================
# Install packages
# =============================================================================
cd "$ROOT_DIR"
npm install
# =============================================================================
# Run test units. Only do it for pull requests and dev branch because we don't
# want it to randomly fail when trying to create a desktop release.
# =============================================================================
if [ "$IS_PULL_REQUEST" == "1" ] || [ "$IS_DEV_BRANCH" = "1" ]; then
echo "Step: Running tests..."
npm run test-ci
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
# =============================================================================
# Run linter for pull requests only. We also don't want this to make the desktop
# release randomly fail.
# =============================================================================
if [ "$IS_PULL_REQUEST" == "1" ]; then
echo "Step: Running linter..."
npm run linter-ci ./
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
# =============================================================================
# Validate translations - this is needed as some users manually edit .po files
# (and often make mistakes) instead of using a proper tool like poedit. Doing it
# for Linux only is sufficient.
# =============================================================================
if [ "$IS_PULL_REQUEST" == "1" ]; then
if [ "$IS_LINUX" == "1" ]; then
echo "Step: Validating translations..."
node packages/tools/validate-translation.js
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
fi
# =============================================================================
# Find out if we should run the build or not. Electron-builder gets stuck when
# building PRs so we disable it in this case. The Linux build should provide
# enough info if the app builds or not.
# https://github.com/electron-userland/electron-builder/issues/4263
# =============================================================================
if [ "$IS_PULL_REQUEST" == "1" ]; then
if [ "$IS_MACOS" == "1" ]; then
echo "Step: Not building Electron app"
exit 0
fi
fi
# =============================================================================
# Prepare the Electron app and build it
#
# If the current tag is a desktop release tag (starts with "v", such as
# "v1.4.7"), we build and publish to github
#
# Otherwise we only build but don't publish to GitHub. It helps finding
# out any issue in pull requests and dev branch.
# =============================================================================
cd "$ROOT_DIR/packages/app-desktop"
if [[ $GIT_TAG_NAME = v* ]]; then
echo "Step: Building and publishing desktop application..."
USE_HARD_LINKS=false npm run dist
elif [[ $GIT_TAG_NAME = server-v* ]] && [[ $IS_LINUX = 1 ]]; then
echo "Step: Building Docker Image..."
cd "$ROOT_DIR"
npm run buildServerDocker -- --tag-name $GIT_TAG_NAME
else
echo "Step: Building but *not* publishing desktop application..."
USE_HARD_LINKS=false npm run dist -- --publish=never
fi
-2
View File
@@ -9,9 +9,7 @@ exemptLabels:
- "upstream"
- "backlog"
- "high"
- "medium"
- "spec"
- "cannot reproduce"
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
-76
View File
@@ -1,76 +0,0 @@
name: Joplin Continuous Integration
on: [push, pull_request]
jobs:
Main:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest, ubuntu-latest, windows-2016]
steps:
# Silence apt-get update errors (for example when a module doesn't
# exist) since otherwise it will make the whole build fails, even though
# it might work without update. libsecret-1-dev is required for keytar -
# https://github.com/atom/node-keytar
- name: Install Linux dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update || true
sudo apt-get install -y gettext
sudo apt-get install -y libsecret-1-dev
- name: Install Docker Engine
if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v')
run: |
sudo apt-get install -y apt-transport-https
sudo apt-get install -y ca-certificates
sudo apt-get install -y curl
sudo apt-get install -y gnupg
sudo apt-get install -y lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update || true
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- uses: actions/checkout@v2
- uses: olegtarasov/get-tag@v2.1
- uses: actions/setup-node@v2
with:
node-version: '12'
# Login to Docker only if we're on a server release tag. If we run this on
# a pull request it will fail because the PR doesn't have access to
# secrets
- uses: docker/login-action@v1
if: runner.os == 'Linux' && startsWith(github.ref, 'refs/tags/server-v')
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Run tests, build and publish Linux and macOS apps
if: runner.os == 'Linux' || runner.os == 'macOs'
env:
APPLE_ASC_PROVIDER: ${{ secrets.APPLE_ASC_PROVIDER }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.APPLE_CSC_LINK }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
IS_CONTINUOUS_INTEGRATION: 1
run: |
"${GITHUB_WORKSPACE}/.github/scripts/run_ci.sh"
- name: Build and publish Windows app
if: runner.os == 'Windows' && startsWith(github.ref, 'refs/tags/v')
env:
CSC_KEY_PASSWORD: ${{ secrets.WINDOWS_CSC_KEY_PASSWORD }}
CSC_LINK: ${{ secrets.WINDOWS_CSC_LINK }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
IS_CONTINUOUS_INTEGRATION: 1
run: |
npm install
cd packages/app-desktop
npm run dist
+342 -1687
View File
File diff suppressed because it is too large. Load diff
+308
View File
@@ -0,0 +1,308 @@
# This is used by VSCode to ignore patterns during search.
# Before they were in joplin.code-workspace, under the `files.exclude` key
# but it eventually reached the limit with ENAMETOOLONG error.
#
# https://github.com/microsoft/vscode/issues/94718
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
CliClient/app/LinkSelector.js
CliClient/app/services/plugins/PluginRunner.js
CliClient/tests/fsDriver.js
CliClient/tests/InMemoryCache.js
CliClient/tests/MdToHtml.js
CliClient/tests/models_Setting.js
CliClient/tests/services_CommandService.js
CliClient/tests/services_InteropService.js
CliClient/tests/services_keychainService.js
CliClient/tests/services_PluginService.js
CliClient/tests/services_rest_Api.js
CliClient/tests/services/plugins/api/JoplinSetting.js
CliClient/tests/services/plugins/sandboxProxy.js
CliClient/tests/synchronizer_LockHandler.js
CliClient/tests/synchronizer_MigrationHandler.js
ElectronClient/app.js
ElectronClient/bridge.js
ElectronClient/commands/copyDevCommand.js
ElectronClient/commands/focusElement.js
ElectronClient/commands/openProfileDirectory.js
ElectronClient/commands/startExternalEditing.js
ElectronClient/commands/stopExternalEditing.js
ElectronClient/commands/toggleExternalEditing.js
ElectronClient/ElectronAppWrapper.js
ElectronClient/global.d.js
ElectronClient/gui/Button/Button.js
ElectronClient/gui/ConfigScreen/ButtonBar.js
ElectronClient/gui/ConfigScreen/ConfigScreen.js
ElectronClient/gui/ConfigScreen/SideBar.js
ElectronClient/gui/DropboxLoginScreen.js
ElectronClient/gui/ErrorBoundary.js
ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js
ElectronClient/gui/KeymapConfig/ShortcutRecorder.js
ElectronClient/gui/KeymapConfig/styles/index.js
ElectronClient/gui/KeymapConfig/utils/getLabel.js
ElectronClient/gui/KeymapConfig/utils/useCommandStatus.js
ElectronClient/gui/KeymapConfig/utils/useKeymap.js
ElectronClient/gui/MainScreen/commands/editAlarm.js
ElectronClient/gui/MainScreen/commands/exportPdf.js
ElectronClient/gui/MainScreen/commands/hideModalMessage.js
ElectronClient/gui/MainScreen/commands/moveToFolder.js
ElectronClient/gui/MainScreen/commands/newFolder.js
ElectronClient/gui/MainScreen/commands/newNote.js
ElectronClient/gui/MainScreen/commands/newSubFolder.js
ElectronClient/gui/MainScreen/commands/newTodo.js
ElectronClient/gui/MainScreen/commands/openFolder.js
ElectronClient/gui/MainScreen/commands/openNote.js
ElectronClient/gui/MainScreen/commands/openTag.js
ElectronClient/gui/MainScreen/commands/print.js
ElectronClient/gui/MainScreen/commands/renameFolder.js
ElectronClient/gui/MainScreen/commands/renameTag.js
ElectronClient/gui/MainScreen/commands/search.js
ElectronClient/gui/MainScreen/commands/selectTemplate.js
ElectronClient/gui/MainScreen/commands/setTags.js
ElectronClient/gui/MainScreen/commands/showModalMessage.js
ElectronClient/gui/MainScreen/commands/showNoteContentProperties.js
ElectronClient/gui/MainScreen/commands/showNoteProperties.js
ElectronClient/gui/MainScreen/commands/showShareNoteDialog.js
ElectronClient/gui/MainScreen/commands/toggleEditors.js
ElectronClient/gui/MainScreen/commands/toggleNoteList.js
ElectronClient/gui/MainScreen/commands/toggleSideBar.js
ElectronClient/gui/MainScreen/commands/toggleVisiblePanes.js
ElectronClient/gui/MainScreen/MainScreen.js
ElectronClient/gui/MenuBar.js
ElectronClient/gui/menuCommandNames.js
ElectronClient/gui/MultiNoteActions.js
ElectronClient/gui/NoteContentPropertiesDialog.js
ElectronClient/gui/NoteEditor/commands/editorCommandDeclarations.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteBody.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteTitle.js
ElectronClient/gui/NoteEditor/commands/showLocalSearch.js
ElectronClient/gui/NoteEditor/commands/showRevisions.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Editor.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Toolbar.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useJoplinMode.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useKeymap.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useLineSorting.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useListIdent.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useScrollUtils.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/setupContextMenu.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/useScroll.js
ElectronClient/gui/NoteEditor/NoteEditor.js
ElectronClient/gui/NoteEditor/NoteTitle/NoteTitleBar.js
ElectronClient/gui/NoteEditor/styles/index.js
ElectronClient/gui/NoteEditor/utils/contextMenu.js
ElectronClient/gui/NoteEditor/utils/index.js
ElectronClient/gui/NoteEditor/utils/resourceHandling.js
ElectronClient/gui/NoteEditor/utils/types.js
ElectronClient/gui/NoteEditor/utils/useDropHandler.js
ElectronClient/gui/NoteEditor/utils/useFolder.js
ElectronClient/gui/NoteEditor/utils/useFormNote.js
ElectronClient/gui/NoteEditor/utils/useMarkupToHtml.js
ElectronClient/gui/NoteEditor/utils/useMessageHandler.js
ElectronClient/gui/NoteEditor/utils/useNoteSearchBar.js
ElectronClient/gui/NoteEditor/utils/usePluginServiceRegistration.js
ElectronClient/gui/NoteEditor/utils/useSearchMarkers.js
ElectronClient/gui/NoteEditor/utils/useWindowCommandHandler.js
ElectronClient/gui/NoteList/commands/focusElementNoteList.js
ElectronClient/gui/NoteList/NoteList.js
ElectronClient/gui/NoteListControls/commands/focusSearch.js
ElectronClient/gui/NoteListControls/NoteListControls.js
ElectronClient/gui/NoteListItem.js
ElectronClient/gui/NoteTextViewer.js
ElectronClient/gui/NoteToolbar/NoteToolbar.js
ElectronClient/gui/OneDriveLoginScreen.js
ElectronClient/gui/ResizableLayout/hooks/useLayoutItemSizes.js
ElectronClient/gui/ResizableLayout/hooks/useWindowResizeEvent.js
ElectronClient/gui/ResizableLayout/ResizableLayout.js
ElectronClient/gui/ResourceScreen.js
ElectronClient/gui/Root_UpgradeSyncTarget.js
ElectronClient/gui/Root.js
ElectronClient/gui/SearchBar/hooks/useSearch.js
ElectronClient/gui/SearchBar/SearchBar.js
ElectronClient/gui/SearchBar/styles/index.js
ElectronClient/gui/ShareNoteDialog.js
ElectronClient/gui/SideBar/commands/focusElementSideBar.js
ElectronClient/gui/SideBar/SideBar.js
ElectronClient/gui/SideBar/styles/index.js
ElectronClient/gui/StatusScreen/StatusScreen.js
ElectronClient/gui/style/StyledInput.js
ElectronClient/gui/style/StyledTextInput.js
ElectronClient/gui/TagList.js
ElectronClient/gui/ToggleEditorsButton/styles/index.js
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
ElectronClient/gui/ToolbarBase.js
ElectronClient/gui/ToolbarButton/styles/index.js
ElectronClient/gui/ToolbarButton/ToolbarButton.js
ElectronClient/gui/utils/NoteListUtils.js
ElectronClient/InteropServiceHelper.js
ElectronClient/plugins/GotoAnything.js
ElectronClient/services/bridge.js
ElectronClient/services/commands/types.js
ElectronClient/services/plugins/hooks/useThemeCss.js
ElectronClient/services/plugins/hooks/useViewIsReady.js
ElectronClient/services/plugins/PlatformImplementation.js
ElectronClient/services/plugins/PluginRunner.js
ElectronClient/services/plugins/UserWebview.js
ElectronClient/services/plugins/UserWebviewDialog.js
ElectronClient/services/plugins/UserWebviewDialogButtonBar.js
ElectronClient/services/spellChecker/SpellCheckerServiceDriverNative.js
ReactNativeClient/lib/AsyncActionQueue.js
ReactNativeClient/lib/BaseApplication.js
ReactNativeClient/lib/checkPermissions.js
ReactNativeClient/lib/commands/historyBackward.js
ReactNativeClient/lib/commands/historyForward.js
ReactNativeClient/lib/commands/synchronize.js
ReactNativeClient/lib/components/BackButtonDialogBox.js
ReactNativeClient/lib/components/CameraView.js
ReactNativeClient/lib/components/NoteBodyViewer/hooks/useOnMessage.js
ReactNativeClient/lib/components/NoteBodyViewer/hooks/useOnResourceLongPress.js
ReactNativeClient/lib/components/NoteBodyViewer/hooks/useSource.js
ReactNativeClient/lib/components/NoteBodyViewer/NoteBodyViewer.js
ReactNativeClient/lib/components/screens/Note.js
ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js
ReactNativeClient/lib/components/SelectDateTimeDialog.js
ReactNativeClient/lib/errorUtils.js
ReactNativeClient/lib/eventManager.js
ReactNativeClient/lib/fs-driver-node.js
ReactNativeClient/lib/hooks/useEffectDebugger.js
ReactNativeClient/lib/hooks/useImperativeHandlerDebugger.js
ReactNativeClient/lib/hooks/usePrevious.js
ReactNativeClient/lib/hooks/usePropsDebugger.js
ReactNativeClient/lib/InMemoryCache.js
ReactNativeClient/lib/joplin-renderer/MarkupToHtml.js
ReactNativeClient/lib/joplin-renderer/MdToHtml.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/checkbox.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/code_inline.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/fence.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/fountain.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/highlight_keywords.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/html_image.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/image.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/katex.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/link_open.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/sanitize_html.js
ReactNativeClient/lib/joplin-renderer/noteStyle.js
ReactNativeClient/lib/joplin-renderer/pathUtils.js
ReactNativeClient/lib/JoplinServerApi.js
ReactNativeClient/lib/locale.js
ReactNativeClient/lib/Logger.js
ReactNativeClient/lib/markdownUtils.js
ReactNativeClient/lib/markupLanguageUtils.js
ReactNativeClient/lib/models/Alarm.js
ReactNativeClient/lib/models/Setting.js
ReactNativeClient/lib/ntpDate.js
ReactNativeClient/lib/path-utils.js
ReactNativeClient/lib/PoorManIntervals.js
ReactNativeClient/lib/reducer.js
ReactNativeClient/lib/services/AlarmService.js
ReactNativeClient/lib/services/AlarmServiceDriver.android.js
ReactNativeClient/lib/services/AlarmServiceDriver.ios.js
ReactNativeClient/lib/services/AlarmServiceDriverNode.js
ReactNativeClient/lib/services/BaseService.js
ReactNativeClient/lib/services/commands/commandsToMarkdownTable.js
ReactNativeClient/lib/services/commands/MenuUtils.js
ReactNativeClient/lib/services/commands/propsHaveChanged.js
ReactNativeClient/lib/services/commands/stateToWhenClauseContext.js
ReactNativeClient/lib/services/commands/ToolbarButtonUtils.js
ReactNativeClient/lib/services/CommandService.js
ReactNativeClient/lib/services/contextkey/contextkey.js
ReactNativeClient/lib/services/debug/populateDatabase.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Base.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Html.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Md.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Raw.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Base.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToHtml.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToMd.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Md.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Raw.js
ReactNativeClient/lib/services/interop/InteropService.js
ReactNativeClient/lib/services/interop/types.js
ReactNativeClient/lib/services/keychain/KeychainService.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.dummy.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.mobile.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.node.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriverBase.js
ReactNativeClient/lib/services/KeymapService.js
ReactNativeClient/lib/services/plugins/api/Global.js
ReactNativeClient/lib/services/plugins/api/Joplin.js
ReactNativeClient/lib/services/plugins/api/JoplinCommands.js
ReactNativeClient/lib/services/plugins/api/JoplinData.js
ReactNativeClient/lib/services/plugins/api/JoplinFilters.js
ReactNativeClient/lib/services/plugins/api/JoplinInterop.js
ReactNativeClient/lib/services/plugins/api/JoplinPlugins.js
ReactNativeClient/lib/services/plugins/api/JoplinSettings.js
ReactNativeClient/lib/services/plugins/api/JoplinViews.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsDialogs.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsMenuItems.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsMenus.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsPanels.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsToolbarButtons.js
ReactNativeClient/lib/services/plugins/api/JoplinWorkspace.js
ReactNativeClient/lib/services/plugins/api/types.js
ReactNativeClient/lib/services/plugins/BasePluginRunner.js
ReactNativeClient/lib/services/plugins/MenuController.js
ReactNativeClient/lib/services/plugins/MenuItemController.js
ReactNativeClient/lib/services/plugins/Plugin.js
ReactNativeClient/lib/services/plugins/PluginService.js
ReactNativeClient/lib/services/plugins/reducer.js
ReactNativeClient/lib/services/plugins/sandboxProxy.js
ReactNativeClient/lib/services/plugins/ToolbarButtonController.js
ReactNativeClient/lib/services/plugins/utils/contentScriptsToRendererRules.js
ReactNativeClient/lib/services/plugins/utils/createViewHandle.js
ReactNativeClient/lib/services/plugins/utils/executeSandboxCall.js
ReactNativeClient/lib/services/plugins/utils/manifestFromObject.js
ReactNativeClient/lib/services/plugins/utils/mapEventHandlersToIds.js
ReactNativeClient/lib/services/plugins/utils/types.js
ReactNativeClient/lib/services/plugins/ViewController.js
ReactNativeClient/lib/services/plugins/WebviewController.js
ReactNativeClient/lib/services/ResourceEditWatcher/index.js
ReactNativeClient/lib/services/ResourceEditWatcher/reducer.js
ReactNativeClient/lib/services/rest/actionApi.desktop.js
ReactNativeClient/lib/services/rest/Api.js
ReactNativeClient/lib/services/rest/errors.js
ReactNativeClient/lib/services/searchengine/filterParser.js
ReactNativeClient/lib/services/searchengine/queryBuilder.js
ReactNativeClient/lib/services/SettingUtils.js
ReactNativeClient/lib/services/spellChecker/SpellCheckerService.js
ReactNativeClient/lib/services/spellChecker/SpellCheckerServiceDriverBase.js
ReactNativeClient/lib/services/synchronizer/gui/useSyncTargetUpgrade.js
ReactNativeClient/lib/services/synchronizer/LockHandler.js
ReactNativeClient/lib/services/synchronizer/MigrationHandler.js
ReactNativeClient/lib/services/synchronizer/migrations/1.js
ReactNativeClient/lib/services/synchronizer/migrations/2.js
ReactNativeClient/lib/services/synchronizer/utils/types.js
ReactNativeClient/lib/services/UndoRedoService.js
ReactNativeClient/lib/services/WhenClause.js
ReactNativeClient/lib/ShareExtension.js
ReactNativeClient/lib/shareHandler.js
ReactNativeClient/lib/shim.js
ReactNativeClient/lib/Synchronizer.js
ReactNativeClient/lib/theme.js
ReactNativeClient/lib/themes/aritimDark.js
ReactNativeClient/lib/themes/dark.js
ReactNativeClient/lib/themes/dracula.js
ReactNativeClient/lib/themes/light.js
ReactNativeClient/lib/themes/nord.js
ReactNativeClient/lib/themes/oledDark.js
ReactNativeClient/lib/themes/solarizedDark.js
ReactNativeClient/lib/themes/solarizedLight.js
ReactNativeClient/lib/themes/type.js
ReactNativeClient/lib/time.js
ReactNativeClient/lib/uuid.js
ReactNativeClient/lib/versionInfo.js
ReactNativeClient/PluginAssetsLoader.js
ReactNativeClient/setUpQuickActions.js
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
+116
View File
@@ -0,0 +1,116 @@
# Only build tags (Doesn't work - doesn't build anything)
if: tag IS present OR type = pull_request
rvm: 2.3.3
# It's important to only build production branches otherwise Electron Builder
# might take assets from dev branches and overwrite those of production.
# https://docs.travis-ci.com/user/customizing-the-build/#Building-Specific-Branches
branches:
only:
- master
- dev
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
matrix:
include:
- os: osx
osx_image: xcode9.0
language: node_js
node_js: "10"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
- os: linux
sudo: required
dist: trusty
language: node_js
node_js: "10"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
# cache:
# directories:
# - node_modules
# - $HOME/.cache/electron
# - $HOME/.cache/electron-builder
before_install:
# HOMEBREW_NO_AUTO_UPDATE needed so that Homebrew doesn't upgrade to the next
# version, which requires Ruby 2.3, which is not available on the Travis VM.
# Silence apt-get update errors (for example when a module doesn't exist) since
# otherwise it will make the whole build fails, even though all we need is yarn.
# libsecret-1-dev is required for keytar - https://github.com/atom/node-keytar
- |
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
HOMEBREW_NO_AUTO_UPDATE=1 brew install yarn
else
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update || true
sudo apt-get install -y yarn
sudo apt-get install -y gettext
sudo apt-get install -y libsecret-1-dev
fi
script:
- |
# Install tools
npm install
cd Tools
npm install
cd ..
# Run test units.
# Only do it for pull requests because Travis randomly fails to run them
# and that would break the desktop release.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
cd CliClient
npm run test-ci
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
cd ..
fi
# Run linter for pull requests only - this is so that
# bypassing eslint is allowed for urgent fixes.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
npm run linter-ci ./
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
# Validate translations - this is needed as some users manually
# edit .po files (and often make mistakes) instead of using a proper
# tool like poedit. Doing it for Linux only is sufficient.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
if [ "$TRAVIS_OS_NAME" != "osx" ]; then
node Tools/validate-translation.js
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
fi
# Find out if we should run the build or not. Electron-builder gets stuck when
# builing PRs so we disable it in this case. The Linux build should provide
# enough info if the app builds or not.
# https://github.com/electron-userland/electron-builder/issues/4263
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
exit 0
fi
fi
# Prepare the Electron app and build it
cd ElectronClient
USE_HARD_LINKS=false npm run dist
Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 MiB

-3
View File
@@ -1,3 +0,0 @@
All assets in this directory including, but not limited to, logos, icons
and images are copyright (c) Laurent Cozic, all rights reserved.
They may not be used without a permission.
-37
View File
@@ -1,37 +0,0 @@
function camelCaseToDots(s) {
const output = [];
for (let i = 0; i < s.length; i++) {
const c = s[i];
if (c === c.toLowerCase() || i === 0) {
output.push(c.toLowerCase());
} else {
output.push('.');
output.push(c.toLowerCase());
}
}
return output.join('');
}
module.exports = {
jpFormatClassName: function(className) {
if (className.indexOf('Joplin') !== 0 || className.indexOf(' ') >= 0) return className;
const p = className.substr(6);
if (p === '') return 'joplin';
return `joplin.${camelCaseToDots(p)
.replace(/menu\.items/, 'menuItems')
.replace(/toolbar\.buttons/, 'toolbarButtons')
.replace(/content\.scripts/, 'contentScripts')}`;
},
jpIsAllowedGroup: function(name) {
return name !== 'Constructors';
},
jsIsNotKindVariable: function(classes) {
if (!classes) return true;
return classes.indexOf('tsd-kind-variable') < 0;
},
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 300 KiB

-27
View File
@@ -1,27 +0,0 @@
const iconPackager = require('@ephox/oxide-icons-tools').iconPackager;
const clean = require('gulp-clean');
const gulp = require('gulp');
const fs = require('fs');
gulp.task('icon-packager', function() {
const contents = fs.readFileSync('package.json');
const name = JSON.parse(contents).iconPackName;
return gulp.src('src/svg/**/*.svg')
.pipe(iconPackager({ name }))
.pipe(gulp.dest('dist'));
});
gulp.task('deploy', function() {
fs.copyFileSync(`${__dirname}/dist/icons/Joplin/icons.js`, `${__dirname}/../../../packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/icons.js`);
return Promise.resolve();
});
gulp.task('clean', function() {
return gulp.src('./dist', {
read: false,
allowEmpty: true,
}).pipe(clean());
});
gulp.task('default', gulp.series('clean', 'icon-packager', 'deploy'));
-13
View File
@@ -1,13 +0,0 @@
# TinyMCE Joplin Lists Plugin
**As of 2020-11-02 this module no longer builds (a ton of TypeScript errors). No idea why since nothing was changed but should be investigated if modifying this plugin is ever needed.**
This is based on https://github.com/tinymce/tinymce/tree/59748a11303fb7cf00fdb8c9392dcb082ee9d965/modules/tinymce/src/plugins/lists
But with support for Joplin checkboxes.
## Building
Use `npm i && npm run build` to build the plugin, which will also copy the compiled version to the right packages/app-desktop sub-directory.
To test the plugin, use `npm run buildAndStart`, which will build the plugin and start the desktop application.
-54
View File
@@ -1,54 +0,0 @@
{
"name": "joplin-tinymce-lists",
"version": "1.0.0",
"description": "",
"scripts": {
"prepublishOnly": "npm run lint && npm run build",
"lint": "tslint src/**/*.ts",
"build": "grunt",
"test": "bedrock-auto -b phantomjs -d src/test/ts/",
"test-manual": "bedrock -d src/test/ts/",
"start": "grunt webpack",
"buildAndStart": "yarn build && cd .. && cd .. && cd .. && cd packages/app-desktop && npm start"
},
"keywords": [],
"author": "Tiny Technologies Inc.",
"devDependencies": {
"@ephox/agar": "latest",
"@ephox/bedrock": "latest",
"@ephox/mcagar": "latest",
"@ephox/swag": "latest",
"@ephox/tslint-rules": "latest",
"awesome-typescript-loader": "^5.2.1",
"grunt": "^1.0.4",
"grunt-contrib-clean": "^2.0.0",
"grunt-contrib-concat": "^1.0.1",
"grunt-contrib-copy": "^1.0.0",
"grunt-contrib-uglify": "^4.0.0",
"grunt-shell": "^2.1.0",
"grunt-tslint": "^5.0.2",
"grunt-webpack": "^3.1.3",
"load-grunt-tasks": "^4.0.0",
"tinymce": "latest",
"ts-loader": "^5.3.0",
"tslib": "^1.9.3",
"tslint": "^5.11.0",
"typescript": "^3.1.6",
"webpack": "^4.25.1",
"webpack-livereload-plugin": "^2.1.1"
},
"files": [
"lib/main",
"lib/demo",
"lib/test",
"src",
"tsconfig.json",
"readme.md",
"LEGAL.txt",
"LICENSE.txt"
],
"main": "./lib/main/ts/api/Main.js",
"module": "./lib/main/ts/api/Main.js",
"types": "./lib/main/ts/api/Main.d.ts",
"license": "Apache-2.0"
}
-7
View File
@@ -1,7 +0,0 @@
@charset "UTF-8";/*!
* Bootstrap v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0))}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-font-sans-serif);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:30Line truncated
/*# sourceMappingURL=bootstrap.min.css.map */
File diff suppressed because it is too large. Load diff
@@ -1,11 +0,0 @@
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M22.6857 0C20.9264 0.121687 18.8701 1.24781 17.6718 2.71423C16.5787 4.04454 15.6795 6.0204 16.0301 7.94058C17.9523 8.00039 19.9385 6.84746 21.0894 5.35628C22.166 3.96823 22.9807 2.00474 22.6857 0Z" fill="white"/>
<path d="M29.6386 11.2903C27.9494 9.17211 25.5755 7.94287 23.3335 7.94287C20.3739 7.94287 19.1219 9.3598 17.0656 9.3598C14.9454 9.3598 13.3346 7.947 10.7751 7.947C8.26088 7.947 5.58377 9.48355 3.88634 12.1112C1.50004 15.8113 1.90842 22.768 5.77558 28.6936C7.15951 30.8138 9.0075 33.198 11.4247 33.2187C13.5759 33.2393 14.1823 31.8389 17.0966 31.8244C20.0109 31.8079 20.5636 33.2372 22.7107 33.2145C25.13 33.196 27.079 30.5539 28.4629 28.4337C29.455 26.9136 29.8242 26.1485 30.5935 24.4325C24.998 22.3019 24.1008 14.3448 29.6386 11.2903Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0">
<rect width="33" height="33" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1015 B

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="86" height="20" role="img" aria-label="Donate: IBAN"><title>Donate: IBAN</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="86" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="49" height="20" fill="#555"/><rect x="49" width="37" height="20" fill="#007ec6"/><rect width="86" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="255" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="390">Donate</text><text x="255" y="140" transform="scale(.1)" fill="#fff" textLength="390">Donate</text><text aria-hidden="true" x="665" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="270">IBAN</text><text x="665" y="140" transform="scale(.1)" fill="#fff" textLength="270">IBAN</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 339 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

@@ -1,4 +0,0 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.9997 13.75L14.6663 10.0833M10.9997 13.75V2.75V13.75ZM10.9997 13.75L7.33301 10.0833L10.9997 13.75Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1.83301 15.5833L2.40226 17.8612C2.5014 18.2578 2.73026 18.6099 3.05248 18.8615C3.37469 19.1131 3.77177 19.2499 4.18059 19.2499H17.8188C18.2276 19.2499 18.6247 19.1131 18.9469 18.8615C19.2691 18.6099 19.498 18.2578 19.5971 17.8612L20.1663 15.5833" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

Before

Width:  |  Height:  |  Size: 638 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 572 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

@@ -1,10 +0,0 @@
<svg width="33" height="38" viewBox="0 0 33 38" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0)">
<path d="M16.2643 8.97252C16.338 9.0089 16.3969 9.09623 16.4853 9.09623C16.5663 9.09623 16.6915 9.06712 16.6989 8.98707C16.7136 8.88519 16.559 8.8197 16.4632 8.77604C16.338 8.7251 16.1759 8.70327 16.0581 8.76876C16.0286 8.78332 15.9991 8.8197 16.0139 8.84881C16.036 8.94341 16.1833 8.92886 16.2643 8.97252ZM14.6511 9.09623C14.7395 9.09623 14.7985 9.0089 14.8721 8.97252C14.9532 8.92886 15.1005 8.94341 15.1299 8.85609C15.1447 8.82698 15.1152 8.79059 15.0857 8.77604C14.9679 8.71055 14.8058 8.73238 14.6806 8.78332C14.5849 8.82698 14.4302 8.89247 14.4449 8.99435C14.4523 9.06712 14.5775 9.1035 14.6511 9.09623ZM30.9375 29.3844C30.6723 29.0933 30.5471 28.5403 30.4072 27.9508C30.2746 27.3614 30.1199 26.7283 29.6337 26.3208C29.538 26.2408 29.4422 26.168 29.3391 26.1098C29.2433 26.0515 29.1402 26.0006 29.0371 25.9642C29.7148 23.9776 29.4496 21.9983 28.7645 20.2081C27.9248 18.0178 26.459 16.1039 25.3393 14.7941C24.0797 13.2295 22.8569 11.745 22.879 9.55467C22.9159 6.21455 23.2547 0.00729801 17.2956 2.10431e-05C9.75271 -0.0145329 11.6384 7.5244 11.5574 9.83848C11.4322 11.5413 11.086 12.8802 9.90003 14.5467C8.50784 16.184 6.54847 18.8255 5.62034 21.5835C5.17838 22.8861 4.97213 24.2105 5.16364 25.4621C4.68485 25.8842 4.32391 26.5318 3.94088 26.9321C3.6315 27.245 3.18217 27.3614 2.68864 27.536C2.19512 27.7107 1.65739 27.9727 1.32592 28.5912C1.17123 28.875 1.11967 29.1806 1.11967 29.4936C1.11967 29.7774 1.16387 30.0684 1.20806 30.3522C1.29646 30.9417 1.39222 31.4947 1.26699 31.8658C0.883957 32.9137 0.832394 33.6414 1.10494 34.1726C1.38485 34.7039 1.94467 34.9367 2.58552 35.0677C3.85985 35.3297 5.59088 35.2642 6.9536 35.9773C8.41208 36.7341 9.89266 37.0034 11.0712 36.7341C11.9257 36.5449 12.6255 36.0355 12.979 35.2642C13.8998 35.2569 14.9163 34.8712 16.5369 34.7839C17.6344 34.6966 19.0119 35.1696 20.5956 35.0823C20.6398 35.2496 20.6987 35.417 20.7797 35.5698V35.5771C21.3911 36.7923 22.5328 37.3454 23.7482 37.2508C24.971 37.1562 26.2601 36.4503 27.3061 35.2205C28.3078 34.0271 29.9578 33.5323 31.0554 32.8773C31.6005 32.5499 32.0424 32.1424 32.0793 31.5457C32.1087 30.9489 31.7552 30.2867 30.9375 29.3844ZM16.4779 6.35281C17.1998 4.73732 18.9971 4.76643 19.719 6.3237C20.1978 7.35703 19.9842 8.57228 19.4023 9.2636C19.2844 9.20538 18.9677 9.07439 18.4741 8.90702C18.5552 8.8197 18.7025 8.71055 18.7614 8.57228C19.115 7.7136 18.7467 6.6075 18.0911 6.58567C17.5534 6.54929 17.0672 7.37158 17.2219 8.25937C16.9199 8.11384 16.5295 8.00468 16.2643 7.93919C16.1907 7.43708 16.2422 6.87675 16.4779 6.35281ZM13.4799 5.51596C14.2239 5.51596 15.0121 6.54929 14.8869 7.95374C14.629 8.02651 14.3639 8.13567 14.1355 8.28848C14.2239 7.64083 13.8924 6.82581 13.4284 6.8622C12.8096 6.91314 12.7065 8.40491 13.2958 8.90702C13.3694 8.96524 13.4357 8.89247 12.8612 9.30726C11.7121 8.24482 12.0878 5.51596 13.4799 5.51596ZM12.4782 9.93308C12.9348 9.59834 13.4799 9.20538 13.5168 9.16899C13.863 8.84881 14.5112 8.13567 15.5719 8.13567C16.0949 8.13567 16.721 8.30304 17.4797 8.78332C17.9438 9.08167 18.3121 9.1035 19.1444 9.46007C19.7632 9.71477 20.1536 10.1659 19.9179 10.7845C19.7264 11.3011 19.1076 11.8324 18.2458 12.1016C17.4282 12.3636 16.7873 13.2659 15.4319 13.1859C15.1447 13.1713 14.9163 13.1131 14.7248 13.0331C14.1355 12.7784 13.8261 12.2763 13.2516 11.9415C12.6181 11.5922 12.2793 11.1847 12.1688 10.8281C12.0657 10.4716 12.1688 10.1732 12.4782 9.93308ZM12.7212 34.2381C12.5223 36.7923 9.48753 36.7414 7.17458 35.548C4.97213 34.3982 2.12146 35.075 1.53954 33.9543C1.36275 33.6123 1.36275 33.0302 1.73106 32.0332V32.0187C1.90784 31.4656 1.77525 30.8543 1.68686 30.2795C1.59847 29.7119 1.55427 29.1879 1.75315 28.8241C2.01097 28.3365 2.37927 28.1619 2.84333 28.0018C3.60204 27.7325 3.71253 27.7544 4.28708 27.2814C4.69222 26.8666 4.98686 26.3426 5.34043 25.9715C5.7161 25.5713 6.07704 25.3821 6.64422 25.4694C7.24088 25.5567 7.7565 25.9642 8.25739 26.6337L9.70114 29.2243C10.4009 30.6724 12.8759 32.7464 12.7212 34.2381ZM12.6181 32.3534C12.3161 31.8731 11.911 31.3637 11.5574 30.9271C12.0804 30.9271 12.6034 30.767 12.7875 30.2795C12.9569 29.8283 12.7875 29.1952 12.2424 28.4675C11.248 27.1431 9.42123 26.1025 9.42123 26.1025C8.42681 25.4912 7.86699 24.7417 7.60918 23.9267C7.35137 23.1117 7.3882 22.2311 7.58708 21.3652C7.97012 19.6988 8.95717 18.076 9.59065 17.0572C9.76007 16.9335 9.64958 17.2901 8.94981 18.5708C8.32369 19.7424 7.15248 22.4495 8.75829 24.567C8.80248 23.0607 9.16342 21.5253 9.77481 20.0917C10.6587 18.0978 12.5224 14.6413 12.6697 11.8906C12.7507 11.9488 13.0085 12.1234 13.1264 12.1889C13.4652 12.3854 13.723 12.6765 14.0545 12.9385C14.9679 13.6662 16.1538 13.6079 17.1777 13.0258C17.6344 12.7711 18.0027 12.48 18.3489 12.3709C19.0782 12.1453 19.6601 11.745 19.9915 11.2793C20.5587 13.4915 21.8846 16.6861 22.7317 18.2434C23.1811 19.0729 24.0797 20.8267 24.4701 22.9443C24.7132 22.937 24.9857 22.9734 25.273 23.0462C26.2895 20.4483 24.4112 17.6467 23.5567 16.868C23.2105 16.5333 23.1958 16.3877 23.3652 16.395C24.2933 17.21 25.5161 18.8474 25.9581 20.6884C26.1643 21.5326 26.2Line truncated
</g>
<defs>
<clipPath id="clip0">
<rect width="33" height="37.2581" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 6.7 KiB

@@ -1,15 +0,0 @@
<svg width="125" height="42" viewBox="0 0 125 42" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<path d="M60.1792 29.4698C59.1749 29.4698 58.2454 29.2749 57.391 28.8852C56.5515 28.4804 55.8619 27.9183 55.3223 27.1987L56.9862 25.1975C57.8557 26.3967 58.8975 26.9964 60.1118 26.9964C61.7458 26.9964 62.5628 26.0295 62.5628 24.0957V15.9557H56.9637V13.5047H65.4859V23.9383C65.4859 25.7821 65.0362 27.1687 64.1368 28.0982C63.2373 29.0126 61.9182 29.4698 60.1792 29.4698Z" fill="#4F9CF9"/>
<path d="M74.7129 29.4024C73.4987 29.4024 72.4044 29.14 71.43 28.6153C70.4556 28.0907 69.6911 27.3636 69.1364 26.4342C68.5967 25.4898 68.3269 24.4254 68.3269 23.2412C68.3269 22.0569 68.5967 21.0001 69.1364 20.0707C69.6911 19.1412 70.4556 18.4142 71.43 17.8895C72.4044 17.3648 73.4987 17.1025 74.7129 17.1025C75.9422 17.1025 77.044 17.3648 78.0184 17.8895C78.9928 18.4142 79.7498 19.1412 80.2895 20.0707C80.8441 21.0001 81.1215 22.0569 81.1215 23.2412C81.1215 24.4254 80.8441 25.4898 80.2895 26.4342C79.7498 27.3636 78.9928 28.0907 78.0184 28.6153C77.044 29.14 75.9422 29.4024 74.7129 29.4024ZM74.7129 26.9964C75.7473 26.9964 76.6018 26.6516 77.2764 25.962C77.9509 25.2724 78.2882 24.3655 78.2882 23.2412C78.2882 22.1169 77.9509 21.2099 77.2764 20.5204C76.6018 19.8308 75.7473 19.486 74.7129 19.486C73.6786 19.486 72.8241 19.8308 72.1495 20.5204C71.49 21.2099 71.1602 22.1169 71.1602 23.2412C71.1602 24.3655 71.49 25.2724 72.1495 25.962C72.8241 26.6516 73.6786 26.9964 74.7129 26.9964Z" fill="#4F9CF9"/>
<path d="M90.4651 17.1025C91.6344 17.1025 92.6762 17.3573 93.5907 17.867C94.5201 18.3767 95.2471 19.0963 95.7718 20.0257C96.2965 20.9551 96.5588 22.0269 96.5588 23.2412C96.5588 24.4554 96.2965 25.5348 95.7718 26.4792C95.2471 27.4086 94.5201 28.1281 93.5907 28.6378C92.6762 29.1475 91.6344 29.4024 90.4651 29.4024C88.8461 29.4024 87.5644 28.8627 86.62 27.7834V33.6072H83.8092V17.2374H86.4851V18.8114C86.9498 18.2418 87.5194 17.8146 88.194 17.5297C88.8836 17.2449 89.6406 17.1025 90.4651 17.1025ZM90.1503 26.9964C91.1847 26.9964 92.0316 26.6516 92.6912 25.962C93.3658 25.2724 93.7031 24.3655 93.7031 23.2412C93.7031 22.1169 93.3658 21.2099 92.6912 20.5204C92.0316 19.8308 91.1847 19.486 90.1503 19.486C89.4757 19.486 88.8686 19.6434 88.3289 19.9582C87.7893 20.258 87.362 20.6928 87.0472 21.2624C86.7324 21.8321 86.575 22.4917 86.575 23.2412C86.575 23.9907 86.7324 24.6503 87.0472 25.22C87.362 25.7896 87.7893 26.2318 88.3289 26.5466C88.8686 26.8464 89.4757 26.9964 90.1503 26.9964Z" fill="#4F9CF9"/>
<path d="M99.2245 12.5603H102.035V29.245H99.2245V12.5603Z" fill="#4F9CF9"/>
<path d="M105.724 17.2374H108.535V29.245H105.724V17.2374ZM107.141 15.2586C106.631 15.2586 106.204 15.1012 105.859 14.7864C105.514 14.4566 105.342 14.0519 105.342 13.5722C105.342 13.0925 105.514 12.6952 105.859 12.3804C106.204 12.0506 106.631 11.8857 107.141 11.8857C107.651 11.8857 108.078 12.0431 108.423 12.3579C108.767 12.6578 108.94 13.04 108.94 13.5047C108.94 13.9994 108.767 14.4192 108.423 14.764C108.093 15.0937 107.666 15.2586 107.141 15.2586Z" fill="#4F9CF9"/>
<path d="M119.037 17.1025C120.552 17.1025 121.766 17.5447 122.68 18.4292C123.595 19.3136 124.052 20.6253 124.052 22.3642V29.245H121.241V22.724C121.241 21.6747 120.994 20.8876 120.499 20.363C120.004 19.8233 119.3 19.5535 118.385 19.5535C117.351 19.5535 116.534 19.8683 115.934 20.4979C115.335 21.1125 115.035 22.0045 115.035 23.1737V29.245H112.224V17.2374H114.9V18.789C115.365 18.2343 115.949 17.8146 116.654 17.5297C117.359 17.2449 118.153 17.1025 119.037 17.1025Z" fill="#4F9CF9"/>
<rect y="0.762695" width="40.4748" height="40.4748" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="scale(0.000833333)"/>
</pattern>
<image id="image0" width="1200" height="1200" xlink:href="data:image/png;base64,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 truncated
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 149 KiB

-15
View File
@@ -1,15 +0,0 @@
<svg width="92" height="30" viewBox="0 0 92 30" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<path d="M44.6049 21.2777C43.8604 21.2777 43.1715 21.1333 42.5382 20.8444C41.916 20.5444 41.4049 20.1277 41.0049 19.5944L42.2382 18.1111C42.8827 18.9999 43.6549 19.4444 44.5549 19.4444C45.766 19.4444 46.3715 18.7277 46.3715 17.2944V11.2611H42.2215V9.44438H48.5382V17.1777C48.5382 18.5444 48.2049 19.5722 47.5382 20.2611C46.8715 20.9388 45.8938 21.2777 44.6049 21.2777Z" fill="white"/>
<path d="M55.3773 21.2277C54.4773 21.2277 53.6662 21.0333 52.9439 20.6444C52.2217 20.2555 51.6551 19.7166 51.2439 19.0277C50.8439 18.3277 50.6439 17.5388 50.6439 16.6611C50.6439 15.7833 50.8439 14.9999 51.2439 14.3111C51.6551 13.6222 52.2217 13.0833 52.9439 12.6944C53.6662 12.3055 54.4773 12.1111 55.3773 12.1111C56.2884 12.1111 57.1051 12.3055 57.8273 12.6944C58.5495 13.0833 59.1106 13.6222 59.5106 14.3111C59.9217 14.9999 60.1273 15.7833 60.1273 16.6611C60.1273 17.5388 59.9217 18.3277 59.5106 19.0277C59.1106 19.7166 58.5495 20.2555 57.8273 20.6444C57.1051 21.0333 56.2884 21.2277 55.3773 21.2277ZM55.3773 19.4444C56.1439 19.4444 56.7773 19.1888 57.2773 18.6777C57.7773 18.1666 58.0273 17.4944 58.0273 16.6611C58.0273 15.8277 57.7773 15.1555 57.2773 14.6444C56.7773 14.1333 56.1439 13.8777 55.3773 13.8777C54.6106 13.8777 53.9773 14.1333 53.4773 14.6444C52.9884 15.1555 52.7439 15.8277 52.7439 16.6611C52.7439 17.4944 52.9884 18.1666 53.4773 18.6777C53.9773 19.1888 54.6106 19.4444 55.3773 19.4444Z" fill="white"/>
<path d="M67.0528 12.1111C67.9195 12.1111 68.6917 12.2999 69.3695 12.6777C70.0584 13.0555 70.5972 13.5888 70.9861 14.2777C71.375 14.9666 71.5695 15.7611 71.5695 16.6611C71.5695 17.5611 71.375 18.3611 70.9861 19.0611C70.5972 19.7499 70.0584 20.2833 69.3695 20.6611C68.6917 21.0388 67.9195 21.2277 67.0528 21.2277C65.8528 21.2277 64.9028 20.8277 64.2028 20.0277V24.3444H62.1195V12.2111H64.1028V13.3777C64.4472 12.9555 64.8695 12.6388 65.3695 12.4277C65.8806 12.2166 66.4417 12.1111 67.0528 12.1111ZM66.8195 19.4444C67.5861 19.4444 68.2139 19.1888 68.7028 18.6777C69.2028 18.1666 69.4528 17.4944 69.4528 16.6611C69.4528 15.8277 69.2028 15.1555 68.7028 14.6444C68.2139 14.1333 67.5861 13.8777 66.8195 13.8777C66.3195 13.8777 65.8695 13.9944 65.4695 14.2277C65.0695 14.4499 64.7528 14.7722 64.5195 15.1944C64.2861 15.6166 64.1695 16.1055 64.1695 16.6611C64.1695 17.2166 64.2861 17.7055 64.5195 18.1277C64.7528 18.5499 65.0695 18.8777 65.4695 19.1111C65.8695 19.3333 66.3195 19.4444 66.8195 19.4444Z" fill="white"/>
<path d="M73.5452 8.74438H75.6286V21.1111H73.5452V8.74438Z" fill="white"/>
<path d="M78.363 12.2111H80.4463V21.1111H78.363V12.2111ZM79.413 10.7444C79.0352 10.7444 78.7185 10.6277 78.463 10.3944C78.2074 10.1499 78.0796 9.84994 78.0796 9.49438C78.0796 9.13883 78.2074 8.84438 78.463 8.61105C78.7185 8.36661 79.0352 8.24438 79.413 8.24438C79.7907 8.24438 80.1074 8.36105 80.363 8.59438C80.6185 8.81661 80.7463 9.09994 80.7463 9.44438C80.7463 9.81105 80.6185 10.1222 80.363 10.3777C80.1185 10.6222 79.8018 10.7444 79.413 10.7444Z" fill="white"/>
<path d="M88.2307 12.1111C89.3529 12.1111 90.2529 12.4388 90.9307 13.0944C91.6084 13.7499 91.9473 14.7222 91.9473 16.0111V21.1111H89.864V16.2777C89.864 15.4999 89.6807 14.9166 89.314 14.5277C88.9473 14.1277 88.4251 13.9277 87.7473 13.9277C86.9807 13.9277 86.3751 14.1611 85.9307 14.6277C85.4862 15.0833 85.264 15.7444 85.264 16.6111V21.1111H83.1807V12.2111H85.164V13.3611C85.5084 12.9499 85.9418 12.6388 86.464 12.4277C86.9862 12.2166 87.5751 12.1111 88.2307 12.1111Z" fill="white"/>
<rect width="30" height="30" fill="url(#pattern0)"/>
<defs>
<pattern id="pattern0" patternContentUnits="objectBoundingBox" width="1" height="1">
<use xlink:href="#image0" transform="scale(0.000833333)"/>
</pattern>
<image id="image0" width="1200" height="1200" xlink:href="data:image/png;base64,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 truncated
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 149 KiB

@@ -1,6 +0,0 @@
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="17.5312" y="17.5312" width="10.3125" height="10.3125" fill="white"/>
<rect x="5.15625" y="17.5312" width="10.3125" height="10.3125" fill="white"/>
<rect x="17.5312" y="5.15625" width="10.3125" height="10.3125" fill="white"/>
<rect x="5.15625" y="5.15625" width="10.3125" height="10.3125" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 743 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 194 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 602 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

File diff suppressed because it is too large. Load diff
-7
View File
@@ -1,7 +0,0 @@
/*!
* Bootstrap v5.0.2 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},n=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},o=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},r=t=>{const e=o(t);return e&&document.querySelector(e)?e:null},a=t=>{const e=o(t);return e?document.querySelector(e):null},l=t=>{t.dispatchEvent(new Event("transitionend"))},c=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),h=t=>c(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?i.findOne(t):null,d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option "${i}" provided type "${r}" but expected type "${n}".`)})},u=t=>!(!c(t)||0===t.getClientRects().length)&&"visible"===getComputedStyle(t).getPropertyValue("visibility"),g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),p=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?p(t.parentNode):null},f=()=>{},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},b=[],v=()=>"rtl"===document.documentElement.dir,y=t=>{var e;e=()=>{const e=_();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},"loading"===document.readyState?(b.length||document.addEventListener("DOMContentLoaded",()=>{b.forEach(t=>t())}),b.push(e)):e()},w=t=>{"function"==typeof t&&t()},E=(t,e,s=!0)=>{if(!s)return void w(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const o=({target:s})=>{s===e&&(n=!0,e.removeEventListener("transitionend",o),w(t))};e.addEventListener("transitionend",o),setTimeout(()=>{n||l(e)},i)},A=(t,e,s,i)=>{let n=t.indexOf(e);if(-1===n)return t[!s&&i?t.length-1:0];const o=t.length;return n+=s?1:-1,i&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},T=/[^.]*(?=\..*)\.|.*/,C=/\..*/,k=/::\d+$/,L={};let O=1;const D={mouseenter:"mouseover",mouseleave:"mouseout"},I=/^(mouseenter|mouseleave)/i,N=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function x(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function M(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n<o;n++){const o=t[i[n]];if(o.originalHandler===e&&o.delegationSelector===s)return o}return null}function P(t,e,s){const i="string"==typeof e,n=i?s:e;let o=R(t);return N.has(o)||(o=t),[i,n,o]}function j(t,e,s,i,n){if("string"!=typeof e||!t)return;if(s||(s=i,i=null),I.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTaLine truncated
//# sourceMappingURL=bootstrap.min.js.map
-2
View File
@@ -1,2 +0,0 @@
/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^Line truncated
-91
View File
@@ -1,91 +0,0 @@
function getOs() {
if (navigator.appVersion.indexOf("Win")!=-1) return "windows";
if (navigator.appVersion.indexOf("Mac")!=-1) return "macOs";
if (navigator.appVersion.indexOf("X11")!=-1) return "linux";
if (navigator.appVersion.indexOf("Linux")!=-1) return "linux";
return null;
}
function getFilename(path) {
if (!path) return '';
const s = path.split('/');
return s.pop();
}
function getMobileOs() {
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
// Windows Phone must come first because its UA also contains "Android"
if (/windows phone/i.test(userAgent)) {
return "windowsPhone";
}
if (/android/i.test(userAgent)) {
return "android";
}
// iOS detection from: http://stackoverflow.com/a/9039885/177710
if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {
return "ios";
}
return "";
}
function setupMobileMenu() {
$("#open-menu-mobile").click(function () {
$("#menu-mobile").animate({ "margin-right": "0px" }, 300);
});
$("#close-menu-mobile").click(function () {
$("#menu-mobile").animate({ "margin-right": "-300px" }, 300);
});
}
function setupDownloadPage() {
if (!$('.page-download').length) return;
const downloadLinks = {};
$('.page-download .get-it-desktop a').each(function() {
const href = $(this).attr('href');
if (href.indexOf('-Setup') > 0) downloadLinks['windows'] = href;
if (href.indexOf('.dmg') > 0) downloadLinks['macOs'] = href;
if (href.indexOf('.AppImage') > 0) downloadLinks['linux'] = href;
});
$('.page-download .get-it-desktop').hide();
$('.page-download .download-click-here').click((event) => {
event.preventDefault();
$('.page-download .get-it-desktop').show(500);
});
const mobileOs = getMobileOs();
if (mobileOs) {
$('.page-download .intro').hide();
} else {
const os = getOs();
if (!os || !downloadLinks[os]) {
// If we don't know, display the section to manually download the app
$('.page-download .get-it-desktop').show();
} else if (os === 'linux') {
// If it's Linux, the user should probably install it using the
// install script so we redirect to the install section
window.location = 'https://joplinapp.org/help/#desktop-applications';
} else {
// Otherwise, start the download
const downloadLink = downloadLinks[os];
$('.downloaded-filename').text(getFilename(downloadLink));
window.location = downloadLink;
}
}
}
$(function () {
setupMobileMenu();
setupDownloadPage();
});
@@ -1,415 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
{{> gaOptimize}}
<meta
charset="utf-8"
http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1"
/>
<link rel="icon" href="{{imageBaseUrl}}/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Joplin, the open source note-taking application" />
<link rel="stylesheet" href="{{cssBaseUrl}}/fontawesome-all.min.css?t={{buildTime}}">
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"
as="style"
/>
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap"
rel="stylesheet"
as="style"
media="all"
onload="this.media='all'; this.onload = null"
/>
<script
src="{{jsBaseUrl}}/jquery-3.6.0.min.js"
rel="preload"
as="script"
></script>
<link rel="stylesheet" href="{{cssBaseUrl}}/site.css?t={{buildTime}}" as="style" />
<title>Joplin</title>
</head>
<body class="front-page website-env-{{env}}">
<div class="container-fluid" id="main-container">
{{#navbar}}
{{> navbar}}
{{/navbar}}
<div class="blue-bg" id="top-section">
<div class="container">
<div class="row">
<div class="col-12">
<div class="alert alert-danger alert-env-dev" role="alert">
Running in {{env}} mode!
</div>
<h1 class="text-center">
Free your <span class="frame-bg frame-bg-blue">notes</span>
</h1>
<p class="text-center" id="top-section-text">
Joplin is an open source note-taking app. Capture your thoughts and securely access them from any device.
</p>
<br />
<br />
<p class="text-center">
<a href="{{baseUrl}}/download/" class="button-link btn-blue download-button">Download the app</a>
{{#showJoplinCloudLinks}}
<a href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Sign up with Joplin Cloud</a>
{{/showJoplinCloudLinks}}
</p>
<picture class="img-fluid img-center" id="top-section-img">
<source type="image/webp" srcset="
{{imageBaseUrl}}/home-top-img-4x.webp 4820w,
{{imageBaseUrl}}/home-top-img-2x.webp 2388w,
{{imageBaseUrl}}/home-top-img.webp 1205w
">
<source type="image/png" srcset="
{{imageBaseUrl}}/home-top-img-2x.png 2388w,
{{imageBaseUrl}}/home-top-img.png 1205w
">
<img id="top-section-img-img" src="{{imageBaseUrl}}/home-top-img-2x.png">
</picture>
</div>
</div>
</div>
</div>
<div id="multimedia-notes-section">
<div class="container">
<div class="row">
<div class="col-12 col-md-5 col-xxl-6">
<div class="ml-30 ml-mobile-0">
<h2 id="multimedia-title">
<span class="frame-bg frame-bg-yellow">Multimedia</span> notes
</h2>
<p id="multimedia-text">
Images, videos, PDFs and audio files are supported. Create
math expressions and diagrams directly from the app. Take
photos with the mobile app and save them to a note.
</p>
<br />
<p>
<a href="{{baseUrl}}/download/" class="button-link btn-blue">Download the app</a>
</p>
</div>
</div>
<div class="col-12 col-md-7 col-xxl-6">
<br class="d-block d-lg-none" />
<br class="d-block d-lg-none" />
<img
src="{{imageBaseUrl}}/multimedia-notes-img.png"
alt=""
class="img-fluid"
id="multimedia-notes-section-img"
/>
</div>
</div>
</div>
</div>
{{#showJoplinCloudLinks}}
<div id="work-together-section" class="gray-bg">
<div class="container">
<div class="row">
<div class="col-6 d-none d-md-block"></div>
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2>Work <span class="frame-bg frame-bg-yellow">together</span></h2>
<p>
With Joplin Cloud, share your notes with your friends, family
or colleagues and collaborate on them.
</p>
<p>You can also publish a note to the internet and share the URL with others.</p>
<br/>
<p>
<a href="{{baseUrl}}/plans/" class="button-link btn-blue">Try it now</a>
</p>
<br class="d-block d-md-none" />
<br class="d-block d-md-none" />
<div class="text-center">
<img
src="{{imageBaseUrl}}/work-together-img.png"
alt=""
class="img-fluid d-block-inline d-md-none"
/>
</div>
</div>
</div>
</div>
</div>
</div>
{{/showJoplinCloudLinks}}
<div id="save-web-section" class="blue-bg">
<div class="container">
<div class="row">
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2 id="save-web-title">
Save <span class="frame-bg frame-bg-blue">web pages</span> <br />as notes
</h2>
<p>
Use the web clipper extension, available on Chrome and
Firefox, to save web pages or take screenshots as notes.
</p>
<br />
<p>
<a href="{{baseUrl}}/clipper/" class="button-link btn-blue">Get the clipper</a>
</p>
</div>
</div>
<div class="col-12 col-md-6">
<br class="d-block d-md-none" />
<br class="d-block d-md-none" />
<img
src="{{imageBaseUrl}}/save-web-img.png"
alt=""
class="img-fluid"
id="save-web-img"
/>
</div>
</div>
</div>
</div>
<div id="customise-it-section">
<div class="container">
<div class="row">
<div class="d-none d-md-block col-md-6">
<img
src="{{imageBaseUrl}}/customise-it-img.png"
alt=""
class="img-fluid"
/>
</div>
<div class="col-12 col-md-6">
<div class="ml-30 ml-mobile-0">
<h2 id="customise-it-title">
<span class="frame-bg frame-bg-yellow-lg">Customise</span> it
<br />
to your needs
</h2>
<p>
Customise the app with plugins, custom themes and multiple
text editors (Rich Text or Markdown). Or create your own
scripts and plugins using the Extension API.
</p>
<br />
<p>
<a href="{{baseUrl}}/help/#plugins" class="button-link btn-blue">Find out more</a>
</p>
<br class="d-block d-lg-none" />
<br class="d-block d-lg-none" />
<img
src="{{imageBaseUrl}}/customise-it-img.png"
alt=""
class="img-fluid d-block d-md-none"
/>
</div>
</div>
</div>
</div>
</div>
<div id="your-note-section" class="blue-bg">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="text-center">
Your notes, <span class="frame-bg frame-bg-blue-lg">everywhere</span> you are
</h2>
<p class="text-center" id="your-note-text">
Access your notes from your computer, phone or tablet by synchronising with various services, including Joplin Cloud, Dropbox and OneDrive. The app is available on Windows, macOS, Linux, Android and iOS. A terminal app is also available!
</p>
<br />
<br />
<p class="text-center">
<a href="{{baseUrl}}/download/" class="button-link btn-blue">Download it now</a>
</p>
<br />
</div>
</div>
</div>
</div>
<div id="your-data-section" class="gray-bg">
<div class="container">
<div class="row">
<div class="col-12 col-md-6">
<br class="d-block d-md-none" />
<div class="ml-30 ml-mobile-0">
<h2>100% <span class="frame-bg frame-bg-yellow-lg">your data</span></h2>
<p>
The app is open source and your notes are saved to an open
format, so you'll always have access to them. Uses End-To-End Encryption (E2EE) to secure your notes and ensure no-one but
yourself can access them.
</p>
<br />
<p>
<a href="{{baseUrl}}/e2ee/" class="button-link btn-blue">More about E2EE</a>
</p>
</div>
</div>
<div class="col-12 col-md-6">
<br class="d-block d-md-none" />
<br class="d-block d-md-none" />
<br class="d-block d-md-none" />
<img
src="{{imageBaseUrl}}/your-data-img.png"
alt=""
class="img-fluid"
/>
</div>
</div>
</div>
</div>
<div id="in-the-press-section">
<div class="container">
<div class="row">
<div class="col-12">
<br />
<h2 class="text-center">
In the <span class="frame-bg frame-bg-yellow">Press</span>
</h2>
<br />
</div>
<div class="d-none d-md-block col-3">
<img
src="{{imageBaseUrl}}/in-the-press-img-left.png"
alt=""
class="img-fluid d-none d-md-block"
/>
</div>
<div class="d-none d-md-block col-6">
<div
id="{{pressCarouselRegular.id}}"
class="carousel slide d-none d-md-block"
data-bs-ride="carousel"
>
{{#pressCarouselRegular}}
{{> pressCarouselButtons}}
{{/pressCarouselRegular}}
<div class="carousel-inner">
{{#pressCarouselRegular.items}}
{{> pressCarouselItem}}
{{/pressCarouselRegular.items}}
</div>
</div>
</div>
<div class="d-none d-md-block col-3">
<div class="text-right">
<br />
<img
src="{{imageBaseUrl}}/in-the-press-img-right.png"
alt=""
class="img-fluid d-none d-md-inline-block"
/>
</div>
</div>
</div>
<div class="row d-block d-md-none">
<div class="col-12">
<div
id="{{pressCarouselMobile.id}}"
class="carousel slide"
data-bs-ride="carousel"
>
{{#pressCarouselMobile}}
{{> pressCarouselButtons}}
{{/pressCarouselMobile}}
<div class="carousel-inner">
{{#pressCarouselMobile.items}}
{{> pressCarouselItem}}
{{/pressCarouselMobile.items}}
</div>
</div>
</div>
</div>
</div>
</div>
<div id="sponsors-section" class="gray-bg">
<div class="container">
<div class="row">
<div class="col-12">
<h2 class="text-center">
Our <span class="frame-bg frame-bg-blue-lg">sponsors</span>
</h2>
<p class="text-center" id="your-note-text">
Thank you for your support!
</p>
<br />
<div class="text-center sponsors-org">
{{#sponsors.orgs}}
<a class="sponsor-org-item" href="{{url}}"><img title="{{title}}" src="{{imageBaseUrl}}/sponsors/{{imageName}}"></a>
{{/sponsors.orgs}}
</div>
<div class="text-center sponsors-github">
{{#sponsors.github}}
<div class="sponsor-github-item">
<a href="https://github.com/{{name}}" title="{{name}}">
<img width="50" src="https://avatars2.githubusercontent.com/u/{{id}}?s=96&amp;v=4">
</a>
</div>
{{/sponsors.github}}
</div>
<br />
</div>
</div>
</div>
</div>
<footer class="darkblue-bg">
<div class="container">
<div class="row">
<div class="col-3 d-none d-md-block">
<img src="{{imageBaseUrl}}/logo-text.svg" alt="" width="150" />
</div>
</div>
<div class="row">
<div class="col-12">
<hr />
</div>
</div>
<div class="row">
<div class="col-12 col-md-6">
<a href="{{baseUrl}}">
<img
src="{{imageBaseUrl}}/logo-text.svg"
width="120"
class="img-center d-block d-md-none"
alt=""
/>
</a>
<br class="d-block d-md-none" />
<p class="text-center-sm">Copyright &copy; 2016-{{yyyy}} Laurent Cozic</p>
</div>
<div class="col-12 col-md-6">
<p class="text-right text-center-sm right-links">
<a href="https://github.com/laurent22/joplin/" class="github-link"><i class="fab fa-github"></i> GitHub Repository</a>
<a href="{{baseUrl}}/privacy/">Privacy Policy</a>
</p>
</div>
</div>
</div>
</footer>
</div>
<script
src="{{jsBaseUrl}}/bootstrap5.0.2.min.js"
rel="preload"
as="script"
></script>
<script src="{{jsBaseUrl}}/script.js?t={{buildTime}}"></script>
{{> analytics}}
</body>
</html>
@@ -1,116 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<!--
!!! WARNING !!!
This file was auto-generated from {{{sourceMarkdownFile}}} and any manual change
made to it will be overwritten. To make a change to this file please modify
the source Markdown file:
https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
-->
<head>
{{> gaOptimize}}
<meta
charset="utf-8"
http-equiv="X-UA-Compatible"
content="IE=edge,chrome=1"
/>
<link rel="icon" href="{{imageBaseUrl}}/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta name="description" content="Joplin, the open source note-taking application" />
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"
as="style"
/>
<link rel="stylesheet" href="{{cssBaseUrl}}/fontawesome-all.min.css?t={{buildTime}}">
<link
href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap"
rel="stylesheet"
as="style"
media="all"
onload="this.media='all'; this.onload = null"
/>
<link rel="stylesheet" href="{{cssBaseUrl}}/site.css?t={{buildTime}}" as="style" />
<title>{{pageTitle}}</title>
<script
src="{{jsBaseUrl}}/jquery-3.6.0.min.js"
rel="preload"
as="script"
></script>
</head>
<body class="website-env-{{env}}">
<div class="container-fluid generic-template {{pageName}}-page" id="main-container">
{{#navbar}}
{{> navbar}}
{{/navbar}}
<div class="page-container page-{{sourceMarkdownName}}">
<div class="container">
<div class="row content-wrapper">
{{#showToc}}<div id="toc">{{{tocHtml}}}</div>{{/showToc}}
<div class="main-content">
<div class="alert alert-danger alert-env-dev" role="alert">
Running in {{env}} mode!
</div>
{{{contentHtml}}}
{{#showImproveThisDoc}}
<div class="bottom-links">
<a href="https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}">
<i class="fab fa-github"></i> Improve this doc
</a>
</div>
{{/showImproveThisDoc}}
</div>
</div>
</div>
</div>
<footer class="darkblue-bg">
<div class="container">
<div class="row">
<div class="col-3 d-none d-md-block">
<img src="{{imageBaseUrl}}/logo-text.svg" alt="" width="150" />
</div>
</div>
<div class="row">
<div class="col-12">
<hr />
</div>
</div>
<div class="row">
<div class="col-12 col-md-6">
<img
src="{{imageBaseUrl}}/logo-text.svg"
width="120"
class="img-center d-block d-md-none"
alt=""
/>
<br class="d-block d-md-none" />
<p class="text-center-sm">Copyright &copy; 2016-{{yyyy}} Laurent Cozic</p>
</div>
<div class="col-12 col-md-6 right-links">
<p class="text-right text-center-sm">
<a href="https://github.com/laurent22/joplin/" class="github-link"><i class="fab fa-github"></i> GitHub Repository</a>
<a href="{{baseUrl}}/privacy/">Privacy Policy</a>
</p>
</div>
</div>
</div>
</footer>
</div>
<script src="{{jsBaseUrl}}/script.js?t={{buildTime}}"></script>
{{> analytics}}
</body>
</html>
@@ -1,10 +0,0 @@
<script>
if (window.location.hostname !== 'localhost') {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-103586105-1', 'auto');
ga('send', 'pageview');
}
</script>
@@ -1,2 +0,0 @@
<!-- Donate button A/B testing -->
<script async src="https://www.googleoptimize.com/optimize.js?id=OPT-PW3ZPK3"></script>
@@ -1 +0,0 @@
<a href="{{baseUrl}}/plans/" class="button-link btn-trans plans-button">Joplin Cloud</a>
@@ -1,70 +0,0 @@
<div class="{{#isFrontPage}}navbar-frontpage blue-bg{{/isFrontPage}} {{^isFrontPage}}navbar-main white-bg{{/isFrontPage}}" id="nav-section">
<div class="container">
<div class="row">
<div class="col-3">
<a href="{{baseUrl}}/">
<img
src="{{#isFrontPage}}{{imageBaseUrl}}/logo-text.svg{{/isFrontPage}}{{^isFrontPage}}{{imageBaseUrl}}/logo-text-blue.svg{{/isFrontPage}}"
alt=""
id="top-logo"
width="180"
/>
</a>
</div>
<div class="col-9 text-right d-none d-md-block">
<a href="{{baseUrl}}/help/" class="fw500">Help</a>
<a href="{{forumUrl}}" class="fw500">Forum</a>
{{#showJoplinCloudLinks}}
{{> joplinCloudButton}}
{{/showJoplinCloudLinks}}
{{> supportButton}}
</div>
<div class="col-9 text-right d-block d-md-none">
<span class="pointer"
><img
src="{{#isFrontPage}}{{imageBaseUrl}}/mobile-menu-open-icon.png{{/isFrontPage}}{{^isFrontPage}}{{imageBaseUrl}}/mobile-menu-black-open-icon.png{{/isFrontPage}}"
id="open-menu-mobile"
alt=""
/></span>
&nbsp;&nbsp;
<div id="menu-mobile">
<div>
<div class="text-right">
<img
src="{{imageBaseUrl}}/close-icon.png"
alt=""
class="pointer"
id="close-menu-mobile"
/>
</div>
<div class="text-center menu-mobile-top">
<a href="{{forumUrl}}" class="fw500 mobile-menu-link">Forum</a>
<a href="{{baseUrl}}/help/" class="fw500 mobile-menu-link">Help</a>
</div>
<div class="menu-mobile-buttons">
{{#showJoplinCloudLinks}}
{{> joplinCloudButton}}
{{/showJoplinCloudLinks}}
{{> supportButton}}
</div>
</div>
{{#showToc}}
<div id="toc-mobile">{{{tocHtml}}}</div>
{{/showToc}}
<div>
<p class="light-blue mobile-menu-link-bottom text-center">
Copyright &copy; 2016-{{yyyy}} Laurent&nbsp;Cozic
<br/>
<a href="{{baseUrl}}/privacy/" class="fw500">Privacy Policy</a>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -1,71 +0,0 @@
<div class="col-12 col-lg-4 account-type-{{priceMonthly.accountType}}">
<div class="price-container {{#featured}}price-container-blue{{/featured}}">
<div class="price-row">
<div class="plan-type">
<img src="{{imageBaseUrl}}/{{iconName}}.png"/>&nbsp;{{title}}
</div>
<div class="plan-price plan-price-monthly">
{{priceMonthly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month</sub>
</div>
<div class="plan-price plan-price-yearly">
{{priceYearly.formattedMonthlyAmount}}<sub class="per-month">&nbsp;/month</sub>
</div>
</div>
<div class="plan-price-yearly-per-year">
<div>
({{priceYearly.formattedAmount}}<sub class="per-year">&nbsp;/year</sub>)
</div>
</div>
{{#featuresOn}}
<p><i class="fas fa-check feature feature-on"></i>{{.}}</p>
{{/featuresOn}}
{{#featuresOff}}
<p class="unchecked-text"><i class="fas fa-times feature feature-off"></i>{{.}}</p>
{{/featuresOff}}
<p class="text-center subscribe-wrapper">
<a id="subscribeButton-{{name}}" href="{{cfaUrl}}" class="button-link btn-white subscribeButton">{{cfaLabel}}</a>
</p>
</div>
<script>
(function() {
const stripePricesIds = {
monthly: '{{{priceMonthly.id}}}',
yearly: '{{{priceYearly.id}}}',
};
const planName = '{{{name}}}';
const buttonId = 'subscribeButton-' + planName;
const buttonElement = document.getElementById(buttonId);
if (stripePricesIds.monthly) {
function handleResult() {
console.info('Redirected to checkout');
}
buttonElement.addEventListener("click", function(evt) {
evt.preventDefault();
const priceId = stripePricesIds[subscriptionPeriod];
if (!priceId) {
console.error('Invalid period: ' + subscriptionPeriod);
return;
}
createCheckoutSession(priceId).then(function(data) {
stripe.redirectToCheckout({
sessionId: data.sessionId
})
.then(handleResult);
});
});
}
})();
</script>
</div>
@@ -1,22 +0,0 @@
<div class="carousel-indicators">
<button
type="button"
data-bs-target="#{{id}}"
data-bs-slide-to="0"
class="active"
aria-current="true"
aria-label="Slide 1"
></button>
<button
type="button"
data-bs-target="#{{id}}"
data-bs-slide-to="1"
aria-label="Slide 2"
></button>
<button
type="button"
data-bs-target="#{{id}}"
data-bs-slide-to="2"
aria-label="Slide 3"
></button>
</div>
@@ -1,23 +0,0 @@
<div class="carousel-item {{active}} press-carousel" data-bs-interval="10000">
<img
src="{{imageBaseUrl}}/transparent-bg.png"
class="d-block w-100"
alt=""
/>
<div class="carousel-caption">
<img
src="{{imageBaseUrl}}/{{imageName}}"
alt=""
class="img-fluid img-center photo"
/>
<br />
<p class="text-center">
“{{body}}”
</p>
<br />
<p class="fw500 text-center">
<a href="{{url}}">{{source}}</a>
</p>
<p class="fw400 small text-center">By {{author}}</p>
</div>
</div>
@@ -1,3 +0,0 @@
<a class="button-link btn-blue sponsor-button" href="{{baseUrl}}/donate">
<i class="fas fa-heart heart-full"></i><i class="far fa-heart heart-line"></i>&nbsp;Support us
</a>
@@ -1,119 +0,0 @@
<div id="plans-section" class="env-{{env}}">
<div class="container">
<div class="row">
<div class="col-12 title-box">
<h1 class="text-center">
Joplin Cloud <span class="frame-bg frame-bg-yellow">plans</span>
</h1>
<p class="text-center sub-title">
Joplin Cloud allows you to synchronise your notes across devices. It also lets you publish notes, and collaborate on notebooks with your friends, family or colleagues.
</p>
</div>
</div>
<noscript>
<div class="alert alert-danger alert-env-dev" role="alert" style='text-align: center; margin-top: 10px;'>
To use this page please enable JavaScript!
</div>
</noscript>
<div style="display: flex; justify-content: center; margin-top: 1.2em">
<div class="form-check form-check-inline">
<input id="pay-monthly-radio" class="form-check-input" type="radio" name="pay-radio" checked value="monthly">
<label style="font-weight: bold" class="form-check-label" for="pay-monthly-radio">
Pay Monthly
</label>
</div>
<div class="form-check form-check-inline">
<input id="pay-yearly-radio" class="form-check-input" type="radio" name="pay-radio" value="yearly">
<label style="font-weight: bold" class="form-check-label" for="pay-yearly-radio">
Pay Yearly
</label>
</div>
</div>
<div class="row plan-group plan-prices-monthly">
{{#plans.basic}}
{{> plan}}
{{/plans.basic}}
{{#plans.pro}}
{{> plan}}
{{/plans.pro}}
{{#plans.business}}
{{> plan}}
{{/plans.business}}
</div>
<div class="row">
{{{faqHtml}}}
</div>
</div>
<script src="https://js.stripe.com/v3/"></script>
<script>
const urlQuery = new URLSearchParams(location.search);
let subscriptionPeriod = 'monthly';
var stripe = Stripe('{{{stripeConfig.publishableKey}}}');
let checkoutSessionUser = null;
// Temporary setup to allow Beta users to start their subscription.
function setupBetaHandling(query) {
let accountType = Number(query.get('account_type'));
if (isNaN(accountType)) accountType = 1;
const email = query.get('email');
if (!email) return;
$('.account-type-3').css('display', 'none');
$('.subscribeButton').text('Buy now');
if (accountType === 2) {
$('.account-type-1').css('display', 'none');
}
checkoutSessionUser = { email, accountType };
}
var createCheckoutSession = function(priceId) {
const coupon = urlQuery.get('coupon') || '';
console.info('Creating Stripe session for price:', priceId, 'Coupon:', coupon);
return fetch("{{{stripeConfig.webhookBaseUrl}}}/stripe/createCheckoutSession", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
priceId: priceId,
coupon: coupon,
email: checkoutSessionUser ? checkoutSessionUser.email : '',
})
}).then(async function(result) {
if (!result.ok) {
console.error('Could not create Stripe checkout session', await result.text());
alert('The checkout session could not be created. Please contact support@joplincloud.com for support.');
} else {
return result.json();
}
});
};
$(() => {
$("input[name='pay-radio']").change(function() {
const period = $("input[type='radio'][name='pay-radio']:checked").val();
subscriptionPeriod = period;
$('.plan-group').removeClass(period === 'monthly' ? 'plan-prices-yearly' : 'plan-prices-monthly');
$('.plan-group').addClass('plan-prices-' + period);
});
setupBetaHandling(urlQuery);
});
</script>
</div>
BIN
View File
Binary file not shown.
Loaded 100 of 4792 files, more files were not shown because too many files have changed in this diff. Show more