PageSourceSearch

https://e11evenclubcollectionmiami.com/e11-listings.js

js e11evenclubcollectionmiami.com collected 2026-09-29 07:12:22 UTC 3,377 bytes, 41 lines download raw bytes

1/* E11EVEN Club Collection: live MLS listings for both towers.
2 * Source: WIRE Miami hub IDX proxy (same Trestle feed as wiremiami.com/search), building=e11even.
3 * 2026-09-23 (E11EVEN Rebuild). No second feed, no client credentials. */
4(function () {
5  var FEED = 'https://wiremiami.com/.netlify/functions/idx-proxy';
6  var cache = null, waiters = [];
7  function money(n) { if (!n && n !== 0) return ''; return '$' + Math.round(n).toLocaleString('en-US'); }
8  function short(n) { if (!n) return ''; return n >= 1e6 ? '$' + (n / 1e6).toFixed(n >= 1e7 ? 1 : 2).replace(/\.?0+$/, '') + 'M' : '$' + Math.round(n / 1e3) + 'K'; }
9  function esc(s) { return String(s == null ? '' : s).replace(/[&<>"']/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[c]; }); }
10  function load(cb) {
11    if (cache) return cb(cache);
12    waiters.push(cb);
13    if (waiters.length > 1) return;
14    fetch(FEED + '?building=e11even', { mode: 'cors' }).then(function (r) { if (!r.ok) throw new Error(r.status); return r.json(); })
15      .then(function (d) { cache = d; }, function () { cache = { error: true, listings: [], count: 0 }; })
16      .then(function () { var w = waiters; waiters = []; w.forEach(function (f) { f(cache); }); });
17  }
18  function isUC(l) { return l.status === 'ActiveUnderContract' || l.status === 'Pending'; }
19  function beds(l) { return l.beds === 0 ? 'Studio' : (l.beds != null ? l.beds + ' bd' : '- bd'); }
20  function card(l, href) {
21    var el = document.createElement(href ? 'a' : 'button');
22    el.className = 'rs-card';
23    if (href) { el.href = href; } else { el.type = 'button'; }
24    el.setAttribute('data-id', l.id);
25    var badge = isUC(l) ? '<span class="rs-badge alt">Under Contract</span>' : (l.dom != null && l.dom <= 14 ? '<span class="rs-badge">New</span>' : '');
26    var was = (l.originalPrice && l.price && l.originalPrice > l.price) ? '<span class="rs-was">' + short(l.originalPrice) + '</span>' : '';
27    el.innerHTML = '<div class="rs-img">' + (l.photo ? '<img src="' + esc(l.photo) + '" alt="' + esc(l.towerName + ' residence ' + l.unit) + '" loading="lazy" onerror="this.outerHTML=\'<span class=rs-noimg>Residence ' + esc(l.unit) + '</span>\'">' : '<span class="rs-noimg">Residence ' + esc(l.unit) + '</span>') + badge + '</div>' +
28      '<div class="rs-body"><span class="rs-tower">' + esc(l.towerName) + '</span>' +
29      '<span class="rs-price">' + money(l.price) + was + '</span>' +
30      '<span class="rs-unit">Residence ' + esc(l.unit) + '</span>' +
31      '<span class="rs-specs"><span>' + beds(l) + '</span><span>' + (l.baths != null ? l.baths : '-') + ' ba</span>' + (l.sqft ? '<span>' + l.sqft.toLocaleString('en-US') + ' sf</span>' : '') + (l.hoa ? '<span>HOA ' + money(l.hoa) + (l.hoaFreq ? ' ' + esc(l.hoaFreq.toLowerCase()) : '') + '</span>' : '') + '</span>' +
32      '<span class="rs-attr">Listed by ' + esc(l.listOffice) + '</span></div>';
33    return el;
34  }
35  function stats(list) {
36    var act = list.filter(function (l) { return !isUC(l) && l.price; });
37    var p = act.map(function (l) { return l.price; });
38    return { n: list.length, active: act.length, min: p.length ? Math.min.apply(null, p) : 0, max: p.length ? Math.max.apply(null, p) : 0 };
39  }
40  window.E11 = { load: load, card: card, money: money, short: short, esc: esc, isUC: isUC, stats: stats, FEED: FEED, beds: beds };
41})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.