joplin-plugin-explorer 1.1.4 → 1.2.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 +63 -66
- package/package.json +25 -26
- package/publish/index.js +1 -708
- package/publish/manifest.json +13 -18
- package/publish/plugin.jpl +0 -0
- package/publish/webview/panel.css +182 -8
- package/publish/webview/panel.js +1 -485
package/publish/manifest.json
CHANGED
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
{
|
|
2
|
-
"manifest_version": 1,
|
|
3
|
-
"id": "com.github.joplin-explorer",
|
|
4
|
-
"app_min_version": "2.6.0",
|
|
5
|
-
"version": "1.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
|
-
|
|
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.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
|
+
}
|
package/publish/plugin.jpl
CHANGED
|
Binary file
|
|
@@ -254,26 +254,118 @@ 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
|
+
|
|
289
|
+
/* Empty drop zone — sticky at bottom of scroll viewport */
|
|
290
|
+
.drop-zone-empty {
|
|
291
|
+
position: sticky;
|
|
292
|
+
bottom: 0;
|
|
293
|
+
height: 32px;
|
|
294
|
+
flex-shrink: 0;
|
|
295
|
+
opacity: 0;
|
|
296
|
+
pointer-events: none;
|
|
297
|
+
transition: opacity 0.15s;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/* Only show during drag (activated by JS class on tree-container) */
|
|
301
|
+
#tree-container.dragging-active .drop-zone-empty {
|
|
302
|
+
opacity: 1;
|
|
303
|
+
pointer-events: auto;
|
|
304
|
+
border: 2px dashed var(--joplin-color2, #4a9cf5);
|
|
305
|
+
border-radius: 6px;
|
|
306
|
+
margin: 4px 8px;
|
|
307
|
+
text-align: center;
|
|
308
|
+
line-height: 28px;
|
|
309
|
+
font-size: 11px;
|
|
310
|
+
color: var(--joplin-color2, #4a9cf5);
|
|
311
|
+
background: rgba(74, 156, 245, 0.08);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/* Pinned section accepts drops during drag */
|
|
315
|
+
#tree-container.dragging-active .pinned-section-header {
|
|
316
|
+
border: 2px dashed var(--joplin-color2, #4a9cf5);
|
|
317
|
+
border-radius: 4px;
|
|
318
|
+
}
|
|
319
|
+
|
|
257
320
|
/* Drag & Drop */
|
|
258
321
|
.tree-item.dragging {
|
|
259
|
-
opacity: 0.
|
|
322
|
+
opacity: 0.35;
|
|
323
|
+
filter: grayscale(30%);
|
|
260
324
|
}
|
|
261
325
|
|
|
262
326
|
.tree-item.drop-target {
|
|
263
|
-
background: var(--joplin-selected-color, rgba(74, 156, 245, 0.
|
|
327
|
+
background: var(--joplin-selected-color, rgba(74, 156, 245, 0.28));
|
|
264
328
|
outline: 2px solid var(--joplin-color2, #4a9cf5);
|
|
265
329
|
outline-offset: -2px;
|
|
266
|
-
border-radius:
|
|
330
|
+
border-radius: 4px;
|
|
331
|
+
box-shadow: 0 0 0 2px rgba(74, 156, 245, 0.15);
|
|
267
332
|
}
|
|
268
333
|
|
|
269
|
-
|
|
270
|
-
|
|
334
|
+
/* Horizontal insertion bar (above/below) — position:relative only when active */
|
|
335
|
+
.tree-item.drop-above,
|
|
336
|
+
.tree-item.drop-below {
|
|
337
|
+
position: relative;
|
|
271
338
|
}
|
|
272
339
|
|
|
273
|
-
.tree-item.drop-
|
|
274
|
-
|
|
340
|
+
.tree-item.drop-above::before,
|
|
341
|
+
.tree-item.drop-below::before {
|
|
342
|
+
content: '';
|
|
343
|
+
position: absolute;
|
|
344
|
+
left: 4px;
|
|
345
|
+
right: 4px;
|
|
346
|
+
height: 3px;
|
|
347
|
+
background: var(--joplin-color2, #4a9cf5);
|
|
348
|
+
border-radius: 2px;
|
|
349
|
+
box-shadow: 0 0 4px rgba(74, 156, 245, 0.6);
|
|
350
|
+
pointer-events: none;
|
|
351
|
+
z-index: 5;
|
|
275
352
|
}
|
|
276
353
|
|
|
354
|
+
.tree-item.drop-above::before {
|
|
355
|
+
top: -2px;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.tree-item.drop-below::before {
|
|
359
|
+
bottom: -2px;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/* Dropping into empty area -> create new notebook */
|
|
363
|
+
#tree-container.drop-empty {
|
|
364
|
+
box-shadow: inset 0 0 0 2px var(--joplin-color2, #4a9cf5);
|
|
365
|
+
background: rgba(74, 156, 245, 0.06);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
|
|
277
369
|
#search-results {
|
|
278
370
|
flex: 1;
|
|
279
371
|
overflow-y: scroll;
|
|
@@ -307,11 +399,16 @@ html, body {
|
|
|
307
399
|
padding: 8px 10px;
|
|
308
400
|
gap: 8px;
|
|
309
401
|
min-height: auto;
|
|
402
|
+
margin: 0; /* override .tree-item margin for note items in search results */
|
|
403
|
+
border-radius: 0;
|
|
310
404
|
}
|
|
311
405
|
|
|
312
406
|
.search-result-item .icon {
|
|
313
|
-
margin-top: 2px;
|
|
314
407
|
flex-shrink: 0;
|
|
408
|
+
font-size: 12px;
|
|
409
|
+
width: 18px;
|
|
410
|
+
text-align: center;
|
|
411
|
+
line-height: 16.8px; /* match .search-result-title 12px * 1.4 */
|
|
315
412
|
}
|
|
316
413
|
|
|
317
414
|
.search-result-content {
|
|
@@ -347,6 +444,83 @@ html, body {
|
|
|
347
444
|
word-break: break-all;
|
|
348
445
|
}
|
|
349
446
|
|
|
447
|
+
/* Search section headers */
|
|
448
|
+
.search-section-header {
|
|
449
|
+
padding: 6px 10px;
|
|
450
|
+
font-size: 11px;
|
|
451
|
+
font-weight: 700;
|
|
452
|
+
color: var(--joplin-color-faded, #888);
|
|
453
|
+
background: var(--joplin-background-color3, rgba(100, 100, 100, 0.06));
|
|
454
|
+
border-bottom: 1px solid var(--joplin-divider-color, #eee);
|
|
455
|
+
text-transform: uppercase;
|
|
456
|
+
letter-spacing: 0.5px;
|
|
457
|
+
cursor: pointer;
|
|
458
|
+
user-select: none;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
.search-section-header:hover {
|
|
462
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.12));
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.section-toggle {
|
|
466
|
+
display: inline-block;
|
|
467
|
+
font-size: 9px;
|
|
468
|
+
width: 12px;
|
|
469
|
+
text-align: center;
|
|
470
|
+
transition: transform 0.15s;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.search-section-body.collapsed {
|
|
474
|
+
display: none;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/* Tag items in search results */
|
|
478
|
+
.search-tag-item {
|
|
479
|
+
cursor: pointer;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
.search-tag-item:hover {
|
|
483
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
.tag-expand-arrow {
|
|
487
|
+
flex-shrink: 0;
|
|
488
|
+
font-size: 9px;
|
|
489
|
+
color: var(--joplin-color-faded, #888);
|
|
490
|
+
transition: transform 0.15s;
|
|
491
|
+
margin-right: 4px;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.tag-expand-arrow.expanded {
|
|
495
|
+
transform: rotate(90deg);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
.tag-notes-container {
|
|
499
|
+
padding-left: 16px;
|
|
500
|
+
border-left: 2px solid var(--joplin-divider-color, #eee);
|
|
501
|
+
margin-left: 18px;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/* Folder items in search results */
|
|
505
|
+
.search-folder-item {
|
|
506
|
+
cursor: pointer;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.search-folder-item:hover {
|
|
510
|
+
background: var(--joplin-background-color-hover3, rgba(100, 100, 100, 0.1));
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/* Flash highlight when locating a folder from search */
|
|
514
|
+
@keyframes locate-pulse {
|
|
515
|
+
0% { background: rgba(74, 156, 245, 0.5); }
|
|
516
|
+
100% { background: transparent; }
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
.tree-item.locate-flash {
|
|
520
|
+
animation: locate-pulse 1.5s ease-out;
|
|
521
|
+
border-radius: 4px;
|
|
522
|
+
}
|
|
523
|
+
|
|
350
524
|
/* Inline input dialog */
|
|
351
525
|
.inline-input-overlay {
|
|
352
526
|
position: fixed;
|