✨ MAJOR FEATURES: • Auto-zoom intelligence với smart bounds fitting • Enhanced 3D GPS markers với pulsing effects • Professional route display với 6-layer rendering • Status-based parking icons với availability indicators • Production-ready build optimizations 🗺️ AUTO-ZOOM FEATURES: • Smart bounds fitting cho GPS + selected parking • Adaptive padding (50px) cho visual balance • Max zoom control (level 16) để tránh quá gần • Dynamic centering khi không có selection 🎨 ENHANCED VISUALS: • 3D GPS marker với multi-layer pulse effects • Advanced parking icons với status colors • Selection highlighting với animation • Dimming system cho non-selected items 🛣️ ROUTE SYSTEM: • OpenRouteService API integration • Multi-layer route rendering (glow, shadow, main, animated) • Real-time distance & duration calculation • Visual route info trong popup 📱 PRODUCTION READY: • SSR safe với dynamic imports • Build errors resolved • Global deployment via Vercel • Optimized performance 🌍 DEPLOYMENT: • Vercel: https://whatever-ctk2auuxr-phong12hexdockworks-projects.vercel.app • Bundle size: 22.8 kB optimized • Global CDN distribution • HTTPS enabled 💾 VERSION CONTROL: • MapView-v2.0.tsx backup created • MAPVIEW_VERSIONS.md documentation • Full version history tracking
69 lines
1.6 KiB
Markdown
69 lines
1.6 KiB
Markdown
# mute-stream
|
|
|
|
Bytes go in, but they don't come out (when muted).
|
|
|
|
This is a basic pass-through stream, but when muted, the bytes are
|
|
silently dropped, rather than being passed through.
|
|
|
|
## Usage
|
|
|
|
```javascript
|
|
var MuteStream = require('mute-stream')
|
|
|
|
var ms = new MuteStream(options)
|
|
|
|
ms.pipe(process.stdout)
|
|
ms.write('foo') // writes 'foo' to stdout
|
|
ms.mute()
|
|
ms.write('bar') // does not write 'bar'
|
|
ms.unmute()
|
|
ms.write('baz') // writes 'baz' to stdout
|
|
|
|
// can also be used to mute incoming data
|
|
var ms = new MuteStream
|
|
input.pipe(ms)
|
|
|
|
ms.on('data', function (c) {
|
|
console.log('data: ' + c)
|
|
})
|
|
|
|
input.emit('data', 'foo') // logs 'foo'
|
|
ms.mute()
|
|
input.emit('data', 'bar') // does not log 'bar'
|
|
ms.unmute()
|
|
input.emit('data', 'baz') // logs 'baz'
|
|
```
|
|
|
|
## Options
|
|
|
|
All options are optional.
|
|
|
|
* `replace` Set to a string to replace each character with the
|
|
specified string when muted. (So you can show `****` instead of the
|
|
password, for example.)
|
|
|
|
* `prompt` If you are using a replacement char, and also using a
|
|
prompt with a readline stream (as for a `Password: *****` input),
|
|
then specify what the prompt is so that backspace will work
|
|
properly. Otherwise, pressing backspace will overwrite the prompt
|
|
with the replacement character, which is weird.
|
|
|
|
## ms.mute()
|
|
|
|
Set `muted` to `true`. Turns `.write()` into a no-op.
|
|
|
|
## ms.unmute()
|
|
|
|
Set `muted` to `false`
|
|
|
|
## ms.isTTY
|
|
|
|
True if the pipe destination is a TTY, or if the incoming pipe source is
|
|
a TTY.
|
|
|
|
## Other stream methods...
|
|
|
|
The other standard readable and writable stream methods are all
|
|
available. The MuteStream object acts as a facade to its pipe source
|
|
and destination.
|