@md-plugins/quasar-app-extension-q-press 0.1.0-alpha.15 → 0.1.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -14
- package/src/templates/init/src/markdown/other/release-notes.md +0 -6
- package/src/templates/init/src/components/Releases/PackageReleases.vue +0 -164
- package/src/templates/init/src/components/Releases/PublicReleases.vue +0 -149
- package/src/templates/init/src/components/Releases/ReleasesAvailable.vue +0 -74
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@md-plugins/quasar-app-extension-q-press",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.16",
|
|
4
4
|
"description": "QPress - The Ultimate Markdown Solution for Quasar Framework",
|
|
5
5
|
"author": "hawkeye64 <galbraith64@gmail.com>",
|
|
6
6
|
"keywords": [
|
|
@@ -29,19 +29,19 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@types/markdown-it": "^14.1.2",
|
|
31
31
|
"markdown-it": "^14.1.0",
|
|
32
|
-
"@md-plugins/md-plugin-
|
|
33
|
-
"@md-plugins/md-plugin-
|
|
34
|
-
"@md-plugins/md-plugin-frontmatter": "0.1.0-alpha.
|
|
35
|
-
"@md-plugins/md-plugin-headers": "0.1.0-alpha.
|
|
36
|
-
"@md-plugins/md-plugin-
|
|
37
|
-
"@md-plugins/md-plugin-image": "0.1.0-alpha.
|
|
38
|
-
"@md-plugins/md-plugin-
|
|
39
|
-
"@md-plugins/md-plugin-
|
|
40
|
-
"@md-plugins/md-plugin-link": "0.1.0-alpha.
|
|
41
|
-
"@md-plugins/md-plugin
|
|
42
|
-
"@md-plugins/shared": "0.1.0-alpha.
|
|
43
|
-
"@md-plugins/md-plugin-
|
|
44
|
-
"@md-plugins/
|
|
32
|
+
"@md-plugins/md-plugin-blockquote": "0.1.0-alpha.16",
|
|
33
|
+
"@md-plugins/md-plugin-codeblocks": "0.1.0-alpha.16",
|
|
34
|
+
"@md-plugins/md-plugin-frontmatter": "0.1.0-alpha.16",
|
|
35
|
+
"@md-plugins/md-plugin-headers": "0.1.0-alpha.16",
|
|
36
|
+
"@md-plugins/md-plugin-containers": "0.1.0-alpha.16",
|
|
37
|
+
"@md-plugins/md-plugin-image": "0.1.0-alpha.16",
|
|
38
|
+
"@md-plugins/md-plugin-imports": "0.1.0-alpha.16",
|
|
39
|
+
"@md-plugins/md-plugin-inlinecode": "0.1.0-alpha.16",
|
|
40
|
+
"@md-plugins/md-plugin-link": "0.1.0-alpha.16",
|
|
41
|
+
"@md-plugins/vite-md-plugin": "0.1.0-alpha.16",
|
|
42
|
+
"@md-plugins/shared": "0.1.0-alpha.16",
|
|
43
|
+
"@md-plugins/md-plugin-table": "0.1.0-alpha.16",
|
|
44
|
+
"@md-plugins/md-plugin-title": "0.1.0-alpha.16"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/markdown-it": "^14.1.2",
|
|
@@ -4,9 +4,3 @@ desc: The changelog for MD-Plugins packages.
|
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
Release notes (with changelog) for MD-Plugins packages are available on [GitHub Releases](https://github.com/md-plugins/md-plugins/releases).
|
|
7
|
-
|
|
8
|
-
<!-- <script import>
|
|
9
|
-
import PublicReleases from 'components/Releases/PublicReleases.vue'
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<PublicReleases /> -->
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div>
|
|
3
|
-
<q-input class="header-toolbar q-px-md" v-model="search" dense square borderless color="white" placeholder="Search..." clearable>
|
|
4
|
-
<template #prepend>
|
|
5
|
-
<q-icon :name="mdiMagnify" />
|
|
6
|
-
</template>
|
|
7
|
-
</q-input>
|
|
8
|
-
|
|
9
|
-
<q-separator />
|
|
10
|
-
|
|
11
|
-
<q-splitter class="release__splitter" :model-value="20" :limits="[14, 90]">
|
|
12
|
-
<template #before>
|
|
13
|
-
<q-scroll-area>
|
|
14
|
-
<q-tabs class="header-tabs" vertical v-model="selectedVersion" active-color="brand-primary" indicator-color="brand-primary">
|
|
15
|
-
<q-tab v-for="releaseInfo in filteredReleases" class="header-btn" :key="releaseInfo.version" :name="releaseInfo.version" no-caps>
|
|
16
|
-
<div class="release__tab-label q-pt-xs">{{ releaseInfo.version }}</div>
|
|
17
|
-
<div class="release__tab-date q-pb-xs">{{ releaseInfo.date }}</div>
|
|
18
|
-
</q-tab>
|
|
19
|
-
</q-tabs>
|
|
20
|
-
</q-scroll-area>
|
|
21
|
-
</template>
|
|
22
|
-
|
|
23
|
-
<template #after>
|
|
24
|
-
<q-tab-panels class="releases-container" v-model="selectedVersion" animated transition-prev="slide-down" transition-next="slide-up">
|
|
25
|
-
<q-tab-panel class="q-pa-none" v-for="releaseInfo in filteredReleases" :key="releaseInfo.version" :name="releaseInfo.version">
|
|
26
|
-
<q-scroll-area>
|
|
27
|
-
<div class="release__body q-pa-md" v-html="currentReleaseBody" />
|
|
28
|
-
</q-scroll-area>
|
|
29
|
-
</q-tab-panel>
|
|
30
|
-
</q-tab-panels>
|
|
31
|
-
</template>
|
|
32
|
-
</q-splitter>
|
|
33
|
-
</div>
|
|
34
|
-
</template>
|
|
35
|
-
|
|
36
|
-
<script setup lang="ts">
|
|
37
|
-
import { ref, computed, watch } from 'vue'
|
|
38
|
-
import { mdiMagnify } from '@quasar/extras/mdi-v6'
|
|
39
|
-
|
|
40
|
-
interface Release {
|
|
41
|
-
version: string
|
|
42
|
-
body: string
|
|
43
|
-
date: string
|
|
44
|
-
label: string
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const props = defineProps<{ releases: Release[] }>()
|
|
48
|
-
|
|
49
|
-
const search = ref('')
|
|
50
|
-
const selectedVersion = ref(getLatestVersion())
|
|
51
|
-
|
|
52
|
-
watch(
|
|
53
|
-
() => props.releases,
|
|
54
|
-
() => { selectedVersion.value = getLatestVersion() }
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
function getLatestVersion (): string {
|
|
58
|
-
return props.releases && props.releases.length > 0 ? props.releases[0]!.version : 'unknown'
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
const filteredReleases = computed(() => {
|
|
62
|
-
if (search.value) {
|
|
63
|
-
const val = search.value.toLowerCase()
|
|
64
|
-
return props.releases.filter(release => (
|
|
65
|
-
release.version.indexOf(val) !== -1 ||
|
|
66
|
-
release.body.toLowerCase().indexOf(val) !== -1
|
|
67
|
-
))
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return props.releases
|
|
71
|
-
})
|
|
72
|
-
|
|
73
|
-
const currentReleaseBody = computed(() => {
|
|
74
|
-
const release = props.releases.find(r => r.version === selectedVersion.value)
|
|
75
|
-
return release ? release.body : ''
|
|
76
|
-
})
|
|
77
|
-
</script>
|
|
78
|
-
|
|
79
|
-
<style lang="scss">
|
|
80
|
-
.release__splitter .q-scrollarea {
|
|
81
|
-
height: 600px;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
.release__tab-label {
|
|
85
|
-
font-size: $font-size;
|
|
86
|
-
font-weight: 700;
|
|
87
|
-
line-height: ($font-size + 3px);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.release__tab-date {
|
|
91
|
-
font-size: ($font-size - 3px);
|
|
92
|
-
line-height: ($font-size + 3px);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
.release__body {
|
|
96
|
-
h1, h2, h3, h4, h5, h6 {
|
|
97
|
-
padding: 0;
|
|
98
|
-
margin: .7em 0 .5em;
|
|
99
|
-
line-height: 1.1em;
|
|
100
|
-
color: $brand-primary;
|
|
101
|
-
|
|
102
|
-
&:first-child {
|
|
103
|
-
margin-top: 0;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
h1 {
|
|
108
|
-
font-size: ($font-size + 18px);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
h2 {
|
|
112
|
-
font-size: ($font-size + 14px);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
h3 {
|
|
116
|
-
font-size: ($font-size + 10px);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
h4 {
|
|
120
|
-
font-size: ($font-size + 6px);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
h5 {
|
|
124
|
-
font-size: ($font-size + 4px);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
h6 {
|
|
128
|
-
font-size: ($font-size + 2px);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
table {
|
|
132
|
-
white-space: normal;
|
|
133
|
-
border: 1px solid $separator-color;
|
|
134
|
-
border-radius: $generic-border-radius;
|
|
135
|
-
width: 100%;
|
|
136
|
-
max-width: 100%;
|
|
137
|
-
border-collapse: separate;
|
|
138
|
-
border-spacing: 0;
|
|
139
|
-
|
|
140
|
-
th, td {
|
|
141
|
-
text-align: left;
|
|
142
|
-
padding: 8px 16px;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
th {
|
|
146
|
-
font-weight: 700;
|
|
147
|
-
letter-spacing: $letter-spacing-brand;
|
|
148
|
-
border-bottom: 1px solid $separator-color;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
tr:not(:first-child) td {
|
|
152
|
-
border-top: 1px solid $separator-color;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
body.body--dark .release__body {
|
|
158
|
-
table {
|
|
159
|
-
&, th, tr:not(:first-child) td {
|
|
160
|
-
border-color: $separator-dark-color;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
</style>
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-card flat bordered>
|
|
3
|
-
<q-card-section v-if="error" class="row no-wrap items-center">
|
|
4
|
-
<q-icon name="warning" size="24px" color="negative" class="q-mr-sm" />
|
|
5
|
-
<div>Cannot connect to GitHub. Try again later.</div>
|
|
6
|
-
</q-card-section>
|
|
7
|
-
|
|
8
|
-
<q-card-section v-else-if="loading" class="row no-wrap items-center">
|
|
9
|
-
<q-spinner size="24px" color="primary" class="q-mr-sm" />
|
|
10
|
-
<div>Loading release notes from GitHub</div>
|
|
11
|
-
</q-card-section>
|
|
12
|
-
|
|
13
|
-
<template v-else>
|
|
14
|
-
<q-separator />
|
|
15
|
-
<q-tab-panels v-model="currentPackage" animated class="packages-container">
|
|
16
|
-
<q-tab-panel
|
|
17
|
-
v-for="(packageReleases, packageName) in packages"
|
|
18
|
-
:key="packageName"
|
|
19
|
-
:name="packageName"
|
|
20
|
-
class="q-pa-none"
|
|
21
|
-
>
|
|
22
|
-
<PackageReleases
|
|
23
|
-
v-if="String(latestVersions[packageName]) && packageReleases.length > 0"
|
|
24
|
-
:latest-version="String(latestVersions[packageName])"
|
|
25
|
-
:releases="packageReleases"
|
|
26
|
-
/>
|
|
27
|
-
</q-tab-panel>
|
|
28
|
-
</q-tab-panels>
|
|
29
|
-
</template>
|
|
30
|
-
</q-card>
|
|
31
|
-
</template>
|
|
32
|
-
|
|
33
|
-
<script setup lang="ts">
|
|
34
|
-
import { ref, onMounted } from 'vue'
|
|
35
|
-
import { date } from 'quasar'
|
|
36
|
-
|
|
37
|
-
import PackageReleases from './PackageReleases.vue'
|
|
38
|
-
|
|
39
|
-
const { extractDate, formatDate } = date
|
|
40
|
-
|
|
41
|
-
// Types
|
|
42
|
-
interface ReleaseInfo {
|
|
43
|
-
version: string
|
|
44
|
-
date: string
|
|
45
|
-
body: string
|
|
46
|
-
label: string
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
interface PackageReleasesMap {
|
|
50
|
-
[key: string]: ReleaseInfo[]
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
// Reactive state
|
|
54
|
-
const packages = ref<PackageReleasesMap>({
|
|
55
|
-
'MD-Plugins': [],
|
|
56
|
-
})
|
|
57
|
-
const loading = ref<boolean>(false)
|
|
58
|
-
const error = ref<boolean>(false)
|
|
59
|
-
const currentPackage = ref<string>('MD-Plugins')
|
|
60
|
-
const latestVersions = ref<Record<string, string>>({})
|
|
61
|
-
|
|
62
|
-
function queryReleases(page = 1): void {
|
|
63
|
-
loading.value = true
|
|
64
|
-
error.value = false
|
|
65
|
-
|
|
66
|
-
const xhr = new XMLHttpRequest()
|
|
67
|
-
|
|
68
|
-
xhr.addEventListener('load', function () {
|
|
69
|
-
const releases = JSON.parse(this.responseText)
|
|
70
|
-
|
|
71
|
-
if (!releases || releases.length === 0) {
|
|
72
|
-
error.value = true
|
|
73
|
-
return
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
error.value = false
|
|
77
|
-
let stopQuery = true
|
|
78
|
-
|
|
79
|
-
for (const release of releases) {
|
|
80
|
-
const [name, version] = release.name.split('v')
|
|
81
|
-
|
|
82
|
-
if (name.startsWith('@quasar')) {
|
|
83
|
-
continue
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const packageName = currentPackage.value
|
|
87
|
-
|
|
88
|
-
if (!version) {
|
|
89
|
-
stopQuery = true
|
|
90
|
-
continue
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (!packages.value[packageName]) {
|
|
94
|
-
packages.value[packageName] = []
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
const releaseInfo: ReleaseInfo = {
|
|
98
|
-
version,
|
|
99
|
-
date: formatDate(extractDate(release.published_at, 'YYYY-MM-DD'), 'YYYY-MM-DD'),
|
|
100
|
-
body: release.body,
|
|
101
|
-
label: version,
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
packages.value[packageName].push(releaseInfo)
|
|
105
|
-
|
|
106
|
-
if (!latestVersions.value[packageName]) {
|
|
107
|
-
latestVersions.value[packageName] = releaseInfo.label
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (!stopQuery) {
|
|
112
|
-
queryReleases(page + 1)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if (packages.value['MD-Plugins']) {
|
|
116
|
-
packages.value['MD-Plugins'].sort((a, b) => {
|
|
117
|
-
return parseInt(b.date.replace(/-/g, ''), 10) - parseInt(a.date.replace(/-/g, ''), 10)
|
|
118
|
-
})
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
loading.value = false
|
|
122
|
-
console.log('Packages:', packages.value)
|
|
123
|
-
console.log('Latest versions:', latestVersions.value)
|
|
124
|
-
})
|
|
125
|
-
|
|
126
|
-
xhr.addEventListener('error', () => {
|
|
127
|
-
error.value = true
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
xhr.open(
|
|
131
|
-
'GET',
|
|
132
|
-
`https://api.github.com/repos/md-plugins/md-plugins/releases?page=${page}&per_page=100`,
|
|
133
|
-
)
|
|
134
|
-
xhr.send()
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
onMounted(() => {
|
|
138
|
-
queryReleases()
|
|
139
|
-
})
|
|
140
|
-
</script>
|
|
141
|
-
|
|
142
|
-
<style lang="scss">
|
|
143
|
-
.packages-container {
|
|
144
|
-
.q-tab-panel {
|
|
145
|
-
padding-right: 0;
|
|
146
|
-
padding-top: 0;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
</style>
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<q-card flat bordered>
|
|
3
|
-
<q-card-section class="row no-wrap items-center" v-if="error">
|
|
4
|
-
<q-icon class="q-mr-md" name="warning" size="24px" color="negative" />
|
|
5
|
-
<div>Cannot fetch the release notes. Please use the links above instead.</div>
|
|
6
|
-
</q-card-section>
|
|
7
|
-
|
|
8
|
-
<q-card-section class="row no-wrap items-center" v-else-if="loading">
|
|
9
|
-
<q-spinner class="q-mr-md" size="24px" color="brand-primary" />
|
|
10
|
-
<div>Loading release notes...</div>
|
|
11
|
-
</q-card-section>
|
|
12
|
-
|
|
13
|
-
<template v-else>
|
|
14
|
-
<q-tabs class="header-tabs" v-model="currentPackage" no-caps align="left" active-color="brand-primary" indicator-color="brand-primary">
|
|
15
|
-
<q-tab v-for="packageName in packageList" class="header-btn" :name="packageName" :key="packageName">
|
|
16
|
-
{{ packageName }}
|
|
17
|
-
</q-tab>
|
|
18
|
-
</q-tabs>
|
|
19
|
-
|
|
20
|
-
<q-separator />
|
|
21
|
-
|
|
22
|
-
<q-tab-panels class="packages-container" v-model="currentPackage" animated>
|
|
23
|
-
<q-tab-panel class="q-pa-none" v-for="(packageReleases, packageName) in packages" :key="packageName" :name="packageName">
|
|
24
|
-
<PackageReleases :releases="packageReleases" />
|
|
25
|
-
</q-tab-panel>
|
|
26
|
-
</q-tab-panels>
|
|
27
|
-
</template>
|
|
28
|
-
</q-card>
|
|
29
|
-
</template>
|
|
30
|
-
|
|
31
|
-
<script setup>
|
|
32
|
-
import { ref, onMounted } from 'vue'
|
|
33
|
-
import { date } from 'quasar'
|
|
34
|
-
|
|
35
|
-
import PackageReleases from './PackageReleases.vue'
|
|
36
|
-
|
|
37
|
-
const { extractDate } = date
|
|
38
|
-
|
|
39
|
-
const loading = ref(true)
|
|
40
|
-
const error = ref(false)
|
|
41
|
-
|
|
42
|
-
const currentPackage = ref('quasar')
|
|
43
|
-
const packages = ref({})
|
|
44
|
-
const packageList = ref([])
|
|
45
|
-
|
|
46
|
-
function queryReleases () {
|
|
47
|
-
fetch('https://cdn.quasar.dev/release-notes/v2.json')
|
|
48
|
-
.then(response => response.json())
|
|
49
|
-
.then(data => {
|
|
50
|
-
const list = Object.keys(data)
|
|
51
|
-
|
|
52
|
-
for (const packageName of list) {
|
|
53
|
-
const target = data[ packageName ]
|
|
54
|
-
target.forEach(entry => {
|
|
55
|
-
entry.date = extractDate(entry.date, 'YYYY-MM-DD').toLocaleDateString()
|
|
56
|
-
})
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
packages.value = data
|
|
60
|
-
packageList.value = list
|
|
61
|
-
|
|
62
|
-
loading.value = false
|
|
63
|
-
})
|
|
64
|
-
.catch(err => {
|
|
65
|
-
console.error(err)
|
|
66
|
-
error.value = true
|
|
67
|
-
})
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
onMounted(() => { queryReleases() })
|
|
71
|
-
</script>
|
|
72
|
-
|
|
73
|
-
<style lang="sass">
|
|
74
|
-
</style>
|