@abreen/tada 1.9.0 → 1.10.1
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/README.md +24 -34
- package/bin/tada.ts +1 -1
- package/build/apply-base-path-plugin.ts +79 -17
- package/build/bundle.ts +9 -1
- package/build/content-watch.ts +3 -3
- package/build/copy.ts +30 -0
- package/build/generate-content-assets.ts +45 -59
- package/build/pagefind.ts +0 -7
- package/build/serve.ts +4 -0
- package/build/types.d.ts +19 -1
- package/build/util.ts +3 -0
- package/build/utils/content-files.ts +98 -0
- package/build/utils/include.ts +4 -0
- package/build/utils/python-runner/trace_runner.py +272 -0
- package/build/utils/render.ts +34 -8
- package/build/utils/trace-core.ts +203 -0
- package/build/utils/trace-java.ts +132 -0
- package/build/utils/trace-layout.ts +31 -3
- package/build/utils/trace-python.ts +26 -0
- package/build/utils/trace.ts +174 -294
- package/build/validate-internal-links-plugin.ts +16 -4
- package/build/watch/assets.ts +111 -0
- package/build/watch/build-full.ts +124 -0
- package/build/watch/build-incremental.ts +139 -0
- package/build/watch/compiler-types.d.ts +19 -0
- package/build/watch/compiler.ts +112 -0
- package/build/watch/index.ts +22 -0
- package/build/watch/mutations.ts +75 -0
- package/build/watch/planner.ts +230 -0
- package/build/watch/records.ts +190 -0
- package/build/watch/runtime.ts +143 -0
- package/build/watch/snapshot.ts +602 -0
- package/build/watch/validation.ts +36 -0
- package/build/watch-reload-client.ts +10 -5
- package/init/content/labs/01/index.md +6 -0
- package/init/content/labs/01/trace_demo.py +16 -0
- package/package.json +42 -23
- package/python/command.ts +95 -0
- package/python/module.ts +18 -0
- package/src/_alerts.scss +11 -8
- package/src/_base.scss +25 -29
- package/src/_layout.scss +17 -14
- package/src/_mixins.scss +10 -9
- package/src/anchor/style.scss +4 -2
- package/src/code/index.ts +9 -2
- package/src/code/style.scss +14 -13
- package/src/code.scss +14 -13
- package/src/header/_base.scss +21 -24
- package/src/header/style.scss +16 -12
- package/src/index.ts +3 -0
- package/src/literate/style.scss +4 -4
- package/src/navigate/index.ts +43 -279
- package/src/navigate/lifecycle.ts +1 -1
- package/src/navigate/runtime.ts +341 -0
- package/src/page-update/README.md +4 -0
- package/src/page-update/index.ts +280 -0
- package/src/page-update/style.scss +53 -0
- package/src/print/style.scss +4 -4
- package/src/question/style.scss +10 -6
- package/src/search/index.ts +9 -12
- package/src/search/style.scss +44 -42
- package/src/style.scss +63 -58
- package/src/timezone/style.scss +5 -5
- package/src/toc/style.scss +17 -16
- package/src/trace/style.scss +27 -27
- package/src/validators.ts +45 -0
- package/templates/_footer.html +1 -1
- package/templates/_theme.scss +8 -19
- package/watch/engine.ts +296 -0
- package/watch/events.ts +10 -0
- package/watch/fs-commit.ts +102 -0
- package/watch/types.d.ts +103 -0
- package/build/watch.ts +0 -493
package/src/code/style.scss
CHANGED
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
body.code .file-header {
|
|
2
2
|
h1 {
|
|
3
|
-
margin: 0;
|
|
4
3
|
padding: 0;
|
|
4
|
+
margin: 0;
|
|
5
5
|
font-size: inherit;
|
|
6
6
|
font-weight: inherit;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
body.code .code-body {
|
|
11
|
-
background: var(--bg2-color);
|
|
12
|
-
border-radius: var(--border-radius);
|
|
13
|
-
clip-path: inset(0 round var(--border-radius));
|
|
14
11
|
display: grid;
|
|
15
12
|
grid-template-columns: minmax(100%, max-content);
|
|
16
13
|
overflow-x: auto;
|
|
17
14
|
overscroll-behavior-x: none;
|
|
18
15
|
scrollbar-width: none;
|
|
16
|
+
background: var(--bg2-color);
|
|
17
|
+
border-radius: var(--border-radius);
|
|
18
|
+
clip-path: inset(0 round var(--border-radius));
|
|
19
|
+
-webkit-text-size-adjust: 100%;
|
|
20
|
+
text-size-adjust: 100%;
|
|
21
|
+
|
|
19
22
|
&::-webkit-scrollbar {
|
|
20
23
|
display: none;
|
|
21
24
|
}
|
|
22
|
-
-webkit-text-size-adjust: 100%;
|
|
23
|
-
text-size-adjust: 100%;
|
|
24
25
|
}
|
|
25
26
|
|
|
26
27
|
body.code .code-scrollbar {
|
|
27
28
|
position: sticky;
|
|
28
29
|
bottom: 0;
|
|
30
|
+
z-index: 10;
|
|
29
31
|
overflow-x: auto;
|
|
30
32
|
overscroll-behavior-x: none;
|
|
31
|
-
z-index: 10;
|
|
32
33
|
|
|
33
34
|
> div {
|
|
34
35
|
height: 1px;
|
|
@@ -68,25 +69,25 @@ body.code pre code {
|
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
body.code .code-prose {
|
|
71
|
-
background-color: var(--bg2-color);
|
|
72
72
|
display: grid;
|
|
73
73
|
grid-template-columns: var(--code-gutter-width) 1fr;
|
|
74
|
+
background-color: var(--bg2-color);
|
|
74
75
|
|
|
75
76
|
.code-prose-gutter {
|
|
76
77
|
position: sticky;
|
|
77
78
|
left: 0;
|
|
78
79
|
z-index: 1;
|
|
80
|
+
margin-right: var(--gap);
|
|
79
81
|
background: var(--bg2-color);
|
|
80
82
|
border-right: 1px solid var(--fg2-color);
|
|
81
|
-
margin-right: var(--gap);
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
.code-prose-content {
|
|
85
|
-
color: var(--fg2-color);
|
|
86
|
-
min-width: 0;
|
|
87
86
|
position: relative;
|
|
87
|
+
min-width: 0;
|
|
88
88
|
padding: var(--gap) var(--gap) var(--gap)
|
|
89
89
|
calc(var(--prose-indent, 0ch) - 0.2em);
|
|
90
|
+
color: var(--fg2-color);
|
|
90
91
|
|
|
91
92
|
*:first-of-type {
|
|
92
93
|
margin-top: 0;
|
|
@@ -107,8 +108,8 @@ body.code .code-prose {
|
|
|
107
108
|
}
|
|
108
109
|
|
|
109
110
|
code {
|
|
110
|
-
background: inherit;
|
|
111
111
|
padding: inherit;
|
|
112
|
+
background: inherit;
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
}
|
|
@@ -118,7 +119,7 @@ body.code .code-search-index {
|
|
|
118
119
|
width: 1px;
|
|
119
120
|
height: 1px;
|
|
120
121
|
overflow: hidden;
|
|
122
|
+
white-space: nowrap;
|
|
121
123
|
clip: rect(0, 0, 0, 0);
|
|
122
124
|
clip-path: inset(50%);
|
|
123
|
-
white-space: nowrap;
|
|
124
125
|
}
|
package/src/code.scss
CHANGED
|
@@ -6,18 +6,18 @@ body.code {
|
|
|
6
6
|
|
|
7
7
|
.file-header {
|
|
8
8
|
display: flex;
|
|
9
|
+
gap: var(--gap);
|
|
9
10
|
align-items: center;
|
|
10
11
|
justify-content: center;
|
|
11
|
-
gap: var(--gap);
|
|
12
|
-
border: 1px solid var(--fg2-color);
|
|
13
|
-
border-radius: var(--border-radius);
|
|
14
12
|
padding: var(--gap);
|
|
15
13
|
margin-bottom: var(--gap);
|
|
14
|
+
border: 1px solid var(--fg2-color);
|
|
15
|
+
border-radius: var(--border-radius);
|
|
16
16
|
|
|
17
17
|
tt,
|
|
18
18
|
code {
|
|
19
|
-
background: none;
|
|
20
19
|
padding: 0;
|
|
20
|
+
background: none;
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -27,19 +27,20 @@ body.code {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.line-number {
|
|
30
|
-
display: block;
|
|
31
|
-
padding: 0 0.75em 0 0.75em;
|
|
32
|
-
text-align: right;
|
|
33
|
-
@include user-select(none);
|
|
34
|
-
color: var(--fg2-color);
|
|
35
|
-
font-family: var(--mono-font);
|
|
36
|
-
text-decoration: none;
|
|
37
30
|
position: sticky;
|
|
38
31
|
left: 0;
|
|
39
32
|
z-index: 1;
|
|
33
|
+
display: block;
|
|
34
|
+
padding: 0 0.75em;
|
|
35
|
+
margin-right: var(--gap);
|
|
36
|
+
font-family: var(--mono-font);
|
|
37
|
+
color: var(--fg2-color);
|
|
38
|
+
text-align: right;
|
|
39
|
+
text-decoration: none;
|
|
40
40
|
background: var(--bg2-color);
|
|
41
41
|
border-right: 1px solid var(--fg2-color);
|
|
42
|
-
|
|
42
|
+
|
|
43
|
+
@include user-select(none);
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
a.line-number {
|
|
@@ -50,7 +51,7 @@ a.line-number {
|
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
&:target {
|
|
53
|
-
background: var(--fg2-color);
|
|
54
54
|
color: var(--bg-color);
|
|
55
|
+
background: var(--fg2-color);
|
|
55
56
|
}
|
|
56
57
|
}
|
package/src/header/_base.scss
CHANGED
|
@@ -5,30 +5,26 @@
|
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
header {
|
|
8
|
-
backdrop-filter: var(--backdrop-filter);
|
|
9
|
-
background: var(--bg-color-translucent);
|
|
10
|
-
|
|
11
|
-
width: 100%;
|
|
12
8
|
position: fixed;
|
|
13
9
|
top: 0;
|
|
14
|
-
|
|
15
10
|
z-index: 1000;
|
|
16
|
-
|
|
17
11
|
display: grid;
|
|
18
12
|
grid-template-columns: 1fr;
|
|
19
|
-
|
|
13
|
+
width: 100%;
|
|
14
|
+
background: var(--bg-color-translucent);
|
|
15
|
+
backdrop-filter: var(--backdrop-filter);
|
|
20
16
|
view-transition-name: site-header;
|
|
21
17
|
}
|
|
22
18
|
|
|
23
19
|
header details summary {
|
|
20
|
+
position: relative;
|
|
24
21
|
display: flex;
|
|
25
22
|
align-items: center;
|
|
26
23
|
height: var(--header-collapsed-height);
|
|
27
24
|
padding: 0 200px 0 0;
|
|
28
|
-
list-style-type: none;
|
|
29
|
-
cursor: pointer;
|
|
30
|
-
position: relative;
|
|
31
25
|
container-type: inline-size;
|
|
26
|
+
cursor: pointer;
|
|
27
|
+
list-style-type: none;
|
|
32
28
|
|
|
33
29
|
@media (hover: hover) {
|
|
34
30
|
&:hover {
|
|
@@ -62,9 +58,9 @@ header details summary::marker {
|
|
|
62
58
|
header summary::after {
|
|
63
59
|
order: -1;
|
|
64
60
|
height: 24px;
|
|
65
|
-
content: var(--icon-chevron);
|
|
66
|
-
margin-left: var(--gap);
|
|
67
61
|
margin-right: 8px;
|
|
62
|
+
margin-left: var(--gap);
|
|
63
|
+
content: var(--icon-chevron);
|
|
68
64
|
}
|
|
69
65
|
|
|
70
66
|
header details[open] summary::after {
|
|
@@ -77,24 +73,24 @@ header .content {
|
|
|
77
73
|
|
|
78
74
|
header summary .logo {
|
|
79
75
|
flex: 0 0 auto;
|
|
80
|
-
color: var(--text-on-theme);
|
|
81
|
-
background: var(--theme-color);
|
|
82
76
|
padding: 1px 6px;
|
|
83
77
|
margin: 0 8px 0 0;
|
|
84
78
|
font-size: var(--font-size-smaller);
|
|
85
79
|
font-weight: 600;
|
|
80
|
+
color: var(--text-on-theme);
|
|
86
81
|
pointer-events: none;
|
|
82
|
+
background: var(--theme-color);
|
|
87
83
|
}
|
|
88
84
|
|
|
89
85
|
header summary .site-title {
|
|
90
86
|
flex: 1 1 0;
|
|
87
|
+
min-width: 0;
|
|
88
|
+
margin: 0 8px 0 0;
|
|
91
89
|
overflow: hidden;
|
|
92
90
|
text-overflow: ellipsis;
|
|
93
|
-
white-space: nowrap;
|
|
94
|
-
min-width: 0;
|
|
95
91
|
font-weight: 500;
|
|
92
|
+
white-space: nowrap;
|
|
96
93
|
pointer-events: none;
|
|
97
|
-
margin: 0 8px 0 0;
|
|
98
94
|
}
|
|
99
95
|
|
|
100
96
|
@container (max-width: 200px) {
|
|
@@ -107,20 +103,20 @@ header > .header-controls {
|
|
|
107
103
|
position: absolute;
|
|
108
104
|
top: 0;
|
|
109
105
|
right: 0;
|
|
106
|
+
z-index: 1;
|
|
110
107
|
display: flex;
|
|
111
108
|
align-items: center;
|
|
112
109
|
height: var(--header-collapsed-height);
|
|
113
110
|
padding: 0 var(--gap) 0 0;
|
|
114
|
-
z-index: 1;
|
|
115
111
|
}
|
|
116
112
|
|
|
117
113
|
header .to-top-container {
|
|
118
114
|
display: none;
|
|
119
115
|
align-items: center;
|
|
120
116
|
height: var(--header-collapsed-height);
|
|
121
|
-
pointer-events: none;
|
|
122
|
-
white-space: nowrap;
|
|
123
117
|
padding: 0 var(--gap) 0 0;
|
|
118
|
+
white-space: nowrap;
|
|
119
|
+
pointer-events: none;
|
|
124
120
|
|
|
125
121
|
&:has(.is-visible) {
|
|
126
122
|
display: flex;
|
|
@@ -142,7 +138,7 @@ header .search-controls {
|
|
|
142
138
|
input.search {
|
|
143
139
|
width: 180px;
|
|
144
140
|
|
|
145
|
-
@media (
|
|
141
|
+
@media (width <= 400px) {
|
|
146
142
|
display: none;
|
|
147
143
|
}
|
|
148
144
|
}
|
|
@@ -153,25 +149,26 @@ header .search-controls {
|
|
|
153
149
|
15% {
|
|
154
150
|
background-position: 200% 0;
|
|
155
151
|
}
|
|
152
|
+
|
|
156
153
|
100% {
|
|
157
154
|
background-position: -200% 0;
|
|
158
155
|
}
|
|
159
156
|
}
|
|
160
157
|
|
|
161
158
|
header.loading::after {
|
|
162
|
-
content: '';
|
|
163
159
|
position: absolute;
|
|
160
|
+
right: 0;
|
|
164
161
|
bottom: 0;
|
|
165
162
|
left: 0;
|
|
166
|
-
right: 0;
|
|
167
163
|
height: 3px;
|
|
164
|
+
content: '';
|
|
168
165
|
background-image: linear-gradient(
|
|
169
166
|
90deg,
|
|
170
167
|
transparent 25%,
|
|
171
168
|
var(--theme-color) 50%,
|
|
172
169
|
transparent 75%
|
|
173
170
|
);
|
|
174
|
-
background-size: 200% 100%;
|
|
175
171
|
background-repeat: no-repeat;
|
|
172
|
+
background-size: 200% 100%;
|
|
176
173
|
animation: shimmer 3s ease-in-out infinite;
|
|
177
174
|
}
|
package/src/header/style.scss
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
header nav {
|
|
5
5
|
display: flex;
|
|
6
6
|
flex-wrap: wrap;
|
|
7
|
+
|
|
7
8
|
@include user-select(none);
|
|
9
|
+
|
|
8
10
|
gap: var(--gap);
|
|
9
11
|
margin: var(--gap);
|
|
10
12
|
}
|
|
@@ -14,9 +16,9 @@ header nav div {
|
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
header nav ul {
|
|
17
|
-
list-style-type: none;
|
|
18
19
|
padding: 0;
|
|
19
|
-
margin: 8px 0 0
|
|
20
|
+
margin: 8px 0 0;
|
|
21
|
+
list-style-type: none;
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
header nav ul li {
|
|
@@ -24,8 +26,9 @@ header nav ul li {
|
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
header nav a {
|
|
27
|
-
border: none;
|
|
28
29
|
display: inline;
|
|
30
|
+
border: none;
|
|
31
|
+
|
|
29
32
|
@include subdued-link;
|
|
30
33
|
}
|
|
31
34
|
|
|
@@ -33,17 +36,18 @@ header nav a.external {
|
|
|
33
36
|
border: none;
|
|
34
37
|
}
|
|
35
38
|
|
|
36
|
-
@media only screen and (
|
|
39
|
+
@media only screen and (width >= 740px) {
|
|
37
40
|
header details nav {
|
|
38
41
|
min-height: 100px;
|
|
39
42
|
}
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
header nav div > p {
|
|
46
|
+
padding-bottom: 2px;
|
|
43
47
|
font-style: italic;
|
|
44
|
-
@include user-select(none);
|
|
45
48
|
border-bottom: 1px solid var(--fg-color);
|
|
46
|
-
|
|
49
|
+
|
|
50
|
+
@include user-select(none);
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
@media (hover: hover) {
|
|
@@ -53,27 +57,27 @@ header nav div > p {
|
|
|
53
57
|
}
|
|
54
58
|
|
|
55
59
|
header .results-container {
|
|
56
|
-
display: block;
|
|
57
60
|
position: absolute;
|
|
58
61
|
top: var(--header-collapsed-height);
|
|
59
|
-
left: 0;
|
|
60
62
|
right: 0;
|
|
63
|
+
left: 0;
|
|
64
|
+
z-index: 1000;
|
|
61
65
|
box-sizing: border-box;
|
|
66
|
+
display: block;
|
|
62
67
|
max-width: 640px;
|
|
63
|
-
margin: 0 auto;
|
|
64
68
|
padding: var(--gap);
|
|
69
|
+
margin: 0 auto;
|
|
65
70
|
pointer-events: none;
|
|
66
|
-
z-index: 1000;
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
header ol {
|
|
70
|
-
padding: 0;
|
|
71
74
|
flex: 1;
|
|
72
75
|
min-height: 0;
|
|
76
|
+
padding: 0;
|
|
73
77
|
overflow-y: auto;
|
|
74
78
|
|
|
75
79
|
.excerpt {
|
|
76
|
-
line-height: 2.5ex;
|
|
77
80
|
height: 5ex;
|
|
81
|
+
line-height: 2.5ex;
|
|
78
82
|
}
|
|
79
83
|
}
|
package/src/index.ts
CHANGED
|
@@ -12,11 +12,13 @@ import './timezone/style.scss';
|
|
|
12
12
|
import './toc/style.scss';
|
|
13
13
|
import './trace/style.scss';
|
|
14
14
|
import './navigate/style.scss';
|
|
15
|
+
import './page-update/style.scss';
|
|
15
16
|
|
|
16
17
|
import mountSearch from './search';
|
|
17
18
|
import mountHeader from './header';
|
|
18
19
|
import mountTop from './top';
|
|
19
20
|
import mountNavigate from './navigate';
|
|
21
|
+
import mountPageUpdate from './page-update';
|
|
20
22
|
import { mountPerPageComponents } from './navigate/lifecycle';
|
|
21
23
|
|
|
22
24
|
import { scheduleTask, formatDuration } from './util';
|
|
@@ -29,6 +31,7 @@ const PERSISTENT_COMPONENTS: Record<
|
|
|
29
31
|
search: mountSearch,
|
|
30
32
|
top: mountTop,
|
|
31
33
|
navigate: mountNavigate,
|
|
34
|
+
pageUpdate: mountPageUpdate,
|
|
32
35
|
};
|
|
33
36
|
|
|
34
37
|
let startTime = -1;
|
package/src/literate/style.scss
CHANGED
|
@@ -3,11 +3,11 @@ body.literate {
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
body.literate .body pre:has(.code-row) {
|
|
6
|
-
|
|
7
|
-
border-radius: var(--mono-border-radius);
|
|
6
|
+
padding: 0;
|
|
8
7
|
overflow-x: auto;
|
|
9
8
|
overscroll-behavior-x: none;
|
|
10
|
-
|
|
9
|
+
background: var(--bg2-color);
|
|
10
|
+
border-radius: var(--mono-border-radius);
|
|
11
11
|
-webkit-text-size-adjust: 100%;
|
|
12
12
|
text-size-adjust: 100%;
|
|
13
13
|
|
|
@@ -49,11 +49,11 @@ body.literate .literate-code-output {
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
> pre:last-child::before {
|
|
52
|
-
content: 'Output';
|
|
53
52
|
display: block;
|
|
54
53
|
font-size: var(--font-size-small);
|
|
55
54
|
font-style: italic;
|
|
56
55
|
color: var(--fg2-color);
|
|
56
|
+
content: 'Output';
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|