Compare commits
77 Commits
plugin-gen
...
jcgurango-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0f33b7349 | ||
|
|
1c5bb8f195 | ||
|
|
e278a26dc8 | ||
|
|
2eac0078cd | ||
|
|
3fa6ce4583 | ||
|
|
7d218ca5b2 | ||
|
|
721a37a377 | ||
|
|
5600c498d8 | ||
|
|
8eba798cdd | ||
|
|
0c76b731e7 | ||
|
|
2289e3297a | ||
|
|
51fbb38f66 | ||
|
|
86aaa7f478 | ||
|
|
c5c9d3a2ef | ||
|
|
1118fef164 | ||
|
|
e0ea76c9f1 | ||
|
|
2aab85f073 | ||
|
|
dfbe628944 | ||
|
|
bc35649dda | ||
|
|
09c6c81992 | ||
|
|
cf98f6a450 | ||
|
|
9e56bc72a3 | ||
|
|
85b9fe06e4 | ||
|
|
e91e38c4e6 | ||
|
|
fbf2fef17c | ||
|
|
3080575a17 | ||
|
|
10b9df7b9f | ||
|
|
dd6eec6a03 | ||
|
|
48ef6db4a5 | ||
|
|
7591a1182e | ||
|
|
0c4ba592f6 | ||
|
|
c6a15b3186 | ||
|
|
e89b59be8e | ||
|
|
315f071337 | ||
|
|
667bb19765 | ||
|
|
21d09e44c4 | ||
|
|
d36c3069c3 | ||
|
|
ab0747693d | ||
|
|
e322699829 | ||
|
|
220803d478 | ||
|
|
78d558f72e | ||
|
|
3c7dc9f11c | ||
|
|
a8a8452d21 | ||
|
|
9f5924984c | ||
|
|
6db5723a50 | ||
|
|
1d0bcc435b | ||
|
|
700158d83c | ||
|
|
df4e8c9f47 | ||
|
|
ce6baccd82 | ||
|
|
0caf1fdd7b | ||
|
|
adf1c5496e | ||
|
|
51b294e66b | ||
|
|
893accf59c | ||
|
|
2a10cd3333 | ||
|
|
844f868aaa | ||
|
|
4ec8666368 | ||
|
|
ec5ead7b6f | ||
|
|
2f7f306399 | ||
|
|
4d6bbfa901 | ||
|
|
8e9d1dab2a | ||
|
|
fd733f9079 | ||
|
|
79cacc4d5a | ||
|
|
2c91af21e2 | ||
|
|
4c0eff38ff | ||
|
|
e49d9ebbf0 | ||
|
|
f73eee0d69 | ||
|
|
d5fc645fe6 | ||
|
|
0eded263b3 | ||
|
|
a0c923fab3 | ||
|
|
1e352ec0b1 | ||
|
|
9bf7864142 | ||
|
|
9e587c1b06 | ||
|
|
66755c5386 | ||
|
|
042a8e5d30 | ||
|
|
faade53cf9 | ||
|
|
8f526474ea | ||
|
|
3547211078 |
10
.eslintrc.js
@@ -97,6 +97,7 @@ module.exports = {
|
||||
|
||||
'promise/prefer-await-to-then': 'error',
|
||||
'no-unneeded-ternary': 'error',
|
||||
'github/array-foreach': ['error'],
|
||||
|
||||
// -------------------------------
|
||||
// Formatting
|
||||
@@ -136,12 +137,13 @@ module.exports = {
|
||||
'named': 'never',
|
||||
'asyncArrow': 'always',
|
||||
}],
|
||||
'multiline-comment-style': ['error', 'separate-lines'],
|
||||
'multiline-comment-style': ['error', 'separate-lines', { checkJSDoc: true }],
|
||||
'space-before-blocks': 'error',
|
||||
'spaced-comment': ['error', 'always'],
|
||||
'keyword-spacing': ['error', { 'before': true, 'after': true }],
|
||||
'no-multi-spaces': ['error'],
|
||||
'prefer-object-spread': ['error'],
|
||||
'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }],
|
||||
|
||||
// Regarding the keyword blacklist:
|
||||
// - err: We generally avoid using too many abbreviations, so it should
|
||||
@@ -161,6 +163,7 @@ module.exports = {
|
||||
'import',
|
||||
'promise',
|
||||
'jest',
|
||||
'github',
|
||||
],
|
||||
'overrides': [
|
||||
{
|
||||
@@ -181,9 +184,12 @@ module.exports = {
|
||||
'project': './tsconfig.eslint.json',
|
||||
},
|
||||
'rules': {
|
||||
'@typescript-eslint/ban-ts-comment': ['error'],
|
||||
'@typescript-eslint/ban-types': 'error',
|
||||
'@typescript-eslint/explicit-member-accessibility': ['error'],
|
||||
'@typescript-eslint/type-annotation-spacing': ['error', { 'before': false, 'after': true }],
|
||||
'@typescript-eslint/no-inferrable-types': ['error', { 'ignoreParameters': true, 'ignoreProperties': true }],
|
||||
'@typescript-eslint/array-type': 'error',
|
||||
'@typescript-eslint/no-inferrable-types': ['error'],
|
||||
'@typescript-eslint/comma-dangle': ['error', {
|
||||
'arrays': 'always-multiline',
|
||||
'objects': 'always-multiline',
|
||||
|
||||
15
.yarn/patches/eslint-npm-8.39.0-d92bace04d.patch
Normal file
@@ -0,0 +1,15 @@
|
||||
diff --git a/lib/rules/multiline-comment-style.js b/lib/rules/multiline-comment-style.js
|
||||
index 9cb7f3473e5a124e2eedb12685650f047afa84b6..124e062955e1b51cbdddd0920c22446dc97dd261 100644
|
||||
--- a/lib/rules/multiline-comment-style.js
|
||||
+++ b/lib/rules/multiline-comment-style.js
|
||||
@@ -377,6 +377,10 @@ module.exports = {
|
||||
commentLines = commentLines.slice(1, commentLines.length - 1);
|
||||
}
|
||||
|
||||
+ // We have to allow this because it's always a top comment and
|
||||
+ // it has to be in a jsdoc block
|
||||
+ if (commentLines.join('').trim().startsWith('@jest-environment')) return;
|
||||
+
|
||||
const tokenAfter = sourceCode.getTokenAfter(firstComment, { includeComments: true });
|
||||
|
||||
if (tokenAfter && firstComment.loc.end.line === tokenAfter.loc.start.line) {
|
||||
810
Assets/WebsiteAssets/css/brand.css
Normal file
@@ -0,0 +1,810 @@
|
||||
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */button,hr,input{overflow:visible}progress,sub,sup{vertical-align:baseline}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{padding:.35em .75em .625em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}[hidden],template{display:none}
|
||||
|
||||
|
||||
/* Global */
|
||||
:root {
|
||||
--primary-DarkBlue: #043873;
|
||||
--primary-White: #ffffff;
|
||||
--primary-DarkGray: #32363f;
|
||||
--accent-LightBlue: #4f9cf9;
|
||||
--accent-Yellow: #ffe492;
|
||||
--variationPrimary-VaraintDark: #072445;
|
||||
--variationPrimary-VaraintWhite: #f8f9fa;
|
||||
--variationPrimary-VaraintDarkGray: #212529;
|
||||
--variationAccent-VaraintLightBlue: #d9e8f8;
|
||||
}
|
||||
* {
|
||||
font-family: "Montserrat", sans-serif;
|
||||
}
|
||||
|
||||
#mobile_icon_logo{
|
||||
display: none;
|
||||
}
|
||||
.joplin__para {
|
||||
font-weight: 400;
|
||||
font-size: 20.8px;
|
||||
line-height: 1.5;
|
||||
color: var(--primary-DarkGray);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__para {
|
||||
/* text-align: center; */
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 425px) {
|
||||
.joplin__para {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
.joplin__tagline1 {
|
||||
font-weight: 700;
|
||||
font-size: 32px;
|
||||
line-height: 1.5;
|
||||
color: var(--variationPrimary-VaraintDarkGray);
|
||||
}
|
||||
@media screen and (max-width: 425px) {
|
||||
.joplin__tagline1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 576px) {
|
||||
.container {
|
||||
max-width: 540px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.container {
|
||||
max-width: 720px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 992px) {
|
||||
.container {
|
||||
max-width: 960px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
.container {
|
||||
max-width: 1140px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1400px) {
|
||||
.container {
|
||||
max-width: 1220px;
|
||||
}
|
||||
}
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
.justify-content-tablet-end {
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
/* Global */
|
||||
|
||||
/* Header */
|
||||
header {
|
||||
background-image: url("../images/brand/background\ blue\ motif\ 1.png");
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
border-radius: 5px;
|
||||
padding: 36px 0;
|
||||
}
|
||||
header .container nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
@media screen and (max-width: 425px) {
|
||||
header .container nav {
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
header .container nav h1.main-logo {
|
||||
|
||||
font-weight: 600;
|
||||
font-size: 48px;
|
||||
color: var(--primary-White);
|
||||
text-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);
|
||||
margin: 0;
|
||||
text-align: right;
|
||||
}
|
||||
@media screen and (max-width: 992px) {
|
||||
header .container nav img {
|
||||
max-width: 200px;
|
||||
}
|
||||
#brand_guidelines{
|
||||
margin-top: 50px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
header .container nav img {
|
||||
max-width: 150px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 576px) {
|
||||
#main_lockup {
|
||||
display: none;
|
||||
}
|
||||
#mobile_icon_logo{
|
||||
display: block;
|
||||
max-width: 80px;
|
||||
margin-top: 20px;
|
||||
|
||||
}
|
||||
#brand_guidelines{
|
||||
text-align: left;
|
||||
padding-left: 20px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@media screen and (max-width: 375px) {
|
||||
header .container nav h1.main-logo {
|
||||
font-size: 40px;
|
||||
}
|
||||
#main_lockup{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
#mobile_icon_logo{
|
||||
display: block;
|
||||
max-width: 80px;
|
||||
margin-top: 20px;
|
||||
|
||||
}
|
||||
#brand_guidelines{
|
||||
text-align: left;
|
||||
padding-left: 30px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*header .container nav .logo {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
gap: 30px;
|
||||
flex-wrap: nowrap;
|
||||
}*/
|
||||
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
header .container nav .logo {
|
||||
align-items: flex-start;
|
||||
}
|
||||
}
|
||||
header .container nav .logo h3 {
|
||||
font-weight: 600;
|
||||
font-size: 48px;
|
||||
color: #ffffff;
|
||||
letter-spacing: 1px;
|
||||
margin: 0;
|
||||
}
|
||||
@media screen and (max-width: 560px) {
|
||||
header .container nav .logo h3 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
}
|
||||
/* Header */
|
||||
/* joplin Logos */
|
||||
.joplin__logos {
|
||||
padding-top: 0px;
|
||||
padding-bottom: 43px;
|
||||
}
|
||||
.joplin__logos h2.main-logo {
|
||||
font-weight: 700;
|
||||
font-size: 40px;
|
||||
color: var(--primary-DarkBlue);
|
||||
margin-bottom: 45px;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__logos h2.main-logo {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__logos h2.main-logo {
|
||||
font-size: 33px;
|
||||
}
|
||||
}
|
||||
.joplin__logos .container > p {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.joplin__logos > .wrapper {
|
||||
padding: 42px 59px 48px 66px;
|
||||
margin: 40px 45px;
|
||||
width: calc(100% - 6.5vw);
|
||||
border: 1px solid var(--variationPrimary-VaraintDarkGray);
|
||||
border-radius: 5px;
|
||||
}
|
||||
@media screen and (max-width: 1440px) {
|
||||
.joplin__logos > .wrapper {
|
||||
padding: 40px 0 45px 0;
|
||||
margin: 40px auto;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .para-1 {
|
||||
margin-bottom: 19px;
|
||||
}
|
||||
.joplin__logos .wrapper .logo-wrapper {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
gap: 27px;
|
||||
}
|
||||
.joplin__logos .wrapper .logo-wrapper:last-child {
|
||||
gap: 24px;
|
||||
}
|
||||
@media screen and (max-width: 320px) {
|
||||
.joplin__logos .wrapper .logo-wrapper img {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .logo-wrapper h4 {
|
||||
font-size: 38px;
|
||||
font-weight: 600;
|
||||
}
|
||||
@media screen and (max-width: 320px) {
|
||||
.joplin__logos .wrapper .logo-wrapper h4 {
|
||||
font-size: 32px;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .logo-wrapper .blue-header {
|
||||
color: var(--accent-LightBlue);
|
||||
margin: 0;
|
||||
}
|
||||
.joplin__logos .wrapper .logo-wrapper .white-header {
|
||||
color: var(--primary-White);
|
||||
margin: 0;
|
||||
}
|
||||
.joplin__logos .wrapper .para-1 .blue-text {
|
||||
font-weight: bold;
|
||||
color: var(--accent-LightBlue);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__logos .wrapper .box:nth-child(1) {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .box:nth-child(1) > p {
|
||||
width: 80%;
|
||||
}
|
||||
@media screen and (max-width: 1024px) {
|
||||
.joplin__logos .wrapper .box:nth-child(1) > p {
|
||||
width: 90%;
|
||||
}
|
||||
}
|
||||
|
||||
.para-1 {
|
||||
width: 100%;
|
||||
}
|
||||
.joplin__logos .wrapper-2 .our-para {
|
||||
width: 100% !important;
|
||||
}
|
||||
@media screen and (min-width: 1400px) {
|
||||
.joplin__logos .wrapper .box2 {
|
||||
/* padding-left: 50px;
|
||||
margin-right: -130px; */
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .colored-box {
|
||||
background-color: var(--primary-DarkBlue);
|
||||
padding: 17px 15px 15px 24px;
|
||||
/* width: 320px; */
|
||||
/* height: 189px; */
|
||||
}
|
||||
@media (min-width: 768px) and (max-width: 991px) {
|
||||
.joplin__logos .wrapper .colored-box {
|
||||
transform: translateX(-35px);
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .colored-box p {
|
||||
font-weight: normal;
|
||||
color: var(--primary-White);
|
||||
margin-bottom: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__logos .wrapper .colored-box {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .box-wrapper {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: flex-start;
|
||||
gap: 14px;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__logos .wrapper .box-wrapper {
|
||||
flex-direction: column-reverse;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.joplin__logos .wrapper h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper .box-wrapper img {
|
||||
margin-top: 7px;
|
||||
max-width: 100%;
|
||||
}
|
||||
.joplin__logos .wrapper .box-wrapper p {
|
||||
width: 70%;
|
||||
}
|
||||
.joplin__logos .wrapper-2 {
|
||||
position: relative;
|
||||
padding: 42px 0 35px 0;
|
||||
}
|
||||
@media screen and (max-width: 425px) {
|
||||
.joplin__logos .wrapper-2 {
|
||||
padding: 42px 0 35px 0;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper-2 .pipeline {
|
||||
width: 1px;
|
||||
height: 94%;
|
||||
background-color: var(--variationPrimary-VaraintDarkGray);
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 47%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
@media screen and (max-width: 1200px) {
|
||||
.joplin__logos .wrapper-2 .pipeline {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1366px) {
|
||||
.joplin__logos .wrapper-2 .pipeline {
|
||||
left: 49%;
|
||||
}
|
||||
}
|
||||
.joplin__logos .wrapper-2 .joplin__tagline1 {
|
||||
margin-bottom: 34px;
|
||||
}
|
||||
.joplin__logos .wrapper-2 .our-para {
|
||||
margin-top: 19px;
|
||||
}
|
||||
.joplin__logos .wrapper-2 img {
|
||||
max-width: 100%;
|
||||
}
|
||||
@media screen and (max-width: 425px) {
|
||||
.joplin__logos .wrapper-2 .box-wrapper {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
@media (min-width: 1400px) and (max-width: 2100px) {
|
||||
.joplin__logos .wrapper-2 .special-box {
|
||||
margin-left: 150px;
|
||||
}
|
||||
.joplin__logos .wrapper-2 .special-box p {
|
||||
width: 100%;
|
||||
}
|
||||
.joplin__logos .wrapper-2 .pipeline {
|
||||
left: 53%;
|
||||
}
|
||||
}
|
||||
/* @media (min-width: 1441px) and (max-width: 1750px) {
|
||||
.joplin__logos .p-row {
|
||||
padding: 0 5rem;
|
||||
}
|
||||
} */
|
||||
/* joplin Logos */
|
||||
|
||||
/* joplin__Colours */
|
||||
.joplin__colours {
|
||||
padding: 5px 0;
|
||||
background-image: url("../images/brand/background\ blue\ motif\ 2.png");
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
.joplin__colours h2 {
|
||||
color: var(--primary-White);
|
||||
font-size: 40px;
|
||||
margin-bottom: 28px;
|
||||
font-weight: 700;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__colours h2 {
|
||||
font-size: 33px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__colours h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.joplin__colours p {
|
||||
color: var(--primary-White);
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.joplin__colours .custom-row {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 45px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
@media screen and (max-width: 1400px) {
|
||||
.joplin__colours .custom-row {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
|
||||
.joplin__colours .custom-row .chartjs-wrapper canvas {
|
||||
width: 535px;
|
||||
}
|
||||
@media screen and (max-width: 575px) {
|
||||
.joplin__colours .custom-row .chartjs-wrapper canvas {
|
||||
width: 270px;
|
||||
}
|
||||
}
|
||||
/* joplin__Colours */
|
||||
/* joplin__Pallet */
|
||||
.joplin__pallet {
|
||||
padding: 45px 0 92px 0;
|
||||
}
|
||||
.joplin__pallet h3 {
|
||||
font-weight: 600;
|
||||
font-size: 32px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__pallet h3 {
|
||||
font-size: 28px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1200px) {
|
||||
.joplin__pallet h3 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.joplin__pallet .sigma-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
gap: 35px;
|
||||
}
|
||||
@media screen and (max-width: 555px) {
|
||||
.joplin__pallet .sigma-wrapper {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.joplin__pallet .sigma-wrapper .circle-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
}
|
||||
@media screen and (max-width: 992px) {
|
||||
.joplin__pallet .sigma-wrapper .circle-wrapper {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 1200px) {
|
||||
.joplin__pallet .sigma-wrapper {
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
.joplin__pallet .sigma-wrapper .circle-wrapper .circle {
|
||||
width: 120px;
|
||||
height: 120px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #000;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.joplin__pallet .row-space {
|
||||
padding: 50px 0;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
.joplin__pallet .row-space div {
|
||||
width: 97%;
|
||||
height: 1px;
|
||||
background-color: var(--primary-DarkGray);
|
||||
}
|
||||
.joplin__pallet .dark-blue {
|
||||
background-color: var(--primary-DarkBlue);
|
||||
}
|
||||
.joplin__pallet .white {
|
||||
background-color: var(--primary-White);
|
||||
}
|
||||
.joplin__pallet .dark-gray {
|
||||
background-color: var(--primary-DarkGray);
|
||||
}
|
||||
.joplin__pallet .light-blue {
|
||||
background-color: var(--accent-LightBlue);
|
||||
}
|
||||
.joplin__pallet .yellow {
|
||||
background-color: var(--accent-Yellow);
|
||||
}
|
||||
.joplin__pallet .variant-dark {
|
||||
background-color: var(--variationPrimary-VaraintDark);
|
||||
}
|
||||
.joplin__pallet .variant-white {
|
||||
background-color: var(--variationPrimary-VaraintWhite);
|
||||
}
|
||||
.joplin__pallet .variant-dark-gray {
|
||||
background-color: var(--variationPrimary-VaraintDarkGray);
|
||||
}
|
||||
.joplin__pallet .variant-light-blue {
|
||||
background-color: var(--variationAccent-VaraintLightBlue);
|
||||
}
|
||||
/* joplin__Pallet */
|
||||
/* joplin__State */
|
||||
.joplin__state {
|
||||
background-color: var(--primary-DarkBlue);
|
||||
background-image: url("../images/brand/Rectangle\ 16.png");
|
||||
background-position: bottom center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
padding: 65px 0 78px 0;
|
||||
position: relative;
|
||||
}
|
||||
.joplin__state::before {
|
||||
content: "";
|
||||
width: 1px;
|
||||
height: 98%;
|
||||
background-color: var(--variationPrimary-VaraintDarkGray);
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
overflow: hidden;
|
||||
}
|
||||
@media screen and (max-width: 992px) {
|
||||
.joplin__state::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.joplin__state .image {
|
||||
transform: translateY(25px);
|
||||
}
|
||||
.joplin__state .wrapper > div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
.joplin__state .wrapper > div .box h2 {
|
||||
color: var(--primary-White);
|
||||
font-size: 40px;
|
||||
margin-bottom: 28px;
|
||||
font-weight: 700;
|
||||
}
|
||||
/* @media screen and (min-width: 1400px) {
|
||||
.joplin__state .wrapper > div .box h2 {
|
||||
text-wrap: nowrap;
|
||||
}
|
||||
} */
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__state .wrapper > div .box h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
.joplin__state .wrapper > div .box h2 {
|
||||
font-size: 38px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__state .wrapper > div .box h2 {
|
||||
font-size: 33px;
|
||||
}
|
||||
}
|
||||
|
||||
.joplin__state .wrapper > div .box p {
|
||||
color: var(--primary-White);
|
||||
width: 85%;
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
.joplin__state .wrapper > div .box p {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
.joplin__state .wrapper > div .box img {
|
||||
max-width: 100%;
|
||||
}
|
||||
.joplin__highlighter {
|
||||
padding: 74px 0;
|
||||
background-image: url("../images/brand/Rectangle\ 16.png");
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
}
|
||||
.joplin__highlighter h2 {
|
||||
color: var(--primary-White);
|
||||
font-size: 40px;
|
||||
margin-bottom: 28px;
|
||||
font-weight: 700;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__highlighter h2 {
|
||||
font-size: 33px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__highlighter h2 {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.joplin__highlighter p {
|
||||
color: var(--primary-White);
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
.joplin__highlighter p {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
.joplin__highlighter .wrapper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-top: 22px;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__highlighter .wrapper {
|
||||
flex-wrap: wrap;
|
||||
row-gap: 25px;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
.joplin__highlighter .wrapper div {
|
||||
padding: 32px 62px;
|
||||
border-radius: 5px;
|
||||
position: relative;
|
||||
}
|
||||
.joplin__highlighter .wrapper div:first-child img {
|
||||
position: absolute;
|
||||
top: 57%;
|
||||
max-width: 100%;
|
||||
}
|
||||
.joplin__highlighter .wrapper div:last-child img {
|
||||
position: absolute;
|
||||
top: 59%;
|
||||
max-width: 100%;
|
||||
}
|
||||
@media screen and (max-width: 1200px) {
|
||||
.joplin__highlighter .wrapper div:first-child img {
|
||||
top: 43%;
|
||||
}
|
||||
.joplin__highlighter .wrapper div:last-child img {
|
||||
top: 44%;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__highlighter .wrapper div:first-child img {
|
||||
top: 59%;
|
||||
}
|
||||
.joplin__highlighter .wrapper div:last-child img {
|
||||
top: 59%;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 490px) {
|
||||
.joplin__highlighter .wrapper div:first-child img {
|
||||
top: 43%;
|
||||
}
|
||||
.joplin__highlighter .wrapper div:last-child img {
|
||||
top: 43%;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 320px) {
|
||||
.joplin__highlighter .wrapper div:last-child img {
|
||||
top: 36%;
|
||||
}
|
||||
}
|
||||
.joplin__highlighter .wrapper div.yellow {
|
||||
background-color: var(--primary-White);
|
||||
}
|
||||
.joplin__highlighter .wrapper div.blue {
|
||||
background-color: var(--primary-DarkBlue);
|
||||
}
|
||||
.joplin__highlighter .wrapper div h4 {
|
||||
color: var(--variationPrimary-VaraintDarkGray);
|
||||
margin: 0;
|
||||
font-weight: 700;
|
||||
font-size: 20.8px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.joplin__highlighter .wrapper div.blue h4 {
|
||||
color: var(--primary-White);
|
||||
}
|
||||
|
||||
/* joplin__State */
|
||||
/* joplin__Voice */
|
||||
.joplin__voice {
|
||||
padding: 78px 0;
|
||||
}
|
||||
.joplin__voice .container h2 {
|
||||
font-weight: 700;
|
||||
font-size: 40px;
|
||||
line-height: 1.5;
|
||||
color: var(--variationPrimary-VaraintDarkGray);
|
||||
}
|
||||
|
||||
@media screen and (max-width: 500px) {
|
||||
.joplin__voice .container h2 {
|
||||
font-size: 38px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__voice .container h2 {
|
||||
font-size: 33px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.joplin__voice .container .wrapper {
|
||||
margin-top: 57px;
|
||||
}
|
||||
.joplin__voice .container .wrapper .box {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
gap: 20px;
|
||||
}
|
||||
@media screen and (max-width: 767px) {
|
||||
.joplin__voice .container .wrapper .box {
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.joplin__voice .container .wrapper .box div:first-child {
|
||||
flex: 1;
|
||||
}
|
||||
.joplin__voice .container .wrapper .box div:last-child {
|
||||
flex: 2;
|
||||
}
|
||||
.joplin__voice .container .wrapper .box div h3 {
|
||||
font-weight: 700;
|
||||
font-size: 32px;
|
||||
line-height: 1.7;
|
||||
color: var(--primary-DarkGray);
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.joplin__voice .container .wrapper .box div h3 {
|
||||
text-align: center;
|
||||
font-size:28px;
|
||||
}
|
||||
.joplin__voice .container .wrapper .box {
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.joplin__voice .container .wrapper .box div p {
|
||||
margin-bottom: 36px;
|
||||
}
|
||||
@media screen and (max-width: 500px) {
|
||||
.joplin__voice .container .wrapper .box div p {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
/* joplin__Voice */
|
||||
.chartjs-wrapper {
|
||||
background-color: #d9d9d9;
|
||||
padding: 10px 20px;
|
||||
max-width: 45%;
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 10 KiB |
BIN
Assets/WebsiteAssets/images/brand/Rectangle 16.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
Assets/WebsiteAssets/images/brand/Rectangle 18.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
Assets/WebsiteAssets/images/brand/Vector.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
Assets/WebsiteAssets/images/brand/Vector2.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
Assets/WebsiteAssets/images/brand/Vector3.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 27 KiB |
BIN
Assets/WebsiteAssets/images/brand/background blue motif 1.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
Assets/WebsiteAssets/images/brand/background blue motif 2.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
Assets/WebsiteAssets/images/brand/customise-it-img 1.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
Assets/WebsiteAssets/images/brand/frame-blue 1.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
Assets/WebsiteAssets/images/brand/frame-yellow 1.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Assets/WebsiteAssets/images/brand/logo-text 1.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
Assets/WebsiteAssets/images/brand/logo-text 2.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
Assets/WebsiteAssets/images/brand/logo-text-blue 1.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
Assets/WebsiteAssets/images/brand/tagline 1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
0
Assets/WebsiteAssets/js/brand.js
Normal file
392
Assets/WebsiteAssets/templates/brand.mustache
Normal file
@@ -0,0 +1,392 @@
|
||||
<!-- Logos Section -->
|
||||
<section class="joplin__logos">
|
||||
<div class="container">
|
||||
<h2 class="main-logo">Logos</h2>
|
||||
<p class="joplin__para">
|
||||
All the variations of Joplin logo are all front facing. <br />
|
||||
To ensure a clarity and legibility of design, the logo should always
|
||||
be surrounded by a clear space.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="container">
|
||||
<div class="row align-items-center justify-content-tablet-end gy-5 p-row">
|
||||
<div class="col-xxl-4 col-xl-4 col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="box">
|
||||
<h3 class="joplin__tagline1">Lockup logo</h2>
|
||||
<p class="joplin__para">
|
||||
Joplin lockup is the company's main logo. It is used for
|
||||
corporate materials and marketing communications. To ensure
|
||||
sufficient contrast and readability, two following versions of
|
||||
the lockup are provided.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xxl-4 col-xl-4 col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="box box2">
|
||||
<p class="joplin__para para-1">
|
||||
<span class="blue-text">Blue text</span> version to be used on
|
||||
bright background.
|
||||
</p>
|
||||
<div class="logo-wrapper">
|
||||
<img src="{{imageBaseUrl}}/brand/Vector.png" alt="" />
|
||||
<h4 class="blue-header">Joplin</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xxl-4 col-xl-4 col-lg-6 col-md-6 col-sm-12">
|
||||
<div class="colored-box">
|
||||
<p class="joplin__para">
|
||||
White text version to be used <br />
|
||||
on dark background.
|
||||
</p>
|
||||
<div class="logo-wrapper">
|
||||
<img src="{{imageBaseUrl}}/brand/Vector2.png" alt="" />
|
||||
<h4 class="white-header">Joplin</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="wrapper wrapper-2">
|
||||
<div class="container">
|
||||
<div class="pipeline"></div>
|
||||
<div class="row align-items-center gy-5 p-row justify-between">
|
||||
<div class="col-xxl-6 col-xl-6 col-lg-12 col-md-12 col-sm-12">
|
||||
<div class="box">
|
||||
<h3 class="joplin__tagline1">Brandmark logo</h2>
|
||||
<div class="box-wrapper">
|
||||
<img
|
||||
src="{{imageBaseUrl}}/brand/J logo transparent background 1.png"
|
||||
alt=""
|
||||
/>
|
||||
<p class="joplin__para">
|
||||
The classic brandmark icon is often used on a bright
|
||||
background to help increase the contrast. It is a reduced
|
||||
version of a logo which should be used in limited spacing or
|
||||
when using a full company name is not necessary.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xxl-6 col-xl-6 col-lg-12 col-md-12 col-sm-12">
|
||||
<div class="box special-box">
|
||||
<h3 class="joplin__tagline1">Joplin tagline</h3>
|
||||
<img src="{{imageBaseUrl}}/brand/tagline 1.png" alt="" />
|
||||
<p class="joplin__para our-para">
|
||||
Our tagline is an invitation to capture your thoughts and
|
||||
securely access them from any device.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
<section class="joplin__colours">
|
||||
<div class="container">
|
||||
<h2>Colours</h2>
|
||||
<p class="joplin__para">
|
||||
Two core colour palettes can be used while representing the brand. The
|
||||
accent colours are used to highlight <br />
|
||||
important elements and support the colours of the core palettes.
|
||||
</p>
|
||||
<div class="custom-row gy-4">
|
||||
<div
|
||||
class="chartjs-wrapper"
|
||||
>
|
||||
<canvas id="chart1" ></canvas>
|
||||
</div>
|
||||
<div
|
||||
class="chartjs-wrapper"
|
||||
>
|
||||
<canvas id="chart2" ></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Colours Section -->
|
||||
<!-- Pallet Section -->
|
||||
<section class="joplin__pallet">
|
||||
<div class="container">
|
||||
<div class="row gy-5">
|
||||
<div class="col-xxl-6 col-xl-6 col-lg-12 col-md-12 col-sm-12">
|
||||
<h3>Primary colours</h3>
|
||||
<div class="sigma-wrapper">
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle dark-blue"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Dark blue</p>
|
||||
<p class="joplin__para">HEX - 043873</p>
|
||||
<p class="joplin__para">RGB - 4, 56, 115</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle white"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">White</p>
|
||||
<p class="joplin__para">HEX - FFFFFF</p>
|
||||
<p class="joplin__para">RGB - 255, 255,</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle dark-gray"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Dark gray</p>
|
||||
<p class="joplin__para">HEX - 32363F</p>
|
||||
<p class="joplin__para">RGB - 50, 54, 63</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1"></div>
|
||||
<div class="col-xxl-5 col-xl-5 col-lg-12 col-md-12 col-sm-12">
|
||||
<h3>Accent colours</h3>
|
||||
<div class="sigma-wrapper">
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle light-blue"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Light blue</p>
|
||||
<p class="joplin__para">HEX - 4F9CF9</p>
|
||||
<p class="joplin__para">RGB - 79, 156, 249</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle yellow"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Yellow</p>
|
||||
<p class="joplin__para">HEX - FFE492</p>
|
||||
<p class="joplin__para">RGB - 255, 228, 146</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row row-space">
|
||||
<div></div>
|
||||
</div>
|
||||
<div class="row gy-5">
|
||||
<div class="col-xxl-6 col-xl-6 col-lg-12 col-md-12 col-sm-12">
|
||||
<h3>
|
||||
Allowed variations of <br />
|
||||
primary colours
|
||||
</h3>
|
||||
<div class="sigma-wrapper">
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle variant-dark"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Variant dark</p>
|
||||
<p class="joplin__para">HEX - 072445</p>
|
||||
<p class="joplin__para">RGB - 7, 36, 69</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle variant-white"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Variant white</p>
|
||||
<p class="joplin__para">HEX - F8F9FA</p>
|
||||
<p class="joplin__para">RGB - 248, 249,</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle variant-dark-gray"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Variant dark gray</p>
|
||||
<p class="joplin__para">HEX - 212529</p>
|
||||
<p class="joplin__para">RGB - 33, 37, 41</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-1"></div>
|
||||
<div class="col-xxl-5 col-xl-5 col-lg-12 col-md-12 col-sm-12">
|
||||
<h3>
|
||||
Allowed variations of <br />
|
||||
accent colours
|
||||
</h3>
|
||||
<div class="sigma-wrapper">
|
||||
<div class="circle-wrapper">
|
||||
<div class="circle variant-light-blue"></div>
|
||||
<div class="info">
|
||||
<p class="joplin__para">Variant light blue</p>
|
||||
<p class="joplin__para">HEX - D9E8F8</p>
|
||||
<p class="joplin__para">RGB - 217, 232,</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- Pallet Section -->
|
||||
<!-- State Section -->
|
||||
<section class="joplin__state">
|
||||
<div class="container">
|
||||
<div class="wrapper row justify-content-between gy-5">
|
||||
<div class="col-12 col-lg-5">
|
||||
<div class="box pb-3">
|
||||
<h2>Typography</h2>
|
||||
<p class="joplin__para">
|
||||
<b>Font-family: Montserrat</b> <br />
|
||||
Montserrat is a typeface chosen for its great readability. It is
|
||||
used as a default font. Sans-serif font should be used when
|
||||
Montserrat is not available.
|
||||
</p>
|
||||
</div>
|
||||
<div class="box">
|
||||
<h2>Connector element</h2>
|
||||
<p class="joplin__para">
|
||||
The graphic element that represents the connection between the
|
||||
components, files and data. It's Joplin's signature element
|
||||
present in application's website as well as in marketing
|
||||
communications.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-5">
|
||||
<div class="box">
|
||||
<h2>Imagery</h2>
|
||||
<p class="joplin__para">
|
||||
The company uses vector art illustration . It ensures high
|
||||
quality images in any scale, large or small. All the
|
||||
illustrations come from storyset.com and are personalised to
|
||||
match the company's colours.
|
||||
</p>
|
||||
</div>
|
||||
<div class="box">
|
||||
<img src="{{imageBaseUrl}}/brand/customise-it-img 1.png" alt="" class="image" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="joplin__highlighter">
|
||||
<div class="container">
|
||||
<h2>Highlighter</h2>
|
||||
<p class="joplin__para">
|
||||
It is a reference to process of note taking on paper. It is used to
|
||||
emphasize words in the titles. There are two <br />
|
||||
variations of the element:
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<div class="yellow">
|
||||
<h4>Yellow version under dark text</h4>
|
||||
<img src="{{imageBaseUrl}}/brand/frame-yellow 1.png" alt="" />
|
||||
</div>
|
||||
<div class="blue">
|
||||
<h4>Light blue version under white text</h4>
|
||||
<img src="{{imageBaseUrl}}/brand/frame-blue 1.png" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="joplin__voice">
|
||||
<div class="container">
|
||||
<h2>Tone of voice</h2>
|
||||
<div class="wrapper">
|
||||
<div class="box">
|
||||
<div>
|
||||
<h3>
|
||||
Professional, <br />
|
||||
Friendly, <br />
|
||||
Welcoming, <br />
|
||||
Trustworthy, <br />
|
||||
Open-minded, <br />
|
||||
Genuine
|
||||
</h3>
|
||||
</div>
|
||||
<div>
|
||||
<p class="joplin__para">
|
||||
We believe that transparency is key to honest and successful
|
||||
communication. We remain <b>trustworthy</b> and
|
||||
<b>genuine</b> in engaging with our users and Joplin community.
|
||||
</p>
|
||||
<p class="joplin__para">
|
||||
As a company providing open-source product we stay
|
||||
<b>open-minded</b> and <b>enthusiastic</b> about new ideas and
|
||||
solutions. At the same time we continue to be
|
||||
<b>professional</b> to honour the trust the users place in us.
|
||||
</p>
|
||||
<p class="joplin__para">
|
||||
We appreciate the value the users bring to our product and
|
||||
therefore we keep our tone <b>friendly</b> and <b>welcoming</b>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<!-- State Section -->
|
||||
<!-- Chart.Js Lib -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.9.1/chart.min.js"></script>
|
||||
<script>
|
||||
const ctx = document.getElementById("chart1");
|
||||
const myChart = new Chart(ctx, {
|
||||
type: "pie",
|
||||
data: {
|
||||
labels: ["Dark blue 60%", "White 20%", "light blue 10%", "yellow 7%", "dark gray 3%"],
|
||||
datasets: [
|
||||
{
|
||||
label: "# of Votes",
|
||||
data: [60, 20, 10, 7, 3],
|
||||
backgroundColor: [
|
||||
"#043873",
|
||||
"#ffffff",
|
||||
"#4f9cf9",
|
||||
"#ffe492",
|
||||
"#212529",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
options: {
|
||||
layout: {},
|
||||
plugins: {
|
||||
title: {
|
||||
display: true,
|
||||
text: "Blue colour palette",
|
||||
font: {
|
||||
size: 21,
|
||||
align: "left",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
const ctx2 = document.getElementById("chart2");
|
||||
const myChart2 = new Chart(ctx2, {
|
||||
type: "pie",
|
||||
data: {
|
||||
labels: ["White 60%", "Dark 20%", "light blue 10%", "dark gray 7%", "yellow 3%"],
|
||||
datasets: [
|
||||
{
|
||||
label: "# of Votes",
|
||||
data: [60, 20, 10, 7, 3],
|
||||
backgroundColor: [
|
||||
"#ffffff",
|
||||
"#043873",
|
||||
"#4f9cf9",
|
||||
"#212529",
|
||||
"#ffe492",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
options: {
|
||||
layout: {},
|
||||
plugins: {
|
||||
title: {
|
||||
display: true,
|
||||
text: "White colour palette",
|
||||
font: {
|
||||
size: 21,
|
||||
align: "left",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@@ -40,6 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
|
||||
onload="this.media='all'; this.onload = null"
|
||||
/>
|
||||
<link rel="stylesheet" href="{{{assetUrls.css.site}}}" as="style" />
|
||||
{{#assetUrls.css.brand}}<link rel="stylesheet" href="{{{assetUrls.css.brand}}}" as="style" />{{/assetUrls.css.brand}}
|
||||
<title>{{pageTitle}}</title>
|
||||
|
||||
<script
|
||||
|
||||
@@ -16,6 +16,7 @@ WORKDIR /build
|
||||
|
||||
COPY .yarn/plugins ./.yarn/plugins
|
||||
COPY .yarn/releases ./.yarn/releases
|
||||
COPY .yarn/patches ./.yarn/patches
|
||||
COPY package.json .
|
||||
COPY .yarnrc.yml .
|
||||
COPY yarn.lock .
|
||||
|
||||
19
README.md
@@ -75,10 +75,11 @@ A community maintained list of these distributions can be found here: [Unofficia
|
||||
| | | | |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/215668?s=96&v=4"/></br>[avanderberg](https://github.com/avanderberg) | <img width="50" src="https://avatars2.githubusercontent.com/u/67130?s=96&v=4"/></br>[chr15m](https://github.com/chr15m) | <img width="50" src="https://avatars2.githubusercontent.com/u/2793530?s=96&v=4"/></br>[CyberXZT](https://github.com/CyberXZT) | <img width="50" src="https://avatars2.githubusercontent.com/u/1307332?s=96&v=4"/></br>[dbrandonjohnson](https://github.com/dbrandonjohnson) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/49439044?s=96&v=4"/></br>[fourstepper](https://github.com/fourstepper) | <img width="50" src="https://avatars2.githubusercontent.com/u/64712218?s=96&v=4"/></br>[Hegghammer](https://github.com/Hegghammer) | <img width="50" src="https://avatars2.githubusercontent.com/u/3266447?s=96&v=4"/></br>[iamwillbar](https://github.com/iamwillbar) | <img width="50" src="https://avatars2.githubusercontent.com/u/1310474?s=96&v=4"/></br>[jknowles](https://github.com/jknowles) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/11947658?s=96&v=4"/></br>[KentBrockman](https://github.com/KentBrockman) | <img width="50" src="https://avatars2.githubusercontent.com/u/5588131?s=96&v=4"/></br>[kianenigma](https://github.com/kianenigma) | <img width="50" src="https://avatars2.githubusercontent.com/u/24908652?s=96&v=4"/></br>[konishi-t](https://github.com/konishi-t) | <img width="50" src="https://avatars2.githubusercontent.com/u/42319182?s=96&v=4"/></br>[marcdw1289](https://github.com/marcdw1289) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/126279083?s=96&v=4"/></br>[matmoly](https://github.com/matmoly) | <img width="50" src="https://avatars2.githubusercontent.com/u/1788010?s=96&v=4"/></br>[maxtruxa](https://github.com/maxtruxa) | <img width="50" src="https://avatars2.githubusercontent.com/u/29300939?s=96&v=4"/></br>[mcejp](https://github.com/mcejp) | <img width="50" src="https://avatars2.githubusercontent.com/u/31054972?s=96&v=4"/></br>[saarantras](https://github.com/saarantras) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/327998?s=96&v=4"/></br>[sif](https://github.com/sif) | <img width="50" src="https://avatars2.githubusercontent.com/u/765564?s=96&v=4"/></br>[taskcruncher](https://github.com/taskcruncher) | <img width="50" src="https://avatars2.githubusercontent.com/u/333944?s=96&v=4"/></br>[tateisu](https://github.com/tateisu) | |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/56287?s=96&v=4"/></br>[fats](https://github.com/fats) | <img width="50" src="https://avatars2.githubusercontent.com/u/49439044?s=96&v=4"/></br>[fourstepper](https://github.com/fourstepper) | <img width="50" src="https://avatars2.githubusercontent.com/u/64712218?s=96&v=4"/></br>[Hegghammer](https://github.com/Hegghammer) | <img width="50" src="https://avatars2.githubusercontent.com/u/3266447?s=96&v=4"/></br>[iamwillbar](https://github.com/iamwillbar) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/1310474?s=96&v=4"/></br>[jknowles](https://github.com/jknowles) | <img width="50" src="https://avatars2.githubusercontent.com/u/11947658?s=96&v=4"/></br>[KentBrockman](https://github.com/KentBrockman) | <img width="50" src="https://avatars2.githubusercontent.com/u/5588131?s=96&v=4"/></br>[kianenigma](https://github.com/kianenigma) | <img width="50" src="https://avatars2.githubusercontent.com/u/24908652?s=96&v=4"/></br>[konishi-t](https://github.com/konishi-t) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/42319182?s=96&v=4"/></br>[marcdw1289](https://github.com/marcdw1289) | <img width="50" src="https://avatars2.githubusercontent.com/u/126279083?s=96&v=4"/></br>[matmoly](https://github.com/matmoly) | <img width="50" src="https://avatars2.githubusercontent.com/u/1788010?s=96&v=4"/></br>[maxtruxa](https://github.com/maxtruxa) | <img width="50" src="https://avatars2.githubusercontent.com/u/29300939?s=96&v=4"/></br>[mcejp](https://github.com/mcejp) |
|
||||
| <img width="50" src="https://avatars2.githubusercontent.com/u/31054972?s=96&v=4"/></br>[saarantras](https://github.com/saarantras) | <img width="50" src="https://avatars2.githubusercontent.com/u/327998?s=96&v=4"/></br>[sif](https://github.com/sif) | <img width="50" src="https://avatars2.githubusercontent.com/u/765564?s=96&v=4"/></br>[taskcruncher](https://github.com/taskcruncher) | <img width="50" src="https://avatars2.githubusercontent.com/u/333944?s=96&v=4"/></br>[tateisu](https://github.com/tateisu) |
|
||||
| | | | |
|
||||
<!-- SPONSORS-GITHUB -->
|
||||
|
||||
<!-- TOC -->
|
||||
@@ -153,7 +154,9 @@ A community maintained list of these distributions can be found here: [Unofficia
|
||||
- [Changelog (iOS)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_ios.md)
|
||||
- [Changelog (CLI App)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md)
|
||||
- [Changelog (Server)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_server.md)
|
||||
- [Guiding principles](https://github.com/laurent22/joplin/blob/dev/readme/principles.md)
|
||||
- [Stats](https://github.com/laurent22/joplin/blob/dev/readme/stats.md)
|
||||
- [Brand guidelines](https://joplinapp.org/brand)
|
||||
- [Donate](https://github.com/laurent22/joplin/blob/dev/readme/donate.md)
|
||||
<!-- TOC -->
|
||||
|
||||
@@ -555,17 +558,17 @@ Current translations:
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/be.png" width="16px"/> | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 78%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/nl.png" width="16px"/> | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MHolkamp](mailto:mholkamp@users.noreply.github.com) | 87%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/no.png" width="16px"/> | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | [Mats Estensen](mailto:code@mxe.no) | 87%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ir.png" width="16px"/> | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 55%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/pl.png" width="16px"/> | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [X3NO](mailto:X3NO@disroot.org) | 90%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ir.png" width="16px"/> | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 54%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/pl.png" width="16px"/> | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [X3NO](mailto:X3NO@disroot.org) | 89%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/br.png" width="16px"/> | Português (Brasil) | [pt_BR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po) | [Douglas Leão](mailto:djlsplays@gmail.com) | 87%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/pt.png" width="16px"/> | Português (Portugal) | [pt_PT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po) | [Diogo Caveiro](mailto:dcaveiro@yahoo.com) | 72%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ro.png" width="16px"/> | Română | [ro](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po) | [Cristi Duluta](mailto:cristi.duluta@gmail.com) | 50%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/si.png" width="16px"/> | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 80%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/si.png" width="16px"/> | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 79%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/se.png" width="16px"/> | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 99%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/th.png" width="16px"/> | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 36%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/vn.png" width="16px"/> | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 77%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/tr.png" width="16px"/> | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 99%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ua.png" width="16px"/> | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 72%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ua.png" width="16px"/> | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 71%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/gr.png" width="16px"/> | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 87%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/ru.png" width="16px"/> | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Dmitriy K](mailto:dmitry@atsip.ru) | 99%
|
||||
<img src="https://joplinapp.org/images/flags/country-4x3/rs.png" width="16px"/> | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 64%
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
"eslint-plugin-react": "7.32.2",
|
||||
"execa": "5.1.1",
|
||||
"fs-extra": "11.1.1",
|
||||
"glob": "8.1.0",
|
||||
"glob": "10.2.7",
|
||||
"gulp": "4.0.2",
|
||||
"husky": "3.1.0",
|
||||
"lerna": "3.22.1",
|
||||
@@ -88,6 +88,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/fs-extra": "11.0.1",
|
||||
"eslint-plugin-github": "4.8.0",
|
||||
"http-server": "14.1.1",
|
||||
"node-gyp": "9.3.1",
|
||||
"nodemon": "2.0.22"
|
||||
@@ -95,6 +96,8 @@
|
||||
"packageManager": "yarn@3.5.0",
|
||||
"resolutions": {
|
||||
"react-native-camera@4.2.1": "patch:react-native-camera@npm%3A4.2.1#./.yarn/patches/react-native-camera-npm-4.2.1-24b2600a7e.patch",
|
||||
"react-native-vosk@0.1.12": "patch:react-native-vosk@npm%3A0.1.12#./.yarn/patches/react-native-vosk-npm-0.1.12-76b1caaae8.patch"
|
||||
"react-native-vosk@0.1.12": "patch:react-native-vosk@npm%3A0.1.12#./.yarn/patches/react-native-vosk-npm-0.1.12-76b1caaae8.patch",
|
||||
"eslint@8.39.0": "patch:eslint@npm%3A8.39.0#./.yarn/patches/eslint-npm-8.39.0-d92bace04d.patch",
|
||||
"eslint@^8.13.0": "patch:eslint@npm%3A8.39.0#./.yarn/patches/eslint-npm-8.39.0-d92bace04d.patch"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@ class LinkSelector {
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
const r = (lines[i] as any).matchAll(this.linkRegex_);
|
||||
const matches = [...r];
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
matches.forEach((_e, n) => {
|
||||
newLinkStore.push(
|
||||
{
|
||||
|
||||
@@ -146,6 +146,7 @@ class Application extends BaseApplication {
|
||||
|
||||
commands(uiType = null) {
|
||||
if (!this.allCommandsLoaded_) {
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
fs.readdirSync(__dirname).forEach(path => {
|
||||
if (path.indexOf('command-') !== 0) return;
|
||||
if (path.endsWith('.test.js')) return;
|
||||
|
||||
@@ -54,6 +54,7 @@ export default class BaseCommand {
|
||||
return r[0];
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public setDispatcher(fn: Function) {
|
||||
this.dispatcher_ = fn;
|
||||
}
|
||||
@@ -63,6 +64,7 @@ export default class BaseCommand {
|
||||
return this.dispatcher_(action);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public setStdout(fn: Function) {
|
||||
this.stdout_ = fn;
|
||||
}
|
||||
@@ -71,6 +73,7 @@ export default class BaseCommand {
|
||||
if (this.stdout_) this.stdout_(text);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public setPrompt(fn: Function) {
|
||||
this.prompt_ = fn;
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ function renderCommand(cmd) {
|
||||
|
||||
function getCommands() {
|
||||
const output = [];
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
fs.readdirSync(__dirname).forEach(path => {
|
||||
if (path.indexOf('command-') !== 0) return;
|
||||
const ext = fileExtension(path);
|
||||
|
||||
@@ -44,6 +44,7 @@ class Command extends BaseCommand {
|
||||
return reject(new Error(`Invalid JSON passed to config --import: \n${error.message}.`));
|
||||
}
|
||||
if (settingsObj) {
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
Object.entries(settingsObj)
|
||||
.forEach(([key, value]) => {
|
||||
Setting.setValue(key, value);
|
||||
|
||||
@@ -179,6 +179,7 @@ class Command extends BaseCommand {
|
||||
|
||||
const dirPaths = function(targetPath: string) {
|
||||
const paths: string[] = [];
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
fs.readdirSync(targetPath).forEach((path: string) => {
|
||||
paths.push(path);
|
||||
});
|
||||
|
||||
@@ -18,6 +18,7 @@ import { pathExists, writeFile } from 'fs-extra';
|
||||
class Command extends BaseCommand {
|
||||
|
||||
private syncTargetId_: number = null;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
private releaseLockFn_: Function = null;
|
||||
private oneDriveApiUtils_: any = null;
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ export default class PluginRunner extends BasePluginRunner {
|
||||
}
|
||||
|
||||
public async run(plugin: Plugin, sandbox: Global): Promise<void> {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
return new Promise((resolve: Function, reject: Function) => {
|
||||
const onStarted = () => {
|
||||
plugin.off('started', onStarted);
|
||||
@@ -85,6 +86,7 @@ export default class PluginRunner extends BasePluginRunner {
|
||||
|
||||
public async waitForSandboxCalls(): Promise<void> {
|
||||
const startTime = Date.now();
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
return new Promise((resolve: Function, reject: Function) => {
|
||||
const iid = setInterval(() => {
|
||||
if (!Object.keys(this.activeSandboxCalls_).length) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { _ } from '@joplin/lib/locale';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default (cmd: any, stdout: Function, store: Function, gui: Function) => {
|
||||
cmd.setStdout((text: string) => {
|
||||
return stdout(text);
|
||||
|
||||
@@ -3,6 +3,7 @@ import Folder from '@joplin/lib/models/Folder';
|
||||
import BaseCommand from '../base-command';
|
||||
import setupCommand from '../setupCommand';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export const setupCommandForTesting = (CommandClass: any, stdout: Function = null): BaseCommand => {
|
||||
const command = new CommandClass();
|
||||
setupCommand(command, stdout, null, null);
|
||||
|
||||
@@ -35,15 +35,15 @@
|
||||
],
|
||||
"owner": "Laurent Cozic"
|
||||
},
|
||||
"version": "2.11.1",
|
||||
"version": "2.12.0",
|
||||
"bin": "./main.js",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@joplin/lib": "~2.11",
|
||||
"@joplin/renderer": "~2.11",
|
||||
"@joplin/utils": "~2.11",
|
||||
"@joplin/lib": "~2.12",
|
||||
"@joplin/renderer": "~2.12",
|
||||
"@joplin/utils": "~2.12",
|
||||
"aws-sdk": "2.1340.0",
|
||||
"chalk": "4.1.2",
|
||||
"compare-version": "0.1.2",
|
||||
@@ -70,7 +70,7 @@
|
||||
"yargs-parser": "21.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@joplin/tools": "~2.11",
|
||||
"@joplin/tools": "~2.12",
|
||||
"@types/fs-extra": "11.0.1",
|
||||
"@types/jest": "29.5.1",
|
||||
"@types/node": "18.15.13",
|
||||
|
||||
@@ -12,7 +12,7 @@ import { newPluginScript } from '../../testUtils';
|
||||
|
||||
const testPluginDir = `${supportDir}/plugins`;
|
||||
|
||||
function newPluginService(appVersion: string = '1.4') {
|
||||
function newPluginService(appVersion = '1.4') {
|
||||
const runner = new PluginRunner();
|
||||
const service = new PluginService();
|
||||
service.initialize(
|
||||
|
||||
@@ -7,7 +7,7 @@ import Setting from '@joplin/lib/models/Setting';
|
||||
|
||||
const testPluginDir = `${supportDir}/plugins`;
|
||||
|
||||
function newPluginService(appVersion: string = '1.4') {
|
||||
function newPluginService(appVersion = '1.4') {
|
||||
const runner = new PluginRunner();
|
||||
const service = new PluginService();
|
||||
service.initialize(
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "Joplin Web Clipper [DEV]",
|
||||
"version": "2.11.2",
|
||||
"version": "2.12.0",
|
||||
"description": "Capture and save web pages and screenshots from your browser to Joplin.",
|
||||
"homepage_url": "https://joplinapp.org",
|
||||
"content_security_policy": "script-src 'self'; object-src 'self'",
|
||||
|
||||
@@ -30,6 +30,7 @@ const dotenvFiles = [
|
||||
// that have already been set. Variable expansion is supported in .env files.
|
||||
// https://github.com/motdotla/dotenv
|
||||
// https://github.com/motdotla/dotenv-expand
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
dotenvFiles.forEach(dotenvFile => {
|
||||
if (fs.existsSync(dotenvFile)) {
|
||||
require('dotenv-expand')(
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
/* eslint-disable multiline-comment-style */
|
||||
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
@@ -130,6 +130,7 @@ checkBrowsers(paths.appPath, isInteractive)
|
||||
openBrowser(urls.localUrlForBrowser);
|
||||
});
|
||||
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
['SIGINT', 'SIGTERM'].forEach((sig) => {
|
||||
process.on(sig, () => {
|
||||
devServer.close();
|
||||
|
||||
@@ -26,7 +26,7 @@ export default class ElectronAppWrapper {
|
||||
private isDebugMode_: boolean;
|
||||
private profilePath_: string;
|
||||
private win_: BrowserWindow = null;
|
||||
private willQuitApp_: boolean = false;
|
||||
private willQuitApp_ = false;
|
||||
private tray_: any = null;
|
||||
private buildDir_: string = null;
|
||||
private rendererProcessQuitReply_: RendererProcessQuitReply = null;
|
||||
|
||||
@@ -151,6 +151,7 @@ export default class InteropServiceHelper {
|
||||
return `${filename}.${fileExtension}`;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public static async export(_dispatch: Function, module: Module, options: ExportNoteOptions = null) {
|
||||
if (!options) options = {};
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ const appDefaultState = createAppDefaultState(
|
||||
class Application extends BaseApplication {
|
||||
|
||||
private checkAllPluginStartedIID_: any = null;
|
||||
private initPluginServiceDone_: boolean = false;
|
||||
private initPluginServiceDone_ = false;
|
||||
|
||||
public constructor() {
|
||||
super();
|
||||
|
||||
@@ -88,6 +88,7 @@ export class Bridge {
|
||||
// Perhaps the easiest would be to patch electron-context-menu to
|
||||
// support the renderer process again. Or possibly revert to an old
|
||||
// version of electron-context-menu.
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public setupContextMenu(_spellCheckerMenuItemsHandler: Function) {
|
||||
require('electron-context-menu')({
|
||||
allWindows: [this.window()],
|
||||
@@ -255,6 +256,7 @@ export class Bridge {
|
||||
return nativeTheme.shouldUseDarkColors;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
public addEventListener(name: string, fn: Function) {
|
||||
if (name === 'nativeThemeUpdated') {
|
||||
nativeTheme.on('updated', fn);
|
||||
|
||||
@@ -8,7 +8,7 @@ export const declaration: CommandDeclaration = {
|
||||
|
||||
export const runtime = (): CommandRuntime => {
|
||||
return {
|
||||
execute: async (_context: CommandContext, noteId: string, reverseRevIndex: number = 0) => {
|
||||
execute: async (_context: CommandContext, noteId: string, reverseRevIndex = 0) => {
|
||||
try {
|
||||
const note = await RevisionService.instance().restoreNoteById(noteId, reverseRevIndex);
|
||||
alert(RevisionService.instance().restoreSuccessMessage(note));
|
||||
|
||||
@@ -20,6 +20,7 @@ interface Props {
|
||||
iconName?: string;
|
||||
level?: ButtonLevel;
|
||||
className?: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClick?: Function;
|
||||
color?: string;
|
||||
iconAnimation?: string;
|
||||
|
||||
@@ -6,8 +6,11 @@ const styled = require('styled-components').default;
|
||||
interface Props {
|
||||
backButtonTitle?: string;
|
||||
hasChanges?: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onCancelClick: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onSaveClick?: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onApplyClick?: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ const styled = require('styled-components').default;
|
||||
|
||||
interface Props {
|
||||
selection: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onSelectionChange: Function;
|
||||
sections: any[];
|
||||
}
|
||||
|
||||
@@ -45,9 +45,13 @@ const RepoApiErrorMessage = styled(StyledMessage)<any>`
|
||||
interface Props {
|
||||
value: any;
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onChange: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderLabel: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderDescription: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderHeader: Function;
|
||||
}
|
||||
|
||||
@@ -146,6 +150,7 @@ export default function(props: Props) {
|
||||
const pluginIds = await repoApi().canBeUpdatedPlugins(pluginItems.map(p => p.manifest), pluginService.appVersion);
|
||||
if (cancelled) return;
|
||||
const conv: Record<string, boolean> = {};
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
pluginIds.forEach(id => conv[id] = true);
|
||||
setCanBeUpdatedPluginIds(conv);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ interface Props {
|
||||
onSearchQueryChange(event: OnChangeEvent): void;
|
||||
pluginSettings: PluginSettings;
|
||||
onPluginSettingsChange(event: any): void;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderDescription: Function;
|
||||
maxWidth: number;
|
||||
repoApi(): RepositoryApi;
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface OnPluginSettingChangeEvent {
|
||||
|
||||
type OnPluginSettingChangeHandler = (event: OnPluginSettingChangeEvent)=> void;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function(setInstallingPluginIds: Function, pluginSettings: PluginSettings, repoApi: Function, onPluginSettingsChange: OnPluginSettingChangeHandler, isUpdate: boolean) {
|
||||
return useCallback(async (event: ItemEvent) => {
|
||||
const pluginId = event.item.manifest.id;
|
||||
|
||||
@@ -26,8 +26,10 @@ const DialogRoot = styled.div`
|
||||
`;
|
||||
|
||||
interface Props {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderContent: Function;
|
||||
className?: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClose?: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,9 @@ import { useEffect, useState, useRef, useCallback } from 'react';
|
||||
import { isInsideContainer } from '@joplin/lib/dom';
|
||||
|
||||
interface Props {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onOkButtonClick: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onCancelButtonClick: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ import FolderIconBox from '../FolderIconBox';
|
||||
|
||||
interface Props {
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
folderId: string;
|
||||
parentId: string;
|
||||
|
||||
@@ -5,6 +5,7 @@ import { AppState } from '../app.reducer';
|
||||
|
||||
interface Props {
|
||||
tip: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClick: Function;
|
||||
themeId: number;
|
||||
style: any;
|
||||
|
||||
@@ -5,6 +5,7 @@ interface Props {
|
||||
themeId: number;
|
||||
style: any;
|
||||
iconName: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClick: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,9 +5,12 @@ interface Props {
|
||||
itemHeight: number;
|
||||
items: any[];
|
||||
disabled?: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onKeyDown?: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
itemRenderer: Function;
|
||||
className?: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onNoteDrop?: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ interface Props {
|
||||
pluginHtmlContents: PluginHtmlContents;
|
||||
pluginsLoaded: boolean;
|
||||
hasNotesBeingSaved: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
mainLayout: LayoutItem;
|
||||
style: any;
|
||||
@@ -121,6 +122,7 @@ class MainScreenComponent extends React.Component<Props, State> {
|
||||
private isPrinting_: boolean;
|
||||
private styleKey_: string;
|
||||
private styles_: any;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
private promptOnClose_: Function;
|
||||
|
||||
public constructor(props: Props) {
|
||||
@@ -514,6 +516,7 @@ class MainScreenComponent extends React.Component<Props, State> {
|
||||
return this.styles_;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
private renderNotificationMessage(message: string, callForAction: string, callForActionHandler: Function, callForAction2: string = null, callForActionHandler2: Function = null) {
|
||||
const theme = themeStyle(this.props.themeId);
|
||||
const urlStyle: any = { color: theme.colorWarnUrl, textDecoration: 'underline' };
|
||||
@@ -846,9 +849,7 @@ class MainScreenComponent extends React.Component<Props, State> {
|
||||
{this.renderPluginDialogs()}
|
||||
{noteContentPropertiesDialogOptions.visible && <NoteContentPropertiesDialog markupLanguage={noteContentPropertiesDialogOptions.markupLanguage} themeId={this.props.themeId} onClose={this.noteContentPropertiesDialog_close} text={noteContentPropertiesDialogOptions.text}/>}
|
||||
{notePropertiesDialogOptions.visible && <NotePropertiesDialog themeId={this.props.themeId} noteId={notePropertiesDialogOptions.noteId} onClose={this.notePropertiesDialog_close} onRevisionLinkClick={notePropertiesDialogOptions.onRevisionLinkClick} />}
|
||||
{/* @ts-ignore */}
|
||||
{shareNoteDialogOptions.visible && <ShareNoteDialog themeId={this.props.themeId} noteIds={shareNoteDialogOptions.noteIds} onClose={this.shareNoteDialog_close} />}
|
||||
{/* @ts-ignore */}
|
||||
{shareFolderDialogOptions.visible && <ShareFolderDialog themeId={this.props.themeId} folderId={shareFolderDialogOptions.folderId} onClose={this.shareFolderDialog_close} />}
|
||||
|
||||
<PromptDialog autocomplete={promptOptions && 'autocomplete' in promptOptions ? promptOptions.autocomplete : null} defaultValue={promptOptions && promptOptions.value ? promptOptions.value : ''} themeId={this.props.themeId} style={styles.prompt} onClose={this.promptOnClose_} label={promptOptions ? promptOptions.label : ''} description={promptOptions ? promptOptions.description : null} visible={!!this.state.promptOptions} buttons={promptOptions && 'buttons' in promptOptions ? promptOptions.buttons : null} inputType={promptOptions && 'inputType' in promptOptions ? promptOptions.inputType : null} />
|
||||
|
||||
@@ -29,6 +29,7 @@ export const runtime = (): CommandRuntime => {
|
||||
} else if (uiType === UiType.CommandPalette) {
|
||||
menuItemById('commandPalette').click();
|
||||
} else if (uiType === UiType.ControlledApi) {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
return new Promise((resolve: Function, reject: Function) => {
|
||||
const menuItem = PluginManager.instance().menuItems().find((i: any) => i.id === 'controlledApi');
|
||||
menuItem.userData = {
|
||||
|
||||
@@ -11,7 +11,7 @@ export const declaration: CommandDeclaration = {
|
||||
|
||||
export const runtime = (): CommandRuntime => {
|
||||
return {
|
||||
execute: async (_context: CommandContext, body: string = '', isTodo: boolean = false) => {
|
||||
execute: async (_context: CommandContext, body = '', isTodo = false) => {
|
||||
const folderId = Setting.value('activeFolderId');
|
||||
if (!folderId) return;
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ export const declaration: CommandDeclaration = {
|
||||
|
||||
export const runtime = (): CommandRuntime => {
|
||||
return {
|
||||
execute: async (_context: CommandContext, body: string = '') => {
|
||||
execute: async (_context: CommandContext, body = '') => {
|
||||
return CommandService.instance().execute('newNote', body, true);
|
||||
},
|
||||
enabledCondition: 'oneFolderSelected && !inConflictFolder',
|
||||
|
||||
@@ -28,6 +28,7 @@ export const runtime = (): CommandRuntime => {
|
||||
const languages = state.settings['spellChecker.languages'];
|
||||
if (languages.length === 0) return null;
|
||||
const s: string[] = [];
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
languages.forEach((language: string) => {
|
||||
s.push(language.split('-')[0]);
|
||||
});
|
||||
|
||||
@@ -10,7 +10,7 @@ export const declaration: CommandDeclaration = {
|
||||
|
||||
export const runtime = (): CommandRuntime => {
|
||||
return {
|
||||
execute: async (_context: CommandContext, field?: string | Array<any>, reverse?: boolean) => {
|
||||
execute: async (_context: CommandContext, field?: string | any[], reverse?: boolean) => {
|
||||
// field: Sort order's field. undefined means switching a field.
|
||||
// reverse: whether the sort order is reversed or not. undefined means toggling.
|
||||
//
|
||||
|
||||
@@ -14,6 +14,7 @@ import { PasswordInput } from '../PasswordInput/PasswordInput';
|
||||
|
||||
interface Props {
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ function getPluginCommandNames(plugins: PluginStates): string[] {
|
||||
return output;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function createPluginMenuTree(label: string, menuItems: MenuItem[], onMenuItemClick: Function) {
|
||||
const output: any = {
|
||||
label: label,
|
||||
@@ -108,6 +109,7 @@ const useSwitchProfileMenuItems = (profileConfig: ProfileConfig, menuItemDic: an
|
||||
};
|
||||
|
||||
interface Props {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
menuItemProps: any;
|
||||
routeName: string;
|
||||
|
||||
@@ -9,6 +9,7 @@ interface MultiNoteActionsProps {
|
||||
themeId: number;
|
||||
selectedNoteIds: string[];
|
||||
notes: any[];
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
watchedNoteFiles: string[];
|
||||
plugins: PluginStates;
|
||||
|
||||
@@ -10,6 +10,7 @@ interface NoteContentPropertiesDialogProps {
|
||||
themeId: number;
|
||||
text: string;
|
||||
markupLanguage: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClose: Function;
|
||||
}
|
||||
|
||||
@@ -28,6 +29,7 @@ function markupToHtml() {
|
||||
return markupToHtml_;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function countElements(text: string, wordSetter: Function, characterSetter: Function, characterNoSpaceSetter: Function, lineSetter: Function) {
|
||||
Countable.count(text, (counter: any) => {
|
||||
wordSetter(counter.words);
|
||||
|
||||
@@ -62,6 +62,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
|
||||
const editorRef = useRef(null);
|
||||
const rootRef = useRef(null);
|
||||
const webviewRef = useRef(null);
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
const props_onChangeRef = useRef<Function>(null);
|
||||
props_onChangeRef.current = props.onChange;
|
||||
|
||||
@@ -863,6 +864,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
|
||||
}));
|
||||
}
|
||||
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
menuUtils.pluginContextMenuItems(props.plugins, MenuItemLocation.EditorContextMenu).forEach((item: any) => {
|
||||
menu.append(new MenuItem(item));
|
||||
});
|
||||
|
||||
@@ -30,7 +30,7 @@ export default function useKeymap(CodeMirror: any) {
|
||||
}
|
||||
|
||||
// Converts a command of the form editor.command to just command
|
||||
function editorCommandToCodeMirror(command: String) {
|
||||
function editorCommandToCodeMirror(command: string) {
|
||||
return command.slice(7); // 7 is the length of editor.
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ export default function useKeymap(CodeMirror: any) {
|
||||
// CodeMirror requires a - between keys while Electron want's a +
|
||||
// CodeMirror doesn't recognize Option (it uses Alt instead)
|
||||
// CodeMirror requires Shift to be first
|
||||
function normalizeAccelerator(accelerator: String) {
|
||||
function normalizeAccelerator(accelerator: string) {
|
||||
const command = accelerator.replace(/\+/g, '-').replace('Option', 'Alt');
|
||||
// From here is taken out of codemirror/lib/codemirror.js
|
||||
const parts = command.split(/-(?!$)/);
|
||||
@@ -89,6 +89,7 @@ export default function useKeymap(CodeMirror: any) {
|
||||
function registerKeymap() {
|
||||
const keymapItems = KeymapService.instance().getKeymapItems();
|
||||
// Register all commands with the codemirror editor
|
||||
// eslint-disable-next-line github/array-foreach -- Old code before rule was applied
|
||||
keymapItems.forEach((key) => { registerJoplinCommand(key); });
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useCallback, useRef } from 'react';
|
||||
import shim from '@joplin/lib/shim';
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function useScrollHandler(editorRef: any, webviewRef: any, onScroll: Function) {
|
||||
const scrollTimeoutId_ = useRef<any>(null);
|
||||
const scrollPercent_ = useRef(0);
|
||||
|
||||
@@ -905,9 +905,11 @@ const TinyMCE = (props: NoteBodyEditorProps, ref: any) => {
|
||||
// Need to save the onChange handler to a ref to make sure
|
||||
// we call the current one from setTimeout.
|
||||
// https://github.com/facebook/react/issues/14010#issuecomment-433788147
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
const props_onChangeRef = useRef<Function>();
|
||||
props_onChangeRef.current = props.onChange;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
const prop_htmlToMarkdownRef = useRef<Function>();
|
||||
prop_htmlToMarkdownRef.current = props.htmlToMarkdown;
|
||||
|
||||
|
||||
@@ -8,12 +8,12 @@ module.exports = [
|
||||
"de",
|
||||
"el",
|
||||
"eo",
|
||||
"es",
|
||||
"es_ES",
|
||||
"es_MX",
|
||||
"es",
|
||||
"eu",
|
||||
"fa_IR",
|
||||
"fa",
|
||||
"fa_IR",
|
||||
"fi",
|
||||
"fr_FR",
|
||||
"gl",
|
||||
@@ -21,8 +21,8 @@ module.exports = [
|
||||
"hr",
|
||||
"hu_HU",
|
||||
"id",
|
||||
"it_IT",
|
||||
"it",
|
||||
"it_IT",
|
||||
"ja",
|
||||
"kk",
|
||||
"ko_KR",
|
||||
@@ -32,18 +32,18 @@ module.exports = [
|
||||
"pl",
|
||||
"pt_BR",
|
||||
"pt_PT",
|
||||
"ro_RO",
|
||||
"ro",
|
||||
"ro_RO",
|
||||
"ru",
|
||||
"sk",
|
||||
"sl_SI",
|
||||
"sl",
|
||||
"sl_SI",
|
||||
"sv_SE",
|
||||
"ta_IN",
|
||||
"ta",
|
||||
"ta_IN",
|
||||
"th_TH",
|
||||
"tr_TR",
|
||||
"tr",
|
||||
"tr_TR",
|
||||
"uk",
|
||||
"vi",
|
||||
"zh_CN",
|
||||
|
||||
@@ -47,7 +47,7 @@ function findBlockSource(node: any): SourceInfo {
|
||||
};
|
||||
}
|
||||
|
||||
function newBlockSource(language: string = '', content: string = '', previousSource: SourceInfo = null): SourceInfo {
|
||||
function newBlockSource(language = '', content = '', previousSource: SourceInfo = null): SourceInfo {
|
||||
let fence = '```';
|
||||
|
||||
if (language === 'katex') {
|
||||
@@ -77,6 +77,7 @@ function editableInnerHtml(html: string): string {
|
||||
return editable[0].innerHTML;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function openEditDialog(editor: any, markupToHtml: any, dispatchDidUpdate: Function, editable: any) {
|
||||
const source = editable ? findBlockSource(editable) : newBlockSource();
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@ interface ContextMenuActionOptions {
|
||||
|
||||
const contextMenuActionOptions: ContextMenuActionOptions = { current: null };
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function(editor: any, plugins: PluginStates, dispatch: Function) {
|
||||
useEffect(() => {
|
||||
if (!editor) return () => {};
|
||||
|
||||
@@ -3,6 +3,7 @@ import shim from '@joplin/lib/shim';
|
||||
|
||||
interface HookDependencies {
|
||||
editor: any;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onScroll: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,8 @@ async function saveFileData(data: any, filename: string) {
|
||||
await writeFile(newFilePath, data);
|
||||
}
|
||||
|
||||
export async function openItemById(itemId: string, dispatch: Function, hash: string = '') {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export async function openItemById(itemId: string, dispatch: Function, hash = '') {
|
||||
|
||||
const item = await BaseItem.loadItemById(itemId);
|
||||
|
||||
@@ -68,6 +69,7 @@ export async function openItemById(itemId: string, dispatch: Function, hash: str
|
||||
}
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export function menuItems(dispatch: Function): ContextMenuItems {
|
||||
return {
|
||||
open: {
|
||||
@@ -194,6 +196,7 @@ export function menuItems(dispatch: Function): ContextMenuItems {
|
||||
};
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default async function contextMenu(options: ContextMenuOptions, dispatch: Function) {
|
||||
const menu = new Menu();
|
||||
|
||||
|
||||
@@ -17,14 +17,18 @@ export interface ContextMenuOptions {
|
||||
linkToCopy: string;
|
||||
textToCopy: string;
|
||||
htmlToCopy: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
insertContent: Function;
|
||||
isReadOnly?: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
fireEditorEvent: Function;
|
||||
}
|
||||
|
||||
export interface ContextMenuItem {
|
||||
label: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onAction: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
isActive: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ export interface NoteEditorProps {
|
||||
// style: any;
|
||||
noteId: string;
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
selectedNoteIds: string[];
|
||||
selectedFolderId: string;
|
||||
@@ -59,9 +60,11 @@ export interface NoteBodyEditorProps {
|
||||
onMessage(event: any): void;
|
||||
onScroll(event: any): void;
|
||||
markupToHtml: (markupLanguage: MarkupLanguage, markup: string, options: MarkupToHtmlOptions)=> Promise<RenderResult>;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
htmlToMarkdown: Function;
|
||||
allAssets: (markupLanguage: MarkupLanguage, options: AllAssetsOptions)=> Promise<RenderResultPluginAsset[]>;
|
||||
disabled: boolean;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
noteToolbar: any;
|
||||
setLocalSearchResultCount(count: number): void;
|
||||
@@ -70,6 +73,7 @@ export interface NoteBodyEditorProps {
|
||||
keyboardMode: string;
|
||||
resourceInfos: ResourceInfos;
|
||||
locale: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onDrop: Function;
|
||||
noteToolbarButtonInfos: ToolbarButtonInfo[];
|
||||
plugins: PluginStates;
|
||||
|
||||
@@ -28,6 +28,7 @@ interface HookDependencies {
|
||||
onAfterLoad(event: OnLoadEvent): void;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function installResourceChangeHandler(onResourceChangeHandler: Function) {
|
||||
ResourceFetcher.instance().on('downloadComplete', onResourceChangeHandler);
|
||||
ResourceFetcher.instance().on('downloadStarted', onResourceChangeHandler);
|
||||
@@ -35,6 +36,7 @@ function installResourceChangeHandler(onResourceChangeHandler: Function) {
|
||||
ResourceEditWatcher.instance().on('resourceChange', onResourceChangeHandler);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function uninstallResourceChangeHandler(onResourceChangeHandler: Function) {
|
||||
ResourceFetcher.instance().off('downloadComplete', onResourceChangeHandler);
|
||||
ResourceFetcher.instance().off('downloadStarted', onResourceChangeHandler);
|
||||
|
||||
@@ -7,6 +7,7 @@ import ResourceFetcher from '@joplin/lib/services/ResourceFetcher';
|
||||
import { reg } from '@joplin/lib/registry';
|
||||
const bridge = require('@electron/remote').require('./bridge').default;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function useMessageHandler(scrollWhenReady: any, setScrollWhenReady: Function, editorRef: any, setLocalSearchResultCount: Function, dispatch: Function, formNote: FormNote) {
|
||||
return useCallback(async (event: any) => {
|
||||
const msg = event.channel ? event.channel : '';
|
||||
|
||||
@@ -24,6 +24,7 @@ function defaultSearchMarkers(): SearchMarkers {
|
||||
}
|
||||
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
export default function useSearchMarkers(showLocalSearch: boolean, localSearchMarkerOptions: Function, searches: any[], selectedSearchId: string, highlightedWords: any[] = []) {
|
||||
return useMemo((): SearchMarkers => {
|
||||
if (showLocalSearch) return localSearchMarkerOptions();
|
||||
|
||||
@@ -15,15 +15,20 @@ const commandsWithDependencies = [
|
||||
|
||||
interface HookDependencies {
|
||||
formNote: FormNote;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
setShowLocalSearch: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
noteSearchBarRef: any;
|
||||
editorRef: any;
|
||||
titleInputRef: any;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
saveNoteAndWait: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
setFormNote: Function;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function editorCommandRuntime(declaration: CommandDeclaration, editorRef: any, setFormNote: Function): CommandRuntime {
|
||||
const markdownEditorOnly = !Object.keys(joplinCommandToTinyMceCommands).includes(declaration.name);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ export interface Props {
|
||||
themeId: any;
|
||||
selectedNoteIds: string[];
|
||||
notes: NoteEntity[];
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
watchedNoteFiles: any[];
|
||||
plugins: PluginStates;
|
||||
|
||||
@@ -13,7 +13,9 @@ const formatcoords = require('formatcoords');
|
||||
|
||||
interface Props {
|
||||
noteId: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClose: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onRevisionLinkClick: Function;
|
||||
themeId: number;
|
||||
}
|
||||
@@ -210,6 +212,7 @@ class NotePropertiesDialog extends React.Component<Props, State> {
|
||||
public async saveProperty() {
|
||||
if (!this.state.editedKey) return;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
return new Promise((resolve: Function) => {
|
||||
const newFormNote = { ...this.state.formNote };
|
||||
|
||||
@@ -234,6 +237,7 @@ class NotePropertiesDialog extends React.Component<Props, State> {
|
||||
}
|
||||
|
||||
public async cancelProperty() {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
return new Promise((resolve: Function) => {
|
||||
this.okButton.current.focus();
|
||||
this.setState({
|
||||
|
||||
@@ -22,6 +22,7 @@ import shared from '@joplin/lib/components/shared/note-screen-shared';
|
||||
interface Props {
|
||||
themeId: number;
|
||||
noteId: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onBack: Function;
|
||||
customCss: string;
|
||||
}
|
||||
@@ -36,6 +37,7 @@ interface State {
|
||||
class NoteRevisionViewerComponent extends React.PureComponent<Props, State> {
|
||||
|
||||
private viewerRef_: any;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
private helpButton_onClick: Function;
|
||||
|
||||
public constructor(props: Props) {
|
||||
|
||||
@@ -4,9 +4,13 @@ import { _ } from '@joplin/lib/locale';
|
||||
|
||||
interface Props {
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onNext: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onPrevious: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClose: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onChange: Function;
|
||||
query: string;
|
||||
searching: boolean;
|
||||
|
||||
@@ -3,7 +3,9 @@ import * as React from 'react';
|
||||
import { reg } from '@joplin/lib/registry';
|
||||
|
||||
interface Props {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onDomReady: Function;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onIpcMessage: Function;
|
||||
viewerStyle: any;
|
||||
contentMaxWidth?: number;
|
||||
@@ -12,8 +14,8 @@ interface Props {
|
||||
|
||||
export default class NoteTextViewerComponent extends React.Component<Props, any> {
|
||||
|
||||
private initialized_: boolean = false;
|
||||
private domReady_: boolean = false;
|
||||
private initialized_ = false;
|
||||
private domReady_ = false;
|
||||
private webviewRef_: any;
|
||||
private webviewListeners_: any = null;
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ const IFrame = styled.iframe`
|
||||
|
||||
interface Props {
|
||||
themeId: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
resource: any;
|
||||
pageNo: number;
|
||||
|
||||
@@ -12,6 +12,7 @@ interface Props {
|
||||
visible: boolean;
|
||||
style: any;
|
||||
buttons: any[];
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
onClose: Function;
|
||||
inputType: string;
|
||||
description: string;
|
||||
@@ -26,7 +27,7 @@ export default class PromptDialog extends React.Component<Props, any> {
|
||||
private focusInput_: boolean;
|
||||
private styles_: any;
|
||||
private styleKey_: string;
|
||||
private menuIsOpened_: boolean = false;
|
||||
private menuIsOpened_ = false;
|
||||
|
||||
public constructor(props: Props) {
|
||||
super(props);
|
||||
|
||||
@@ -20,6 +20,7 @@ interface Props {
|
||||
onResize(event: OnResizeEvent): void;
|
||||
width?: number;
|
||||
height?: number;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
renderItem: Function;
|
||||
onMoveButtonClick(event: MoveButtonClickEvent): void;
|
||||
moveMode: boolean;
|
||||
@@ -32,6 +33,7 @@ function itemVisible(item: LayoutItem, moveMode: boolean) {
|
||||
return item.visible !== false;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function renderContainer(item: LayoutItem, parent: LayoutItem | null, sizes: LayoutItemSizes, resizedItemMaxSize: Size | null, onResizeStart: Function, onResize: Function, onResizeStop: Function, children: any[], isLastChild: boolean, moveMode: boolean): any {
|
||||
const style: any = {
|
||||
display: itemVisible(item, moveMode) ? 'flex' : 'none',
|
||||
|
||||
@@ -8,6 +8,7 @@ export default function iterateItems(layout: LayoutItem, callback: ItemItemCallb
|
||||
const result = callback(0, layout, null);
|
||||
if (result === false) return;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function recurseFind(item: LayoutItem, callback: Function): boolean {
|
||||
if (item.children) {
|
||||
for (let childIndex = 0; childIndex < item.children.length; childIndex++) {
|
||||
|
||||
@@ -135,7 +135,7 @@ export function calculateMaxSizeAvailableForItem(item: LayoutItem, parent: Layou
|
||||
return availableSize;
|
||||
}
|
||||
|
||||
export default function useLayoutItemSizes(layout: LayoutItem, makeAllVisible: boolean = false) {
|
||||
export default function useLayoutItemSizes(layout: LayoutItem, makeAllVisible = false) {
|
||||
return useMemo(() => {
|
||||
let sizes: LayoutItemSizes = {};
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ interface Style {
|
||||
interface Props {
|
||||
themeId: number;
|
||||
style: Style;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@ const bridge = require('@electron/remote').require('./bridge').default;
|
||||
interface Props {
|
||||
themeId: number;
|
||||
appState: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
size: Size;
|
||||
zoomFactor: number;
|
||||
@@ -51,6 +52,7 @@ interface ModalDialogProps {
|
||||
interface RegisteredDialogProps {
|
||||
themeId: number;
|
||||
key: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch: Function;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ export const Root = styled.div`
|
||||
interface Props {
|
||||
inputRef?: any;
|
||||
notesParentType: string;
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
dispatch?: Function;
|
||||
selectedNoteId: string;
|
||||
isFocused?: boolean;
|
||||
@@ -32,6 +33,7 @@ function SearchBar(props: Props) {
|
||||
const searchId = useRef(uuid.create());
|
||||
|
||||
useEffect(() => {
|
||||
// eslint-disable-next-line @typescript-eslint/ban-types -- Old code before rule was applied
|
||||
function search(searchId: string, query: string, dispatch: Function) {
|
||||
dispatch({
|
||||
type: 'SEARCH_UPDATE',
|
||||
|
||||
@@ -366,4 +366,4 @@ const mapStateToProps = (state: State) => {
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps)(ShareFolderDialog as any);
|
||||
export default connect(mapStateToProps)(ShareFolderDialog);
|
||||
|
||||