noteloom 0.1.5 → 0.1.6
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 +100 -2
- package/dist/noteloom.cjs +176 -8
- package/dist/noteloom.cjs.map +1 -1
- package/dist/noteloom.es.js +3553 -2537
- package/dist/noteloom.es.js.map +1 -1
- package/dist/style.css +168 -0
- package/package.json +1 -1
package/dist/style.css
CHANGED
|
@@ -155,6 +155,13 @@
|
|
|
155
155
|
outline: none;
|
|
156
156
|
}
|
|
157
157
|
|
|
158
|
+
.be-blockquote[dir='rtl'] {
|
|
159
|
+
padding-left: 0;
|
|
160
|
+
padding-right: 0.9em;
|
|
161
|
+
border-left: none;
|
|
162
|
+
border-right: 3px solid var(--noteloom-border);
|
|
163
|
+
}
|
|
164
|
+
|
|
158
165
|
/* --- callout --- */
|
|
159
166
|
|
|
160
167
|
.be-callout {
|
|
@@ -640,6 +647,12 @@
|
|
|
640
647
|
color: #fff;
|
|
641
648
|
}
|
|
642
649
|
|
|
650
|
+
.be-embed-alt-text-btn {
|
|
651
|
+
width: auto;
|
|
652
|
+
padding: 0 8px;
|
|
653
|
+
font-size: 0.75rem;
|
|
654
|
+
}
|
|
655
|
+
|
|
643
656
|
.be-embed-remove {
|
|
644
657
|
border: none;
|
|
645
658
|
background: transparent;
|
|
@@ -1098,6 +1111,15 @@ tr.be-table-row:hover .be-table-delete-row {
|
|
|
1098
1111
|
user-select: none; /* it's a drag handle (see useBlockRangeDrag) — never let its own space become selectable text */
|
|
1099
1112
|
}
|
|
1100
1113
|
|
|
1114
|
+
/* `left`/`right` are physical, not logical, properties — unlike the list
|
|
1115
|
+
marker's flexbox position (which flips for free via dir inheritance),
|
|
1116
|
+
this absolute offset needs an explicit RTL override to sit on the
|
|
1117
|
+
correct side of the block. */
|
|
1118
|
+
[dir='rtl'] .be-block-gutter {
|
|
1119
|
+
left: auto;
|
|
1120
|
+
right: -56px;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1101
1123
|
.be-block-row:hover .be-block-gutter,
|
|
1102
1124
|
.be-block-gutter-active {
|
|
1103
1125
|
opacity: 1;
|
|
@@ -2035,3 +2057,149 @@ tr.be-table-row:hover .be-table-delete-row {
|
|
|
2035
2057
|
background: var(--noteloom-bg-hover);
|
|
2036
2058
|
color: var(--noteloom-text);
|
|
2037
2059
|
}
|
|
2060
|
+
|
|
2061
|
+
/* --- voice typing: caret-anchored listening/processing indicator --- */
|
|
2062
|
+
|
|
2063
|
+
.be-voice-indicator {
|
|
2064
|
+
z-index: 1000;
|
|
2065
|
+
display: flex;
|
|
2066
|
+
align-items: center;
|
|
2067
|
+
gap: 5px;
|
|
2068
|
+
background: var(--noteloom-bg);
|
|
2069
|
+
border: 1px solid var(--noteloom-border);
|
|
2070
|
+
border-radius: var(--noteloom-radius-md);
|
|
2071
|
+
padding: 4px 9px;
|
|
2072
|
+
box-shadow: var(--noteloom-shadow);
|
|
2073
|
+
font-size: 0.78rem;
|
|
2074
|
+
color: var(--noteloom-text-muted);
|
|
2075
|
+
white-space: nowrap;
|
|
2076
|
+
pointer-events: none;
|
|
2077
|
+
animation: be-voice-indicator-in 0.12s ease-out;
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
@keyframes be-voice-indicator-in {
|
|
2081
|
+
from {
|
|
2082
|
+
opacity: 0;
|
|
2083
|
+
transform: translate(-50%, calc(-100% + 4px));
|
|
2084
|
+
}
|
|
2085
|
+
to {
|
|
2086
|
+
opacity: 1;
|
|
2087
|
+
transform: translate(-50%, -100%);
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
.be-voice-indicator-dot {
|
|
2092
|
+
width: 7px;
|
|
2093
|
+
height: 7px;
|
|
2094
|
+
border-radius: 50%;
|
|
2095
|
+
background: var(--noteloom-danger, #dc2626);
|
|
2096
|
+
flex: none;
|
|
2097
|
+
animation: be-voice-indicator-pulse 1.4s ease-in-out infinite;
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
.be-voice-indicator-processing .be-voice-indicator-dot {
|
|
2101
|
+
background: var(--noteloom-accent);
|
|
2102
|
+
animation-duration: 0.6s;
|
|
2103
|
+
}
|
|
2104
|
+
|
|
2105
|
+
@keyframes be-voice-indicator-pulse {
|
|
2106
|
+
0%,
|
|
2107
|
+
100% {
|
|
2108
|
+
opacity: 1;
|
|
2109
|
+
box-shadow: 0 0 0 0 currentColor;
|
|
2110
|
+
}
|
|
2111
|
+
50% {
|
|
2112
|
+
opacity: 0.5;
|
|
2113
|
+
box-shadow: 0 0 0 4px transparent;
|
|
2114
|
+
}
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
/* --- print --- */
|
|
2118
|
+
/*
|
|
2119
|
+
* Printing (or "Save as PDF" via the browser's own print dialog — this
|
|
2120
|
+
* package deliberately doesn't bundle a PDF-generation library, which
|
|
2121
|
+
* would conflict with staying zero-runtime-dependency) always renders a
|
|
2122
|
+
* clean, chrome-free document: every piece of editing-only UI is hidden
|
|
2123
|
+
* here, regardless of whether the app happens to be in preview mode at
|
|
2124
|
+
* the moment of printing. `.be-block-row-hidden` is included on purpose —
|
|
2125
|
+
* a block hidden via "Hide in preview" stays in the DOM (just dimmed) in
|
|
2126
|
+
* edit mode, so without this rule printing while NOT toggled into preview
|
|
2127
|
+
* mode would print blocks the user explicitly marked as hidden. A host
|
|
2128
|
+
* app's own outer chrome (nav bars, its own toolbar) needs its own print
|
|
2129
|
+
* rules the same way — see examples/basic's own style.css for a worked
|
|
2130
|
+
* example, since that chrome lives outside this package entirely.
|
|
2131
|
+
*/
|
|
2132
|
+
@media print {
|
|
2133
|
+
.be-block-gutter,
|
|
2134
|
+
.be-block-gutter-menu,
|
|
2135
|
+
.be-block-gutter-menu-item,
|
|
2136
|
+
.be-block-range-menu,
|
|
2137
|
+
.be-block-range-menu-item,
|
|
2138
|
+
.be-block-row-hidden,
|
|
2139
|
+
.be-slash-menu,
|
|
2140
|
+
#be-emoji-menu,
|
|
2141
|
+
#be-at-menu,
|
|
2142
|
+
.be-floating-toolbar,
|
|
2143
|
+
.be-link-hover-card,
|
|
2144
|
+
.be-voice-indicator,
|
|
2145
|
+
.be-table-header-menu-trigger,
|
|
2146
|
+
.be-table-header-menu,
|
|
2147
|
+
.be-table-col-resize-handle,
|
|
2148
|
+
.be-table-delete-row,
|
|
2149
|
+
.be-table-add-row,
|
|
2150
|
+
.be-embed-toolbar,
|
|
2151
|
+
.be-embed-remove,
|
|
2152
|
+
.be-embed-resize-handle,
|
|
2153
|
+
.be-embed-dropzone,
|
|
2154
|
+
.be-embed-upload-btn,
|
|
2155
|
+
.be-embed-url-row,
|
|
2156
|
+
.be-callout-color-wrap,
|
|
2157
|
+
.be-modal-overlay,
|
|
2158
|
+
.be-mobile-action-bar,
|
|
2159
|
+
.be-mobile-picker-list,
|
|
2160
|
+
.be-export-trigger,
|
|
2161
|
+
.be-export-tabs,
|
|
2162
|
+
.be-trailing-space,
|
|
2163
|
+
.be-select-popover {
|
|
2164
|
+
display: none !important;
|
|
2165
|
+
}
|
|
2166
|
+
|
|
2167
|
+
/* .be-block-row-range-selected and .be-block-selected mark real content
|
|
2168
|
+
(the row/block itself, not a standalone chrome element) with a
|
|
2169
|
+
highlight background/outline — reset just that styling rather than
|
|
2170
|
+
hiding the element the way the chrome above is hidden, or printing
|
|
2171
|
+
mid-drag-selection would print blank space instead of the block's own
|
|
2172
|
+
content. */
|
|
2173
|
+
.be-block-row-range-selected {
|
|
2174
|
+
background: none !important;
|
|
2175
|
+
}
|
|
2176
|
+
|
|
2177
|
+
.be-block-selected {
|
|
2178
|
+
outline: none !important;
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
/* No background colors/shadows on paper, and text that's always legible
|
|
2182
|
+
regardless of the screen theme the page happened to be rendered in
|
|
2183
|
+
(dark mode's near-white text would otherwise print as barely-there). */
|
|
2184
|
+
.be-editable,
|
|
2185
|
+
.be-paragraph,
|
|
2186
|
+
.be-heading,
|
|
2187
|
+
.be-list-item,
|
|
2188
|
+
.be-blockquote,
|
|
2189
|
+
.be-code-block,
|
|
2190
|
+
.be-callout,
|
|
2191
|
+
.be-table-cell {
|
|
2192
|
+
background: none !important;
|
|
2193
|
+
box-shadow: none !important;
|
|
2194
|
+
color: #000 !important;
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
/* Don't split a table/code block/callout/image awkwardly across a page
|
|
2198
|
+
boundary when it would otherwise fit on one page. */
|
|
2199
|
+
.be-table,
|
|
2200
|
+
.be-code-block,
|
|
2201
|
+
.be-callout,
|
|
2202
|
+
.be-embed-image {
|
|
2203
|
+
break-inside: avoid;
|
|
2204
|
+
}
|
|
2205
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "noteloom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Zero-runtime-dependency, React-first block/rich-text editor — Notion-style blocks, inline widgets, slash commands, undo/redo, and clipboard, with an optional default theme (noteloom/style.css).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|