joplin-plugin-explorer 1.1.4 → 1.2.0
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 +66 -66
- package/package.json +26 -26
- package/publish/index.js +1 -708
- package/publish/manifest.json +18 -18
- package/publish/plugin.jpl +0 -0
- package/publish/webview/panel.css +176 -8
- package/publish/webview/panel.js +1 -485
package/publish/manifest.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"manifest_version": 1,
|
|
3
|
-
"id": "com.github.joplin-explorer",
|
|
4
|
-
"app_min_version": "2.6.0",
|
|
5
|
-
"version": "1.
|
|
6
|
-
"name": "Joplin Explorer",
|
|
7
|
-
"description": "A unified sidebar that displays notebooks and notes together in a single tree view",
|
|
8
|
-
"author": "lim0513",
|
|
9
|
-
"homepage_url": "https://github.com/lim0513/joplin-explorer",
|
|
10
|
-
"repository_url": "https://github.com/lim0513/joplin-explorer",
|
|
11
|
-
"keywords": ["sidebar", "explorer", "tree-view", "notebooks", "notes"],
|
|
12
|
-
"categories": ["appearance", "productivity"],
|
|
13
|
-
"screenshots": [
|
|
14
|
-
{"src": "screenshots/tree-view.png", "label": "Unified tree view of notebooks and notes"},
|
|
15
|
-
{"src": "screenshots/search.png", "label": "Full-text search with keyword highlighting"},
|
|
16
|
-
{"src": "screenshots/context-menu.png", "label": "Right-click context menu"}
|
|
17
|
-
]
|
|
18
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"manifest_version": 1,
|
|
3
|
+
"id": "com.github.joplin-explorer",
|
|
4
|
+
"app_min_version": "2.6.0",
|
|
5
|
+
"version": "1.2.0",
|
|
6
|
+
"name": "Joplin Explorer",
|
|
7
|
+
"description": "A unified sidebar that displays notebooks and notes together in a single tree view",
|
|
8
|
+
"author": "lim0513",
|
|
9
|
+
"homepage_url": "https://github.com/lim0513/joplin-explorer",
|
|
10
|
+
"repository_url": "https://github.com/lim0513/joplin-explorer",
|
|
11
|
+
"keywords": ["sidebar", "explorer", "tree-view", "notebooks", "notes"],
|
|
12
|
+
"categories": ["appearance", "productivity"],
|
|
13
|
+
"screenshots": [
|
|
14
|
+
{"src": "screenshots/tree-view.png", "label": "Unified tree view of notebooks and notes"},
|
|
15
|
+
{"src": "screenshots/search.png", "label": "Full-text search with keyword highlighting"},
|
|
16
|
+
{"src": "screenshots/context-menu.png", "label": "Right-click context menu"}
|
|
17
|
+
]
|
|
18
|
+
}
|
package/publish/plugin.jpl
CHANGED
|
Binary file
|
|
@@ -254,24 +254,110 @@ html, body {
|
|
|
254
254
|
margin: 4px 0;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
+
/* Pinned section */
|
|
258
|
+
.pinned-section-header {
|
|
259
|
+
display: flex;
|
|
260
|
+
align-items: center;
|
|
261
|
+
padding: 3px 8px 3px 0;
|
|
262
|
+
gap: 5px;
|
|
263
|
+
margin: 1px 4px;
|
|
264
|
+
min-height: 24px;
|
|
265
|
+
border-radius: 3px;
|
|
266
|
+
cursor: pointer;
|
|
267
|
+
user-select: none;
|
|
268
|
+
color: var(--joplin-color-faded, #888);
|
|
269
|
+
font-weight: 700;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.pinned-section-header:hover {
|
|
273
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.pinned-section-body {
|
|
277
|
+
border-bottom: 1px solid var(--joplin-divider-color, #ddd);
|
|
278
|
+
margin-bottom: 2px;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.pinned-section-body.collapsed {
|
|
282
|
+
display: none;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.pinned-item {
|
|
286
|
+
padding-left: 18px !important;
|
|
287
|
+
}
|
|
288
|
+
|
|
257
289
|
/* Drag & Drop */
|
|
258
290
|
.tree-item.dragging {
|
|
259
|
-
opacity: 0.
|
|
291
|
+
opacity: 0.35;
|
|
292
|
+
filter: grayscale(30%);
|
|
260
293
|
}
|
|
261
294
|
|
|
262
295
|
.tree-item.drop-target {
|
|
263
|
-
background: var(--joplin-selected-color, rgba(74, 156, 245, 0.
|
|
296
|
+
background: var(--joplin-selected-color, rgba(74, 156, 245, 0.28));
|
|
264
297
|
outline: 2px solid var(--joplin-color2, #4a9cf5);
|
|
265
298
|
outline-offset: -2px;
|
|
266
|
-
border-radius:
|
|
299
|
+
border-radius: 4px;
|
|
300
|
+
box-shadow: 0 0 0 2px rgba(74, 156, 245, 0.15);
|
|
267
301
|
}
|
|
268
302
|
|
|
269
|
-
|
|
270
|
-
|
|
303
|
+
/* Horizontal insertion bar (above/below) — position:relative only when active */
|
|
304
|
+
.tree-item.drop-above,
|
|
305
|
+
.tree-item.drop-below {
|
|
306
|
+
position: relative;
|
|
271
307
|
}
|
|
272
308
|
|
|
273
|
-
.tree-item.drop-
|
|
274
|
-
|
|
309
|
+
.tree-item.drop-above::before,
|
|
310
|
+
.tree-item.drop-below::before {
|
|
311
|
+
content: '';
|
|
312
|
+
position: absolute;
|
|
313
|
+
left: 4px;
|
|
314
|
+
right: 4px;
|
|
315
|
+
height: 3px;
|
|
316
|
+
background: var(--joplin-color2, #4a9cf5);
|
|
317
|
+
border-radius: 2px;
|
|
318
|
+
box-shadow: 0 0 4px rgba(74, 156, 245, 0.6);
|
|
319
|
+
pointer-events: none;
|
|
320
|
+
z-index: 5;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
.tree-item.drop-above::before {
|
|
324
|
+
top: -2px;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
.tree-item.drop-below::before {
|
|
328
|
+
bottom: -2px;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/* Dropping into empty area -> create new notebook */
|
|
332
|
+
#tree-container.drop-empty {
|
|
333
|
+
box-shadow: inset 0 0 0 2px var(--joplin-color2, #4a9cf5);
|
|
334
|
+
background: rgba(74, 156, 245, 0.06);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/* Floating hint: position:fixed keeps it out of layout flow so the tree
|
|
338
|
+
never shifts while dragging (which would otherwise cause oscillation). */
|
|
339
|
+
#empty-drop-hint {
|
|
340
|
+
display: none;
|
|
341
|
+
position: fixed;
|
|
342
|
+
left: 50%;
|
|
343
|
+
top: 50%;
|
|
344
|
+
transform: translate(-50%, -50%);
|
|
345
|
+
padding: 12px 20px;
|
|
346
|
+
border: 2px dashed var(--joplin-color2, #4a9cf5);
|
|
347
|
+
border-radius: 8px;
|
|
348
|
+
text-align: center;
|
|
349
|
+
font-size: 13px;
|
|
350
|
+
font-weight: 600;
|
|
351
|
+
color: var(--joplin-color2, #4a9cf5);
|
|
352
|
+
background: var(--joplin-background-color, #fff);
|
|
353
|
+
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
|
|
354
|
+
pointer-events: none;
|
|
355
|
+
z-index: 10000;
|
|
356
|
+
white-space: nowrap;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
#tree-container.drop-empty ~ #empty-drop-hint {
|
|
360
|
+
display: block;
|
|
275
361
|
}
|
|
276
362
|
|
|
277
363
|
#search-results {
|
|
@@ -307,11 +393,16 @@ html, body {
|
|
|
307
393
|
padding: 8px 10px;
|
|
308
394
|
gap: 8px;
|
|
309
395
|
min-height: auto;
|
|
396
|
+
margin: 0; /* override .tree-item margin for note items in search results */
|
|
397
|
+
border-radius: 0;
|
|
310
398
|
}
|
|
311
399
|
|
|
312
400
|
.search-result-item .icon {
|
|
313
|
-
margin-top: 2px;
|
|
314
401
|
flex-shrink: 0;
|
|
402
|
+
font-size: 12px;
|
|
403
|
+
width: 18px;
|
|
404
|
+
text-align: center;
|
|
405
|
+
line-height: 16.8px; /* match .search-result-title 12px * 1.4 */
|
|
315
406
|
}
|
|
316
407
|
|
|
317
408
|
.search-result-content {
|
|
@@ -347,6 +438,83 @@ html, body {
|
|
|
347
438
|
word-break: break-all;
|
|
348
439
|
}
|
|
349
440
|
|
|
441
|
+
/* Search section headers */
|
|
442
|
+
.search-section-header {
|
|
443
|
+
padding: 6px 10px;
|
|
444
|
+
font-size: 11px;
|
|
445
|
+
font-weight: 700;
|
|
446
|
+
color: var(--joplin-color-faded, #888);
|
|
447
|
+
background: var(--joplin-background-color3, rgba(100, 100, 100, 0.06));
|
|
448
|
+
border-bottom: 1px solid var(--joplin-divider-color, #eee);
|
|
449
|
+
text-transform: uppercase;
|
|
450
|
+
letter-spacing: 0.5px;
|
|
451
|
+
cursor: pointer;
|
|
452
|
+
user-select: none;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
.search-section-header:hover {
|
|
456
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.section-toggle {
|
|
460
|
+
display: inline-block;
|
|
461
|
+
font-size: 9px;
|
|
462
|
+
width: 12px;
|
|
463
|
+
text-align: center;
|
|
464
|
+
transition: transform 0.15s;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
.search-section-body.collapsed {
|
|
468
|
+
display: none;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
/* Tag items in search results */
|
|
472
|
+
.search-tag-item {
|
|
473
|
+
cursor: pointer;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
.search-tag-item:hover {
|
|
477
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.tag-expand-arrow {
|
|
481
|
+
flex-shrink: 0;
|
|
482
|
+
font-size: 9px;
|
|
483
|
+
color: var(--joplin-color-faded, #888);
|
|
484
|
+
transition: transform 0.15s;
|
|
485
|
+
margin-right: 4px;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
.tag-expand-arrow.expanded {
|
|
489
|
+
transform: rotate(90deg);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
.tag-notes-container {
|
|
493
|
+
padding-left: 16px;
|
|
494
|
+
border-left: 2px solid var(--joplin-divider-color, #eee);
|
|
495
|
+
margin-left: 18px;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/* Folder items in search results */
|
|
499
|
+
.search-folder-item {
|
|
500
|
+
cursor: pointer;
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
.search-folder-item:hover {
|
|
504
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
/* Flash highlight when locating a folder from search */
|
|
508
|
+
@keyframes locate-pulse {
|
|
509
|
+
0% { background: rgba(74, 156, 245, 0.5); }
|
|
510
|
+
100% { background: transparent; }
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.tree-item.locate-flash {
|
|
514
|
+
animation: locate-pulse 1.5s ease-out;
|
|
515
|
+
border-radius: 4px;
|
|
516
|
+
}
|
|
517
|
+
|
|
350
518
|
/* Inline input dialog */
|
|
351
519
|
.inline-input-overlay {
|
|
352
520
|
position: fixed;
|